This is a simple refactoring exercise that is meant to teach something about dependency inversion and dependency injection.
The documentation is in this blog bost and in the presentation in the doc directory. There is a Java version here
Run all the tests. One test will fail. Change production code so that all tests pass.
Read the blog post and/or the presentation included in the Java version.