add FSM