      - Parameter completion: An optional completion block.
      */
     public func fetch(type: PHAssetCollectionType, subtype: PHAssetCollectionSubtype, completion: ([PhotoLibraryDataSource]) -> Void) {
+        self.type = type
+        self.subtype = subtype
+        
         DispatchQueue.global(qos: .default).async { [weak self, type = type, subtype = subtype, completion = completion] in
             guard let s = self else {
                 return

    /**
     A delegation method that is executed when there are changed objects.
     - Parameter photoLibrary: A reference to the PhotoLibrary.
     - Parameter removed indexes: An IndexSet of the changed indexes.
     - Parameter for objects: An Array of PHObjects that have been changed.
     */
    @objc
    optional func photoLibrary(photoLibrary: PhotoLibrary, changed indexes: IndexSet, for objects: [PHObject])
}

@objc(PhotoLibrary)
public class PhotoLibrary: NSObject {
    /// A reference to the PHCachingImageManager.
    public private(set) lazy var cachingImageManager = PHCachingImageManager()
    
    /// A reference to the collection PHFetchResult.
    public private(set) var collectionFetchResult: PHFetchResult<PHAssetCollection>?
    
    /// An array of PHFetchResult<PHAsset> types.
    public private(set) var assetFetchResults: [PHFetchResult<PHAsset>]!
    
    /// The assets used in the album.
    public private(set) var collections: [PhotoLibraryDataSource]! {

     - Parameter photoLibrary: A reference to the PhotoLibrary.
     - Parameter fetchBeforeChanges: A PHFetchResult<PHObject> before changes.
     - Parameter fetchAfterChanges: A PHFetchResult<PHObject> after changes.
     - Parameter hasIncrementalChanges: A boolean indicating whether incremental
     changes exist. True if yes, false otherwise.
     */
    @objc
    optional func photoLibrary(photoLibrary: PhotoLibrary, fetchBeforeChanges: PHFetchResult<PHObject>, fetchAfterChanges: PHFetchResult<PHObject>, hasIncrementalChanges: Bool)
    
    /**
     A delegation method that is executed when there are moved objects.
