Improves compatibility with Angular 1.8; uses the more modern component system with less coupling and cleaner interfaces.