diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/UIADataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/UIADataSource.kt
index 275f161c3145472ce913a2bb6171d96b7acfffbe..61240b1b3c5ad2417aa188039cdeac33bc195596 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/uia/UIADataSource.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/UIADataSource.kt
@@ -1,11 +1,10 @@
 package org.futo.circles.auth.feature.uia
 
-import android.content.Context
 import androidx.lifecycle.MutableLiveData
-import org.futo.circles.auth.R
 import org.futo.circles.auth.feature.uia.flow.LoginStagesDataSource
 import org.futo.circles.auth.feature.uia.flow.SignUpStagesDataSource
 import org.futo.circles.auth.feature.uia.flow.reauth.ReAuthStagesDataSource
+import org.futo.circles.auth.model.UIAFlowType
 import org.futo.circles.auth.model.UIANavigationEvent
 import org.futo.circles.core.base.SingleEventLiveData
 import org.futo.circles.core.extensions.Response
@@ -18,7 +17,7 @@ import org.matrix.android.sdk.api.util.JsonDict
 import javax.inject.Inject
 import kotlin.coroutines.Continuation
 
-abstract class UIADataSource(private val context: Context) {
+abstract class UIADataSource {
 
     class Factory @Inject constructor(
         private val loginStagesDataSource: LoginStagesDataSource,
@@ -34,7 +33,7 @@ abstract class UIADataSource(private val context: Context) {
     }
 
 
-    val subtitleLiveData = MutableLiveData<String>()
+    val subtitleLiveData = MutableLiveData<Pair<Int, Int>>()
     val navigationLiveData = SingleEventLiveData<UIANavigationEvent>()
     val finishUIAEventLiveData = SingleEventLiveData<Session>()
 
@@ -107,9 +106,7 @@ abstract class UIADataSource(private val context: Context) {
         val event = when (val stage = currentStage) {
             is Stage.Terms -> UIANavigationEvent.AcceptTerm
             is Stage.Other -> handleStageOther(stage.type)
-            else -> throw IllegalArgumentException(
-                context.getString(R.string.not_supported_stage_format, stage.toString())
-            )
+            else -> throw IllegalArgumentException("Not supported stage $stage")
         }
         event?.let { navigationLiveData.postValue(it) }
         updatePageSubtitle()
@@ -135,9 +132,8 @@ abstract class UIADataSource(private val context: Context) {
 
         REGISTRATION_BSSPEKE_SAVE_TYPE -> null
         LOGIN_BSSPEKE_VERIFY_TYPE -> null
-        else -> throw IllegalArgumentException(
-            context.getString(R.string.not_supported_stage_format, type)
-        )
+        else -> throw IllegalArgumentException("Not supported stage $type")
+
     }
 
     private fun getCurrentStageIndex() =
@@ -146,8 +142,7 @@ abstract class UIADataSource(private val context: Context) {
     private fun updatePageSubtitle() {
         val size = stagesToComplete.size
         val number = getCurrentStageIndex() + 1
-        val subtitle = context.getString(R.string.sign_up_stage_subtitle_format, number, size)
-        subtitleLiveData.postValue(subtitle)
+        subtitleLiveData.postValue(number to size)
     }
 
     companion object {
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/UIADialogFragment.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/UIADialogFragment.kt
index 8d70497fdf30e3521a8ee2964e7ff5a24dcfe82c..adb1335b3df4dc175a412d5dcd5da612681d8163 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/uia/UIADialogFragment.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/UIADialogFragment.kt
@@ -15,6 +15,7 @@ import org.futo.circles.auth.databinding.DialogFragmentUiaBinding
 import org.futo.circles.auth.feature.pass_phrase.recovery.EnterPassPhraseDialog
 import org.futo.circles.auth.feature.pass_phrase.recovery.EnterPassPhraseDialogListener
 import org.futo.circles.auth.feature.uia.flow.reauth.ReAuthCancellationListener
+import org.futo.circles.auth.model.UIAFlowType
 import org.futo.circles.auth.model.UIANavigationEvent
 import org.futo.circles.core.base.NetworkObserver
 import org.futo.circles.core.base.fragment.BackPressOwner
@@ -78,8 +79,9 @@ class UIADialogFragment :
         viewModel.navigationLiveData.observeData(this) { event ->
             handleNavigation(event)
         }
-        viewModel.subtitleLiveData.observeData(this) {
-            binding.toolbar.subtitle = it
+        viewModel.subtitleLiveData.observeData(this) { (number, size) ->
+            binding.toolbar.subtitle =
+                getString(R.string.sign_up_stage_subtitle_format, number, size)
         }
         viewModel.restoreKeysLiveData.observeResponse(
             this,
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/UIAViewModel.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/UIAViewModel.kt
index ce6b2e25b8dd52c77c56f9f34c6ba2d6a2e81e50..97ad2b3b231f854d08ab81431393539b0a8c7f5b 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/uia/UIAViewModel.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/UIAViewModel.kt
@@ -1,6 +1,7 @@
 package org.futo.circles.auth.feature.uia
 
 import android.net.Uri
+import androidx.lifecycle.LiveData
 import androidx.lifecycle.ViewModel
 import dagger.hilt.android.lifecycle.HiltViewModel
 import org.futo.circles.auth.R
@@ -33,7 +34,7 @@ class UIAViewModel @Inject constructor(
 
     val uiaDataSource = UIADataSourceProvider.getDataSourceOrThrow()
 
-    val subtitleLiveData = uiaDataSource.subtitleLiveData
+    val subtitleLiveData: LiveData<Pair<Int, Int>> = uiaDataSource.subtitleLiveData
     val navigationLiveData = uiaDataSource.navigationLiveData
     val restoreKeysLiveData = SingleEventLiveData<Response<Unit>>()
     val passPhraseLoadingLiveData = restoreBackupDataSource.loadingLiveData
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/LoginStagesDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/LoginStagesDataSource.kt
index acfd663bba109048831ed0cc8383365f5852627e..b685d27820567599e3f9547e7ccc0515022c9bd6 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/LoginStagesDataSource.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/LoginStagesDataSource.kt
@@ -16,7 +16,7 @@ import javax.inject.Singleton
 @Singleton
 class LoginStagesDataSource @Inject constructor(
     @ApplicationContext private val context: Context
-) : UIADataSource(context) {
+) : UIADataSource() {
 
 
     var userPassword: String = ""
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/SignUpStagesDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/SignUpStagesDataSource.kt
index 7fe92637b133885018fb16af22d59b5e30f63042..c9fb31553f36ef81b24c8c19ddf8dc7127308a19 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/SignUpStagesDataSource.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/SignUpStagesDataSource.kt
@@ -15,7 +15,7 @@ import javax.inject.Singleton
 @Singleton
 class SignUpStagesDataSource @Inject constructor(
     @ApplicationContext private val context: Context
-) : UIADataSource(context) {
+) : UIADataSource() {
 
     override suspend fun performUIAStage(
         authParams: JsonDict,
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/reauth/ReAuthStagesDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/reauth/ReAuthStagesDataSource.kt
index a72acf034ed311384e57149bca35f66e8c1e9f25..77ad13a926862e13227772eb71f3e7a2ebe45056 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/reauth/ReAuthStagesDataSource.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/uia/flow/reauth/ReAuthStagesDataSource.kt
@@ -1,7 +1,5 @@
 package org.futo.circles.auth.feature.uia.flow.reauth
 
-import android.content.Context
-import dagger.hilt.android.qualifiers.ApplicationContext
 import org.futo.circles.auth.feature.uia.UIADataSource
 import org.futo.circles.auth.model.CustomUIAuth
 import org.futo.circles.core.extensions.Response
@@ -19,9 +17,7 @@ import kotlin.coroutines.resume
 import kotlin.coroutines.suspendCoroutine
 
 @Singleton
-class ReAuthStagesDataSource @Inject constructor(
-    @ApplicationContext context: Context,
-) : UIADataSource(context) {
+class ReAuthStagesDataSource @Inject constructor() : UIADataSource() {
 
     private var authPromise: Continuation<UIABaseAuth>? = null
     private var sessionId: String = ""
diff --git a/auth/src/main/res/values/strings.xml b/auth/src/main/res/values/strings.xml
index d94e7ef82451915d20c13ac1e074437d807f50f2..c797cb0ff2b0ffd772624f18e14c5d95d1b46e8c 100644
--- a/auth/src/main/res/values/strings.xml
+++ b/auth/src/main/res/values/strings.xml
@@ -16,7 +16,6 @@
     <string name="eu_server_format"><![CDATA[<b>EU</b> - (%s)]]></string>
     <string name="sign_up_using_active_subscription">Sign Up using your active subscription</string>
     <string name="sign_up">Sign Up</string>
-    <string name="not_supported_stage_format">Not supported stage %s</string>
     <string name="sign_up_stage_subtitle_format">Stage %1$d of %2$d</string>
     <string name="no_backup_message">Keys backup not found</string>
     <string name="username_can_not_be_empty">Username can not be empty.</string>