 
     public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
         let cell = collectionView.cellForItem(at: indexPath)!
-        let component = self.itemCompontent(for: indexPath, with: cell)
+        let component = self.itemComponent(for: indexPath, with: cell)
         self.didSelectComponent(component)
     }
 

    }

    public func visibleItemComponents() -> [Component] {
        return self.collectionView.indexPathsForVisibleItems().map({ self.itemCompontent(for: $0)! })
    }

    public func visibleSupplementaryComponents(of kind: SupplementaryIndex.Kind) -> [Component] {
        return self.collectionView.indexPathsForVisibleSupplementaryElements(ofKind: kind.collectionViewKind).map({
            self.supplementaryCompontent(of: kind, for: $0)
        }).flatMap({ $0 })
    }


    }

    public func collectionView(_ collectionView: UICollectionView, didEndDisplayingSupplementaryView view: UICollectionReusableView, forElementOfKind elementKind: String, at indexPath: IndexPath) {
        guard let component = self.supplementaryComponent(ofCollectionViewKind: elementKind, inSection: indexPath.section, with: view) else {
            return
        }
        component.detach()
