 			func process(_ pendingArticleIDs: Set<String>) {
 				
 				let feedbinStarredArticleIDs = Set(articleIDs.map { String($0) } )
-				let updatableFeedbinUnreadArticleIDs = feedbinStarredArticleIDs.subtracting(pendingArticleIDs)
+				let updatableFeedbinStarredArticleIDs = feedbinStarredArticleIDs.subtracting(pendingArticleIDs)
 
 				account.fetchStarredArticleIDs { articleIDsResult in
 					guard let currentStarredArticleIDs = try? articleIDsResult.get() else {
 						return
 					}
 
+					let group = DispatchGroup()
+					
 					// Mark articles as starred
-					let deltaStarredArticleIDs = updatableFeedbinUnreadArticleIDs.subtracting(currentStarredArticleIDs)
-					account.markAsStarred(deltaStarredArticleIDs)
+					let deltaStarredArticleIDs = updatableFeedbinStarredArticleIDs.subtracting(currentStarredArticleIDs)
+					group.enter()
+					account.markAsStarred(deltaStarredArticleIDs) { _ in
+						group.leave()
+					}
 
 					// Mark articles as unstarred
-					let deltaUnstarredArticleIDs = currentStarredArticleIDs.subtracting(updatableFeedbinUnreadArticleIDs)
-					account.markAsUnstarred(deltaUnstarredArticleIDs)
+					let deltaUnstarredArticleIDs = currentStarredArticleIDs.subtracting(updatableFeedbinStarredArticleIDs)
+					group.enter()
+					account.markAsUnstarred(deltaUnstarredArticleIDs) { _ in
+						group.leave()
+					}
+
+					group.notify(queue: DispatchQueue.main) {
+						completion()
+					}
 				}
 								
 			}

		
	}
	
	func syncArticleStarredState(account: Account, articleIDs: [Int]?) {
		guard let articleIDs = articleIDs else {
			return
		}


						return
					}

					let group = DispatchGroup()
					
					// Mark articles as unread
					let deltaUnreadArticleIDs = updatableFeedbinUnreadArticleIDs.subtracting(currentUnreadArticleIDs)
					group.enter()
					account.markAsUnread(deltaUnreadArticleIDs) { _ in
						group.leave()
					}

					// Mark articles as read
					let deltaReadArticleIDs = currentUnreadArticleIDs.subtracting(updatableFeedbinUnreadArticleIDs)
					group.enter()
					account.markAsRead(deltaReadArticleIDs) { _ in
						group.leave()
					}
					
					group.notify(queue: DispatchQueue.main) {
						completion()
					}
					
				}

			}
