@Override
    public final void update() {

        switch (currentScene.state) {
            case ENTER:
                currentScene.onSceneEnter();
                currentScene.state = SceneState.RUNNING;
                break;
            case RUNNING:
                currentScene.update();
                break;
            case EXIT:
                currentScene.onSceneExit();
                currentScene.state = SceneState.STOPPED;

                currentScene = nextScene;
                currentScene.state = SceneState.ENTER;
                break;
            case PAUSED:
                currentScene.paused();
                break;
            case STOPPED:
                // THIS SHOULDN'T HAPPEN, SOMETHING WENT TERRIBLY WRONG
                throw new java.lang.IllegalStateException("A STOPPED SCENE SHOULD NOT RUN");
        }
    }