Dependency Inversion, and how to get it wrong