The Dependency Inversion Principle