See FiniteStateMachine