 
 	func markArticles(_ articles: [Article], read: Bool) {
 
-		guard let articlesToMark = read ? unreadArticles(from: articles) : readArticles(from: articles) else {
-			return
-		}
-		guard let undoManager = undoManager, let markReadCommand = MarkStatusCommand(initialArticles: Array(articlesToMark), markingRead: read, undoManager: undoManager) else {
+		markArticles(articles, statusKey: .read, flag: read)
+	}
+
+	func markArticles(_ articles: [Article], starred: Bool) {
+
+		markArticles(articles, statusKey: .starred, flag: starred)
+	}
+
+	func markArticles(_ articles: [Article], statusKey: ArticleStatus.Key, flag: Bool) {
+
+		guard let undoManager = undoManager, let markStatusCommand = MarkStatusCommand(initialArticles: articles, statusKey: statusKey, flag: flag, undoManager: undoManager) else {
 			return
 		}
 
-		runCommand(markReadCommand)
+		runCommand(markStatusCommand)
 	}
 
 	func unreadArticles(from articles: [Article]) -> [Article]? {

			menu.addItem(NSMenuItem.separator())
		}

//		if articles.anyArticleIsUnstarred() {
//			menu.addItem(markStarredMenuItem(articles))
//		}
//		if articles.anyArticleIsStarred() {
//			menu.addItem(markUnstarredMenuItem(articles))
//		}
		if menu.items.count > 0 && !menu.items.last!.isSeparatorItem {
			menu.addItem(NSMenuItem.separator())
		}


	@objc func markArticlesStarredFromContextualMenu(_ sender: Any?) {

		guard let articles = articles(from: sender) else {
			return
		}
		markArticles(articles, starred: true)
	}

	@objc func markArticlesUnstarredFromContextualMenu(_ sender: Any?) {

		guard let articles = articles(from: sender) else {
			return
		}
		markArticles(articles, starred: false)
	}

	@objc func openInBrowserFromContextualMenu(_ sender: Any?) {
