 	 *  callLater() is called immediately after an object is created.
 	 *  We really want to wait one more frame before starting in.
 	 */
-	private function waitAFrame():void
+	private function waitAFrame(event:Event):void
 	{
 		// trace(">>LayoutManager:WaitAFrame");
 
-		callLaterObject.callLater(doPhasedInstantiation);
+        var sm:ISystemManager = SystemManagerGlobals.topLevelSystemManagers[0]
+		sm.removeEventListener(Event.ENTER_FRAME, waitAFrame);
+		sm.addEventListener(Event.ENTER_FRAME, doPhasedInstantiation);
+        waitedAFrame = true;
 
 		// trace("<<LayoutManager:WaitAFrame");
 	}
+
+	private function attachListeners(sm:ISystemManager):void
+	{
+		if (!waitedAFrame)
+		{
+			sm.addEventListener(Event.ENTER_FRAME, waitAFrame);
+		}
+		else
+		{
+			sm.addEventListener(Event.ENTER_FRAME, doPhasedInstantiation);
+			if (!usePhasedInstantiation)
+			{
+				if (sm && (sm.stage || sm.useSWFBridge()))
+				{
+					sm.addEventListener(Event.RENDER, doPhasedInstantiation);
+					if (sm.stage)
+						sm.stage.invalidate();
+				}
+			}
+		}
+
+		listenersAttached = true;
+	}
 }
 
 }

	/**
	 *  @private
	 */
	private function doPhasedInstantiation():void
	{
		// trace(">>DoPhasedInstantation");

		// If phasing, do only one phase: validateProperties(),

				validateDisplayList();

				// The Preloader listens for this event.
				sm.document.dispatchEvent(
					new Event("validateDisplayListComplete"));
			}
		}
