http://www.ng-newsletter.com/posts/beginner2expert-directives.html