 				self.refreshProgress.completeTask()
 				BatchUpdate.shared.perform {
 					self.syncFeeds(account, subscriptions)
-					self.syncTaggings(account, subscriptions)
+					self.syncFeedFolderRelationship(account, subscriptions)
 				}
 				completion(.success(()))
 			case .failure(let error):

	func syncFolders(_ account: Account, _ tags: [ReaderAPITag]?) {
		guard let tags = tags else { return }
		assert(Thread.isMainThread)

		os_log(.debug, log: log, "Syncing folders with %ld tags.", tags.count)

		let readerFolderNames = tags.compactMap { $0.folderName }

		// Delete any folders not at Reader
		if let folders = account.folders {
			folders.forEach { folder in
				if !readerFolderNames.contains(folder.name ?? "") {
					for feed in folder.topLevelWebFeeds {
						account.addWebFeed(feed)
						clearFolderRelationship(for: feed, withFolderName: folder.name ?? "")
					}
					account.removeFolder(folder)
				}
			}
		}
		
		let folderNames: [String] =  {
			if let folders = account.folders {
				return folders.map { $0.name ?? "" }
			} else {
				return [String]()
			}
		}()

		// Make any folders Reader has, but we don't
		tags.forEach { tag in
			if let tagFolderName = tag.folderName, !folderNames.contains(tagFolderName) {
				let folder = account.ensureFolder(with: tagFolderName)
				folder?.externalID = tag.tagID
			}
		}

	}
	
	func addWebFeed(for account: Account, with feed: WebFeed, to container: Container, completion: @escaping (Result<Void, Error>) -> Void) {
		if let folder = container as? Folder, let feedExternalID = feed.externalID {
			refreshProgress.addToNumberOfTasksAndRemaining(1)
			caller.createTagging(subscriptionID: feedExternalID, tagName: folder.name ?? "") { result in
				self.refreshProgress.completeTask()
				switch result {
				case .success:
					DispatchQueue.main.async {
						self.saveFolderRelationship(for: feed, folderExternalID: folder.externalID, feedExternalID: feedExternalID)
						account.removeWebFeed(feed)
						folder.addWebFeed(feed)
						completion(.success(()))
