 		guard notification.object is AccountManager else {
 			return
 		}
-		rebuildBackingStores(initialLoad: true)
-		treeControllerDelegate.resetFilterExceptions()
-		
-		if let (feedIndexPath, articleID) = deferredFeedAndArticleSelect {
-			selectFeed(indexPath: feedIndexPath) {
-				self.selectArticleInCurrentFeed(articleID)
-			}
-		}
+		
+		rebuildBackingStores(initialLoad: true, completion:  {
+			if let (feedIdentifier, articleID) = self.deferredFeedAndArticleSelect, let feedNode = self.nodeFor(feedID: feedIdentifier), let feedIndexPath = self.indexPathFor(feedNode) {
+				self.selectFeed(indexPath: feedIndexPath) {
+					self.selectArticleInCurrentFeed(articleID)
+				}
+			}
+		})
 	}
 
 	@objc func unreadCountDidChange(_ note: Notification) {

		case .script:
			return false
		
		case .folder(let accountID, let folderName):
			guard let accountNode = findAccountNode(accountID: accountID),
				let folderNode = findFolderNode(folderName: folderName, beginningAt: accountNode) else {
					return false
			}
			let found = selectFeedAndArticle(feedNode: folderNode, articleID: articleID)
			if found {
				treeControllerDelegate.addFilterException(feedIdentifier)
			}
			return found
		
		case .webFeed:
			guard let accountNode = findAccountNode(accountID: accountID), let webFeedNode = findWebFeedNode(webFeedID: webFeedID, beginningAt: accountNode) else {
				return false
			}
			let found = selectFeedAndArticle(feedNode: webFeedNode, articleID: articleID)
			if found {
				treeControllerDelegate.addFilterException(feedIdentifier)
				if let folder = webFeedNode.parent?.representedObject as? Folder, let folderFeedID = folder.feedID {
					treeControllerDelegate.addFilterException(folderFeedID)
				}
			}

		return nil
	}
	
	func selectFeedAndArticle(feedIdentifier: FeedIdentifier, articleID: String) -> Bool {
		guard let feedNode = nodeFor(feedID: feedIdentifier), let feedIndexPath = indexPathFor(feedNode) else { return false }
		
		if AccountManager.shared.isUnreadCountsInitialized {
			selectFeed(indexPath: feedIndexPath) {
				self.selectArticleInCurrentFeed(articleID)
			}
		} else {
			deferredFeedAndArticleSelect = (feedIdentifier, articleID)
		}
		
		return true
	}
	
}
