 
     private function moduleInfo_unloadHandler(event:ModuleEvent):void
     {
+        if (Log.isInfo())
+        {
+            LOG.info('Module unloaded: {0}', swf.url);
+        }
+
         var moduleInfo:IModuleInfo = event.module;
         moduleInfo.removeEventListener(ModuleEvent.UNLOAD, moduleInfo_unloadHandler);
         var moduleInfoIndex:int = loadedModuleInfos.indexOf(moduleInfo);


    private function moduleInfo_readyHandler(event:ModuleEvent):void
    {
        var moduleInfo:IModuleInfo = event.currentTarget as IModuleInfo;
        moduleInfo.removeEventListener(ModuleEvent.READY, moduleInfo_readyHandler);
        moduleInfo.removeEventListener(ModuleEvent.ERROR, moduleInfo_errorHandler);

        if (config && config.exists)
        {
            var moduleConfig:XML = readModuleConfig(config);
        }

        const builderModule:IBuilderModule = event.module.factory.create() as IBuilderModule;
        if (builderModule)
        {
            var widgetType:WidgetType = getWidgetType(moduleInfo, builderModule, moduleConfig);
        }



    private function dispatchError():void
    {
        if (Log.isInfo())
        {
            LOG.info('Module load failed: {0}', name);
        }

        dispatchEvent(new WidgetTypeLoaderEvent(WidgetTypeLoaderEvent.LOAD_ERROR));
    }

    private function parseCustomWidgetType(configXML:XML):CustomWidgetType
    {
        if (Log.isInfo())
        {
            LOG.info('Creating widget type from XML: {0}', configXML);
        }

        var customModule:CustomXMLModule = new CustomXMLModule();
        customModule.widgetName = configXML.name;
        customModule.isOpenByDefault = (configXML.openbydefault == 'true');
