         }
     }
 
-    var type: C.Type {
-        return C.self
+    public var type: UITableViewCellIdentifiable.Type {
+        switch self {
+        case .Default:
+            return TableViewCellDefault.self
+
+        case .Subtitle:
+            return TableViewCellSubtitle.self
+
+        case .Value1:
+            return TableViewCellValue1.self
+
+        case .Value2:
+            return TableViewCellValue2.self
+
+        case .Custom(let type, _):
+            return type
+
+        case .RowWithHandler(let row, _):
+            return row.type
+
+        case .RowWithSetup(let row, _):
+            return row.type
+        }
     }
 }
 
 public enum QuickTableViewSection: ArrayLiteralConvertible {
-    public typealias Row = QuickTableViewRowLike
+    public typealias Row = QuickTableViewRow
     public typealias Element = Row
     var count: Int { return rows.count }
 

        }
    }

    var rows: [QuickTableViewRow<TableViewCellDefault>] {
        switch self {
        case .Default(let rows):
            return rows

    func dequeueReusableCellWithIdentifier(tableView: UITableView, forIndexPath indexPath: NSIndexPath) -> C
}

public enum QuickTableViewRow: QuickTableViewRowLikeExtended {
    public typealias C = UITableViewCell
    public typealias QuickTableViewHandler = UIViewController -> Void

    case Default(String?)
