add user control over state transitions