Applied Dependency Inversion principle