Dependency Inversion Principle practice