TODO: fix fsm-update