 			Admin.service.updateEntity(id, diff);
 			invalidate(id);
         }
-        public function add_category(label:String, parentId:int, index:int):void
+        public function add_category(title:String, parentId:int, index:int):void
         {
 			var type:int = parentId == ROOT_ID ? EntityType.HIERARCHY : EntityType.CATEGORY;
             var em:EntityMetadata = new EntityMetadata();
-			em.publicMetadata[ColumnMetadata.TITLE] = label;
+			em.publicMetadata[ColumnMetadata.TITLE] = title;
 			Admin.service.newEntity(type, em, parentId, index);
 			invalidate(parentId);
         }
         public function delete_entity(id:int):void
         {
             /* Entity deletion should usually impact root, so we'll invalidate root's cache entry and refetch. */
-			delete_later[id] = true;
+			idsToDelete[id] = true;
 			invalidate(id, true);
         }
         public function add_child(parent_id:int, child_id:int, index:int):void
         {
-			if (parent_id == ROOT_ID && delete_later[child_id])
+			if (parent_id == ROOT_ID && idsToDelete[child_id])
 			{
 				// prevent hierarchy-dragged-to-root from removing the hierarchy
-				delete delete_later[child_id];
+				delete idsToDelete[child_id];
 				return;
 			}
 			Admin.service.addParentChildRelationship(parent_id, child_id, index);

			
			if (purge)
			{
				cache_dirty = {};
				cache_entity = {};
				delete_later = {};
				_idsByType = {};
				_infoLookup = {};
				pending_invalidate = {};
			}
			else
			{
				// we don't want to delete the cache because we can still use the cached values for display in the meantime.
				for (var id:* in cache_entity)
					pending_invalidate[id] = true;
			}
			callbacks.triggerCallbacks();
			

		{
			callbacks.delayCallbacks();
			
			// trigger callbacks if we haven't previously decided to fetch this id
			if (!idsToFetch[id])
				callbacks.triggerCallbacks();
			
			idsDirty[id] = false;
			idsToFetch[id] = true;
			
			if (!entityCache[id])
			{
				var entity:Entity = new Entity();
				entityCache[id] = entity;
			}
			
			if (alsoInvalidateParents)
			{
				var parents:Array = (entityCache[id] as Entity).parentIds;
				if (parents && parents.length)
				{
					for each (var parentId:* in parents)
