         headerSequenceDisplayAdapter = FooterHeaderSequencePresentationAdapter(itemNode: headerNodeForSection)
         footerSequenceDisplayAdapter = FooterHeaderSequencePresentationAdapter(itemNode: footerNodeForSection)
         rowsSequenceDisplayAdapter = RowsSequencePresentationAdapter(itemNode: cellNodeForIndexPath)
+    }
+    
+    //call this before any reload*/insert*/delete*/move* tableview methods
+    public func resetCache() {
+        headerSequenceDisplayAdapter.resetCache()
+        footerSequenceDisplayAdapter.resetCache()
+        rowsSequenceDisplayAdapter.resetCache()
     }
     
     //MARK: - cells

    func makeView(_ tableView: UITableView, for index: Int) -> UIView {
        return node(for: index).makeView(tableView)
    }
}


    func makeView(_ tableView: UITableView, for index: IndexPath) -> UITableViewCell {
        return node(for: index).makeView(tableView)
    }
    
    func resetCache() {
        cache.removeAll()
    }
}

class FooterHeaderSequencePresentationAdapter {
