AngularJS' extensibility is not inherent in it's design, rather it's a feature that must be exploited to ensure efficient development and ease of comprehension. The first move should be to not have any functionality that, at the least, isn't required to be used during the app's initialization. While this is useful from an organizational perspective, it will make things messy when having to refer to the app's root module all the time. What you can do instead is create modules for all the different aspects of Angular. Creating a module for your services, controllers, directives and so forth will not only allow for better organization of your project, but also optimise the use of plugins in the future.