         let assetGroupTypes = self.configuration.assetGroupTypes
         var insertedGroupIds: [String] = []
         
-        self.fetchGroups(assetGroupTypes: assetGroupTypes, block: { (collection) in
-            if (self.groups![collection.localIdentifier] == nil) {
-                let assetGroup = self.makeDKAssetGroup(with: collection)
-                self.groups![assetGroup.groupId] = assetGroup
-                self.groupIds!.append(assetGroup.groupId)
+        self.fetchGroups(assetGroupTypes: assetGroupTypes) { [weak self] collection in
+            if let groups = self?.groups,
+                groups[collection.localIdentifier] == nil,
+                let assetGroup = self?.makeDKAssetGroup(with: collection)
+            {
+                self?.groups?[assetGroup.groupId] = assetGroup
+                self?.groupIds?.append(assetGroup.groupId)
                 
                 insertedGroupIds.append(assetGroup.groupId)
             }
-        })
+        }
         
         if (insertedGroupIds.count > 0) {
             self.notify(with: #selector(DKImageGroupDataManagerObserver.groupsDidInsert(groupIds:)), object: insertedGroupIds as AnyObject)

        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?)
				}
			}
			

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

        super.init()
    }
    
