 			}
 		}
 		
+		let group = DispatchGroup()
+
+		for changedRecord in changed {
+			switch changedRecord.recordType {
+			case CloudKitAccountZone.CloudKitWebFeed.recordType:
+				group.enter()
+				addOrUpdateWebFeed(changedRecord) {
+					group.leave()
+				}
+			case CloudKitAccountZone.CloudKitContainer.recordType:
+				group.enter()
+				addOrUpdateContainer(changedRecord) {
+					group.leave()
+				}
+			default:
+				assertionFailure("Unknown record type: \(changedRecord.recordType)")
+			}
+		}
+		
 		group.notify(queue: DispatchQueue.main) {
 			completion(.success(()))
 		}

		guard let account = account,
			let name = record[CloudKitAccountZone.CloudKitContainer.Fields.name] as? String,
			let isAccount = record[CloudKitAccountZone.CloudKitContainer.Fields.isAccount] as? String,
			isAccount != "1" else { return }
		
		var folder = account.existingFolder(withExternalID: record.externalID)
		folder?.name = name

		guard let account = account,
			let urlString = record[CloudKitAccountZone.CloudKitWebFeed.Fields.url] as? String,
			let containerExternalIDs = record[CloudKitAccountZone.CloudKitWebFeed.Fields.containerExternalIDs] as? [String],
			let url = URL(string: urlString) else {
				completion()
				return
		}
		
		let editedName = record[CloudKitAccountZone.CloudKitWebFeed.Fields.editedName] as? String
		
