         }
         
         guard isSlidingNewContentInFromTheTopEnabled else {
-            performBatchUpdates(sectionCounts: sectionCounts, previousSectionCounts: previousSectionCounts)
+            performBatchUpdates()
             return
         }
 
         guard let columnarLayout = collectionView.collectionViewLayout as? ColumnarCollectionViewLayout else {
-            performBatchUpdates(sectionCounts: sectionCounts, previousSectionCounts: previousSectionCounts)
+            performBatchUpdates()
             return
         }
         

        sectionChanges.append(sectionChange)
    }
    
    private var sectionCounts: [Int] = []
    private func updateSectionCounts() {
        let sections = fetchedResultsController.sections ?? []
        sectionCounts = sections.map { $0.numberOfObjects }
    }
    
    @objc func controllerDidChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
        let previousSectionCounts = self.sectionCounts
        updateSectionCounts()
        let sectionCounts = self.sectionCounts
        var didInsertFirstSection = false
        var didOnlyChangeItems = true
        var sectionDelta = 0

                columnarLayout.animateItems = true
                columnarLayout.slideInNewContentFromTheTop = false
                UIView.animate(withDuration: 0.8, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: .allowUserInteraction, animations: {
                    self.performBatchUpdates()
                }, completion: nil)
            } else {
                columnarLayout.animateItems = false
                columnarLayout.slideInNewContentFromTheTop = false
                performBatchUpdates()
            }
            return
        }
        columnarLayout.animateItems = true
        columnarLayout.slideInNewContentFromTheTop = true
        UIView.animate(withDuration: 0.7 + 0.1 * TimeInterval(objectsInSectionDelta), delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: .allowUserInteraction, animations: {
            self.performBatchUpdates()
        }, completion: nil)
    }
    
    func performBatchUpdates() {
        let collectionView = self.collectionView
        collectionView.performBatchUpdates({
            DDLogDebug("=== WMFBU BATCH UPDATE START \(String(describing: self.delegate)) ===")
            var insertedSections = Set<Int>()
            var deletedSections = Set<Int>()
            var updatedSections = Set<Int>()
            
            for sectionChange in sectionChanges {
                switch sectionChange.type {
                case .delete:
                    DDLogDebug("WMFBU section delete: \(sectionChange.sectionIndex)")
                    collectionView.deleteSections(IndexSet(integer: sectionChange.sectionIndex))
                    deletedSections.insert(sectionChange.sectionIndex)
                case .insert:
                    DDLogDebug("WMFBU section insert: \(sectionChange.sectionIndex)")
                    collectionView.insertSections(IndexSet(integer: sectionChange.sectionIndex))
                    insertedSections.insert(sectionChange.sectionIndex)
                default:
                    DDLogDebug("WMFBU section update: \(sectionChange.sectionIndex)")
                    collectionView.reloadSections(IndexSet(integer: sectionChange.sectionIndex))
                    updatedSections.insert(sectionChange.sectionIndex)
                }
            }
            for objectChange in objectChanges {
