Major refactor

Refactors code
Separates out GUI from game logic
Rearranges GUI