     override func viewDidLoad() {
         super.viewDidLoad()
 
-        tableView.register(Cell.nib, forCellReuseIdentifier: Cell.reuseIdentifier)
+        tableView.register(cellType: Cell.self)
     }
 
     // MARK: - UITableViewDataSource

import UIKit
import Reusable

class TableViewController<Item, Cell: NibReusable>: UITableViewController {

    var items: [Item] = [] {
        didSet {

    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell: Cell = tableView.dequeueReusableCell(for: indexPath)
        configureCell?(cell, items[indexPath.row])

        return cell
    }

    // MARK: - UITableViewDelegate
