amazingly heavy restructuring (based on the new mutil.base.fsm package) - only builds at this point - untested, if it fails I'll have to revert