Rewrote to make it more generic and more functional.
Split out the TimeMachine and InteractiveTimeMachine classes.
Cleaned up the code slightly and added some notes.
Removed random thought
Added licence. Updated README.