             case .success(let realmValue):
                 // if realm is successful, continue to cloud controller
                 self.cloudKitController.createItem(withID: realmValue.cloudKitID) { cloudCreateResult in
-                    switch cloudCreateResult {
-                    case .success(var cloudValue):
-                        cloudValue.realmID = realmValue.realmID
-                        fullResult?(.success(cloudValue))
-                    case .error:
-                        fullResult?(cloudCreateResult)
-                    }
+                    let updatedResult = type(of: self).update(cloudItemResult: cloudCreateResult, withRealmItemID: realmValue.realmID)
+                    fullResult?(updatedResult)
                 }
             }
         }

                fullResult?(realmResult)
            case .error:
                // if realm errors, try getting the value from the cloud
                self.cloudKitController.readItem(withID: id, result: fullResult)
            }
            
        }

                fullResult?(realmResult)
            case .success(let updatedItem):
                // if realm is successful, continue to cloud controller
                self.cloudKitController.update(item: updatedItem) { cloudUpdateResult in
                    let updatedResult = type(of: self).update(cloudItemResult: cloudUpdateResult, withRealmItemID: item.realmID)
                    fullResult?(updatedResult)
                }
            }
        }
    }
