Basic screen controller based on state machine - untested.