         //
         self.persistentStoreDescriptions = [persistentStoreDescription]
         
-        //
+        // this should run synchronously since shouldAddStoreAsynchronously is false
         var outError: Swift.Error?
         
         self.loadPersistentStores { description, error in
             if let error = error {
                 outError = error
-                return
             }
             
-            if self.enableUbiquity {
-                NotificationCenter.default.addObserver(self, selector: #selector(type(of: self).persistentStoreDidImportUbiquitousContentChanges(notification:)), name: .NSPersistentStoreDidImportUbiquitousContentChanges, object: self.persistentStoreCoordinator)
+            //
+            if let _ = ubiquitousContainerIdentifier {
+                self.didImportUbiquitousContentObserver = NotificationCenter.default.addObserver(forName: .NSPersistentStoreDidImportUbiquitousContentChanges, object: self.persistentStoreCoordinator, queue: nil) { [weak self] notification in
+                    guard let context = self?.viewContext.parent ?? self?.viewContext else {
+                        return
+                    }
+                    
+                    context.perform {
+                        context.mergeChanges(fromContextDidSave: notification)
+                    }
+                }
             }
+            
+            //
+            self.viewContext.automaticallyMergesChangesFromParent = true
+            self.viewContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
         }
         
         if let outError = outError {
             throw outError
         }
-        
-        //
-        self.viewContext.automaticallyMergesChangesFromParent = true
-        self.viewContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
     }
     
     deinit {
-        if self.enableUbiquity {
-            NotificationCenter.default.removeObserver(self, name: .NSPersistentStoreDidImportUbiquitousContentChanges, object: self.persistentStoreCoordinator)
+        if let didImportUbiquitousContentObserver = self.didImportUbiquitousContentObserver {
+            self.didImportUbiquitousContentObserver = nil
+            NotificationCenter.default.removeObserver(didImportUbiquitousContentObserver)
         }
     }
     

        persistentStoreDescription.shouldInferMappingModelAutomatically = true
        persistentStoreDescription.shouldMigrateStoreAutomatically = true
        
        if self.enableUbiquity {
            persistentStoreDescription.setOption((ubiquitousContainerIdentifier!) as NSString, forKey: NSPersistentStoreUbiquitousContainerIdentifierKey)
            persistentStoreDescription.setOption((ubiquitousContentRelativePath ?? "Data/TransactionLogs") as NSString, forKey: NSPersistentStoreUbiquitousContentURLKey)
            persistentStoreDescription.setOption((ubiquitousContentName ?? "UbiquityStore") as NSString, forKey: NSPersistentStoreUbiquitousContentNameKey)
        }

    // MARK: -
    
    @objc private func persistentStoreDidImportUbiquitousContentChanges(notification: Notification) {
        
    }
    
