 		let source = node.parent?.representedObject as? Container
 		let destination = parentNode.representedObject as? Container
 
+		BatchUpdate.shared.start()
 		source?.removeFeed(feed) { result in
 			switch result {
 			case .success:
 				destination?.addFeed(feed) { result in
+					BatchUpdate.shared.end()
 					switch result {
 					case .success:
 						break

		
		if let existingFeed = destinationAccount.existingFeed(withURL: feed.url) {
			
			destinationContainer.addFeed(existingFeed) { result in
				switch result {
				case .success:
					sourceAccount.deleteFeed(feed) { result in
						switch result {
						case .success:
							break

			return false
		}

		draggedNodes.forEach { node in
			if sameAccount(node, parentNode) {
				if NSApplication.shared.currentEvent?.modifierFlags.contains(.option) ?? false {
					copyInAccount(node: node, to: parentNode)
				} else {
					moveInAccount(node: node, to: parentNode)
				}
			} else {
				if NSApplication.shared.currentEvent?.modifierFlags.contains(.option) ?? false {
					copyBetweenAccounts(node: node, to: parentNode)
				} else {
					moveBetweenAccounts(node: node, to: parentNode)
				}
			}
		}
		
		let allReferencedNodes = draggedNodes.union(Set([parentNode]))
