Dependency Inversion Principle - Low Level Design