 			_callbackFunctionCache = {};
 			_d2d_callbackStr_target = new Dictionary2D(true, true);
 		}
+		
+		private static function externalError(message:String):void
+		{
+			WeaveAPI.externalError("Error: " + message);
+		}
+		
+		private static function externalWarning(message:String):void
+		{
+			WeaveAPI.externalError("Warning: " + message);
+		}
 	}
 }

	import weave.api.core.ILinkableHashMap;
	import weave.api.core.ILinkableObject;
	import weave.api.getCallbackCollection;
	import weave.api.reportError;
	import weave.compiler.Compiler;
	import weave.compiler.ICompiledObject;
	import weave.utils.Dictionary2D;

	/**

		 */
		public function removeObject(objectPath:Array):Boolean
		{
			if (objectPath && objectPath.length)
			{
				objectPath = objectPath.concat();
				var childName:Object = objectPath.pop();
				var parent:ILinkableObject = WeaveAPI.SessionManager.getObject(_rootObject, objectPath);
				var hashMap:ILinkableHashMap = parent as ILinkableHashMap;
				var dynamicObject:ILinkableDynamicObject = parent as ILinkableDynamicObject;
				if (hashMap)
				{
					if (childName is Number)
						childName = hashMap.getNames()[childName];
					hashMap.removeObject(childName as String);
					return true;
				}
				else if (dynamicObject)
				{
					dynamicObject.removeObject();
					return true;
				}
			}
			
			externalWarning("No suitable parent from which to remove a child at path " + Compiler.stringify(objectPath));
			return false;
		}
		
		/**
