 				Weave.properties.enableMenuBar.value = false;
 				Weave.properties.dashboardMode.value = true;
 			}
-			if (_loadFileCallback != null)
-				_loadFileCallback();
 			WeaveAPI.callExternalWeaveReady();
+			while (_loadFileCallbacks.length)
+				(_loadFileCallbacks.shift() as Function)();
 		}
 		private function handleConfigFileFault(event:FaultEvent, fileName:String):void
 		{

			if (url is URLRequest)
			{
				request = url as URLRequest;
				_requestedConfigFile = request.url;
			}
			else if (url is String)
			{
				_requestedConfigFile = String(url);
				if (noCacheHack)
					url = String(url) + "?" + (new Date()).getTime(); // prevent flex from using cache
				request = new URLRequest(String(url));

				var headers:Object = url['requestHeaders'];
				for (var k:String in headers)
					request.requestHeaders.push(new URLRequestHeader(k, headers[k]));
				setRequestedConfigFile(request.url);
			}
			
			if (callback != null)
				_loadFileCallbacks.push(callback);
			
			WeaveAPI.URLRequestUtils.getURL(null, request, handleConfigFileDownloaded, handleConfigFileFault, _requestedConfigFile);
		}
		
		private function downloadConfigFile():void
		{
			if (getFlashVarRecover() || Weave.handleWeaveReload())
			{
				handleConfigFileDownloaded();
