         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)
         {

            loaderInfo.content)
        {
            loaderInfo.content.addEventListener(Request.GET_PARENT_FLEX_MODULE_FACTORY_REQUEST, 
                                            loader_content_getFlexModuleFactoryRequestHandler);            
        }

    }

                        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 
