 
 @objc
 protocol DKImageGroupDataManagerObserver {
-	
-	@objc optional func groupDidUpdate(groupId: String)
-	@objc optional func groupDidRemove(groupId: String)
-	@objc optional func group(groupId: String, didRemoveAssets assets: [DKAsset])
-	@objc optional func group(groupId: String, didInsertAssets assets: [DKAsset])
+
+    @objc optional func groupDidUpdate(groupId: String)
+    @objc optional func groupDidRemove(groupId: String)
+    @objc optional func group(groupId: String, didRemoveAssets assets: [DKAsset])
+    @objc optional func group(groupId: String, didInsertAssets assets: [DKAsset])
     @objc optional func groupDidUpdateComplete(groupId: String)
     @objc optional func groupsDidInsert(groupIds: [String])
 }

            }
        }
    }
	
	open func fetchGroup(with groupId: String) -> DKAssetGroup? {
		return self.groups?[groupId]
	}
	
	open func fetchGroupThumbnail(with groupId: String,
                                  size: CGSize,
                                  options: PHImageRequestOptions,
                                  completeBlock: @escaping (_ image: UIImage?, _ info: [AnyHashable: Any]?) -> Void)

        super.init()
    }
    
    deinit {
        PHPhotoLibrary.shared().unregisterChangeObserver(self)
    }

    open func invalidate() {
        self.groupIds?.removeAll()
        self.groups?.removeAll()
        self.assets.removeAll()

        PHPhotoLibrary.shared().unregisterChangeObserver(self)
    }

    open func fetchGroups(_ completeBlock: @escaping (_ groups: [String]?, _ error: NSError?) -> Void) {
        let assetGroupTypes = self.configuration.assetGroupTypes
