 			return false
 		}
 
-		BatchUpdate.shared.perform {
-			
-			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)
-					}
+		draggedNodes.forEach { node in
+			if sameAccount(node, parentNode) {
+				if NSApplication.shared.currentEvent?.modifierFlags.contains(.option) ?? false {
+					copyInAccount(node: node, to: parentNode)
 				} else {
-					if NSApplication.shared.currentEvent?.modifierFlags.contains(.option) ?? false {
-						copyBetweenAccounts(node: node, to: parentNode)
-					} else {
-						moveBetweenAccounts(node: node, to: parentNode)
-					}
+					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]))

		
		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

		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
