Removed system out statements
adding a clock so we can mock time in unit tests
loading in existing cache which is already on disk
Fully documented and refactored ready for unit testing