working on the idea of keeping states and running logic through state controller.