made FSM more solid and more obvious in operation