Refactored everything! now more OO and easy support for different game states