         }
     }
 
-    // MARK: - register & dequeue Cells
+    // MARK: - register & dequeue Cells and Header / Footer Cells
 
     /// Gets the identifier for a cell class
     ///

    private func reuseIdentifierForCellClass(cellClass: AnyClass) -> String {
        return String(describing: cellClass.self)
    }

    /// Registers a cell class for dequeueing. The reuseidentifier will be the class name of the type
    ///


    // MARK: - register & dequeue header/footer Cells

    /// Registers a header/footer class for dequeueing. The reuseidentifier will be the class name of the type
    ///
    /// - Parameter type: The header/footer class to register
    public func registerHeaderFooterClass<T: UITableViewHeaderFooterView>(ofType type: T.Type) {
        self.register(T.self, forHeaderFooterViewReuseIdentifier: self.reuseIdentifierForCellClass(cellClass: type))
    }

    /// Generic method to dequeue UITableViewHeaderFooterView. Making sure that all force casts are isolated in this extension
