     }
 
     public func visibleItemComponents() -> [Component] {
-        return self.collectionView.indexPathsForVisibleItems().map({ self.itemCompontentForIndexPath($0)! })
+        return self.collectionView.indexPathsForVisibleItems().map({ self.itemComponentForIndexPath($0)! })
     }
 
     public func visibleSupplementaryComponentsForKind(kind: SupplementaryIndex.Kind) -> [Component] {
         return self.collectionView.indexPathsForVisibleSupplementaryElementsOfKind(kind.collectionViewKind).map({
-            self.supplementaryCompontentOfKind(kind, forIndexPath: $0)
+            self.supplementaryComponentOfKind(kind, forIndexPath: $0)
         }).flatMap({ $0 })
     }
 

    }

    public func collectionView(collectionView: UICollectionView, didEndDisplayingSupplementaryView view: UICollectionReusableView, forElementOfKind elementKind: String, atIndexPath indexPath: NSIndexPath) {
        guard let component = self.supplementaryCompontentOfCollectionViewKind(elementKind, forSection: indexPath.section, view: view) else {
            return
        }
        component.detach()

        let item = self.itemForIndexPath(indexPath)
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(item.controller.computedViewIdentifier, forIndexPath: indexPath) as! ItemViewCell
        cell.nestedView = item.controller.viewForItem(item, reusingView: cell.nestedView)
        let component = self.itemComponentForIndexPath(indexPath, cell: cell)
        component.attach()
        return cell
    }

    public func collectionView(collectionView: UICollectionView, didEndDisplayingCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {
        let component = self.itemComponentForIndexPath(indexPath, cell: cell)
        component.detach()
    }

