add fsm_run()