 		guard let undoManager = undoManager, let markAllReadCommand = MarkAllReadCommand(initialArticles: articles, undoManager: undoManager) else {
 			return
 		}
-		markAllReadCommand.perform()
-	}
-	
-	// MARK: - Actions
+		runCommand(markAllReadCommand)
+	}
+
+	// MARK: - Undoable Commands
+
+	private func runCommand(_ undoableCommand: UndoableCommand) {
+
+		pushUndoableCommand(undoableCommand)
+		undoableCommand.perform()
+	}
 
 	private func pushUndoableCommand(_ undoableCommand: UndoableCommand) {
 


	private var articles = [Article]() {
		didSet {
			tableView.reloadData()
		}
	}


		undoableCommands.forEach { undoManager.removeAllActions(withTarget: $0) }
		undoableCommands = [UndoableCommand]()
	}

	// MARK: - Actions

	@objc func openArticleInBrowser(_ sender: AnyObject) {
		
