removed messages in checks
better preconditions
use builder as arg. to fsm
check arguments to fsm process