 
 		// every SM has to have this listener in case it is the SM for some child AD that contains a manager
 		// and the parent ADs don't have that manager.
-		getSandboxRoot().addEventListener(InterManagerRequest.INIT_MANAGER_REQUEST, initManagerHandler, false, 0, true);
+		var sbRoot:DisplayObject = getSandboxRoot();
+		sbRoot.addEventListener(InterManagerRequest.INIT_MANAGER_REQUEST, initManagerHandler, false, 0, true);
+
 		// once managers get initialized, they bounce things off the sandbox root
-		if (getSandboxRoot() == this)
+		if (sbRoot == this)
 		{
 			addEventListener(InterManagerRequest.SYSTEM_MANAGER_REQUEST, systemManagerHandler);
 			addEventListener(InterManagerRequest.DRAG_MANAGER_REQUEST, multiWindowRedispatcher);

				    if (!loaderInfo.childAllowsParent)
				        return loaderInfo.content;
				}
				lastParent = parent; 
				parent = parent.parent;				
			}
		}

	private function initHandler(event:Event):void
	{
		// we can still be the top level root if we can access our
		// parent and get a positive response to the query or
		// or there is not a listener for the new application event
		// that SWFLoader always adds. 
		if (!isStageRoot)
		{
			if (root.loaderInfo.parentAllowsChild)
			{
				try
				{
                    if (!parent.dispatchEvent(new Event("mx.managers.SystemManager.isBootstrapRoot", false, true)) ||
                        !root.loaderInfo.sharedEvents.hasEventListener(SWFBridgeEvent.BRIDGE_NEW_APPLICATION))
						isBootstrapRoot = true;
				}
				catch (e:Error)
