     func userForIndexPath(indexPath: NSIndexPath) -> User? {
         if !isValidIndexPath(indexPath) { return nil }
 
-        if let user = streamCellItems[indexPath.item].jsonable as? User {
+        if let user = visibleCellItems[indexPath.item].jsonable as? User {
             return user
         }
-        else if let authorable = streamCellItems[indexPath.item].jsonable as? Authorable {
+        else if let authorable = visibleCellItems[indexPath.item].jsonable as? Authorable {
             return authorable.author
         }
         return nil

    // MARK: - Public

    func removeAllCellItems() {
        sourceCellItems = []
        updateFilteredItems()
    }

    func removeCellItemsBelow(index: Int) {
        var belowIndex = index
        if index > sourceCellItems.count {
            belowIndex = sourceCellItems.count
        }
        let remainingCellItems = sourceCellItems[0 ..< belowIndex]
        sourceCellItems = Array(remainingCellItems)
        updateFilteredItems()
    }

    func postForIndexPath(indexPath: NSIndexPath) -> Post? {
        if !isValidIndexPath(indexPath) { return nil }

        return streamCellItems[indexPath.item].jsonable as? Post
    }

    func commentForIndexPath(indexPath: NSIndexPath) -> Comment? {
        if !isValidIndexPath(indexPath) { return nil }

        return streamCellItems[indexPath.item].jsonable as? Comment
    }

    func streamCellItem(at indexPath: NSIndexPath) -> StreamCellItem? {
        return streamCellItems[indexPath.item]
    }

    // TODO: also grab out comment cells for the detail view
    func cellItemsForPost(post:Post) -> [StreamCellItem] {
        return streamCellItems.filter({ (item) -> Bool in
            if let cellPost = item.jsonable as? Post {
                return post.postId == cellPost.postId
            }

            for (index, cellItem) in enumerate(cellItems) {
                var index = startingIndex + index
                indexPaths.append(NSIndexPath(forItem: index, inSection: 0))
                self.streamCellItems.insert(cellItem, atIndex: index)
            }

            self.updateFilteredItems()
