more explanation on modified fsm