Use StateT monad to manage EngineState.
Add build-depend on mtl > 1.0