         if (cls)
         {
             contentHolder = child = new cls();
+            contentHolder.addEventListener(Event.ADDED, contentHolder_addedHandler, false, 0, true);
             addChild(child);
             contentLoaded();
-
         }
         else if (classOrString is DisplayObject)
         {
             contentHolder = child = DisplayObject(classOrString);
             addChild(child);
             contentLoaded();
+            
+            // Listen for requests to get the flex module factory.
+            contentHolder.addEventListener(Request.GET_PARENT_FLEX_MODULE_FACTORY_REQUEST, 
+                                   contentHolder_getFlexModuleFactoryRequestHandler);            
         }
         else if (byteArray)
         {

     *  @param request Use type Event instead of Request because the event may be send from
     *  another ApplicationDomain (A.2).
     */
    public function loader_content_getFlexModuleFactoryRequestHandler(request:Event):void
    {
        if ("value" in request)
            request["value"] = moduleFactory;
    }
    
    /**
     *      @private
     * 

                        contentLoader.content)
                    {
                        contentLoader.content.removeEventListener(Request.GET_PARENT_FLEX_MODULE_FACTORY_REQUEST, 
                            contentHolder_getFlexModuleFactoryRequestHandler);            
                    }

                    contentHolder.removeEventListener(Event.ADDED, contentHolder_addedHandler);
                    
                    if (useUnloadAndStop)
                        contentLoader.unloadAndStop(unloadAndStopGC);
                    else 
