             showModalWindow(o, sm, false);
         else
             popup.visible = visibleFlag;
-            
-        // Send request to display a modal window in other sandboxes
-        // If we are the sandbox root, then send the request to our parent.
-        // If we are not the sandbox root, then send the request to our parent.
-        var target:IEventDispatcher;
-        if (smp)
-            sm = SystemManagerProxy(smp).systemManager;
-            
-        if (sm.useBridge())
-        {
-            if (sm == sbRoot)
-                target = sm.sandboxBridgeGroup.parentBridge;
-            else
-                target = sbRoot;
-            
+
+        if (realSm.useBridge())
+        {
             if (popupStyleClient)
             {
                 o.modalTransparencyDuration = popupStyleClient.getStyle("modalTransparencyDuration");
                 o.modalTransparencyBlur = popupStyleClient.getStyle("modalTransparencyBlur");
             }
 
-            // make sure this ApplicationDomain has an instance of pop up manager.
-            if (sm != sbRoot)
-                target.dispatchEvent(new MarshalEvent(MarshalEvent.INIT_MANAGER, false, false, 
-                                     "mx.managers::IPopUpManager"));
-
-            var modalRequest:ModalWindowRequest = new ModalWindowRequest(ModalWindowRequest.CREATE,
-                                                                     !o.isRemoteModalWindow && sm != sbRoot,     
-                                                                     visibleFlag,
-                                                                     false,
-                                                                     o.modalTransparencyDuration,
-                                                                     o.modalTransparency,
-                                                                     o.modalTransparencyColor,
-                                                                     o.modalTransparencyBlur);
-            var bridge:IEventDispatcher = sm.sandboxBridgeGroup.parentBridge;; 
-            modalRequest.requestor = bridge;
-            target.dispatchEvent(modalRequest);
-        }
-    }
+            dispatchModalWindowRequest(ModalWindowRequest.CREATE, realSm, sbRoot, o, visibleFlag);
+        }            
+    }
+    
+    
+    private function dispatchModalWindowRequest(type:String, 
+                                                sm:ISystemManager2, 
+                                                sbRoot:DisplayObject, 
+                                                o:PopUpData,
+                                                visibleFlag:Boolean):void
+    {
+        var modalRequest:ModalWindowRequest = new ModalWindowRequest(type,
+                                                                 !o.isRemoteModalWindow && sm != sbRoot,     
+                                                                 visibleFlag,
+                                                                 false,
+                                                                 o.modalTransparencyDuration,
+                                                                 o.modalTransparency,
+                                                                 o.modalTransparencyColor,
+                                                                 o.modalTransparencyBlur);
+        var bridge:IEventDispatcher = sm.sandboxBridgeGroup.parentBridge;; 
+        modalRequest.requestor = bridge;
+        modalRequest.data = null;
+        bridge.dispatchEvent(modalRequest);
+    }
+    
+    
     
     /**
      *  @private

    
    /**
     *  @private
     */
    public var owner:DisplayObject;


        showModalWindowInternal(o, duration, alpha, transparencyColor, blurAmount, sm, sbRoot);
        
        if (sendRequest && sm.useBridge())
            dispatchModalWindowRequest(ModalWindowRequest.SHOW, sm, sbRoot, o, true);
    }
    
    /**
