refactoring and extending dependency injection, initializers not yet extended with this commit