add state_machine