diff --git a/auth/src/main/java/org/futo/circles/auth/feature/active_sessions/ActiveSessionsDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/active_sessions/ActiveSessionsDataSource.kt
index 7be37c8494da2c3b431ae607b4ab7a6a3ecf73cc..f2ab8ff523d7677734107364ac8b91b53995b9c9 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/active_sessions/ActiveSessionsDataSource.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/active_sessions/ActiveSessionsDataSource.kt
@@ -20,7 +20,6 @@ import org.futo.circles.core.extensions.createResult
 import org.futo.circles.core.provider.MatrixSessionProvider
 import org.matrix.android.sdk.api.session.crypto.model.CryptoDeviceInfo
 import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo
-import org.matrix.android.sdk.api.util.awaitCallback
 import java.util.concurrent.TimeUnit
 import javax.inject.Inject
 
@@ -94,16 +93,12 @@ class ActiveSessionsDataSource @Inject constructor(
     }
 
     suspend fun removeSession(deviceId: String): Response<Unit> = createResult {
-        awaitCallback {
-            session.cryptoService().deleteDevice(deviceId, authConfirmationProvider, it)
-        }
+        session.cryptoService().deleteDevice(deviceId, authConfirmationProvider)
     }
 
     suspend fun resetKeysToEnableCrossSigning(): Response<Unit> = createResult {
-        awaitCallback {
-            session.cryptoService().crossSigningService()
-                .initializeCrossSigning(authConfirmationProvider, it)
-        }
+        session.cryptoService().crossSigningService()
+            .initializeCrossSigning(authConfirmationProvider)
     }
 
     private fun isSessionInactive(lastSeenTsMillis: Long?): Boolean =
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/cross_signing/CrossSigningDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/cross_signing/CrossSigningDataSource.kt
index 1b3595b4b04ca43d8b7b98449a46edad7acfa51e..e50349a05b1570b45919ee9efd7d79968e7e441a 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/cross_signing/CrossSigningDataSource.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/cross_signing/CrossSigningDataSource.kt
@@ -1,6 +1,7 @@
 package org.futo.circles.auth.feature.cross_signing
 
 import org.futo.circles.core.provider.MatrixSessionProvider
+import org.matrix.android.sdk.api.extensions.tryOrNull
 import org.matrix.android.sdk.api.session.Session
 import org.matrix.android.sdk.api.session.crypto.crosssigning.MASTER_KEY_SSSS_NAME
 import org.matrix.android.sdk.api.session.crypto.crosssigning.SELF_SIGNING_KEY_SSSS_NAME
@@ -9,7 +10,6 @@ import org.matrix.android.sdk.api.session.crypto.crosssigning.isVerified
 import org.matrix.android.sdk.api.session.securestorage.KeyInfoResult
 import org.matrix.android.sdk.api.session.securestorage.KeyRef
 import org.matrix.android.sdk.api.session.securestorage.SsssKeySpec
-import org.matrix.android.sdk.api.util.awaitCallback
 import javax.inject.Inject
 
 class CrossSigningDataSource @Inject constructor() {
@@ -20,7 +20,7 @@ class CrossSigningDataSource @Inject constructor() {
         try {
             session.sharedSecretStorageService().getSecret(MASTER_KEY_SSSS_NAME, null, keySpec)
         } catch (ignore: Throwable) {
-            awaitCallback { crossSigningService.initializeCrossSigning(null, it) }
+            tryOrNull { crossSigningService.initializeCrossSigning(null) }
             storeKeys(session, keySpec)
         }
     }
@@ -45,10 +45,9 @@ class CrossSigningDataSource @Inject constructor() {
                 mskPrivateKey, uskPrivateKey, sskPrivateKey
             )
         if (trustResult.isVerified()) {
-            awaitCallback {
-                session.sessionParams.deviceId?.let { deviceId ->
-                    session.cryptoService().crossSigningService().trustDevice(deviceId, it)
-                }
+            tryOrNull {
+                session.cryptoService().crossSigningService()
+                    .trustDevice(session.sessionParams.deviceId)
             }
         }
     }
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/pass_phrase/EncryptionAlgorithmHelper.kt b/auth/src/main/java/org/futo/circles/auth/feature/pass_phrase/EncryptionAlgorithmHelper.kt
index 6b062a6069ab56f8c6959cd34b2a61f016f9597d..aec6820192edc42618f9f54e62a0555e446893c2 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/pass_phrase/EncryptionAlgorithmHelper.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/pass_phrase/EncryptionAlgorithmHelper.kt
@@ -3,6 +3,7 @@ package org.futo.circles.auth.feature.pass_phrase
 import org.futo.circles.core.provider.MatrixSessionProvider
 import org.matrix.android.sdk.api.crypto.BCRYPT_ALGORITHM_BACKUP
 import org.matrix.android.sdk.api.crypto.BSSPEKE_ALGORITHM_BACKUP
+import org.matrix.android.sdk.api.extensions.tryOrNull
 import org.matrix.android.sdk.api.session.crypto.keysbackup.toKeysVersionResult
 import org.matrix.android.sdk.api.session.securestorage.KeyInfoResult
 import org.matrix.android.sdk.api.util.awaitCallback
@@ -21,10 +22,10 @@ class EncryptionAlgorithmHelper @Inject constructor() {
     }
 
     private suspend fun getEncryptionAlgorithm(): String? {
-        val keyVersion = awaitCallback {
+        val keyVersion = tryOrNull {
             MatrixSessionProvider.currentSession?.cryptoService()?.keysBackupService()
-                ?.getCurrentVersion(it)
-        }.toKeysVersionResult()
+                ?.getCurrentVersion()
+        }?.toKeysVersionResult()
 
         return keyVersion?.algorithm
     }
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/pass_phrase/create/CreatePassPhraseDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/pass_phrase/create/CreatePassPhraseDataSource.kt
index 145a87cc560062cfb1a744248644eb9b26e854bb..9dc6c754bad907b60df768099265a5be0d9b2405 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/pass_phrase/create/CreatePassPhraseDataSource.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/pass_phrase/create/CreatePassPhraseDataSource.kt
@@ -8,10 +8,9 @@ import org.futo.circles.auth.feature.cross_signing.CrossSigningDataSource
 import org.futo.circles.auth.feature.pass_phrase.restore.SSSSDataSource
 import org.futo.circles.core.model.LoadingData
 import org.futo.circles.core.provider.MatrixSessionProvider
-import org.matrix.android.sdk.api.session.crypto.keysbackup.KeysVersion
+import org.matrix.android.sdk.api.extensions.tryOrNull
 import org.matrix.android.sdk.api.session.crypto.keysbackup.MegolmBackupCreationInfo
 import org.matrix.android.sdk.api.session.crypto.keysbackup.toKeysVersionResult
-import org.matrix.android.sdk.api.util.awaitCallback
 import java.security.SecureRandom
 import javax.inject.Inject
 
@@ -29,9 +28,8 @@ class CreatePassPhraseDataSource @Inject constructor(
     suspend fun createPassPhraseBackup() {
         loadingLiveData.postValue(LoadingData(messageId = R.string.generating_recovery_key))
         val keyBackupPrivateKey = generateRandomPrivateKey()
-        val backupCreationInfo = awaitCallback {
-            keysBackupService.prepareKeysBackupVersion(keyBackupPrivateKey, it)
-        }
+        val backupCreationInfo =
+            keysBackupService.prepareKeysBackupVersion(keyBackupPrivateKey, null)
         createKeyBackup(backupCreationInfo)
         val keyData = ssssDataSource.storeBsSpekeKeyIntoSSSS(keyBackupPrivateKey)
         crossSigningDataSource.initCrossSigningIfNeed(keyData.keySpec)
@@ -61,21 +59,19 @@ class CreatePassPhraseDataSource @Inject constructor(
         loadingLiveData.postValue(LoadingData(messageId = R.string.creating_backup))
         val versionData = getCurrentBackupVersion()
 
-        if (versionData?.version.isNullOrBlank()) {
-            awaitCallback<KeysVersion> {
-                keysBackupService.createKeysBackupVersion(backupCreationInfo, it)
-            }
-        } else throw Exception(context.getString(R.string.backup_already_exist))
+        if (versionData?.version.isNullOrBlank())
+            keysBackupService.createKeysBackupVersion(backupCreationInfo)
+        else throw Exception(context.getString(R.string.backup_already_exist))
     }
 
     private suspend fun removeCurrentBackupIfExist() {
         loadingLiveData.postValue(LoadingData(messageId = R.string.removing_backup))
         getCurrentBackupVersion()?.version?.let { version ->
-            awaitCallback { keysBackupService.deleteBackup(version, it) }
+            keysBackupService.deleteBackup(version)
         }
     }
 
     private suspend fun getCurrentBackupVersion() =
-        awaitCallback { keysBackupService.getCurrentVersion(it) }.toKeysVersionResult()
+        tryOrNull { keysBackupService.getCurrentVersion() }?.toKeysVersionResult()
 }