   
   public var nibNameForObjectMatching: (ObjectType -> String)!
   
-  public let didSelectCellSignal = Pipe<(cell: UICollectionViewCell?, object: ObjectType?)>()
-  public let willDisplayCellSignal = Pipe<(UICollectionViewCell, NSIndexPath)>()
-  public let willCalculateSizeSignal = Pipe<(UICollectionViewCell, NSIndexPath)>()
+  public let didSelectCell = Pipe<(UICollectionViewCell, NSIndexPath, ObjectType)>()
+  public let willDisplayCell = Pipe<(UICollectionViewCell, NSIndexPath)>()
+  public let willCalculateSize = Pipe<(UICollectionViewCell, NSIndexPath)>()
   public let didEndDisplayingCell = Pipe<(UICollectionViewCell, NSIndexPath)>()
-  public let willSetObjectSignal = Pipe<(UICollectionViewCell, NSIndexPath)>()
-  public let didSetObjectSignal = Pipe<(UICollectionViewCell, NSIndexPath)>()
+  public let willSetObject = Pipe<(UICollectionViewCell, NSIndexPath)>()
+  public let didSetObject = Pipe<(UICollectionViewCell, NSIndexPath)>()
   
   public var checkedIndexPaths = [NSIndexPath]() {
     didSet {

      checkable.checked = checkedIndexPaths.contains(indexPath)
    }

    willDisplayCellSignal.sendNext((cell, indexPath))
  }
  
  public func collectionView(collectionView: UICollectionView, didEndDisplayingCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {

    let identifier = nibNameForObjectMatching(dataSource.objectAtIndexPath(indexPath)!)
    
    if let cell = instances[identifier] as? SizeCalculatingCell {
      willCalculateSize.sendNext((instances[identifier]!, indexPath))
      return cell.sizeFor(dataSource.objectAtIndexPath(indexPath))
    }
    
