     
     public var sections = [CollectionSectionDescriptable]() {
         didSet {
-            compute()
+            computeIndices()
         }
     }
     

    
    open func reloadData() { }
    
    fileprivate func compute() {
        
        for (sectionIndex, var section) in sections.enumerated() {
            section.index = sectionIndex

    
    public func append(cells:[CollectionCellDescriptable], in section:CollectionSectionDescriptable) {
        section.cells.append(contentsOf: cells)
        computeIndices()
        
        result?.insertedCellDescriptors.append(contentsOf: cells)
        result?.insertedIndexPaths.append(contentsOf: cells.map{ $0.indexPath } )
    }
    
    public func remove(cells:[CollectionCellDescriptable]) {
        var needTocomputeIndices = false
        cells.forEach { (cellToDelete) in
            if let section = sectionDescriptable(for: cellToDelete) {
                if let index = section.cells.index(where: {$0 === cellToDelete} ) {
                    section.cells.remove(at: index)
                    result?.deletedIndexPaths.append( cellToDelete.indexPath )
                    result?.deletedCellDescriptors.append(cellToDelete )
                    needTocomputeIndices = true
                }
            }
        }
        if needTocomputeIndices {
            computeIndices()
        }
    }
    
