 		
 		private function handlePrimaryTransform():void
 		{
-			if (_primary && _secondary)
+			// if callbacks are delayed, it means we're loading a session state, so we don't want to apply the transform.
+			if (!_callbacks.callbacksAreDelayed && _primary && _secondary)
 				primaryCallback();
 		}
 		
 		private function handleSecondaryTransform():void
 		{
-			if (_primary && _secondary)
+			// if callbacks are delayed, it means we're loading a session state, so we don't want to apply the transform.
+			if (!_callbacks.callbacksAreDelayed && _primary && _secondary)
 				secondaryCallback();
 		}
 		

			secondaryWatcher.targetPath = secondaryPath.getSessionState() as Array;
		}
		
		private var _primary:ILinkableObject;
		private var _secondary:ILinkableObject;
		
		private function synchronize():void
		{
			var primary:ILinkableObject = primaryWatcher.target;
			var secondary:ILinkableObject = secondaryWatcher.target;
			if (_primary != primary || _secondary != secondary)

					WeaveAPI.SessionManager.getCallbackCollection(_secondary).addImmediateCallback(this, secondaryCallback);
					WeaveAPI.SessionManager.getCallbackCollection(_primary).addImmediateCallback(this, primaryCallback);
					
					// if primaryTransform is not given but secondaryTransform is, call secondaryCallback.
					// otherwise, call primaryCallback.
					if (!primaryTransform.value && secondaryTransform.value)
						secondaryCallback();
					else
