 
     public func collectionView(collectionView: UICollectionView,
         shouldSelectItemAtIndexPath indexPath: NSIndexPath) -> Bool {
-            if let cellItemType = dataSource.visibleStreamCellItem(at: indexPath)?.type {
-                return cellItemType.selectable
-            }
-            return false
+            guard
+                let cellItemType = dataSource.visibleStreamCellItem(at: indexPath)?.type
+            else { return false }
+
+            return cellItemType.selectable
     }
 }
 

    }

    private func loadNextPage(scrollView: UIScrollView) {
        if scrollView.contentOffset.y + (self.view.frame.height * 1.666) > scrollView.contentSize.height {
            if allOlderPagesLoaded == true { return }
            if responseConfig?.totalPagesRemaining == "0" { return }

            if let nextQueryItems = responseConfig?.nextQueryItems {
                if dataSource.visibleCellItems.count > 0 {
                    let lastCellItem: StreamCellItem = dataSource.visibleCellItems[dataSource.visibleCellItems.count - 1]
                    if lastCellItem.type == .StreamLoading { return }
                    appendStreamCellItems([StreamLoadingCell.streamCellItem()])
                }
                canLoadNext = false

                let scrollAPI = ElloAPI.InfiniteScroll(queryItems: nextQueryItems) { return self.streamKind.endpoint }
                streamService.loadStream(scrollAPI,
                    streamKind: streamKind,
                    success: {
                        (jsonables, responseConfig) in
                        self.scrollLoaded(jsonables)
                        self.responseConfig = responseConfig
                    },
                    failure: { (error, statusCode) in
                        print("failed to load stream (reason: \(error))")
                        self.scrollLoaded()
                    },
                    noContent: {
                        self.allOlderPagesLoaded = true
                        self.scrollLoaded()
                    })
            }
        }
    }

    private func scrollLoaded(jsonables: [JSONAble] = []) {
        if let lastIndexPath = collectionView.lastIndexPathForSection(0) {
            if jsonables.count > 0 {
                insertUnsizedCellItems(StreamCellItemParser().parse(jsonables, streamKind: streamKind, currentUser: currentUser), startingIndexPath: lastIndexPath) {
                    self.removeLoadingCell()
                    self.doneLoading()
                }
            }
            else {
                removeLoadingCell()
                self.doneLoading()
            }
        }
    }

    private func removeLoadingCell() {
        if let indexPath = self.collectionView.lastIndexPathForSection(0)
            where dataSource.visibleCellItems[indexPath.row].type == .StreamLoading
        {
            dataSource.removeItemsAtIndexPaths([indexPath])
            collectionView.reloadData()
        }
    }
}

    }

    public func userTappedAuthor(cell: UICollectionViewCell) {
        guard let
            indexPath = collectionView.indexPathForCell(cell),
            user = dataSource.userForIndexPath(indexPath)
        else { return }

        userTapped(user)
    }

    public func userTappedReposter(cell: UICollectionViewCell) {
        guard let
            indexPath = collectionView.indexPathForCell(cell),
            reposter = dataSource.reposterForIndexPath(indexPath)
        else { return }

        userTapped(reposter)
    }

    public func userTappedParam(param: String) {
