     {
         if (!event.isResourceModule && event.loaderInfo)
         {
-            var rsl:Array = rslDataList[event.rslIndex];
+            var rsl:Vector.<RSLData> = Vector.<RSLData>(rslDataList[event.rslIndex]);
             var moduleFactory:IFlexModuleFactory = this;
             if (rsl && rsl[0].moduleFactory)
                 moduleFactory = rsl[0].moduleFactory; 
 
             if (moduleFactory == this)
                 preloadedRSLs[event.loaderInfo] =  rsl;
-            else if ("addPreloadedRSL" in moduleFactory)
-                moduleFactory["addPreloadedRSL"](event.loaderInfo, rsl);
+            else
+                moduleFactory.addPreloadedRSL(event.loaderInfo, rsl);
         }
     }
     

    }
    
    /**
     *  @private
     *  Add an RSL to the preloadedRSLs list. This method is called by child
     *  module factories when they add load an RSL into this module factory's
     *  application domain.
     * 
     *  @param loaderInfo The loaderInfo of the loaded RSL.
     *  @param rsl The rsl configuration information. An array of RSLData.
     *  The first element in the array is the primary RSL. The remaining 
     *  elements are failover RSLs.
     */ 
    public function addPreloadedRSL(loaderInfo:LoaderInfo, rsl:Array):void
    {
        preloadedRSLs[loaderInfo] = rsl;
        if (hasEventListener(RSLEvent.RSL_ADD_PRELOADED))

    //----------------------------------
    
    /**
     *  @inheritDoc 
     *  
     */
    public function  get preloadedRSLs():Dictionary
    {
