   typealias DataSourceType = ObjectsDataSource<ObjectType>
   
   public var nibNameForObjectMatching: (ObjectType -> String)!
+  public var footerNibNameForSectionIndexMatching: (Int -> String?) = { _ in nil }
+  public var headerNibNameForSectionIndexMatching: (Int -> String?) = { _ in nil }
   
   public let didSelectCellSignal = Pipe<(cell: UITableViewCell?, object: ObjectType?)>()
   public let willDisplayCellSignal = Pipe<(UITableViewCell, NSIndexPath)>()

  @objc
  public func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    let identifier = nibNameForObjectMatching(dataSource.objectAtIndexPath(indexPath)!)
    if let cell = instances[identifier] as? HeightCalculatingCell {
      return cell.heightFor(dataSource.objectAtIndexPath(indexPath), width: tableView.frame.size.width)
    }
    return UITableViewAutomaticDimension;
  }
  
  @objc

    didEndDisplayingCellSignal.sendNext((cell, indexPath))
  }
  
}
