         guard let indexPath = self.itemIndexPaths[index] else {
             return nil
         }
-        return self.itemCompontentForIndexPath(indexPath)
+        return self.itemComponentForIndexPath(indexPath)
     }
 
     public func componentForSupplementaryIndex(index: SupplementaryIndex) -> Component? {
         guard let indexPath = self.supplementaryIndexPaths[index] else {
             return nil
         }
-        return self.supplementaryCompontentOfKind(index.kind, forIndexPath: indexPath)
+        return self.supplementaryComponentOfKind(index.kind, forIndexPath: indexPath)
     }
 
     // MARK: Internal
 
-    private func itemCompontentForIndexPath(indexPath: NSIndexPath) -> Component? {
+    private func itemComponentForIndexPath(indexPath: NSIndexPath) -> Component? {
         guard let cell = self.collectionView.cellForItemAtIndexPath(indexPath) else {
             return nil
         }
-        return self.itemCompontentForIndexPath(indexPath, cell: cell)
-    }
-
-    private func supplementaryCompontentOfKind(kind: SupplementaryIndex.Kind, forIndexPath indexPath: NSIndexPath) -> Component? {
+        return self.itemComponentForIndexPath(indexPath, cell: cell)
+    }
+
+    private func supplementaryComponentOfKind(kind: SupplementaryIndex.Kind, forIndexPath indexPath: NSIndexPath) -> Component? {
         // Uhh?
         let view = self.collectionView.supplementaryViewForElementKind(kind.collectionViewKind, atIndexPath: indexPath)
-        return self.supplementaryCompontentOfKind(kind, forSection: indexPath.section, view: view)
-    }
-
-    private func itemCompontentForIndexPath(indexPath: NSIndexPath, cell: UICollectionViewCell) -> Component {
+        return self.supplementaryComponentOfKind(kind, forSection: indexPath.section, view: view)
+    }
+
+    private func itemComponentForIndexPath(indexPath: NSIndexPath, cell: UICollectionViewCell) -> Component {
         let item = self.itemForIndexPath(indexPath)
         let itemCell = cell as! ItemViewCell
         return Component(item: item, itemViewCell: itemCell)
     }
 
-    private func supplementaryCompontentOfCollectionViewKind(elementKind: String, forSection section: Int, view: UICollectionReusableView) -> Component? {
+    private func supplementaryComponentOfCollectionViewKind(elementKind: String, forSection section: Int, view: UICollectionReusableView) -> Component? {
         guard let kind = GridCollectionController.SupplementaryIndex.Kind.kindForCollectionViewKind(elementKind) else {
             return nil
         }
-        return supplementaryCompontentOfKind(kind, forSection: section, view: view)
-    }
-
-    private func supplementaryCompontentOfKind(kind: SupplementaryIndex.Kind, forSection section: Int, view: UICollectionReusableView) -> Component? {
+        return supplementaryComponentOfKind(kind, forSection: section, view: view)
+    }
+
+    private func supplementaryComponentOfKind(kind: SupplementaryIndex.Kind, forSection section: Int, view: UICollectionReusableView) -> Component? {
         guard let supplementary = self.supplementaryOfKind(kind, forSection: section) else {
             return nil
         }

    }

    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()
    }

