                     {
                         throw new IllegalOperationError("event " + event.name + " isn't mapped");
                     }
+                    
+                    executeSubmachines(currentState, event);
                     continue;
                 }
 

            {
                for each (var fsm:IFsm in state.subMachines)
                {
                    fsm.pushEvent(event);
                }
            }

        }

        // TODO validate reachability of states
        public function set states(value:Vector.<IState>):void
        {
            _states = value;
        }

        public function mapEvent(event:String, it:ITransition):void
        {
