implement the different GameStates
implement the different GameStates