 			else
 				addCursor result
 			
-			for name, record of oldRecords
+			for collectionName, record of oldRecords
 				for id of record.ids
-					@removed(name, id)
+					@removed(collectionName, id)
+				record.ids = {}
 			
 			oldRecords = newRecords
 			

			
			addCursor = (cursor) =>
				if cursor
					name = cursor._cursorDescription.collectionName
				
					record =
						cursor: cursor
						ids: {}
					
					newRecords[name] = record
					oldRecord = oldRecords[name] ? {ids: {}}
					
					cursor.observeChanges
						added: (id, fields) =>

								delete oldRecord.ids[id]
							else
								record.ids[id] = true
								@added(collectionName, id, fields)
								
						removed: (id) =>
							delete record.ids[id]
							@removed(collectionName, id)
							
						changed: (id, fields) =>
							@changed(collectionName, id, fields)
			
			result = f.call(@)
			
