 
     private func updateFilteredItems() {
         if let streamFilter = streamFilter {
-            self.streamCellItems = self.sourceCellItems.filter(streamFilter)
+            self.visibleCellItems = self.streamCellItems.filter(streamFilter)
         }
         else {
-            self.streamCellItems = self.sourceCellItems
+            self.visibleCellItems = self.streamCellItems
         }
     }
 
     private func isValidIndexPath(indexPath: NSIndexPath) -> Bool {
-        return indexPath.item < countElements(streamCellItems) && indexPath.section == 0
+        return indexPath.item < countElements(visibleCellItems) && indexPath.section == 0
     }
 }

    func commentIndexPathsForPost(post: Post) -> [NSIndexPath] {
        var indexPaths:[NSIndexPath] = []

        for (index,value) in enumerate(streamCellItems) {

            if let comment = value.jsonable as? Comment {
                if comment.parentPost?.postId == post.postId {


        // @seand: why does this always add padding? UserListItemCell is a fixed height, but this always adds an extra 10
        if numberOfColumns == 1 {
            return visibleCellItems[indexPath.item].oneColumnCellHeight + imageBottomPadding ?? 0.0
        }
        else {
            return visibleCellItems[indexPath.item].multiColumnCellHeight + imageBottomPadding ?? 0.0
        }
    }

    func isFullWidthAtIndexPath(indexPath:NSIndexPath) -> Bool {
        if !isValidIndexPath(indexPath) { return true }

        return visibleCellItems[indexPath.item].isFullWidth
    }

    func maintainAspectRatioForItemAtIndexPath(indexPath:NSIndexPath) -> Bool {
        return false
//        return visibleCellItems[indexPath.item].data?.kind == .Image ?? false
    }

    func groupForIndexPath(indexPath:NSIndexPath) -> String {
        if !isValidIndexPath(indexPath) { return "0" }

        return (visibleCellItems[indexPath.item].jsonable as? Authorable)?.groupId ?? "0"
    }

    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return visibleCellItems.count ?? 0
    }

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        if indexPath.item < countElements(visibleCellItems) {
            let streamCellItem = visibleCellItems[indexPath.item]

            var cell = collectionView.dequeueReusableCellWithReuseIdentifier(streamCellItem.type.name, forIndexPath: indexPath) as UICollectionViewCell

