With state_machine