 	/**
 	 *  @private
 	 */
-	private var callLaterObject:UIComponent;
-
-	/**
-	 *  @private
-	 */
-	private var callLaterPending:Boolean = false;
+	private var waitedAFrame:Boolean = false;
+
+	/**
+	 *  @private
+	 */
+	private var listenersAttached:Boolean = false;
 
 	/**
 	 *  @private

	 */
	public function invalidateSize(obj:ILayoutManagerClient ):void
	{
		if (!invalidateSizeFlag && FlexGlobals.topLevelApplication.systemManager)
		{
			invalidateSizeFlag = true;

			if (!callLaterPending)
			{
				if (!callLaterObject)
				{
					callLaterObject = new UIComponent();
					callLaterObject.systemManager =
						FlexGlobals.topLevelApplication.systemManager;
					callLaterObject.callLater(waitAFrame);
				}
				else
				{
					callLaterObject.callLater(doPhasedInstantiation);
				}

				callLaterPending = true;
			}
		}


			// the frame rate.  That will cause the enterFrame and render
			// events to fire more promptly, which improves performance.
			try {
                // can't use FlexGlobals here.  It may not be setup yet
				var sm:ISystemManager = SystemManagerGlobals.topLevelSystemManagers[0];
				var stage:Stage = SystemManagerGlobals.topLevelSystemManagers[0].stage;
				if (stage)
