We will be going through this refactoring exercise step by step. Each exercise has its own topic and answers. In order for the flow of steps to work, please check the code in the answers and make sure your code matches.
The original article can be found here: http://www.reflectivesoftware.com/2015/08/10/a-solid-refactoring-exercise-part-1-dependency-inversion-principle/