Repository is now behind an enum to allow selection of a mock Repsitory for use in tests.
Adds a layer around Repository to allow the use of a mock. Mock has still to be implemented.