     return tableView.dequeueReusableHeaderFooterViewWithIdentifier(identifier)
   }
 
+  /// Beginning in iOS 6, clients can register a nib or class for each cell.
+  /// If all reuse identifiers are registered, use the newer -dequeueReusableCellWithIdentifier:forIndexPath: to guarantee that a cell instance is returned.
+  /// Instances returned from the new dequeue method will also be properly sized when they are returned.
+
+  @available(iOS 5.0, *)
+  public func registerNib(nib: UINib?, forCellReuseIdentifier identifier: String) {
+    tableView.registerNib(nib, forCellReuseIdentifier: identifier)
+  }
+
+  @available(iOS 6.0, *)
   public func registerClass(cellClass: AnyClass?, forCellReuseIdentifier identifier: String) {
     tableView.registerClass(cellClass, forCellReuseIdentifier: identifier)
   }
 
-  public func registerNib(nib: UINib?, forCellReuseIdentifier identifier: String) {
-    tableView.registerNib(nib, forCellReuseIdentifier: identifier)
-  }
-
+  @available(iOS 6.0, *)
+  public func registerNib(nib: UINib?, forHeaderFooterViewReuseIdentifier identifier: String) {
+    tableView.registerNib(nib, forHeaderFooterViewReuseIdentifier: identifier)
+  }
+
+  @available(iOS 6.0, *)
   public func registerClass(aClass: AnyClass?, forHeaderFooterViewReuseIdentifier identifier: String) {
     tableView.registerClass(aClass, forHeaderFooterViewReuseIdentifier: identifier)
-  }
-
-  public func registerNib(nib: UINib?, forHeaderFooterViewReuseIdentifier identifier: String) {
-    tableView.registerNib(nib, forHeaderFooterViewReuseIdentifier: identifier)
   }
 
 }

  public func dequeueReusableCellWithIdentifier(identifier: String) -> UITableViewCell? {
    return tableView.dequeueReusableCellWithIdentifier(identifier)
  }
  
  public func dequeueReusableCellWithIdentifier(identifier: String, forIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    return tableView.dequeueReusableCellWithIdentifier(identifier, forIndexPath: indexPath)
  }

    set { tableView.sectionIndexMinimumDisplayRowCount = newValue }
    get { return tableView.sectionIndexMinimumDisplayRowCount }
  }

  public var sectionIndexColor: UIColor? {
    set { tableView.sectionIndexColor = newValue }
    get { return tableView.sectionIndexColor }
  }

  public var sectionIndexBackgroundColor: UIColor? {
    set { tableView.sectionIndexBackgroundColor = newValue }
    get { return tableView.sectionIndexBackgroundColor }
  }

  public var sectionIndexTrackingBackgroundColor: UIColor? {
    set { tableView.sectionIndexTrackingBackgroundColor = newValue }
    get { return tableView.sectionIndexTrackingBackgroundColor }
