 			var object:ILinkableObject = _nameToObjectMap[name];
 			if (object == null)
 				return; // do nothing if the name isn't mapped to an object.
+			
+			delayCallbacks();
 			
 			//trace(LinkableHashMap, "removeObject",name,object);
 			// remove name & associated object

			_childListCallbacks.runCallbacks(name, null, object);

			// dispose the object AFTER the callbacks know that the object was removed
			Weave.dispose(object);
		}

		public function removeAllObjects():void

			if (Weave.getOwner(object))
				throw new Error("LinkableHashMap cannot accept an object that is already registered with an owner.");
			
			if (object)
			{
				delayCallbacks();
				
				// register the object as a child of this LinkableHashMap
				Weave.linkableChild(this, object);
				// replace existing object
				var oldObject:ILinkableObject = _nameToObjectMap[name];
				_nameToObjectMap[name] = object;
				_map_objectToNameMap.set(object, name);
				if (_orderedNames.indexOf(name) < 0)
					_orderedNames.push(name);
				// remember that this name was used in case there was no previous object
				_previousNameMap[name] = true;
				
				// make callback variables signal that the object was replaced or added
				_childListCallbacks.runCallbacks(name, object, oldObject);
				
				// dispose the object AFTER the callbacks know that the object was removed
				Weave.dispose(oldObject);
				
				resumeCallbacks();
			}
			else
			{
				removeObject(name);
			}
		}
		
		public function getName(object:ILinkableObject):String
