A.SOLID.Refactoring.Exercise http://www.reflectivesoftware.com/2015/08/10/a-solid-refactoring-exercise-part-1-dependency-inversion-principle/