                     }
                 }
                 
-                let sortedUpdatedIndexes = updatedIndexesSetInSortedAlbums.asArray().sorted(by: { $0.row < $1.row })
+                let sortedUpdatedIndexes = updatedIndexesSetInSortedAlbums.asArray(section: i).sorted(by: { $0.row < $1.row })
                 updatedAlbums.removeAll()
                 
                 for sortedUpdatedIndex in sortedUpdatedIndexes {
                     updatedAlbums.append(sortedAlbumsArray[i][sortedUpdatedIndex.row])
                 }
                 
-                DispatchQueue.main.async {
+                DispatchQueue.main.sync {
                     for subscriber in self.subscribers {
                         subscriber.assetsManager(manager: self, updatedAlbums: updatedAlbums, at: sortedUpdatedIndexes)
                     }

                    // stop caching for updated assets
                    stopCache(assets: updatedAssets, size: pickerConfig.assetCacheSize)
                    cache(assets: updatedAssets, size: pickerConfig.assetCacheSize)
                    DispatchQueue.main.async {
                        for subscriber in self.subscribers {
                            subscriber.assetsManager(manager: self, updatedAssets: updatedAssets, at: updatedIndexes)
                        }

                    }
                    // stop caching for removed assets
                    stopCache(assets: removedAssets, size: pickerConfig.assetCacheSize)
                    DispatchQueue.main.sync {
                        for subscriber in self.subscribers {
                            subscriber.assetsManager(manager: self, removedAssets: removedAssets, at: removedIndexes)
                        }
