Added a new requirement to be worked.
Added a new abstraction to deal with timing, added a contract to represent it, the Clock, also implemented it by default in the SystemClock.
Refactored to get code cleaner without unnecessary variables created.
Refactored to use mocks instead of default values.
Refactored to have highly-cohesive and understandable methods.