 }
 
 final class PhotoLibraryItemsServiceImpl: NSObject, PhotoLibraryItemsService, PHPhotoLibraryChangeObserver {
-
+    
     private let photoLibrary = PHPhotoLibrary.shared()
-    private var albumsFetchResult: PHFetchResult<PHAssetCollection>?
-    
-    private let setupQueue = DispatchQueue(
-        label: "ru.avito.Paparazzo.PhotoLibraryItemsServiceImpl.setupQueue",
-        qos: .userInitiated
-    )
+    private var albumsFetchResult: PhotoLibraryFetchResult?
     
     // lazy because if you create PHImageManager immediately
     // the app will crash on dealloc of this class if access to photo library is denied

    private var observedAlbum: PhotoLibraryAlbum?
    private var wasSetUp = false
    
    private func executeAfterSetup(on queue: DispatchQueue = .main, execute: @escaping () -> ()) {
        setupQueue.async {
            self.setUpIfNeeded(completion: {
                queue.async(execute: execute)
            })
        }
    }
    
    private func setUpIfNeeded(completion: @escaping () -> ()) {
        
        guard !wasSetUp else {
            completion()

    func observeAlbums(handler: @escaping ([PhotoLibraryAlbum]) -> ()) {
        executeAfterSetup {
            self.onAlbumsChange = handler
            handler(self.albumsFetchResult?.albums ?? [])
        }
    }
    
