Fixed issue #1. In order to fix this I had to create a new way of
switching states. So now we first prep the state then switch at the start
of the newest update cycle. This way we prevent the previous state from
executing the rest of it's update cycle with a new current state.