 			var newObject:DisplayObject = target as DisplayObject;
 			if (oldObject != newObject)
 			{
+				// make sure two instances don't try to take the same target
+				var lddo:LinkableDynamicDisplayObject = objectToLDDO[newObject];
+				if (lddo && !objectWasDisposed(lddo) && lddo != this)
+					newObject = null;
+				else
+					objectToLDDO[newObject] = this;
+				delete objectToLDDO[oldObject];
+				
 				_object = newObject;
 				changeParent(oldObject, _parent, null);
 				updateParentLater();

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


			this.addImmediateCallback(this, firstCallback);
		}
		
		private static const objectToLDDO:Dictionary = new Dictionary(true);
		private var _parent:DisplayObjectContainer = null;
		private var _object:DisplayObject = null;
		
