 		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()
         {

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

			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));
