dependency injection
refactoring
refactoring