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

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

}

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
