diff --git a/app/src/main/java/org/futo/circles/feature/settings/SettingsDataSource.kt b/settings/src/main/java/org/futo/circles/settings/feature/SettingsDataSource.kt
similarity index 91%
rename from app/src/main/java/org/futo/circles/feature/settings/SettingsDataSource.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/SettingsDataSource.kt
index f09b610ea3b47e2a3e128f03febfaa57e62f1f7a..1aa1ddedc75a8e0d07e8417b801945f4866b2a0f 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/SettingsDataSource.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/SettingsDataSource.kt
@@ -1,18 +1,16 @@
-package org.futo.circles.feature.settings
+package org.futo.circles.settings.feature
 
 import android.content.Context
-import androidx.lifecycle.MutableLiveData
 import com.bumptech.glide.Glide
 import dagger.hilt.android.qualifiers.ApplicationContext
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.withContext
-import org.futo.circles.R
 import org.futo.circles.auth.feature.reauth.AuthConfirmationProvider
 import org.futo.circles.core.extensions.Response
 import org.futo.circles.core.extensions.createResult
-import org.futo.circles.core.model.LoadingData
 import org.futo.circles.core.provider.MatrixSessionProvider
-import org.futo.circles.feature.settings.change_password.ChangePasswordDataSource
+import org.futo.circles.settings.R
+import org.futo.circles.settings.feature.change_password.ChangePasswordDataSource
 import java.io.File
 import javax.inject.Inject
 
diff --git a/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt b/settings/src/main/java/org/futo/circles/settings/feature/SettingsFragment.kt
similarity index 97%
rename from app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/SettingsFragment.kt
index 9be3bb5324cc3eaac8a7af221c94fd823f2c12b2..f20838c9996942bc53eebf8c9b74f3e779ec7345 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/SettingsFragment.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.feature.settings
+package org.futo.circles.settings.feature
 
 import android.os.Bundle
 import android.view.View
@@ -10,7 +10,6 @@ import by.kirich1409.viewbindingdelegate.viewBinding
 import dagger.hilt.android.AndroidEntryPoint
 import org.futo.circles.BuildConfig
 import org.futo.circles.MainActivity
-import org.futo.circles.R
 import org.futo.circles.auth.model.LogOut
 import org.futo.circles.auth.model.SwitchUser
 import org.futo.circles.core.extensions.loadProfileIcon
@@ -22,9 +21,10 @@ import org.futo.circles.core.extensions.showSuccess
 import org.futo.circles.core.extensions.withConfirmation
 import org.futo.circles.core.provider.PreferencesProvider
 import org.futo.circles.core.view.LoadingDialog
-import org.futo.circles.databinding.FragmentSettingsBinding
 import org.futo.circles.feature.home.SystemNoticesCountSharedViewModel
 import org.futo.circles.model.DeactivateAccount
+import org.futo.circles.settings.R
+import org.futo.circles.settings.databinding.FragmentSettingsBinding
 import org.matrix.android.sdk.api.session.user.model.User
 
 @AndroidEntryPoint
diff --git a/app/src/main/java/org/futo/circles/feature/settings/SettingsNavigator.kt b/settings/src/main/java/org/futo/circles/settings/feature/SettingsNavigator.kt
similarity index 96%
rename from app/src/main/java/org/futo/circles/feature/settings/SettingsNavigator.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/SettingsNavigator.kt
index 6578d2340ad3998e7fd7a862145b58c0359143e2..532a19240f0394ec690eb8dd58a1dd9091bdef9e 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/SettingsNavigator.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/SettingsNavigator.kt
@@ -1,11 +1,11 @@
-package org.futo.circles.feature.settings
+package org.futo.circles.settings.feature
 
 import androidx.navigation.fragment.findNavController
-import org.futo.circles.R
 import org.futo.circles.core.extensions.navigateSafe
 import org.futo.circles.core.extensions.showError
 import org.futo.circles.core.utils.getSharedCirclesSpaceId
 import org.futo.circles.core.utils.getSystemNoticesRoomId
+import org.futo.circles.settings.R
 
 class SettingsNavigator(private val fragment: SettingsFragment) {
 
diff --git a/app/src/main/java/org/futo/circles/feature/settings/SettingsViewModel.kt b/settings/src/main/java/org/futo/circles/settings/feature/SettingsViewModel.kt
similarity index 93%
rename from app/src/main/java/org/futo/circles/feature/settings/SettingsViewModel.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/SettingsViewModel.kt
index 91c58b8ca01b22e7508f10ddc7b36e5a339bc502..d21a1fead7793bde94f530aea16a02af3a93dcb6 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/SettingsViewModel.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/SettingsViewModel.kt
@@ -1,13 +1,11 @@
-package org.futo.circles.feature.settings
+package org.futo.circles.settings.feature
 
 import androidx.lifecycle.ViewModel
 import dagger.hilt.android.lifecycle.HiltViewModel
 import org.futo.circles.auth.feature.log_in.log_out.LogoutDataSource
 import org.futo.circles.core.SingleEventLiveData
 import org.futo.circles.core.extensions.Response
-import org.futo.circles.core.extensions.createResult
 import org.futo.circles.core.extensions.launchBg
-import org.futo.circles.core.provider.MatrixSessionProvider
 import javax.inject.Inject
 
 @HiltViewModel
diff --git a/app/src/main/java/org/futo/circles/feature/settings/active_sessions/ActiveSessionsDataSource.kt b/settings/src/main/java/org/futo/circles/settings/feature/active_sessions/ActiveSessionsDataSource.kt
similarity index 95%
rename from app/src/main/java/org/futo/circles/feature/settings/active_sessions/ActiveSessionsDataSource.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/active_sessions/ActiveSessionsDataSource.kt
index 41581ae7d88bd5c1df1f70157a2b0d6a6c3c60ea..6f154444330d4a29d6d9fc7f3838d8f2fcd24e0c 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/active_sessions/ActiveSessionsDataSource.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/active_sessions/ActiveSessionsDataSource.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.feature.settings.active_sessions
+package org.futo.circles.settings.feature.active_sessions
 
 import android.content.Context
 import androidx.lifecycle.asFlow
@@ -9,15 +9,15 @@ import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.flow.flowOn
-import org.futo.circles.R
 import org.futo.circles.auth.feature.reauth.AuthConfirmationProvider
 import org.futo.circles.base.ExpandableItemsDataSource
 import org.futo.circles.core.extensions.Response
 import org.futo.circles.core.extensions.createResult
 import org.futo.circles.core.provider.MatrixSessionProvider
-import org.futo.circles.model.ActiveSession
-import org.futo.circles.model.ActiveSessionListItem
-import org.futo.circles.model.SessionHeader
+import org.futo.circles.settings.R
+import org.futo.circles.settings.model.ActiveSession
+import org.futo.circles.settings.model.ActiveSessionListItem
+import org.futo.circles.settings.model.SessionHeader
 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
diff --git a/app/src/main/java/org/futo/circles/feature/settings/active_sessions/ActiveSessionsDialogFragment.kt b/settings/src/main/java/org/futo/circles/settings/feature/active_sessions/ActiveSessionsDialogFragment.kt
similarity index 90%
rename from app/src/main/java/org/futo/circles/feature/settings/active_sessions/ActiveSessionsDialogFragment.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/active_sessions/ActiveSessionsDialogFragment.kt
index 43a9e56a99c79e5d7438de5fc598952124e62471..7a551c169e682f6eb0057c2b8b49c64189e77032 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/active_sessions/ActiveSessionsDialogFragment.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/active_sessions/ActiveSessionsDialogFragment.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.feature.settings.active_sessions
+package org.futo.circles.settings.feature.active_sessions
 
 import android.os.Bundle
 import android.view.View
@@ -6,18 +6,18 @@ import androidx.fragment.app.viewModels
 import androidx.navigation.fragment.findNavController
 import androidx.recyclerview.widget.DividerItemDecoration
 import dagger.hilt.android.AndroidEntryPoint
-import org.futo.circles.R
 import org.futo.circles.core.extensions.navigateSafe
 import org.futo.circles.core.extensions.observeData
 import org.futo.circles.core.extensions.observeResponse
 import org.futo.circles.core.extensions.showError
 import org.futo.circles.core.extensions.withConfirmation
 import org.futo.circles.core.fragment.BaseFullscreenDialogFragment
-import org.futo.circles.databinding.DialogFragmentActiveSessionsBinding
-import org.futo.circles.feature.settings.active_sessions.list.ActiveSessionClickListener
-import org.futo.circles.feature.settings.active_sessions.list.ActiveSessionsAdapter
 import org.futo.circles.model.RemoveSession
 import org.futo.circles.model.ResetKeys
+import org.futo.circles.settings.R
+import org.futo.circles.settings.databinding.DialogFragmentActiveSessionsBinding
+import org.futo.circles.settings.feature.active_sessions.list.ActiveSessionClickListener
+import org.futo.circles.settings.feature.active_sessions.list.ActiveSessionsAdapter
 
 @AndroidEntryPoint
 class ActiveSessionsDialogFragment :
diff --git a/app/src/main/java/org/futo/circles/feature/settings/active_sessions/ActiveSessionsViewModel.kt b/settings/src/main/java/org/futo/circles/settings/feature/active_sessions/ActiveSessionsViewModel.kt
similarity index 95%
rename from app/src/main/java/org/futo/circles/feature/settings/active_sessions/ActiveSessionsViewModel.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/active_sessions/ActiveSessionsViewModel.kt
index 75f7ddee0af5581b21a55c5aec1dac294e041aa5..e8570aa6bcb8d12eb4bb892a0becaee9cc90498f 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/active_sessions/ActiveSessionsViewModel.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/active_sessions/ActiveSessionsViewModel.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.feature.settings.active_sessions
+package org.futo.circles.settings.feature.active_sessions
 
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.asLiveData
diff --git a/app/src/main/java/org/futo/circles/feature/settings/active_sessions/list/ActiveSessionsAdapter.kt b/settings/src/main/java/org/futo/circles/settings/feature/active_sessions/list/ActiveSessionsAdapter.kt
similarity index 85%
rename from app/src/main/java/org/futo/circles/feature/settings/active_sessions/list/ActiveSessionsAdapter.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/active_sessions/list/ActiveSessionsAdapter.kt
index 20235346cee2f8db21c2f3292a63849dd7bb437d..72db36768bb54b5fb8e12bcb26195e14a076d651 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/active_sessions/list/ActiveSessionsAdapter.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/active_sessions/list/ActiveSessionsAdapter.kt
@@ -1,10 +1,10 @@
-package org.futo.circles.feature.settings.active_sessions.list
+package org.futo.circles.settings.feature.active_sessions.list
 
 import android.view.ViewGroup
 import org.futo.circles.core.list.BaseRvAdapter
-import org.futo.circles.model.ActiveSession
-import org.futo.circles.model.ActiveSessionListItem
-import org.futo.circles.model.SessionHeader
+import org.futo.circles.settings.model.ActiveSession
+import org.futo.circles.settings.model.ActiveSessionListItem
+import org.futo.circles.settings.model.SessionHeader
 
 interface ActiveSessionClickListener {
     fun onItemClicked(deviceId: String)
diff --git a/app/src/main/java/org/futo/circles/feature/settings/active_sessions/list/ActiveSessionsViewHolder.kt b/settings/src/main/java/org/futo/circles/settings/feature/active_sessions/list/ActiveSessionsViewHolder.kt
similarity index 85%
rename from app/src/main/java/org/futo/circles/feature/settings/active_sessions/list/ActiveSessionsViewHolder.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/active_sessions/list/ActiveSessionsViewHolder.kt
index 59a4ac107e815cb182a3a771911caeb81f36f2eb..088af949d62d138c7e607069054417c812b62300 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/active_sessions/list/ActiveSessionsViewHolder.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/active_sessions/list/ActiveSessionsViewHolder.kt
@@ -1,16 +1,16 @@
-package org.futo.circles.feature.settings.active_sessions.list
+package org.futo.circles.settings.feature.active_sessions.list
 
 import android.view.View
 import android.view.ViewGroup
 import androidx.recyclerview.widget.RecyclerView
-import org.futo.circles.R
 import org.futo.circles.core.databinding.ListItemInviteHeaderBinding
 import org.futo.circles.core.extensions.setIsVisible
 import org.futo.circles.core.list.ViewBindingHolder
-import org.futo.circles.databinding.ListItemActiveSessionBinding
-import org.futo.circles.model.ActiveSession
-import org.futo.circles.model.ActiveSessionListItem
-import org.futo.circles.model.SessionHeader
+import org.futo.circles.settings.R
+import org.futo.circles.settings.databinding.ListItemActiveSessionBinding
+import org.futo.circles.settings.model.ActiveSession
+import org.futo.circles.settings.model.ActiveSessionListItem
+import org.futo.circles.settings.model.SessionHeader
 
 abstract class ActiveSessionsViewHolder(view: View) : RecyclerView.ViewHolder(view) {
     abstract fun bind(data: ActiveSessionListItem)
diff --git a/app/src/main/java/org/futo/circles/feature/settings/active_sessions/verify/VerifySessionDialogFragment.kt b/settings/src/main/java/org/futo/circles/settings/feature/active_sessions/verify/VerifySessionDialogFragment.kt
similarity index 88%
rename from app/src/main/java/org/futo/circles/feature/settings/active_sessions/verify/VerifySessionDialogFragment.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/active_sessions/verify/VerifySessionDialogFragment.kt
index 615333fbeb4c6f50d56815f1da8f4f23e49c853d..506f892abfff7cf65d59cf25f21266f7667898c4 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/active_sessions/verify/VerifySessionDialogFragment.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/active_sessions/verify/VerifySessionDialogFragment.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.feature.settings.active_sessions.verify
+package org.futo.circles.settings.feature.active_sessions.verify
 
 import android.Manifest
 import android.app.Activity
@@ -7,7 +7,6 @@ import android.view.View
 import androidx.activity.result.contract.ActivityResultContracts
 import androidx.fragment.app.viewModels
 import dagger.hilt.android.AndroidEntryPoint
-import org.futo.circles.R
 import org.futo.circles.core.extensions.gone
 import org.futo.circles.core.extensions.observeData
 import org.futo.circles.core.extensions.onBackPressed
@@ -16,12 +15,13 @@ import org.futo.circles.core.extensions.showSuccess
 import org.futo.circles.core.extensions.visible
 import org.futo.circles.core.fragment.BaseFullscreenDialogFragment
 import org.futo.circles.core.picker.RuntimePermissionHelper
-import org.futo.circles.databinding.DialogFragmentVerifySessionBinding
-import org.futo.circles.feature.settings.active_sessions.verify.qr.QrScannerActivity
-import org.futo.circles.model.QrCanceled
-import org.futo.circles.model.QrLoading
-import org.futo.circles.model.QrReady
-import org.futo.circles.model.QrSuccess
+import org.futo.circles.settings.R
+import org.futo.circles.settings.databinding.DialogFragmentVerifySessionBinding
+import org.futo.circles.settings.feature.active_sessions.verify.qr.QrScannerActivity
+import org.futo.circles.settings.model.QrCanceled
+import org.futo.circles.settings.model.QrLoading
+import org.futo.circles.settings.model.QrReady
+import org.futo.circles.settings.model.QrSuccess
 
 @AndroidEntryPoint
 class VerifySessionDialogFragment :
diff --git a/app/src/main/java/org/futo/circles/feature/settings/active_sessions/verify/VerifySessionViewModel.kt b/settings/src/main/java/org/futo/circles/settings/feature/active_sessions/verify/VerifySessionViewModel.kt
similarity index 91%
rename from app/src/main/java/org/futo/circles/feature/settings/active_sessions/verify/VerifySessionViewModel.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/active_sessions/verify/VerifySessionViewModel.kt
index 2f74ea72af55a04622422b2b3a43eb01a6c1b765..5814abfec78550840342b261bb31f47b8c475b00 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/active_sessions/verify/VerifySessionViewModel.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/active_sessions/verify/VerifySessionViewModel.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.feature.settings.active_sessions.verify
+package org.futo.circles.settings.feature.active_sessions.verify
 
 import android.content.Context
 import androidx.lifecycle.MutableLiveData
@@ -6,10 +6,14 @@ import androidx.lifecycle.SavedStateHandle
 import androidx.lifecycle.ViewModel
 import dagger.hilt.android.lifecycle.HiltViewModel
 import dagger.hilt.android.qualifiers.ApplicationContext
-import org.futo.circles.R
 import org.futo.circles.core.extensions.getOrThrow
 import org.futo.circles.core.provider.MatrixSessionProvider
-import org.futo.circles.model.*
+import org.futo.circles.settings.R
+import org.futo.circles.settings.model.QrCanceled
+import org.futo.circles.settings.model.QrLoading
+import org.futo.circles.settings.model.QrReady
+import org.futo.circles.settings.model.QrState
+import org.futo.circles.settings.model.QrSuccess
 import org.matrix.android.sdk.api.session.crypto.verification.*
 import javax.inject.Inject
 
@@ -56,7 +60,6 @@ class VerifySessionViewModel @Inject constructor(
         transactionUpdated(tx)
     }
 
-    @Suppress("KotlinConstantConditions")
     override fun transactionUpdated(tx: VerificationTransaction) {
         when (val state = tx.state) {
             is VerificationTxState.Cancelled -> qrStateLiveData.postValue(QrCanceled(state.cancelCode.humanReadable))
diff --git a/app/src/main/java/org/futo/circles/feature/settings/active_sessions/verify/qr/QrScannerActivity.kt b/settings/src/main/java/org/futo/circles/settings/feature/active_sessions/verify/qr/QrScannerActivity.kt
similarity index 94%
rename from app/src/main/java/org/futo/circles/feature/settings/active_sessions/verify/qr/QrScannerActivity.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/active_sessions/verify/qr/QrScannerActivity.kt
index 30b0139999bb5519096f849dda0d4c0505e01b71..af6d60f059802f40942b57ee923c79c2e73913b3 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/active_sessions/verify/qr/QrScannerActivity.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/active_sessions/verify/qr/QrScannerActivity.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.feature.settings.active_sessions.verify.qr
+package org.futo.circles.settings.feature.active_sessions.verify.qr
 
 import android.app.Activity
 import android.content.Intent
@@ -10,11 +10,10 @@ import com.budiyev.android.codescanner.CodeScanner
 import com.budiyev.android.codescanner.DecodeCallback
 import com.budiyev.android.codescanner.ErrorCallback
 import com.google.zxing.BarcodeFormat
-import com.google.zxing.Result
 import com.google.zxing.ResultMetadataType
-import org.futo.circles.R
 import org.futo.circles.core.BaseActivity
-import org.futo.circles.databinding.ActivityQrScannerBinding
+import org.futo.circles.settings.R
+import org.futo.circles.settings.databinding.ActivityQrScannerBinding
 
 class QrScannerActivity : BaseActivity(R.layout.activity_qr_scanner) {
 
diff --git a/app/src/main/java/org/futo/circles/feature/settings/change_password/ChangePasswordDataSource.kt b/settings/src/main/java/org/futo/circles/settings/feature/change_password/ChangePasswordDataSource.kt
similarity index 96%
rename from app/src/main/java/org/futo/circles/feature/settings/change_password/ChangePasswordDataSource.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/change_password/ChangePasswordDataSource.kt
index c79019ba1664ce17f4689ab3c5d2f4b4e66fcb79..6446405c807d289c58a74f642cce2ffa00168fb1 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/change_password/ChangePasswordDataSource.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/change_password/ChangePasswordDataSource.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.feature.settings.change_password
+package org.futo.circles.settings.feature.change_password
 
 import org.futo.circles.auth.feature.pass_phrase.create.CreatePassPhraseDataSource
 import org.futo.circles.auth.feature.pass_phrase.restore.RestoreBackupDataSource
diff --git a/app/src/main/java/org/futo/circles/feature/settings/change_password/ChangePasswordDialogFragment.kt b/settings/src/main/java/org/futo/circles/settings/feature/change_password/ChangePasswordDialogFragment.kt
similarity index 94%
rename from app/src/main/java/org/futo/circles/feature/settings/change_password/ChangePasswordDialogFragment.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/change_password/ChangePasswordDialogFragment.kt
index 6cd59a7d019a82262e4e244e847826e3dc8cdb06..cfabc5fa31e22628eb60b2ecbb26ca57f1551535 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/change_password/ChangePasswordDialogFragment.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/change_password/ChangePasswordDialogFragment.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.feature.settings.change_password
+package org.futo.circles.settings.feature.change_password
 
 import android.os.Bundle
 import android.view.View
@@ -6,7 +6,6 @@ import androidx.core.widget.doAfterTextChanged
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
 import dagger.hilt.android.AndroidEntryPoint
-import org.futo.circles.R
 import org.futo.circles.core.extensions.getText
 import org.futo.circles.core.extensions.observeData
 import org.futo.circles.core.extensions.observeResponse
@@ -16,7 +15,8 @@ import org.futo.circles.core.extensions.showSuccess
 import org.futo.circles.core.fragment.BaseFullscreenDialogFragment
 import org.futo.circles.core.fragment.HasLoadingState
 import org.futo.circles.core.view.LoadingDialog
-import org.futo.circles.databinding.DialogFragmentChangePasswordBinding
+import org.futo.circles.settings.R
+import org.futo.circles.settings.databinding.DialogFragmentChangePasswordBinding
 
 @AndroidEntryPoint
 class ChangePasswordDialogFragment :
diff --git a/app/src/main/java/org/futo/circles/feature/settings/change_password/ChangePasswordViewModel.kt b/settings/src/main/java/org/futo/circles/settings/feature/change_password/ChangePasswordViewModel.kt
similarity index 95%
rename from app/src/main/java/org/futo/circles/feature/settings/change_password/ChangePasswordViewModel.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/change_password/ChangePasswordViewModel.kt
index 510abf906992eab5b72e048bcd565f278eea6ead..2897e4281e2072688c7b7d668e6672684b2e4ddf 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/change_password/ChangePasswordViewModel.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/change_password/ChangePasswordViewModel.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.feature.settings.change_password
+package org.futo.circles.settings.feature.change_password
 
 import androidx.lifecycle.ViewModel
 import dagger.hilt.android.lifecycle.HiltViewModel
diff --git a/app/src/main/java/org/futo/circles/feature/settings/profile/edit/EditProfileDialogFragment.kt b/settings/src/main/java/org/futo/circles/settings/feature/edit_profile/EditProfileDialogFragment.kt
similarity index 95%
rename from app/src/main/java/org/futo/circles/feature/settings/profile/edit/EditProfileDialogFragment.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/edit_profile/EditProfileDialogFragment.kt
index 1d620e52df9b9f653e8075828fa243a94251cec7..c2c03f66ee09808e22fd191a6fcc8366663b9f55 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/profile/edit/EditProfileDialogFragment.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/edit_profile/EditProfileDialogFragment.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.feature.settings.profile.edit
+package org.futo.circles.settings.feature.edit_profile
 
 import android.os.Bundle
 import android.view.View
@@ -6,7 +6,6 @@ import androidx.core.widget.doAfterTextChanged
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
 import dagger.hilt.android.AndroidEntryPoint
-import org.futo.circles.R
 import org.futo.circles.core.extensions.getText
 import org.futo.circles.core.extensions.loadProfileIcon
 import org.futo.circles.core.extensions.notEmptyDisplayName
@@ -16,8 +15,8 @@ import org.futo.circles.core.extensions.onBackPressed
 import org.futo.circles.core.extensions.showSuccess
 import org.futo.circles.core.fragment.BaseFullscreenDialogFragment
 import org.futo.circles.core.fragment.HasLoadingState
-import org.futo.circles.databinding.DialogFragmentEditProfileBinding
 import org.futo.circles.gallery.feature.pick.AllMediaPickerHelper
+import org.futo.circles.settings.databinding.DialogFragmentEditProfileBinding
 import org.matrix.android.sdk.api.session.user.model.User
 
 @AndroidEntryPoint
diff --git a/app/src/main/java/org/futo/circles/feature/settings/profile/edit/EditProfileViewModel.kt b/settings/src/main/java/org/futo/circles/settings/feature/edit_profile/EditProfileViewModel.kt
similarity index 96%
rename from app/src/main/java/org/futo/circles/feature/settings/profile/edit/EditProfileViewModel.kt
rename to settings/src/main/java/org/futo/circles/settings/feature/edit_profile/EditProfileViewModel.kt
index 3786c90d8c9d908b457426eb1b4f743e0e6bcd0b..a93e75143ad439653b4c69e56f227cab7a641910 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/profile/edit/EditProfileViewModel.kt
+++ b/settings/src/main/java/org/futo/circles/settings/feature/edit_profile/EditProfileViewModel.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.feature.settings.profile.edit
+package org.futo.circles.settings.feature.edit_profile
 
 import android.net.Uri
 import androidx.lifecycle.MutableLiveData
diff --git a/app/src/main/java/org/futo/circles/model/ActiveSessionListItem.kt b/settings/src/main/java/org/futo/circles/settings/model/ActiveSessionListItem.kt
similarity index 95%
rename from app/src/main/java/org/futo/circles/model/ActiveSessionListItem.kt
rename to settings/src/main/java/org/futo/circles/settings/model/ActiveSessionListItem.kt
index 78d0c20690a7152e3cfd507a0ba17b99f6abe5f0..220a972d904679c3433876310ac42154c97683bb 100644
--- a/app/src/main/java/org/futo/circles/model/ActiveSessionListItem.kt
+++ b/settings/src/main/java/org/futo/circles/settings/model/ActiveSessionListItem.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.model
+package org.futo.circles.settings.model
 
 import org.futo.circles.core.list.IdEntity
 import org.futo.circles.core.provider.MatrixSessionProvider
diff --git a/app/src/main/java/org/futo/circles/model/QrState.kt b/settings/src/main/java/org/futo/circles/settings/model/QrState.kt
similarity index 87%
rename from app/src/main/java/org/futo/circles/model/QrState.kt
rename to settings/src/main/java/org/futo/circles/settings/model/QrState.kt
index 1d29e62648f9ca19abb5815d9937205dad7ec100..3af5ec596090033ba96bc2ce8a03d881f289da5d 100644
--- a/app/src/main/java/org/futo/circles/model/QrState.kt
+++ b/settings/src/main/java/org/futo/circles/settings/model/QrState.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.model
+package org.futo.circles.settings.model
 
 sealed class QrState
 
diff --git a/app/src/main/java/org/futo/circles/view/ActiveSessionInfoView.kt b/settings/src/main/java/org/futo/circles/settings/view/ActiveSessionInfoView.kt
similarity index 86%
rename from app/src/main/java/org/futo/circles/view/ActiveSessionInfoView.kt
rename to settings/src/main/java/org/futo/circles/settings/view/ActiveSessionInfoView.kt
index 82f5f0bdcf94ed2f72a26ee1bf35d8be7c00b9de..2b2665420626eefabc5d2ede6ab25733991b6d13 100644
--- a/app/src/main/java/org/futo/circles/view/ActiveSessionInfoView.kt
+++ b/settings/src/main/java/org/futo/circles/settings/view/ActiveSessionInfoView.kt
@@ -1,13 +1,13 @@
-package org.futo.circles.view
+package org.futo.circles.settings.view
 
 import android.content.Context
 import android.util.AttributeSet
 import android.view.LayoutInflater
 import androidx.constraintlayout.widget.ConstraintLayout
 import org.futo.circles.core.extensions.setIsVisible
-import org.futo.circles.databinding.ViewActiveSessionInfoBinding
-import org.futo.circles.feature.settings.active_sessions.list.ActiveSessionClickListener
-import org.futo.circles.model.ActiveSession
+import org.futo.circles.settings.databinding.ViewActiveSessionInfoBinding
+import org.futo.circles.settings.feature.active_sessions.list.ActiveSessionClickListener
+import org.futo.circles.settings.model.ActiveSession
 
 class ActiveSessionInfoView(
     context: Context,
@@ -16,7 +16,8 @@ class ActiveSessionInfoView(
 
     private val binding = ViewActiveSessionInfoBinding.inflate(LayoutInflater.from(context), this)
 
-    private var activeSessionClickListener: ActiveSessionClickListener? = null
+    private var activeSessionClickListener: ActiveSessionClickListener? =
+        null
     private var deviceId: String? = null
 
     init {
diff --git a/app/src/main/java/org/futo/circles/view/QrCodeImageView.kt b/settings/src/main/java/org/futo/circles/settings/view/QrCodeImageView.kt
similarity index 58%
rename from app/src/main/java/org/futo/circles/view/QrCodeImageView.kt
rename to settings/src/main/java/org/futo/circles/settings/view/QrCodeImageView.kt
index 51e7d036f43f73729300465d0b2a6f4cb39f8e69..3c86963e5805815e23c4d1176dcef9c4a7bf5835 100644
--- a/app/src/main/java/org/futo/circles/view/QrCodeImageView.kt
+++ b/settings/src/main/java/org/futo/circles/settings/view/QrCodeImageView.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.view
+package org.futo.circles.settings.view
 
 import android.content.Context
 import android.graphics.Bitmap
@@ -10,7 +10,7 @@ import androidx.core.content.ContextCompat
 import com.google.zxing.BarcodeFormat
 import com.google.zxing.common.BitMatrix
 import com.google.zxing.qrcode.QRCodeWriter
-import org.futo.circles.R
+import org.futo.circles.settings.R
 
 class QrCodeImageView @JvmOverloads constructor(
     context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
@@ -40,30 +40,31 @@ class QrCodeImageView @JvmOverloads constructor(
                 post { setImageBitmap(bitmap) }
             }
     }
-}
 
-private fun String.toBitMatrix(size: Int): BitMatrix {
-    return QRCodeWriter().encode(
-        this,
-        BarcodeFormat.QR_CODE,
-        size,
-        size
-    )
-}
 
-private fun BitMatrix.toBitmap(
-    @ColorInt backgroundColor: Int = Color.WHITE,
-    @ColorInt foregroundColor: Int = Color.BLACK
-): Bitmap {
-    val colorBuffer = IntArray(width * height)
-    var rowOffset = 0
-    for (y in 0 until height) {
-        for (x in 0 until width) {
-            val arrayIndex = x + rowOffset
-            colorBuffer[arrayIndex] = if (get(x, y)) foregroundColor else backgroundColor
-        }
-        rowOffset += width
+    private fun String.toBitMatrix(size: Int): BitMatrix {
+        return QRCodeWriter().encode(
+            this,
+            BarcodeFormat.QR_CODE,
+            size,
+            size
+        )
     }
 
-    return Bitmap.createBitmap(colorBuffer, width, height, Bitmap.Config.ARGB_8888)
+    private fun BitMatrix.toBitmap(
+        @ColorInt backgroundColor: Int = Color.WHITE,
+        @ColorInt foregroundColor: Int = Color.BLACK
+    ): Bitmap {
+        val colorBuffer = IntArray(width * height)
+        var rowOffset = 0
+        for (y in 0 until height) {
+            for (x in 0 until width) {
+                val arrayIndex = x + rowOffset
+                colorBuffer[arrayIndex] = if (get(x, y)) foregroundColor else backgroundColor
+            }
+            rowOffset += width
+        }
+
+        return Bitmap.createBitmap(colorBuffer, width, height, Bitmap.Config.ARGB_8888)
+    }
 }
\ No newline at end of file