 			{
 				_object = newObject;
 				changeParent(oldObject, _parent, null);
-				changeParent(newObject, null, _parent);
+				updateParentLater();
 			}
+		}
+		
+		private function updateParentLater():void
+		{
+			if (_object)
+				_object.addEventListener(Event.ENTER_FRAME, updateParent);
+		}
+		
+		private function updateParent(event:Event):void
+		{
+			if (event.currentTarget != _object)
+				return;
+			
+			changeParent(_object, _oldParent, _parent);
+			_oldParent = null;
+			_object.removeEventListener(Event.ENTER_FRAME, updateParent);
 		}
 		
 		private static function changeParent(child:DisplayObject, oldParent:DisplayObjectContainer, newParent:DisplayObjectContainer):void

		 */
		public function set parent(newParent:DisplayObjectContainer):void
		{
			var oldParent:DisplayObjectContainer = _parent;
			_parent = newParent;
			changeParent(object, oldParent, newParent);
		}
		
		/**

{
	import flash.display.DisplayObject;
	import flash.display.DisplayObjectContainer;
	import flash.events.Event;
	
	import weave.api.core.IDisposableObject;
	import weave.api.core.ILinkableDisplayObject;
