strategy & fsm