Added State to the solution; make sure to read the comments in IdleState because it contains quite a few .. important remarks regarding the implementation of State, and how it could be better.
Added Memento