 
     internal func markArticle(article: Article, asRead: Bool) {
         self.backgroundQueue.addOperationWithBlock {
-            self.privateMarkArticle(article, asRead: asRead)
+            self.privateMarkArticles([article], asRead: asRead)
         }
     }
 


    internal func markFeedAsRead(feed: Feed) {
        self.backgroundQueue.addOperationWithBlock {
            for article in feed.articles where article.read == false {
                self.privateMarkArticle(article, asRead: true)
            }
        }
    }


        }
    }

    private func privateMarkArticles(articles: [Article], asRead read: Bool) {
        guard let lastArticle = articles.last else { // also implicitly guarantees that articles is not empty
            return
        }

        let articleIds = articles.reduce([NSManagedObjectID]()) {
            if let id = $1.articleID {
                return $0 + [id]
            }
            return $0
        }
        articles.forEach { $0.read = read }
        let cdArticles = DataUtility.entities("Article", matchingPredicate: NSPredicate(format: "self IN %@", articleIds), managedObjectContext: self.objectContext, sortDescriptors: [])
        cdArticles.forEach {
            if let cdArticle = $0 as? CoreDataArticle {
                cdArticle.read = read
            }
        }
        self.save()
        self.mainQueue.addOperationWithBlock {
            for object in self.subscribers.allObjects {
                if let subscriber = object as? DataSubscriber {
                    subscriber.markedArticle(lastArticle, asRead: read)
                }
            }
        }
