angular.module('services', [])

.filter('file', function () {

  return function (input) {

    return input.split(' ').join('_').toLowerCase()
  }

})

.factory('responsive', function () {

  var resizeTimer

  return {
    run: function (apply, main, input, output) {

      main(input, output)

      $(window).on('resize', function(e) {

        clearTimeout(resizeTimer)
        resizeTimer = setTimeout(function () {
          main(input, output)
          apply()
        }, 100)

      })


    }
  }
})

@@ -30,117 +30,705 @@
 )%0A%0A.
-filter('file', function () %7B%0A%0A  return function (input) %7B%0A%0A    return input.split(' ').join('_').toLowerCase(
+directive('done', %5B'$parse', function($parse) %7B%0A  return %7B%0A    restrict: 'A',%0A    link: function(scope, element, attrs) %7B%0A      var fn = $parse(attrs.done)%0A      if (scope.$last)%7B%0A        scope.done()%0A      %7D%0A    %7D%0A  %7D%0A%0A%7D%5D)%0A%0A.filter('file', function () %7B%0A%0A  return function (input) %7B%0A%0A    return input.split(' ').join('_').toLowerCase()%0A  %7D%0A%0A%7D)%0A%0A.filter('first', function () %7B%0A%0A  return function (input) %7B%0A    var output = input.split(': ')%0A    return output%5B0%5D%0A  %7D%0A%0A%7D)%0A%0A.filter('second', function () %7B%0A%0A  return function (input) %7B%0A    var output = input.split(': ')%0A    return output%5B1%5D%0A  %7D%0A%0A%7D)%0A%0A.filter('info', function () %7B%0A%0A  return function (input) %7B%0A    return input.split(', ').join(',%5C %5C '
 )%0A  
@@ -827,16 +827,22 @@
  (apply,
+ init,
  main, i
@@ -860,29 +860,35 @@
 t) %7B%0A%0A      
+init(
 main
-(
+, 
 input, outpu
@@ -947,66 +947,36 @@
     
-clearTimeout(resizeTimer)%0A        resizeTimer = setTimeout
+window.requestAnimationFrame
 (fun
@@ -1047,13 +1047,8 @@
    %7D
-, 100
 )%0A%0A 

Add filter/directives for about page