     }
     
     override open func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {
-        if tableView.dataSource?.tableView(tableView, numberOfRowsInSection: section) == 0 {
+        if isSectionEmpty(section) {
             return nil
         } else {
             return super.tableView(tableView, titleForFooterInSection: section)

        
        return headerFooterHeightForSection(section, height: height)
    }
    
    override open func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        if tableView.dataSource?.tableView(tableView, numberOfRowsInSection: section) == 0 {
            return nil
        } else {
            return super.tableView(tableView, titleForHeaderInSection: section)

    
    open func update(cells: [UITableViewCell]) {
        cells.forEach { cell in
            tableViewWrapper?.row(with: cell).update()
        }
    }
    
    open func set(cells: [UITableViewCell], hidden: Bool) {
        cells.forEach { (cell: UITableViewCell) in
            tableViewWrapper?.row(with: cell).hiding = hidden
        }
    }
    
    open func set(cells: [UITableViewCell], height: CGFloat) {
        cells.forEach { (cell: UITableViewCell) in
            tableViewWrapper?.row(with: cell).height = height
        }
    }
    
