     private let configuration: DKImageGroupDataManagerConfiguration
     
     public init(configuration: DKImageGroupDataManagerConfiguration) {
-        self.configuration = configuration.copy() as! DKImageGroupDataManagerConfiguration
-        
+        self.configuration = configuration.copy() as! DKImageGroupDataManagerConfiguration 
+
         super.init()
     }
     

        for group in groups {
			if let changeDetails = changeInstance.changeDetails(for: group.originalCollection) {
				if changeDetails.objectWasDeleted {
					self.groups![group.groupId] = nil
                    self.notify(with: #selector(DKImageGroupDataManagerObserver.groupDidRemove(groupId:)), object: group.groupId as AnyObject?)
					continue
				}
				
				if let objectAfterChanges = changeDetails.objectAfterChanges {
					self.updateGroup(self.groups![group.groupId]!, collection: objectAfterChanges)
                    self.notify(with: #selector(DKImageGroupDataManagerObserver.groupDidUpdate(groupId:)), object: group.groupId as AnyObject?)
				}
			}
			

			return
		}
		
        guard let lastResult = group.fetchResult.lastObject else {
            assertionFailure("Expect latestAsset")
            completeBlock(nil, nil)
            return
        }

        let latestAsset = DKAsset(originalAsset: lastResult)
        latestAsset.fetchImage(with: size, options: options, completeBlock: completeBlock)
	}
	
	open func fetchAsset(_ group: DKAssetGroup, index: Int) -> DKAsset {
        let phAsset = fetchPHAsset(group, index: index)
        if let asset = assets[phAsset.localIdentifier] {
            return asset
        }

        let asset = DKAsset(originalAsset:phAsset)
        assets[phAsset.localIdentifier] = asset
        return asset
	}
    
    open func fetchPHAsset(_ group: DKAssetGroup, index: Int) -> PHAsset {
