The Dependency Inversion principle