new structure, angular, route, DRY