                 ]
                 return options
                 }()
-            return collections.map {
+            let albums: [PhotosProviderCollection] = collections.map {
                 
                 let _assets = PHAsset.fetchAssetsInAssetCollection($0, options: defaultOptions)
                 let title = $0.localizedTitle ?? ""
                 return PhotosProviderCollection(title: title, group: _assets, buildGroupByDay: buildGroupByDay)
             }
+            
+            self.fetchedAlbums = albums
+        
+            return albums
         } else {
             
             return []
         }
     }
+    
+    private var fetchedAlbums: [PhotosProviderCollection]?
 }

        self.configuration = configuration
    }
            
    public static func startPreheating() {
        
    }
    
    public static func endPreheating() {
        
    }
    
    public func fetchAllPhotos() -> PhotosProviderCollection? {
        
        if #available(iOS 8.0, *) {
            // Use Photos.framework

    
    public func fetchAlbums(buildGroupByDay buildGroupByDay: Bool = false) -> [PhotosProviderCollection] {
        
        guard PhotosProvider.authorizationStatus == .Authorized else {
            return []
        }
        
        if let fetchedAlbums = self.fetchedAlbums {
            
            return fetchedAlbums
        }
        
        if #available(iOS 8.0, *) {
            
            let collections = self.configuration.fetchAlbums()
