Enforce the API to be consistent with the state machine