         var section = sections[indexPath.section]
         let measuringCell = section.measuringCell
         let size = section.itemSize
-        configure(cell: measuringCell, at: indexPath, forMeasuring: true)
+        configure(cell: measuringCell, in: section.id, at: indexPath, forMeasuring: true)
         if size.width == .full && size.height == .compressed {
             measuringCell.frame.size.width = collectionView.frame.width
             measuringCell.setNeedsLayout()

        let collection = collectionView!
        let updates = {
            let insertAt = self.sections.count
            collection.register(section.cellNib, forCellWithReuseIdentifier: section.identifier)
            self.sections.append(section)
            collection.insertSections(IndexSet(integer: insertAt))
        }
        collection.performBatchUpdates(updates)
    }
    
    open func configure(cell: UICollectionViewCell, at indexPath: IndexPath, forMeasuring: Bool = false) {
        
    }
}

}

public struct CollectionSection {
    let cellIdentifier = UUID().uuidString
    let cellNib: UINib
    let itemsCount: Int
    let itemSize: Size
    let id: UUID
    internal lazy var measuringCell: UICollectionViewCell = {
        return self.cellNib.loadInstance() as! UICollectionViewCell
    }()
    
    public init(id: UUID = UUID(), cellNib: UINib, numberOfItems: Int, itemSize: Size) {
        self.id = id
        self.cellNib = cellNib
        self.itemsCount = numberOfItems
        self.itemSize = itemSize
