Need to require state_machine