 			var ids:Array = [];
 			for (id in cache_dirty)
 			{
+				// when requesting root, also request data table list
 				if (id == ROOT_ID)
 					addAsyncResponder(Admin.service.getDataTableList(), handleDataTableList);
 				ids.push(int(id));

			if (!cache_dirty[id])
				callbacks.triggerCallbacks();
			
			cache_dirty[id] = true;
			
			if (!cache_entity[id])

		private var delete_later:Object = {}; // id -> Boolean
		private var _dataTableIds:Array = []; // array of EntityTableInfo
		private var _dataTableLookup:Object = {}; // id -> EntityTableInfo
		private var pending_invalidate:Object = {}; // id -> Boolean; used to remember which ids to invalidate the next time the entity is requested
		
        public function EntityCache()
        {
