di refactoring