Pull things out into controllers and directives