Repository: thunderbird/thunderbird-android (language: kotlin)

Issue:
Add new account - "display name" field confusing name and not optional
### Checklist

- [X] I have used the search function to see if someone else has already submitted the same bug report.
- [X] I will describe the problem with as much detail as possible.

### App version

6.712

### Where did you get the app from?

Other

### Android version

14

### Device model

Pixel 7 Pro

### Steps to reproduce

Create new accounton the last page:


### Expected behavior

Display Name should be named "Your name" since it's what's send to others in the from header.
By "Display name" I would expect what "Account name" is used for -> the name the app displays the account in the list of other accounts.

Why is "Display name" required though?
If I go to the account settings -> Sending mail -> Manage identities and edit the Initial identity it lists the same field as optional

### Actual behavior

("display name" confuses me and the assistant requires it for no apparent reason

### Logs

_No response_
Split account options screen into two screens
Split account options screen into two screens (see design in [private] Figma).

Open question: Include the "show notifications" switch?


Discussion hints:

Pull request: Change options screen into two screens
Fixes #7334
Fixes #7406

Test command: ./gradlew :feature:account:setup:testDebugUnitTest --tests "app.k9mail.feature.account.setup.ui.createaccount.CreateAccountViewModelTest" --tests "app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsViewModelTest" --tests "app.k9mail.feature.account.setup.domain.usecase.CreateAccountTest" --tests "app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsStateTest" --tests "app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsScreenKtTest" --tests "app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsScreenKtTest" --tests "app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsStateTest" --tests "app.k9mail.feature.account.setup.AccountSetupModuleKtTest" --tests "app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryStateMapperKtTest" --tests "app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsStateMapperKtTest" --tests "app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsStateMapperKtTest" --tests "app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryViewModelTest" --tests "app.k9mail.feature.account.setup.ui.options.AccountOptionsStateMapperKtTest" --tests "app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsViewModelTest" :feature:account:oauth:testDebugUnitTest --tests "app.k9mail.feature.account.oauth.ui.AccountOAuthViewModelTest" :app:k9mail:testDebugUnitTest --tests "com.fsck.k9.account.AccountServerSettingsUpdaterTest" :feature:account:common:testDebugUnitTest --tests "app.k9mail.feature.account.common.domain.entity.AuthorizationStateTest" --tests "app.k9mail.feature.account.common.data.InMemoryAccountStateRepositoryTest" --tests "app.k9mail.feature.account.common.domain.entity.AccountStateTest" :feature:account:edit:testDebugUnitTest --tests "app.k9mail.feature.account.edit.domain.usecase.LoadAccountStateTest" --tests "app.k9mail.feature.account.edit.domain.usecase.GetAccountStateTest" --tests "app.k9mail.feature.account.edit.domain.usecase.SaveServerSettingsTest"

Fix patch:
diff --git a/app-feature-preview/src/main/java/app/k9mail/feature/preview/account/InMemoryAccountStore.kt b/app-feature-preview/src/main/java/app/k9mail/feature/preview/account/InMemoryAccountStore.kt
index 462b75e1987..22d416bbb7f 100644
--- a/app-feature-preview/src/main/java/app/k9mail/feature/preview/account/InMemoryAccountStore.kt
+++ b/app-feature-preview/src/main/java/app/k9mail/feature/preview/account/InMemoryAccountStore.kt
@@ -2,7 +2,10 @@ package app.k9mail.feature.preview.account
 
 import app.k9mail.feature.account.common.AccountCommonExternalContract.AccountStateLoader
 import app.k9mail.feature.account.common.domain.entity.Account
+import app.k9mail.feature.account.common.domain.entity.AccountDisplayOptions
+import app.k9mail.feature.account.common.domain.entity.AccountOptions
 import app.k9mail.feature.account.common.domain.entity.AccountState
+import app.k9mail.feature.account.common.domain.entity.AccountSyncOptions
 import app.k9mail.feature.account.common.domain.entity.AuthorizationState
 import app.k9mail.feature.account.edit.AccountEditExternalContract.AccountServerSettingsUpdater
 import app.k9mail.feature.account.edit.AccountEditExternalContract.AccountUpdaterFailure
@@ -39,12 +42,12 @@ class InMemoryAccountStore(
             accountMap[account.uuid] = if (isIncoming) {
                 account.copy(
                     incomingServerSettings = serverSettings,
-                    authorizationState = authorizationState?.state,
+                    authorizationState = authorizationState?.value,
                 )
             } else {
                 account.copy(
                     outgoingServerSettings = serverSettings,
-                    authorizationState = authorizationState?.state,
+                    authorizationState = authorizationState?.value,
                 )
             }
 
@@ -59,7 +62,24 @@ class InMemoryAccountStore(
             incomingServerSettings = account.incomingServerSettings,
             outgoingServerSettings = account.outgoingServerSettings,
             authorizationState = account.authorizationState?.let { AuthorizationState(it) },
-            options = account.options,
+            displayOptions = mapToDisplayOptions(account.options),
+            syncOptions = mapToSyncOptions(account.options),
+        )
+    }
+
+    private fun mapToDisplayOptions(options: AccountOptions): AccountDisplayOptions {
+        return AccountDisplayOptions(
+            accountName = options.accountName,
+            displayName = options.displayName,
+            emailSignature = options.emailSignature,
+        )
+    }
+
+    private fun mapToSyncOptions(options: AccountOptions): AccountSyncOptions {
+        return AccountSyncOptions(
+            checkFrequencyInMinutes = options.checkFrequencyInMinutes,
+            messageDisplayCount = options.messageDisplayCount,
+            showNotification = options.showNotification,
         )
     }
 }
diff --git a/app/k9mail/src/main/java/com/fsck/k9/account/AccountServerSettingsUpdater.kt b/app/k9mail/src/main/java/com/fsck/k9/account/AccountServerSettingsUpdater.kt
index 71e0163d902..a2ec8845244 100644
--- a/app/k9mail/src/main/java/com/fsck/k9/account/AccountServerSettingsUpdater.kt
+++ b/app/k9mail/src/main/java/com/fsck/k9/account/AccountServerSettingsUpdater.kt
@@ -67,7 +67,7 @@ class AccountServerSettingsUpdater(
             account.outgoingServerSettings = serverSettings
         }
 
-        account.oAuthState = authorizationState?.state
+        account.oAuthState = authorizationState?.value
 
         accountManager.saveAccount(account)
 
diff --git a/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/data/InMemoryAccountStateRepository.kt b/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/data/InMemoryAccountStateRepository.kt
index c55d1fbbad3..be713c17ff1 100644
--- a/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/data/InMemoryAccountStateRepository.kt
+++ b/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/data/InMemoryAccountStateRepository.kt
@@ -1,8 +1,9 @@
 package app.k9mail.feature.account.common.data
 
 import app.k9mail.feature.account.common.domain.AccountDomainContract
-import app.k9mail.feature.account.common.domain.entity.AccountOptions
+import app.k9mail.feature.account.common.domain.entity.AccountDisplayOptions
 import app.k9mail.feature.account.common.domain.entity.AccountState
+import app.k9mail.feature.account.common.domain.entity.AccountSyncOptions
 import app.k9mail.feature.account.common.domain.entity.AuthorizationState
 import app.k9mail.feature.account.common.domain.entity.SpecialFolderSettings
 import com.fsck.k9.mail.ServerSettings
@@ -41,8 +42,12 @@ class InMemoryAccountStateRepository(
         state = state.copy(specialFolderSettings = specialFolderSettings)
     }
 
-    override fun setOptions(options: AccountOptions) {
-        state = state.copy(options = options)
+    override fun setDisplayOptions(displayOptions: AccountDisplayOptions) {
+        state = state.copy(displayOptions = displayOptions)
+    }
+
+    override fun setSyncOptions(syncOptions: AccountSyncOptions) {
+        state = state.copy(syncOptions = syncOptions)
     }
 
     override fun clear() {
@@ -50,7 +55,7 @@ class InMemoryAccountStateRepository(
     }
 
     override fun getAuthorizationState(): String? {
-        return state.authorizationState?.state
+        return state.authorizationState?.value
     }
 
     override fun updateAuthorizationState(authorizationState: String?) {
diff --git a/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/AccountDomainContract.kt b/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/AccountDomainContract.kt
index ddf3aa60e80..a5820f2113e 100644
--- a/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/AccountDomainContract.kt
+++ b/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/AccountDomainContract.kt
@@ -1,13 +1,15 @@
 package app.k9mail.feature.account.common.domain
 
-import app.k9mail.feature.account.common.domain.entity.AccountOptions
+import app.k9mail.feature.account.common.domain.entity.AccountDisplayOptions
 import app.k9mail.feature.account.common.domain.entity.AccountState
+import app.k9mail.feature.account.common.domain.entity.AccountSyncOptions
 import app.k9mail.feature.account.common.domain.entity.AuthorizationState
 import app.k9mail.feature.account.common.domain.entity.SpecialFolderSettings
 import com.fsck.k9.mail.ServerSettings
 
 interface AccountDomainContract {
 
+    @Suppress("TooManyFunctions")
     interface AccountStateRepository {
         fun getState(): AccountState
 
@@ -23,7 +25,9 @@ interface AccountDomainContract {
 
         fun setSpecialFolderSettings(specialFolderSettings: SpecialFolderSettings)
 
-        fun setOptions(options: AccountOptions)
+        fun setDisplayOptions(displayOptions: AccountDisplayOptions)
+
+        fun setSyncOptions(syncOptions: AccountSyncOptions)
 
         fun clear()
     }
diff --git a/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/entity/AccountDisplayOptions.kt b/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/entity/AccountDisplayOptions.kt
new file mode 100644
index 00000000000..7384e3387ac
--- /dev/null
+++ b/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/entity/AccountDisplayOptions.kt
@@ -0,0 +1,7 @@
+package app.k9mail.feature.account.common.domain.entity
+
+data class AccountDisplayOptions(
+    val accountName: String,
+    val displayName: String,
+    val emailSignature: String?,
+)
diff --git a/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/entity/AccountState.kt b/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/entity/AccountState.kt
index e4632a1f4ef..90ae5ceafe3 100644
--- a/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/entity/AccountState.kt
+++ b/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/entity/AccountState.kt
@@ -9,5 +9,6 @@ data class AccountState(
     val outgoingServerSettings: ServerSettings? = null,
     val authorizationState: AuthorizationState? = null,
     val specialFolderSettings: SpecialFolderSettings? = null,
-    val options: AccountOptions? = null,
+    val displayOptions: AccountDisplayOptions? = null,
+    val syncOptions: AccountSyncOptions? = null,
 )
diff --git a/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/entity/AccountSyncOptions.kt b/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/entity/AccountSyncOptions.kt
new file mode 100644
index 00000000000..6d79a4dfecc
--- /dev/null
+++ b/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/entity/AccountSyncOptions.kt
@@ -0,0 +1,7 @@
+package app.k9mail.feature.account.common.domain.entity
+
+data class AccountSyncOptions(
+    val checkFrequencyInMinutes: Int,
+    val messageDisplayCount: Int,
+    val showNotification: Boolean,
+)
diff --git a/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/entity/AuthorizationState.kt b/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/entity/AuthorizationState.kt
index 5d4e46fef52..74e410136bd 100644
--- a/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/entity/AuthorizationState.kt
+++ b/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/domain/entity/AuthorizationState.kt
@@ -1,5 +1,5 @@
 package app.k9mail.feature.account.common.domain.entity
 
 data class AuthorizationState(
-    val state: String? = null,
+    val value: String? = null,
 )
diff --git a/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/ui/preview/PreviewAccountStateRepository.kt b/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/ui/preview/PreviewAccountStateRepository.kt
index 0ecfa100d54..bcb1dae0579 100644
--- a/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/ui/preview/PreviewAccountStateRepository.kt
+++ b/feature/account/common/src/main/kotlin/app/k9mail/feature/account/common/ui/preview/PreviewAccountStateRepository.kt
@@ -1,14 +1,16 @@
 package app.k9mail.feature.account.common.ui.preview
 
 import app.k9mail.feature.account.common.domain.AccountDomainContract
-import app.k9mail.feature.account.common.domain.entity.AccountOptions
+import app.k9mail.feature.account.common.domain.entity.AccountDisplayOptions
 import app.k9mail.feature.account.common.domain.entity.AccountState
+import app.k9mail.feature.account.common.domain.entity.AccountSyncOptions
 import app.k9mail.feature.account.common.domain.entity.AuthorizationState
 import app.k9mail.feature.account.common.domain.entity.MailConnectionSecurity
 import app.k9mail.feature.account.common.domain.entity.SpecialFolderSettings
 import com.fsck.k9.mail.AuthType
 import com.fsck.k9.mail.ServerSettings
 
+@Suppress("TooManyFunctions")
 class PreviewAccountStateRepository : AccountDomainContract.AccountStateRepository {
 
     override fun getState(): AccountState = AccountState(
@@ -47,7 +49,9 @@ class PreviewAccountStateRepository : AccountDomainContract.AccountStateReposito
 
     override fun setSpecialFolderSettings(specialFolderSettings: SpecialFolderSettings) = Unit
 
-    override fun setOptions(options: AccountOptions) = Unit
+    override fun setDisplayOptions(displayOptions: AccountDisplayOptions) = Unit
+
+    override fun setSyncOptions(syncOptions: AccountSyncOptions) = Unit
 
     override fun clear() = Unit
 }
diff --git a/feature/account/oauth/src/main/kotlin/app/k9mail/feature/account/oauth/data/AuthStateExtension.kt b/feature/account/oauth/src/main/kotlin/app/k9mail/feature/account/oauth/data/AuthStateExtension.kt
index daba4ec5788..b02846f111c 100644
--- a/feature/account/oauth/src/main/kotlin/app/k9mail/feature/account/oauth/data/AuthStateExtension.kt
+++ b/feature/account/oauth/src/main/kotlin/app/k9mail/feature/account/oauth/data/AuthStateExtension.kt
@@ -7,7 +7,7 @@ import timber.log.Timber
 
 fun AuthState.toAuthorizationState(): AuthorizationState {
     return try {
-        AuthorizationState(state = jsonSerializeString())
+        AuthorizationState(value = jsonSerializeString())
     } catch (e: JSONException) {
         Timber.e(e, "Error serializing AuthorizationState")
         AuthorizationState()
@@ -16,7 +16,7 @@ fun AuthState.toAuthorizationState(): AuthorizationState {
 
 fun AuthorizationState.toAuthState(): AuthState {
     return try {
-        state?.let { AuthState.jsonDeserialize(it) } ?: AuthState()
+        value?.let { AuthState.jsonDeserialize(it) } ?: AuthState()
     } catch (e: JSONException) {
         Timber.e(e, "Error deserializing AuthorizationState")
         AuthState()
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/AccountSetupModule.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/AccountSetupModule.kt
index ac5a6b50b02..5c80689340e 100644
--- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/AccountSetupModule.kt
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/AccountSetupModule.kt
@@ -15,9 +15,10 @@ import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryCon
 import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryValidator
 import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryViewModel
 import app.k9mail.feature.account.setup.ui.createaccount.CreateAccountViewModel
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsValidator
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsViewModel
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsValidator
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsViewModel
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsViewModel
 import app.k9mail.feature.account.setup.ui.specialfolders.SpecialFoldersContract
 import app.k9mail.feature.account.setup.ui.specialfolders.SpecialFoldersFormUiModel
 import app.k9mail.feature.account.setup.ui.specialfolders.SpecialFoldersViewModel
@@ -61,7 +62,7 @@ val featureAccountSetupModule: Module = module {
     }
 
     factory<AccountAutoDiscoveryContract.Validator> { AccountAutoDiscoveryValidator() }
-    factory<AccountOptionsContract.Validator> { AccountOptionsValidator() }
+    factory<DisplayOptionsContract.Validator> { DisplayOptionsValidator() }
 
     viewModel {
         AccountAutoDiscoveryViewModel(
@@ -107,12 +108,18 @@ val featureAccountSetupModule: Module = module {
     }
 
     viewModel {
-        AccountOptionsViewModel(
+        DisplayOptionsViewModel(
             validator = get(),
             accountStateRepository = get(),
         )
     }
 
+    viewModel {
+        SyncOptionsViewModel(
+            accountStateRepository = get(),
+        )
+    }
+
     viewModel {
         CreateAccountViewModel(
             createAccount = get(),
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/domain/DomainContract.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/domain/DomainContract.kt
index c3076a1dc71..3dbe24d6904 100644
--- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/domain/DomainContract.kt
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/domain/DomainContract.kt
@@ -3,11 +3,9 @@ package app.k9mail.feature.account.setup.domain
 import app.k9mail.autodiscovery.api.AutoDiscoveryResult
 import app.k9mail.core.common.domain.usecase.validation.ValidationError
 import app.k9mail.core.common.domain.usecase.validation.ValidationResult
-import app.k9mail.feature.account.common.domain.entity.AccountOptions
+import app.k9mail.feature.account.common.domain.entity.AccountState
 import app.k9mail.feature.account.common.domain.entity.SpecialFolderOptions
-import app.k9mail.feature.account.common.domain.entity.SpecialFolderSettings
 import app.k9mail.feature.account.setup.AccountSetupExternalContract.AccountCreator.AccountCreatorResult
-import com.fsck.k9.mail.ServerSettings
 
 interface DomainContract {
 
@@ -17,14 +15,7 @@ interface DomainContract {
         }
 
         fun interface CreateAccount {
-            suspend fun execute(
-                emailAddress: String,
-                incomingServerSettings: ServerSettings,
-                outgoingServerSettings: ServerSettings,
-                authorizationState: String?,
-                specialFolderSettings: SpecialFolderSettings?,
-                options: AccountOptions,
-            ): AccountCreatorResult
+            suspend fun execute(accountState: AccountState): AccountCreatorResult
         }
 
         fun interface ValidateEmailAddress {
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/domain/usecase/CreateAccount.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/domain/usecase/CreateAccount.kt
index 0a61246a978..ce373124e60 100644
--- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/domain/usecase/CreateAccount.kt
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/domain/usecase/CreateAccount.kt
@@ -1,36 +1,44 @@
 package app.k9mail.feature.account.setup.domain.usecase
 
 import app.k9mail.feature.account.common.domain.entity.Account
+import app.k9mail.feature.account.common.domain.entity.AccountDisplayOptions
 import app.k9mail.feature.account.common.domain.entity.AccountOptions
-import app.k9mail.feature.account.common.domain.entity.SpecialFolderSettings
+import app.k9mail.feature.account.common.domain.entity.AccountState
+import app.k9mail.feature.account.common.domain.entity.AccountSyncOptions
 import app.k9mail.feature.account.setup.AccountSetupExternalContract.AccountCreator
 import app.k9mail.feature.account.setup.AccountSetupExternalContract.AccountCreator.AccountCreatorResult
 import app.k9mail.feature.account.setup.domain.DomainContract.UseCase
-import com.fsck.k9.mail.ServerSettings
 import java.util.UUID
 
 class CreateAccount(
     private val accountCreator: AccountCreator,
     private val uuidGenerator: () -> String = { UUID.randomUUID().toString() },
 ) : UseCase.CreateAccount {
-    override suspend fun execute(
-        emailAddress: String,
-        incomingServerSettings: ServerSettings,
-        outgoingServerSettings: ServerSettings,
-        authorizationState: String?,
-        specialFolderSettings: SpecialFolderSettings?,
-        options: AccountOptions,
-    ): AccountCreatorResult {
+    override suspend fun execute(accountState: AccountState): AccountCreatorResult {
         val account = Account(
             uuid = uuidGenerator(),
-            emailAddress = emailAddress,
-            incomingServerSettings = incomingServerSettings,
-            outgoingServerSettings = outgoingServerSettings,
-            authorizationState = authorizationState,
-            specialFolderSettings = specialFolderSettings,
-            options = options,
+            emailAddress = accountState.emailAddress!!,
+            incomingServerSettings = accountState.incomingServerSettings!!.copy(),
+            outgoingServerSettings = accountState.outgoingServerSettings!!.copy(),
+            authorizationState = accountState.authorizationState?.value,
+            specialFolderSettings = accountState.specialFolderSettings,
+            options = mapOptions(accountState.displayOptions!!, accountState.syncOptions!!),
         )
 
         return accountCreator.createAccount(account)
     }
+
+    private fun mapOptions(
+        displayOptions: AccountDisplayOptions,
+        syncOptions: AccountSyncOptions,
+    ): AccountOptions {
+        return AccountOptions(
+            accountName = displayOptions.accountName,
+            displayName = displayOptions.displayName,
+            emailSignature = displayOptions.emailSignature,
+            checkFrequencyInMinutes = syncOptions.checkFrequencyInMinutes,
+            messageDisplayCount = syncOptions.messageDisplayCount,
+            showNotification = syncOptions.showNotification,
+        )
+    }
 }
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupNavHost.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupNavHost.kt
index 7cc82a680d9..dc1a996e48e 100644
--- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupNavHost.kt
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupNavHost.kt
@@ -20,8 +20,10 @@ import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryScr
 import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryViewModel
 import app.k9mail.feature.account.setup.ui.createaccount.CreateAccountScreen
 import app.k9mail.feature.account.setup.ui.createaccount.CreateAccountViewModel
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsScreen
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsViewModel
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsScreen
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsViewModel
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsScreen
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsViewModel
 import app.k9mail.feature.account.setup.ui.specialfolders.SpecialFoldersScreen
 import app.k9mail.feature.account.setup.ui.specialfolders.SpecialFoldersViewModel
 import org.koin.androidx.compose.koinViewModel
@@ -32,7 +34,8 @@ private const val NESTED_NAVIGATION_INCOMING_SERVER_VALIDATION = "incoming-serve
 private const val NESTED_NAVIGATION_OUTGOING_SERVER_CONFIG = "outgoing-server/config"
 private const val NESTED_NAVIGATION_OUTGOING_SERVER_VALIDATION = "outgoing-server/validation"
 private const val NESTED_NAVIGATION_SPECIAL_FOLDERS = "special-folders"
-private const val NESTED_NAVIGATION_ACCOUNT_OPTIONS = "account-options"
+private const val NESTED_NAVIGATION_DISPLAY_OPTIONS = "display-options"
+private const val NESTED_NAVIGATION_SYNC_OPTIONS = "sync-options"
 private const val NESTED_NAVIGATION_CREATE_ACCOUNT = "create-account"
 
 @Suppress("LongMethod")
@@ -109,7 +112,7 @@ fun AccountSetupNavHost(
                         if (hasSpecialFolders) {
                             NESTED_NAVIGATION_SPECIAL_FOLDERS
                         } else {
-                            NESTED_NAVIGATION_ACCOUNT_OPTIONS
+                            NESTED_NAVIGATION_DISPLAY_OPTIONS
                         },
                     ) {
                         if (isAutomaticConfig) {
@@ -127,18 +130,26 @@ fun AccountSetupNavHost(
         composable(route = NESTED_NAVIGATION_SPECIAL_FOLDERS) {
             SpecialFoldersScreen(
                 onNext = {
-                    navController.navigate(NESTED_NAVIGATION_ACCOUNT_OPTIONS)
+                    navController.navigate(NESTED_NAVIGATION_DISPLAY_OPTIONS)
                 },
                 onBack = { navController.popBackStack() },
                 viewModel = koinViewModel<SpecialFoldersViewModel>(),
             )
         }
 
-        composable(route = NESTED_NAVIGATION_ACCOUNT_OPTIONS) {
-            AccountOptionsScreen(
+        composable(route = NESTED_NAVIGATION_DISPLAY_OPTIONS) {
+            DisplayOptionsScreen(
+                onNext = { navController.navigate(NESTED_NAVIGATION_SYNC_OPTIONS) },
+                onBack = { navController.popBackStack() },
+                viewModel = koinViewModel<DisplayOptionsViewModel>(),
+            )
+        }
+
+        composable(route = NESTED_NAVIGATION_SYNC_OPTIONS) {
+            SyncOptionsScreen(
                 onNext = { navController.navigate(NESTED_NAVIGATION_CREATE_ACCOUNT) },
                 onBack = { navController.popBackStack() },
-                viewModel = koinViewModel<AccountOptionsViewModel>(),
+                viewModel = koinViewModel<SyncOptionsViewModel>(),
             )
         }
 
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/autodiscovery/AccountAutoDiscoveryStateMapper.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/autodiscovery/AccountAutoDiscoveryStateMapper.kt
index 3cf564de9e4..64b25767c8b 100644
--- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/autodiscovery/AccountAutoDiscoveryStateMapper.kt
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/autodiscovery/AccountAutoDiscoveryStateMapper.kt
@@ -11,7 +11,7 @@ import app.k9mail.feature.account.setup.domain.entity.toAuthenticationType
 import app.k9mail.feature.account.setup.domain.entity.toConnectionSecurity
 import app.k9mail.feature.account.setup.domain.entity.toIncomingProtocolType
 import app.k9mail.feature.account.setup.domain.toServerSettings
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract
 
 internal fun AccountAutoDiscoveryContract.State.toAccountState(): AccountState {
     return AccountState(
@@ -19,7 +19,8 @@ internal fun AccountAutoDiscoveryContract.State.toAccountState(): AccountState {
         incomingServerSettings = autoDiscoverySettings?.incomingServerSettings?.toServerSettings(password.value),
         outgoingServerSettings = autoDiscoverySettings?.outgoingServerSettings?.toServerSettings(password.value),
         authorizationState = authorizationState,
-        options = null,
+        displayOptions = null,
+        syncOptions = null,
     )
 }
 
@@ -66,8 +67,8 @@ internal fun AccountAutoDiscoveryContract.State.toOutgoingConfigState(): Outgoin
     }
 }
 
-internal fun AccountAutoDiscoveryContract.State.toOptionsState(): AccountOptionsContract.State {
-    return AccountOptionsContract.State(
+internal fun AccountAutoDiscoveryContract.State.toOptionsState(): DisplayOptionsContract.State {
+    return DisplayOptionsContract.State(
         accountName = StringInputField(value = emailAddress.value),
     )
 }
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/createaccount/CreateAccountScreen.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/createaccount/CreateAccountScreen.kt
index 049041643d6..e55a2bcc997 100644
--- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/createaccount/CreateAccountScreen.kt
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/createaccount/CreateAccountScreen.kt
@@ -73,7 +73,7 @@ internal fun AccountOptionsScreenK9Preview() {
             onNext = {},
             onBack = {},
             viewModel = CreateAccountViewModel(
-                createAccount = { _, _, _, _, _, _ -> AccountCreatorResult.Success("irrelevant") },
+                createAccount = { AccountCreatorResult.Success("irrelevant") },
                 accountStateRepository = InMemoryAccountStateRepository(),
             ),
         )
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/createaccount/CreateAccountViewModel.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/createaccount/CreateAccountViewModel.kt
index 37dd6ef56a9..5215c6f875a 100644
--- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/createaccount/CreateAccountViewModel.kt
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/createaccount/CreateAccountViewModel.kt
@@ -33,16 +33,7 @@ class CreateAccountViewModel(
         val accountState = accountStateRepository.getState()
 
         viewModelScope.launch {
-            val result = createAccount.execute(
-                emailAddress = accountState.emailAddress ?: "",
-                incomingServerSettings = accountState.incomingServerSettings!!,
-                outgoingServerSettings = accountState.outgoingServerSettings!!,
-                authorizationState = accountState.authorizationState?.state,
-                specialFolderSettings = accountState.specialFolderSettings,
-                options = accountState.options!!,
-            )
-
-            when (result) {
+            when (val result = createAccount.execute(accountState)) {
                 is AccountCreatorResult.Success -> showSuccess(AccountUuid(result.accountUuid))
                 is AccountCreatorResult.Error -> showError(result)
             }
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsStateMapper.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsStateMapper.kt
deleted file mode 100644
index 3616cd5bebe..00000000000
--- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsStateMapper.kt
+++ /dev/null
@@ -1,39 +0,0 @@
-package app.k9mail.feature.account.setup.ui.options
-
-import app.k9mail.feature.account.common.domain.entity.AccountOptions
-import app.k9mail.feature.account.common.domain.entity.AccountState
-import app.k9mail.feature.account.common.domain.input.StringInputField
-import app.k9mail.feature.account.setup.domain.entity.EmailCheckFrequency
-import app.k9mail.feature.account.setup.domain.entity.EmailDisplayCount
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.State
-
-internal fun AccountState.toAccountOptionsState(): State {
-    val options = options
-    return if (options == null) {
-        State(
-            accountName = StringInputField(emailAddress ?: ""),
-            // displayName = StringInputField(""),
-            // TODO: get display name from: preferences.defaultAccount?.senderName ?: ""
-        )
-    } else {
-        State(
-            accountName = StringInputField(options.accountName),
-            displayName = StringInputField(options.displayName),
-            emailSignature = StringInputField(options.emailSignature ?: ""),
-            checkFrequency = EmailCheckFrequency.fromMinutes(options.checkFrequencyInMinutes),
-            messageDisplayCount = EmailDisplayCount.fromCount(options.messageDisplayCount),
-            showNotification = options.showNotification,
-        )
-    }
-}
-
-internal fun State.toAccountOptions(): AccountOptions {
-    return AccountOptions(
-        accountName = accountName.value,
-        displayName = displayName.value,
-        emailSignature = emailSignature.value.takeIf { it.isNotEmpty() },
-        checkFrequencyInMinutes = checkFrequency.minutes,
-        messageDisplayCount = messageDisplayCount.count,
-        showNotification = showNotification,
-    )
-}
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsContent.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsContent.kt
new file mode 100644
index 00000000000..0f22ae5e696
--- /dev/null
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsContent.kt
@@ -0,0 +1,128 @@
+package app.k9mail.feature.account.setup.ui.options.display
+
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.ExperimentalLayoutApi
+import androidx.compose.foundation.layout.PaddingValues
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.consumeWindowInsets
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.imePadding
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.requiredHeight
+import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.platform.testTag
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.tooling.preview.Preview
+import app.k9mail.core.ui.compose.designsystem.atom.text.TextOverline
+import app.k9mail.core.ui.compose.designsystem.molecule.input.TextInput
+import app.k9mail.core.ui.compose.designsystem.template.ResponsiveWidthContainer
+import app.k9mail.core.ui.compose.theme.K9Theme
+import app.k9mail.core.ui.compose.theme.MainTheme
+import app.k9mail.core.ui.compose.theme.ThunderbirdTheme
+import app.k9mail.feature.account.common.ui.item.defaultHeadlineItemPadding
+import app.k9mail.feature.account.common.ui.item.defaultItemPadding
+import app.k9mail.feature.account.setup.R
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.Event
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.State
+
+@OptIn(ExperimentalLayoutApi::class)
+@Suppress("LongMethod")
+@Composable
+internal fun DisplayOptionsContent(
+    state: State,
+    onEvent: (Event) -> Unit,
+    contentPadding: PaddingValues,
+    modifier: Modifier = Modifier,
+) {
+    val resources = LocalContext.current.resources
+
+    ResponsiveWidthContainer(
+        modifier = Modifier
+            .testTag("DisplayOptionsContent")
+            .consumeWindowInsets(contentPadding)
+            .padding(contentPadding)
+            .then(modifier),
+    ) {
+        LazyColumn(
+            modifier = Modifier
+                .fillMaxSize()
+                .imePadding(),
+            horizontalAlignment = Alignment.Start,
+            verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.default),
+        ) {
+            item {
+                TextOverline(
+                    text = stringResource(id = R.string.account_setup_options_section_display_options),
+                    modifier = Modifier
+                        .fillMaxWidth()
+                        .padding(defaultHeadlineItemPadding()),
+                )
+            }
+
+            item {
+                TextInput(
+                    text = state.accountName.value,
+                    errorMessage = state.accountName.error?.toResourceString(resources),
+                    onTextChange = { onEvent(Event.OnAccountNameChanged(it)) },
+                    label = stringResource(id = R.string.account_setup_options_account_name_label),
+                    contentPadding = defaultItemPadding(),
+                )
+            }
+
+            item {
+                TextInput(
+                    text = state.displayName.value,
+                    errorMessage = state.displayName.error?.toResourceString(resources),
+                    onTextChange = { onEvent(Event.OnDisplayNameChanged(it)) },
+                    label = stringResource(id = R.string.account_setup_options_display_name_label),
+                    contentPadding = defaultItemPadding(),
+                    isRequired = true,
+                )
+            }
+
+            item {
+                TextInput(
+                    text = state.emailSignature.value,
+                    errorMessage = state.emailSignature.error?.toResourceString(resources),
+                    onTextChange = { onEvent(Event.OnEmailSignatureChanged(it)) },
+                    label = stringResource(id = R.string.account_setup_options_email_signature_label),
+                    contentPadding = defaultItemPadding(),
+                    isSingleLine = false,
+                )
+            }
+
+            item {
+                Spacer(modifier = Modifier.requiredHeight(MainTheme.sizes.smaller))
+            }
+        }
+    }
+}
+
+@Composable
+@Preview(showBackground = true)
+internal fun DisplayOptionsContentK9Preview() {
+    K9Theme {
+        DisplayOptionsContent(
+            state = State(),
+            onEvent = {},
+            contentPadding = PaddingValues(),
+        )
+    }
+}
+
+@Composable
+@Preview(showBackground = true)
+internal fun DisplayOptionsContentThunderbirdPreview() {
+    ThunderbirdTheme {
+        DisplayOptionsContent(
+            state = State(),
+            onEvent = {},
+            contentPadding = PaddingValues(),
+        )
+    }
+}
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsContract.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsContract.kt
similarity index 54%
rename from feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsContract.kt
rename to feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsContract.kt
index 0b536d7110a..822b75a9ffe 100644
--- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsContract.kt
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsContract.kt
@@ -1,12 +1,10 @@
-package app.k9mail.feature.account.setup.ui.options
+package app.k9mail.feature.account.setup.ui.options.display
 
 import app.k9mail.core.common.domain.usecase.validation.ValidationResult
 import app.k9mail.core.ui.compose.common.mvi.UnidirectionalViewModel
 import app.k9mail.feature.account.common.domain.input.StringInputField
-import app.k9mail.feature.account.setup.domain.entity.EmailCheckFrequency
-import app.k9mail.feature.account.setup.domain.entity.EmailDisplayCount
 
-interface AccountOptionsContract {
+interface DisplayOptionsContract {
 
     interface ViewModel : UnidirectionalViewModel<State, Event, Effect>
 
@@ -14,28 +12,22 @@ interface AccountOptionsContract {
         val accountName: StringInputField = StringInputField(),
         val displayName: StringInputField = StringInputField(),
         val emailSignature: StringInputField = StringInputField(),
-        val checkFrequency: EmailCheckFrequency = EmailCheckFrequency.DEFAULT,
-        val messageDisplayCount: EmailDisplayCount = EmailDisplayCount.DEFAULT,
-        val showNotification: Boolean = false,
     )
 
     sealed interface Event {
         data class OnAccountNameChanged(val accountName: String) : Event
         data class OnDisplayNameChanged(val displayName: String) : Event
         data class OnEmailSignatureChanged(val emailSignature: String) : Event
-        data class OnCheckFrequencyChanged(val checkFrequency: EmailCheckFrequency) : Event
-        data class OnMessageDisplayCountChanged(val messageDisplayCount: EmailDisplayCount) : Event
-        data class OnShowNotificationChanged(val showNotification: Boolean) : Event
 
-        object LoadAccountState : Event
+        data object LoadAccountState : Event
 
-        object OnNextClicked : Event
-        object OnBackClicked : Event
+        data object OnNextClicked : Event
+        data object OnBackClicked : Event
     }
 
     sealed interface Effect {
-        object NavigateNext : Effect
-        object NavigateBack : Effect
+        data object NavigateNext : Effect
+        data object NavigateBack : Effect
     }
 
     interface Validator {
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsScreen.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsScreen.kt
new file mode 100644
index 00000000000..4aaa9c33dea
--- /dev/null
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsScreen.kt
@@ -0,0 +1,93 @@
+package app.k9mail.feature.account.setup.ui.options.display
+
+import androidx.activity.compose.BackHandler
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.tooling.preview.Preview
+import app.k9mail.core.ui.compose.common.mvi.observe
+import app.k9mail.core.ui.compose.designsystem.template.Scaffold
+import app.k9mail.core.ui.compose.theme.K9Theme
+import app.k9mail.core.ui.compose.theme.ThunderbirdTheme
+import app.k9mail.feature.account.common.ui.AccountTopAppBar
+import app.k9mail.feature.account.common.ui.WizardNavigationBar
+import app.k9mail.feature.account.common.ui.preview.PreviewAccountStateRepository
+import app.k9mail.feature.account.setup.R.string
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.Effect
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.Event
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.ViewModel
+
+@Composable
+internal fun DisplayOptionsScreen(
+    onNext: () -> Unit,
+    onBack: () -> Unit,
+    viewModel: ViewModel,
+    modifier: Modifier = Modifier,
+) {
+    val (state, dispatch) = viewModel.observe { effect ->
+        when (effect) {
+            Effect.NavigateBack -> onBack()
+            Effect.NavigateNext -> onNext()
+        }
+    }
+
+    LaunchedEffect(key1 = Unit) {
+        dispatch(Event.LoadAccountState)
+    }
+
+    BackHandler {
+        dispatch(Event.OnBackClicked)
+    }
+
+    Scaffold(
+        topBar = {
+            AccountTopAppBar(
+                title = stringResource(id = string.account_setup_options_section_display_options),
+            )
+        },
+        bottomBar = {
+            WizardNavigationBar(
+                onNextClick = { dispatch(Event.OnNextClicked) },
+                onBackClick = { dispatch(Event.OnBackClicked) },
+            )
+        },
+        modifier = modifier,
+    ) { innerPadding ->
+        DisplayOptionsContent(
+            state = state.value,
+            onEvent = { dispatch(it) },
+            contentPadding = innerPadding,
+        )
+    }
+}
+
+@Composable
+@Preview(showBackground = true)
+internal fun DisplayOptionsScreenK9Preview() {
+    K9Theme {
+        DisplayOptionsScreen(
+            onNext = {},
+            onBack = {},
+            viewModel = DisplayOptionsViewModel(
+                validator = DisplayOptionsValidator(),
+                accountStateRepository = PreviewAccountStateRepository(),
+            ),
+        )
+    }
+}
+
+@Composable
+@Preview(showBackground = true)
+internal fun DisplayOptionsScreenThunderbirdPreview() {
+    ThunderbirdTheme {
+        DisplayOptionsScreen(
+            onNext = {},
+            onBack = {},
+            viewModel = DisplayOptionsViewModel(
+                validator = DisplayOptionsValidator(),
+                accountStateRepository = PreviewAccountStateRepository(),
+            ),
+        )
+    }
+}
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsStateMapper.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsStateMapper.kt
new file mode 100644
index 00000000000..46011dad357
--- /dev/null
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsStateMapper.kt
@@ -0,0 +1,31 @@
+package app.k9mail.feature.account.setup.ui.options.display
+
+import app.k9mail.feature.account.common.domain.entity.AccountDisplayOptions
+import app.k9mail.feature.account.common.domain.entity.AccountState
+import app.k9mail.feature.account.common.domain.input.StringInputField
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.State
+
+internal fun AccountState.toDisplayOptionsState(): State {
+    val options = displayOptions
+    return if (options == null) {
+        State(
+            accountName = StringInputField(emailAddress ?: ""),
+            // displayName = StringInputField(""),
+            // TODO: get display name from: preferences.defaultAccount?.senderName ?: ""
+        )
+    } else {
+        State(
+            accountName = StringInputField(options.accountName),
+            displayName = StringInputField(options.displayName),
+            emailSignature = StringInputField(options.emailSignature ?: ""),
+        )
+    }
+}
+
+internal fun State.toAccountDisplayOptions(): AccountDisplayOptions {
+    return AccountDisplayOptions(
+        accountName = accountName.value,
+        displayName = displayName.value,
+        emailSignature = emailSignature.value.takeIf { it.isNotEmpty() },
+    )
+}
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsStringMapper.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsStringMapper.kt
similarity index 66%
rename from feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsStringMapper.kt
rename to feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsStringMapper.kt
index eae82030ce2..43e06229997 100644
--- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsStringMapper.kt
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsStringMapper.kt
@@ -1,10 +1,8 @@
-package app.k9mail.feature.account.setup.ui.options
+package app.k9mail.feature.account.setup.ui.options.display
 
 import android.content.res.Resources
 import app.k9mail.core.common.domain.usecase.validation.ValidationError
 import app.k9mail.feature.account.setup.R
-import app.k9mail.feature.account.setup.domain.entity.EmailCheckFrequency
-import app.k9mail.feature.account.setup.domain.entity.EmailDisplayCount
 import app.k9mail.feature.account.setup.domain.usecase.ValidateAccountName.ValidateAccountNameError
 import app.k9mail.feature.account.setup.domain.usecase.ValidateAccountName.ValidateAccountNameError.BlankAccountName
 import app.k9mail.feature.account.setup.domain.usecase.ValidateDisplayName.ValidateDisplayNameError
@@ -12,31 +10,6 @@ import app.k9mail.feature.account.setup.domain.usecase.ValidateDisplayName.Valid
 import app.k9mail.feature.account.setup.domain.usecase.ValidateEmailSignature.ValidateEmailSignatureError
 import app.k9mail.feature.account.setup.domain.usecase.ValidateEmailSignature.ValidateEmailSignatureError.BlankEmailSignature
 
-internal fun EmailDisplayCount.toResourceString(resources: Resources) = resources.getQuantityString(
-    R.plurals.account_setup_options_email_display_count_messages,
-    count,
-    count,
-)
-
-@Suppress("MagicNumber")
-internal fun EmailCheckFrequency.toResourceString(resources: Resources): String {
-    return when (minutes) {
-        -1 -> resources.getString(R.string.account_setup_options_email_check_frequency_never)
-
-        in 1..59 -> resources.getQuantityString(
-            R.plurals.account_setup_options_email_check_frequency_minutes,
-            minutes,
-            minutes,
-        )
-
-        else -> resources.getQuantityString(
-            R.plurals.account_setup_options_email_check_frequency_hours,
-            (minutes / 60),
-            (minutes / 60),
-        )
-    }
-}
-
 internal fun ValidationError.toResourceString(resources: Resources): String {
     return when (this) {
         is ValidateAccountNameError -> toAccountNameErrorString(resources)
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsValidator.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsValidator.kt
similarity index 84%
rename from feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsValidator.kt
rename to feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsValidator.kt
index 4a167b311d5..7f0b1f8ac82 100644
--- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsValidator.kt
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsValidator.kt
@@ -1,12 +1,12 @@
-package app.k9mail.feature.account.setup.ui.options
+package app.k9mail.feature.account.setup.ui.options.display
 
 import app.k9mail.core.common.domain.usecase.validation.ValidationResult
 import app.k9mail.feature.account.setup.domain.usecase.ValidateAccountName
 import app.k9mail.feature.account.setup.domain.usecase.ValidateDisplayName
 import app.k9mail.feature.account.setup.domain.usecase.ValidateEmailSignature
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Validator
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.Validator
 
-internal class AccountOptionsValidator(
+internal class DisplayOptionsValidator(
     private val accountNameValidator: ValidateAccountName = ValidateAccountName(),
     private val displayNameValidator: ValidateDisplayName = ValidateDisplayName(),
     private val emailSignatureValidator: ValidateEmailSignature = ValidateEmailSignature(),
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsViewModel.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsViewModel.kt
similarity index 66%
rename from feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsViewModel.kt
rename to feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsViewModel.kt
index 7d02b09a11e..65d00e3b543 100644
--- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsViewModel.kt
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsViewModel.kt
@@ -1,20 +1,20 @@
-package app.k9mail.feature.account.setup.ui.options
+package app.k9mail.feature.account.setup.ui.options.display
 
 import app.k9mail.core.common.domain.usecase.validation.ValidationResult
 import app.k9mail.core.ui.compose.common.mvi.BaseViewModel
 import app.k9mail.feature.account.common.domain.AccountDomainContract
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Effect
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Event
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.State
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Validator
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.ViewModel
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.Effect
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.Event
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.State
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.Validator
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.ViewModel
 
-internal class AccountOptionsViewModel(
+internal class DisplayOptionsViewModel(
     private val validator: Validator,
     private val accountStateRepository: AccountDomainContract.AccountStateRepository,
     initialState: State? = null,
 ) : BaseViewModel<State, Event, Effect>(
-    initialState = initialState ?: accountStateRepository.getState().toAccountOptionsState(),
+    initialState = initialState ?: accountStateRepository.getState().toDisplayOptionsState(),
 ),
     ViewModel {
 
@@ -40,24 +40,6 @@ internal class AccountOptionsViewModel(
                 )
             }
 
-            is Event.OnCheckFrequencyChanged -> updateState {
-                it.copy(
-                    checkFrequency = event.checkFrequency,
-                )
-            }
-
-            is Event.OnMessageDisplayCountChanged -> updateState { state ->
-                state.copy(
-                    messageDisplayCount = event.messageDisplayCount,
-                )
-            }
-
-            is Event.OnShowNotificationChanged -> updateState { state ->
-                state.copy(
-                    showNotification = event.showNotification,
-                )
-            }
-
             Event.OnNextClicked -> submit()
             Event.OnBackClicked -> navigateBack()
         }
@@ -65,7 +47,7 @@ internal class AccountOptionsViewModel(
 
     private fun loadAccountState() {
         updateState {
-            accountStateRepository.getState().toAccountOptionsState()
+            accountStateRepository.getState().toDisplayOptionsState()
         }
     }
 
@@ -89,7 +71,7 @@ internal class AccountOptionsViewModel(
         }
 
         if (!hasError) {
-            accountStateRepository.setOptions(state.value.toAccountOptions())
+            accountStateRepository.setDisplayOptions(state.value.toAccountDisplayOptions())
             navigateNext()
         }
     }
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsContent.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsContent.kt
similarity index 64%
rename from feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsContent.kt
rename to feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsContent.kt
index 7e7e3ad97be..ea404137d6a 100644
--- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsContent.kt
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsContent.kt
@@ -1,4 +1,4 @@
-package app.k9mail.feature.account.setup.ui.options
+package app.k9mail.feature.account.setup.ui.options.sync
 
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.ExperimentalLayoutApi
@@ -17,11 +17,10 @@ import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.platform.testTag
 import androidx.compose.ui.res.stringResource
-import app.k9mail.core.ui.compose.common.PreviewDevices
+import androidx.compose.ui.tooling.preview.Preview
 import app.k9mail.core.ui.compose.designsystem.atom.text.TextOverline
 import app.k9mail.core.ui.compose.designsystem.molecule.input.SelectInput
 import app.k9mail.core.ui.compose.designsystem.molecule.input.SwitchInput
-import app.k9mail.core.ui.compose.designsystem.molecule.input.TextInput
 import app.k9mail.core.ui.compose.designsystem.template.ResponsiveWidthContainer
 import app.k9mail.core.ui.compose.theme.K9Theme
 import app.k9mail.core.ui.compose.theme.MainTheme
@@ -31,13 +30,13 @@ import app.k9mail.feature.account.common.ui.item.defaultItemPadding
 import app.k9mail.feature.account.setup.R
 import app.k9mail.feature.account.setup.domain.entity.EmailCheckFrequency
 import app.k9mail.feature.account.setup.domain.entity.EmailDisplayCount
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Event
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.State
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.Event
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.State
 
 @OptIn(ExperimentalLayoutApi::class)
 @Suppress("LongMethod")
 @Composable
-internal fun AccountOptionsContent(
+internal fun SyncOptionsContent(
     state: State,
     onEvent: (Event) -> Unit,
     contentPadding: PaddingValues,
@@ -47,7 +46,7 @@ internal fun AccountOptionsContent(
 
     ResponsiveWidthContainer(
         modifier = Modifier
-            .testTag("AccountOptionsContent")
+            .testTag("SyncOptionsContent")
             .consumeWindowInsets(contentPadding)
             .padding(contentPadding)
             .then(modifier),
@@ -61,48 +60,7 @@ internal fun AccountOptionsContent(
         ) {
             item {
                 TextOverline(
-                    text = stringResource(id = R.string.account_setup_options_section_display_options),
-                    modifier = Modifier
-                        .fillMaxWidth()
-                        .padding(defaultHeadlineItemPadding()),
-                )
-            }
-
-            item {
-                TextInput(
-                    text = state.accountName.value,
-                    errorMessage = state.accountName.error?.toResourceString(resources),
-                    onTextChange = { onEvent(Event.OnAccountNameChanged(it)) },
-                    label = stringResource(id = R.string.account_setup_options_account_name_label),
-                    contentPadding = defaultItemPadding(),
-                )
-            }
-
-            item {
-                TextInput(
-                    text = state.displayName.value,
-                    errorMessage = state.displayName.error?.toResourceString(resources),
-                    onTextChange = { onEvent(Event.OnDisplayNameChanged(it)) },
-                    label = stringResource(id = R.string.account_setup_options_display_name_label),
-                    contentPadding = defaultItemPadding(),
-                    isRequired = true,
-                )
-            }
-
-            item {
-                TextInput(
-                    text = state.emailSignature.value,
-                    errorMessage = state.emailSignature.error?.toResourceString(resources),
-                    onTextChange = { onEvent(Event.OnEmailSignatureChanged(it)) },
-                    label = stringResource(id = R.string.account_setup_options_email_signature_label),
-                    contentPadding = defaultItemPadding(),
-                    isSingleLine = false,
-                )
-            }
-
-            item {
-                TextOverline(
-                    text = stringResource(id = R.string.account_setup_options_section_sync_options_),
+                    text = stringResource(id = R.string.account_setup_options_section_sync_options),
                     modifier = Modifier
                         .fillMaxWidth()
                         .padding(defaultHeadlineItemPadding()),
@@ -148,10 +106,10 @@ internal fun AccountOptionsContent(
 }
 
 @Composable
-@PreviewDevices
-internal fun AccountOptionsContentK9Preview() {
+@Preview(showBackground = true)
+internal fun SyncOptionsContentK9Preview() {
     K9Theme {
-        AccountOptionsContent(
+        SyncOptionsContent(
             state = State(),
             onEvent = {},
             contentPadding = PaddingValues(),
@@ -160,10 +118,10 @@ internal fun AccountOptionsContentK9Preview() {
 }
 
 @Composable
-@PreviewDevices
-internal fun AccountOptionsContentThunderbirdPreview() {
+@Preview(showBackground = true)
+internal fun SyncOptionsContentThunderbirdPreview() {
     ThunderbirdTheme {
-        AccountOptionsContent(
+        SyncOptionsContent(
             state = State(),
             onEvent = {},
             contentPadding = PaddingValues(),
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsContract.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsContract.kt
new file mode 100644
index 00000000000..25eb6a9b047
--- /dev/null
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsContract.kt
@@ -0,0 +1,32 @@
+package app.k9mail.feature.account.setup.ui.options.sync
+
+import app.k9mail.core.ui.compose.common.mvi.UnidirectionalViewModel
+import app.k9mail.feature.account.setup.domain.entity.EmailCheckFrequency
+import app.k9mail.feature.account.setup.domain.entity.EmailDisplayCount
+
+interface SyncOptionsContract {
+
+    interface ViewModel : UnidirectionalViewModel<State, Event, Effect>
+
+    data class State(
+        val checkFrequency: EmailCheckFrequency = EmailCheckFrequency.DEFAULT,
+        val messageDisplayCount: EmailDisplayCount = EmailDisplayCount.DEFAULT,
+        val showNotification: Boolean = false,
+    )
+
+    sealed interface Event {
+        data class OnCheckFrequencyChanged(val checkFrequency: EmailCheckFrequency) : Event
+        data class OnMessageDisplayCountChanged(val messageDisplayCount: EmailDisplayCount) : Event
+        data class OnShowNotificationChanged(val showNotification: Boolean) : Event
+
+        data object LoadAccountState : Event
+
+        data object OnNextClicked : Event
+        data object OnBackClicked : Event
+    }
+
+    sealed interface Effect {
+        object NavigateNext : Effect
+        object NavigateBack : Effect
+    }
+}
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsScreen.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsScreen.kt
similarity index 71%
rename from feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsScreen.kt
rename to feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsScreen.kt
index f54c5982827..f8162366f86 100644
--- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsScreen.kt
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsScreen.kt
@@ -1,11 +1,11 @@
-package app.k9mail.feature.account.setup.ui.options
+package app.k9mail.feature.account.setup.ui.options.sync
 
 import androidx.activity.compose.BackHandler
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.res.stringResource
-import app.k9mail.core.ui.compose.common.PreviewDevices
+import androidx.compose.ui.tooling.preview.Preview
 import app.k9mail.core.ui.compose.common.mvi.observe
 import app.k9mail.core.ui.compose.designsystem.template.Scaffold
 import app.k9mail.core.ui.compose.theme.K9Theme
@@ -14,12 +14,12 @@ import app.k9mail.feature.account.common.ui.AccountTopAppBar
 import app.k9mail.feature.account.common.ui.WizardNavigationBar
 import app.k9mail.feature.account.common.ui.preview.PreviewAccountStateRepository
 import app.k9mail.feature.account.setup.R.string
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Effect
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Event
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.ViewModel
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.Effect
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.Event
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.ViewModel
 
 @Composable
-internal fun AccountOptionsScreen(
+internal fun SyncOptionsScreen(
     onNext: () -> Unit,
     onBack: () -> Unit,
     viewModel: ViewModel,
@@ -43,7 +43,7 @@ internal fun AccountOptionsScreen(
     Scaffold(
         topBar = {
             AccountTopAppBar(
-                title = stringResource(id = string.account_setup_options_top_bar_title),
+                title = stringResource(id = string.account_setup_options_section_sync_options),
             )
         },
         bottomBar = {
@@ -54,7 +54,7 @@ internal fun AccountOptionsScreen(
         },
         modifier = modifier,
     ) { innerPadding ->
-        AccountOptionsContent(
+        SyncOptionsContent(
             state = state.value,
             onEvent = { dispatch(it) },
             contentPadding = innerPadding,
@@ -63,14 +63,13 @@ internal fun AccountOptionsScreen(
 }
 
 @Composable
-@PreviewDevices
-internal fun AccountOptionsScreenK9Preview() {
+@Preview(showBackground = true)
+internal fun SyncOptionsScreenK9Preview() {
     K9Theme {
-        AccountOptionsScreen(
+        SyncOptionsScreen(
             onNext = {},
             onBack = {},
-            viewModel = AccountOptionsViewModel(
-                validator = AccountOptionsValidator(),
+            viewModel = SyncOptionsViewModel(
                 accountStateRepository = PreviewAccountStateRepository(),
             ),
         )
@@ -78,14 +77,13 @@ internal fun AccountOptionsScreenK9Preview() {
 }
 
 @Composable
-@PreviewDevices
-internal fun AccountOptionsScreenThunderbirdPreview() {
+@Preview(showBackground = true)
+internal fun SyncOptionsScreenThunderbirdPreview() {
     ThunderbirdTheme {
-        AccountOptionsScreen(
+        SyncOptionsScreen(
             onNext = {},
             onBack = {},
-            viewModel = AccountOptionsViewModel(
-                validator = AccountOptionsValidator(),
+            viewModel = SyncOptionsViewModel(
                 accountStateRepository = PreviewAccountStateRepository(),
             ),
         )
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsStateMapper.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsStateMapper.kt
new file mode 100644
index 00000000000..c76ec4523a2
--- /dev/null
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsStateMapper.kt
@@ -0,0 +1,28 @@
+package app.k9mail.feature.account.setup.ui.options.sync
+
+import app.k9mail.feature.account.common.domain.entity.AccountState
+import app.k9mail.feature.account.common.domain.entity.AccountSyncOptions
+import app.k9mail.feature.account.setup.domain.entity.EmailCheckFrequency
+import app.k9mail.feature.account.setup.domain.entity.EmailDisplayCount
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.State
+
+internal fun AccountState.toSyncOptionsState(): State {
+    val options = syncOptions
+    return if (options == null) {
+        State()
+    } else {
+        State(
+            checkFrequency = EmailCheckFrequency.fromMinutes(options.checkFrequencyInMinutes),
+            messageDisplayCount = EmailDisplayCount.fromCount(options.messageDisplayCount),
+            showNotification = options.showNotification,
+        )
+    }
+}
+
+internal fun State.toAccountSyncOptions(): AccountSyncOptions {
+    return AccountSyncOptions(
+        checkFrequencyInMinutes = checkFrequency.minutes,
+        messageDisplayCount = messageDisplayCount.count,
+        showNotification = showNotification,
+    )
+}
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsStringMapper.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsStringMapper.kt
new file mode 100644
index 00000000000..e7d420671d0
--- /dev/null
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsStringMapper.kt
@@ -0,0 +1,31 @@
+package app.k9mail.feature.account.setup.ui.options.sync
+
+import android.content.res.Resources
+import app.k9mail.feature.account.setup.R
+import app.k9mail.feature.account.setup.domain.entity.EmailCheckFrequency
+import app.k9mail.feature.account.setup.domain.entity.EmailDisplayCount
+
+internal fun EmailDisplayCount.toResourceString(resources: Resources) = resources.getQuantityString(
+    R.plurals.account_setup_options_email_display_count_messages,
+    count,
+    count,
+)
+
+@Suppress("MagicNumber")
+internal fun EmailCheckFrequency.toResourceString(resources: Resources): String {
+    return when (minutes) {
+        -1 -> resources.getString(R.string.account_setup_options_email_check_frequency_never)
+
+        in 1..59 -> resources.getQuantityString(
+            R.plurals.account_setup_options_email_check_frequency_minutes,
+            minutes,
+            minutes,
+        )
+
+        else -> resources.getQuantityString(
+            R.plurals.account_setup_options_email_check_frequency_hours,
+            (minutes / 60),
+            (minutes / 60),
+        )
+    }
+}
diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsViewModel.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsViewModel.kt
new file mode 100644
index 00000000000..109e403fd6c
--- /dev/null
+++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsViewModel.kt
@@ -0,0 +1,59 @@
+package app.k9mail.feature.account.setup.ui.options.sync
+
+import app.k9mail.core.ui.compose.common.mvi.BaseViewModel
+import app.k9mail.feature.account.common.domain.AccountDomainContract
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.Effect
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.Event
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.State
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.ViewModel
+
+internal class SyncOptionsViewModel(
+    private val accountStateRepository: AccountDomainContract.AccountStateRepository,
+    initialState: State? = null,
+) : BaseViewModel<State, Event, Effect>(
+    initialState = initialState ?: accountStateRepository.getState().toSyncOptionsState(),
+),
+    ViewModel {
+
+    override fun event(event: Event) {
+        when (event) {
+            Event.LoadAccountState -> handleOneTimeEvent(event, ::loadAccountState)
+
+            is Event.OnCheckFrequencyChanged -> updateState {
+                it.copy(
+                    checkFrequency = event.checkFrequency,
+                )
+            }
+
+            is Event.OnMessageDisplayCountChanged -> updateState { state ->
+                state.copy(
+                    messageDisplayCount = event.messageDisplayCount,
+                )
+            }
+
+            is Event.OnShowNotificationChanged -> updateState { state ->
+                state.copy(
+                    showNotification = event.showNotification,
+                )
+            }
+
+            Event.OnNextClicked -> submit()
+            Event.OnBackClicked -> navigateBack()
+        }
+    }
+
+    private fun loadAccountState() {
+        updateState {
+            accountStateRepository.getState().toSyncOptionsState()
+        }
+    }
+
+    private fun submit() {
+        accountStateRepository.setSyncOptions(state.value.toAccountSyncOptions())
+        navigateNext()
+    }
+
+    private fun navigateBack() = emitEffect(Effect.NavigateBack)
+
+    private fun navigateNext() = emitEffect(Effect.NavigateNext)
+}
diff --git a/feature/account/setup/src/main/res/values-bg/strings.xml b/feature/account/setup/src/main/res/values-bg/strings.xml
index f586296751a..885c21e874e 100644
--- a/feature/account/setup/src/main/res/values-bg/strings.xml
+++ b/feature/account/setup/src/main/res/values-bg/strings.xml
@@ -34,7 +34,7 @@
     <string name="account_setup_options_display_name_error_required">Името за визуализация е задължително.</string>
     <string name="account_setup_create_account_error">Възникна грешка при създаването на акаунта</string>
     <string name="account_setup_options_email_check_frequency_never">Никога</string>
-    <string name="account_setup_options_section_sync_options_">Настройки за синхронизация</string>
+    <string name="account_setup_options_section_sync_options">Настройки за синхронизация</string>
     <string name="account_setup_options_show_notifications_label">Показване на известия</string>
     <string name="account_setup_options_section_display_options">Настройки за визуализация</string>
 </resources>
\ No newline at end of file
diff --git a/feature/account/setup/src/main/res/values-ca/strings.xml b/feature/account/setup/src/main/res/values-ca/strings.xml
index 0d92791018a..e4abea048be 100644
--- a/feature/account/setup/src/main/res/values-ca/strings.xml
+++ b/feature/account/setup/src/main/res/values-ca/strings.xml
@@ -29,7 +29,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">L\'adreça de correu electrònic no es reconeix com a vàlida.</string>
     <string name="account_setup_options_email_check_frequency_never">Mai</string>
     <string name="account_setup_auto_discovery_loading_message">Cercant els detalls del correu electrònic</string>
-    <string name="account_setup_options_section_sync_options_">Opcions de sincronització</string>
+    <string name="account_setup_options_section_sync_options">Opcions de sincronització</string>
     <string name="account_setup_options_show_notifications_label">Mostra les notificacions</string>
     <string name="account_setup_options_section_display_options">Opcions de visualització</string>
     <string name="account_setup_auto_discovery_validation_error_email_address_not_allowed">Aquesta direcció de correu electrònic no està permesa.</string>
diff --git a/feature/account/setup/src/main/res/values-cs/strings.xml b/feature/account/setup/src/main/res/values-cs/strings.xml
index 80f2c2afeb7..0217b36992c 100644
--- a/feature/account/setup/src/main/res/values-cs/strings.xml
+++ b/feature/account/setup/src/main/res/values-cs/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Toto není rozeznáno jako platná e-mailová adresa.</string>
     <string name="account_setup_options_email_check_frequency_never">Nikdy</string>
     <string name="account_setup_auto_discovery_loading_message">Zjišťování podrobností o e-mailu</string>
-    <string name="account_setup_options_section_sync_options_">Nastavení synchronizace</string>
+    <string name="account_setup_options_section_sync_options">Nastavení synchronizace</string>
     <string name="account_setup_options_show_notifications_label">Zobrazovat oznámení</string>
     <string name="account_setup_options_section_display_options">Nastavení zobrazení</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-da/strings.xml b/feature/account/setup/src/main/res/values-da/strings.xml
index 98bbcde3f8d..ee06be54767 100644
--- a/feature/account/setup/src/main/res/values-da/strings.xml
+++ b/feature/account/setup/src/main/res/values-da/strings.xml
@@ -18,7 +18,7 @@
     <string name="account_setup_error_network">Netværk</string>
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Email adresse er ugyldig.</string>
     <string name="account_setup_options_email_check_frequency_never">Aldrig</string>
-    <string name="account_setup_options_section_sync_options_">Synkroniserings indstillinger</string>
+    <string name="account_setup_options_section_sync_options">Synkroniserings indstillinger</string>
     <string name="account_setup_options_show_notifications_label">Vis notifikationer</string>
     <string name="account_setup_options_section_display_options">Visningsindstillinger</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-de/strings.xml b/feature/account/setup/src/main/res/values-de/strings.xml
index b4532ced2a4..44fffa838ee 100644
--- a/feature/account/setup/src/main/res/values-de/strings.xml
+++ b/feature/account/setup/src/main/res/values-de/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Diese Adresse wird nicht als gültige E-Mail-Adresse erkannt.</string>
     <string name="account_setup_options_email_check_frequency_never">Niemals</string>
     <string name="account_setup_auto_discovery_loading_message">E-Mail-Details finden</string>
-    <string name="account_setup_options_section_sync_options_">Synchronisierungsoptionen</string>
+    <string name="account_setup_options_section_sync_options">Synchronisierungsoptionen</string>
     <string name="account_setup_options_show_notifications_label">Benachrichtigungen anzeigen</string>
     <string name="account_setup_options_section_display_options">Anzeigeoptionen</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-el/strings.xml b/feature/account/setup/src/main/res/values-el/strings.xml
index de29bb330a0..94dc7346599 100644
--- a/feature/account/setup/src/main/res/values-el/strings.xml
+++ b/feature/account/setup/src/main/res/values-el/strings.xml
@@ -32,7 +32,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Η διεύθυνση email δεν αναγνωρίζεται ως έγκυρη.</string>
     <string name="account_setup_options_email_check_frequency_never">Ποτέ</string>
     <string name="account_setup_auto_discovery_loading_message">Εύερεση λεπτομεριών email</string>
-    <string name="account_setup_options_section_sync_options_">Επιλογές συγχρονισμού</string>
+    <string name="account_setup_options_section_sync_options">Επιλογές συγχρονισμού</string>
     <string name="account_setup_options_show_notifications_label">Εμφάνιση ειδοποιήσεων</string>
     <string name="account_setup_options_section_display_options">Επιλογές εμφάνισης</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-en-rGB/strings.xml b/feature/account/setup/src/main/res/values-en-rGB/strings.xml
index 1acf0e5599f..0783b126782 100644
--- a/feature/account/setup/src/main/res/values-en-rGB/strings.xml
+++ b/feature/account/setup/src/main/res/values-en-rGB/strings.xml
@@ -33,7 +33,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">This is not recognised as a valid email address.</string>
     <string name="account_setup_options_email_check_frequency_never">Never</string>
     <string name="account_setup_auto_discovery_loading_message">Finding email details</string>
-    <string name="account_setup_options_section_sync_options_">Sync options</string>
+    <string name="account_setup_options_section_sync_options">Sync options</string>
     <string name="account_setup_options_show_notifications_label">Show notifications</string>
     <string name="account_setup_options_section_display_options">Display options</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-es/strings.xml b/feature/account/setup/src/main/res/values-es/strings.xml
index 99fd34489cd..6d1617d2588 100644
--- a/feature/account/setup/src/main/res/values-es/strings.xml
+++ b/feature/account/setup/src/main/res/values-es/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">No se reconoce como una dirección de correo electrónico válida.</string>
     <string name="account_setup_options_email_check_frequency_never">Nunca</string>
     <string name="account_setup_auto_discovery_loading_message">Buscando los ajustes oficiales del servicio de forma automática</string>
-    <string name="account_setup_options_section_sync_options_">Ajustes de sincronización</string>
+    <string name="account_setup_options_section_sync_options">Ajustes de sincronización</string>
     <string name="account_setup_options_show_notifications_label">Mostrar notificaciones</string>
     <string name="account_setup_options_section_display_options">Ajustes de pantalla</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-et/strings.xml b/feature/account/setup/src/main/res/values-et/strings.xml
index da296657ac9..af7681f1e0a 100644
--- a/feature/account/setup/src/main/res/values-et/strings.xml
+++ b/feature/account/setup/src/main/res/values-et/strings.xml
@@ -29,7 +29,7 @@
     <string name="account_setup_options_display_name_label">Kuvatav nimi</string>
     <string name="account_setup_options_display_name_error_required">Kuvatav nimi peab olema sisestatud.</string>
     <string name="account_setup_options_email_check_frequency_never">Mitte kunagi</string>
-    <string name="account_setup_options_section_sync_options_">Sünkroniseerimisvalikud</string>
+    <string name="account_setup_options_section_sync_options">Sünkroniseerimisvalikud</string>
     <string name="account_setup_options_show_notifications_label">Näita teavitusi</string>
     <string name="account_setup_options_section_display_options">Kuvatavad valikud</string>
     <string name="account_setup_auto_discovery_validation_error_email_address_not_allowed">Sellise e-posti aadressi kasutamine pole lubatud.</string>
diff --git a/feature/account/setup/src/main/res/values-eu/strings.xml b/feature/account/setup/src/main/res/values-eu/strings.xml
index 46fdd48acd3..07bf4335745 100644
--- a/feature/account/setup/src/main/res/values-eu/strings.xml
+++ b/feature/account/setup/src/main/res/values-eu/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Helbide hau ez da helbide elektroniko zuzentzat jotzen.</string>
     <string name="account_setup_options_email_check_frequency_never">Inoiz ere ez</string>
     <string name="account_setup_auto_discovery_loading_message">E-mail xehetasunak bilatzen</string>
-    <string name="account_setup_options_section_sync_options_">Sinkronizazio ezarpenak</string>
+    <string name="account_setup_options_section_sync_options">Sinkronizazio ezarpenak</string>
     <string name="account_setup_options_show_notifications_label">Erakutsi jakinarazpenak</string>
     <string name="account_setup_options_section_display_options">Pantaila ezarpenak</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-fa/strings.xml b/feature/account/setup/src/main/res/values-fa/strings.xml
index 6bbdc40a231..03454590938 100644
--- a/feature/account/setup/src/main/res/values-fa/strings.xml
+++ b/feature/account/setup/src/main/res/values-fa/strings.xml
@@ -46,7 +46,7 @@
     <string name="account_setup_special_folders_spam_folder_label">پوشه هرزنامه</string>
     <string name="account_setup_options_email_check_frequency_never">هرگز</string>
     <string name="account_setup_auto_discovery_loading_message">پیدا کردن جزییات رایانامه</string>
-    <string name="account_setup_options_section_sync_options_">گزینه‌های همگام‌سازی</string>
+    <string name="account_setup_options_section_sync_options">گزینه‌های همگام‌سازی</string>
     <string name="account_setup_options_show_notifications_label">نمایش اعلان‌ها</string>
     <string name="account_setup_options_section_display_options">گزینه‌های نمایش</string>
     <string name="account_setup_special_folders_form_description_automatic">تنظیم \"خودکار\" تغییراتی که توسط سرور به طور خودکار انجام می شود را اعمال می‌کند. مقدار فعلی در داخل پرانتز نمایش داده می‌شود.</string>
diff --git a/feature/account/setup/src/main/res/values-fi/strings.xml b/feature/account/setup/src/main/res/values-fi/strings.xml
index 9daa6876362..60447e67270 100644
--- a/feature/account/setup/src/main/res/values-fi/strings.xml
+++ b/feature/account/setup/src/main/res/values-fi/strings.xml
@@ -27,7 +27,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Tätä ei tunnistettu kelvolliseksi sähköpostiosoitteeksi.</string>
     <string name="account_setup_options_email_check_frequency_never">Ei koskaan</string>
     <string name="account_setup_auto_discovery_loading_message">Etsitään sähköpostin tietoja</string>
-    <string name="account_setup_options_section_sync_options_">Synkronointiasetukset</string>
+    <string name="account_setup_options_section_sync_options">Synkronointiasetukset</string>
     <string name="account_setup_options_show_notifications_label">Näytä ilmoitukset</string>
     <string name="account_setup_options_section_display_options">Näkymäasetukset</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-fr/strings.xml b/feature/account/setup/src/main/res/values-fr/strings.xml
index 7483cb4c700..43197466dd7 100644
--- a/feature/account/setup/src/main/res/values-fr/strings.xml
+++ b/feature/account/setup/src/main/res/values-fr/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Cette adresse courriel n’est pas reconnue comme valide.</string>
     <string name="account_setup_options_email_check_frequency_never">Jamais</string>
     <string name="account_setup_auto_discovery_loading_message">Recherche des détails du compte de courriel</string>
-    <string name="account_setup_options_section_sync_options_">Options de synchronisation</string>
+    <string name="account_setup_options_section_sync_options">Options de synchronisation</string>
     <string name="account_setup_options_show_notifications_label">Afficher les notifications</string>
     <string name="account_setup_options_section_display_options">Options d’affichage</string>
     <string name="account_setup_title">Courriel K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-fy/strings.xml b/feature/account/setup/src/main/res/values-fy/strings.xml
index 8c31bbc4158..a5f9726823b 100644
--- a/feature/account/setup/src/main/res/values-fy/strings.xml
+++ b/feature/account/setup/src/main/res/values-fy/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Dit is net as in jildich e-mailadres werkend.</string>
     <string name="account_setup_options_email_check_frequency_never">Nea</string>
     <string name="account_setup_auto_discovery_loading_message">E-maildetails sykje</string>
-    <string name="account_setup_options_section_sync_options_">Syngronisaasjeopsjes</string>
+    <string name="account_setup_options_section_sync_options">Syngronisaasjeopsjes</string>
     <string name="account_setup_options_show_notifications_label">Meldingen toane</string>
     <string name="account_setup_options_section_display_options">Werjefteopsjes</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-hi/strings.xml b/feature/account/setup/src/main/res/values-hi/strings.xml
index 9d6752c45e5..627cac3b1b2 100644
--- a/feature/account/setup/src/main/res/values-hi/strings.xml
+++ b/feature/account/setup/src/main/res/values-hi/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">ईमेल पता गलत है।</string>
     <string name="account_setup_options_email_check_frequency_never">कभी नहीं</string>
     <string name="account_setup_auto_discovery_loading_message">ईमेल की जानकारी खोज रहे</string>
-    <string name="account_setup_options_section_sync_options_">सिंक ऑप्शन</string>
+    <string name="account_setup_options_section_sync_options">सिंक ऑप्शन</string>
     <string name="account_setup_options_show_notifications_label">नोटिफिकेशन दिखाएं</string>
     <string name="account_setup_options_section_display_options">डिस्प्ले ऑप्शन</string>
     <string name="account_setup_title">K-9 मेल</string>
diff --git a/feature/account/setup/src/main/res/values-hu/strings.xml b/feature/account/setup/src/main/res/values-hu/strings.xml
index 21646644be4..5a9bd393e20 100644
--- a/feature/account/setup/src/main/res/values-hu/strings.xml
+++ b/feature/account/setup/src/main/res/values-hu/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Az email cím nem tekinthető érvényes email címnek.</string>
     <string name="account_setup_options_email_check_frequency_never">Soha</string>
     <string name="account_setup_auto_discovery_loading_message">E-mail adatok keresése</string>
-    <string name="account_setup_options_section_sync_options_">Szinkronizálási opciók</string>
+    <string name="account_setup_options_section_sync_options">Szinkronizálási opciók</string>
     <string name="account_setup_options_show_notifications_label">Értesítések megjelenítése</string>
     <string name="account_setup_options_section_display_options">Megjelenítési opciók</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-is/strings.xml b/feature/account/setup/src/main/res/values-is/strings.xml
index 5f8742fe020..06db82712af 100644
--- a/feature/account/setup/src/main/res/values-is/strings.xml
+++ b/feature/account/setup/src/main/res/values-is/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Þetta telst ekki vera gilt tölvupóstfang.</string>
     <string name="account_setup_options_email_check_frequency_never">Aldrei</string>
     <string name="account_setup_auto_discovery_loading_message">Finna nánar um tölvupóst</string>
-    <string name="account_setup_options_section_sync_options_">Valkostir samstillinga</string>
+    <string name="account_setup_options_section_sync_options">Valkostir samstillinga</string>
     <string name="account_setup_options_show_notifications_label">Birta tilkynningar</string>
     <string name="account_setup_options_section_display_options">Valkostir birtingar</string>
     <string name="account_setup_auto_discovery_result_disclaimer_untrusted_configuration">Við höfum tekið við uppsetningunni fyrir póstþjóninn um tengingu sem ekki er eins örugg og við myndum vilja. Þetta þýðir að það eru einhverjar líkur á að einhver hafi komist í upplýsingarnar og breytt þeim. Geturðu yfirfarið þessar upplýsingar og gengið úr skugga um að allt sé eins og það á að vera\?</string>
diff --git a/feature/account/setup/src/main/res/values-it/strings.xml b/feature/account/setup/src/main/res/values-it/strings.xml
index f9dbd5b49cf..5076cc1e2fb 100644
--- a/feature/account/setup/src/main/res/values-it/strings.xml
+++ b/feature/account/setup/src/main/res/values-it/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Non è riconosciuto come indirizzo email valido</string>
     <string name="account_setup_options_email_check_frequency_never">Mai</string>
     <string name="account_setup_auto_discovery_loading_message">Ricerca configurazione email</string>
-    <string name="account_setup_options_section_sync_options_">Opzioni di sincronizzazione</string>
+    <string name="account_setup_options_section_sync_options">Opzioni di sincronizzazione</string>
     <string name="account_setup_options_show_notifications_label">Mostra notifiche</string>
     <string name="account_setup_options_section_display_options">Opzioni di visualizzazione</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-ja/strings.xml b/feature/account/setup/src/main/res/values-ja/strings.xml
index b9dbc32af29..5b4fa2feb55 100644
--- a/feature/account/setup/src/main/res/values-ja/strings.xml
+++ b/feature/account/setup/src/main/res/values-ja/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">有効なメールアドレスとして認識されませんでした。</string>
     <string name="account_setup_options_email_check_frequency_never">確認しない</string>
     <string name="account_setup_auto_discovery_loading_message">メールの詳細を確認中</string>
-    <string name="account_setup_options_section_sync_options_">同期設定</string>
+    <string name="account_setup_options_section_sync_options">同期設定</string>
     <string name="account_setup_options_show_notifications_label">通知を表示する</string>
     <string name="account_setup_options_section_display_options">表示設定</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-nb-rNO/strings.xml b/feature/account/setup/src/main/res/values-nb-rNO/strings.xml
index 1af6b044b87..37d000d26c6 100644
--- a/feature/account/setup/src/main/res/values-nb-rNO/strings.xml
+++ b/feature/account/setup/src/main/res/values-nb-rNO/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">E-postadressen er ugyldig.</string>
     <string name="account_setup_options_email_check_frequency_never">Aldri</string>
     <string name="account_setup_auto_discovery_loading_message">Finner e-postdetaljer …</string>
-    <string name="account_setup_options_section_sync_options_">Synkroniseringsalternativer</string>
+    <string name="account_setup_options_section_sync_options">Synkroniseringsalternativer</string>
     <string name="account_setup_options_show_notifications_label">Vis merknader</string>
     <string name="account_setup_options_section_display_options">Visningsalternativer</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-nl/strings.xml b/feature/account/setup/src/main/res/values-nl/strings.xml
index 6b6cb3f1065..5f21e532b83 100644
--- a/feature/account/setup/src/main/res/values-nl/strings.xml
+++ b/feature/account/setup/src/main/res/values-nl/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Dit is niet als een geldig e-mailadres herkend.</string>
     <string name="account_setup_options_email_check_frequency_never">Nooit</string>
     <string name="account_setup_auto_discovery_loading_message">E-maildetails zoeken</string>
-    <string name="account_setup_options_section_sync_options_">Synchronisatieopties</string>
+    <string name="account_setup_options_section_sync_options">Synchronisatieopties</string>
     <string name="account_setup_options_show_notifications_label">Meldingen tonen</string>
     <string name="account_setup_options_section_display_options">Weergaveopties</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-pl/strings.xml b/feature/account/setup/src/main/res/values-pl/strings.xml
index f7f9794da05..550b294cd26 100644
--- a/feature/account/setup/src/main/res/values-pl/strings.xml
+++ b/feature/account/setup/src/main/res/values-pl/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Nie jest rozpoznawany jako prawidłowy adres e-mail.</string>
     <string name="account_setup_options_email_check_frequency_never">Nigdy</string>
     <string name="account_setup_auto_discovery_loading_message">Znajdowanie szczegółów poczty e-mail</string>
-    <string name="account_setup_options_section_sync_options_">Opcje synchronizacji</string>
+    <string name="account_setup_options_section_sync_options">Opcje synchronizacji</string>
     <string name="account_setup_options_show_notifications_label">Pokaż powiadomienia</string>
     <string name="account_setup_options_section_display_options">Opcje wyświetlania</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-pt-rBR/strings.xml b/feature/account/setup/src/main/res/values-pt-rBR/strings.xml
index 9a1b051e873..b3ebee23eef 100644
--- a/feature/account/setup/src/main/res/values-pt-rBR/strings.xml
+++ b/feature/account/setup/src/main/res/values-pt-rBR/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Este endereço eletrônico é inválido.</string>
     <string name="account_setup_options_email_check_frequency_never">Nunca</string>
     <string name="account_setup_auto_discovery_loading_message">Encontrando configuração do email</string>
-    <string name="account_setup_options_section_sync_options_">Opções de sincronização</string>
+    <string name="account_setup_options_section_sync_options">Opções de sincronização</string>
     <string name="account_setup_options_show_notifications_label">Mostrar notificações</string>
     <string name="account_setup_options_section_display_options">Opções de visualização</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-pt-rPT/strings.xml b/feature/account/setup/src/main/res/values-pt-rPT/strings.xml
index 3c8301fd28b..0cb6613aabe 100644
--- a/feature/account/setup/src/main/res/values-pt-rPT/strings.xml
+++ b/feature/account/setup/src/main/res/values-pt-rPT/strings.xml
@@ -33,7 +33,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Não reconhecido como um endereço de email válido.</string>
     <string name="account_setup_options_email_check_frequency_never">Nunca</string>
     <string name="account_setup_auto_discovery_loading_message">A procurar detalhes do email</string>
-    <string name="account_setup_options_section_sync_options_">Opções de sincronização</string>
+    <string name="account_setup_options_section_sync_options">Opções de sincronização</string>
     <string name="account_setup_options_show_notifications_label">Mostrar notificações</string>
     <string name="account_setup_options_section_display_options">Opções de visualização</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-ro/strings.xml b/feature/account/setup/src/main/res/values-ro/strings.xml
index 22570914907..f5fd243291c 100644
--- a/feature/account/setup/src/main/res/values-ro/strings.xml
+++ b/feature/account/setup/src/main/res/values-ro/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Aceasta nu este recunoscută ca o adresă de e-mail validă.</string>
     <string name="account_setup_options_email_check_frequency_never">Niciodată</string>
     <string name="account_setup_auto_discovery_loading_message">Găsirea detaliilor de e-mail</string>
-    <string name="account_setup_options_section_sync_options_">Opțiuni de sincronizare</string>
+    <string name="account_setup_options_section_sync_options">Opțiuni de sincronizare</string>
     <string name="account_setup_options_show_notifications_label">Afișare notificări</string>
     <string name="account_setup_options_section_display_options">Opțiuni de afișare</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-sq/strings.xml b/feature/account/setup/src/main/res/values-sq/strings.xml
index aed661965bf..2bd9cd9bea8 100644
--- a/feature/account/setup/src/main/res/values-sq/strings.xml
+++ b/feature/account/setup/src/main/res/values-sq/strings.xml
@@ -29,7 +29,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Kjo nuk njihet si adresë email e vlefshme.</string>
     <string name="account_setup_options_email_check_frequency_never">Kurrë</string>
     <string name="account_setup_auto_discovery_loading_message">Po gjenden hollësi email-i</string>
-    <string name="account_setup_options_section_sync_options_">Mundësi njëkohësimi</string>
+    <string name="account_setup_options_section_sync_options">Mundësi njëkohësimi</string>
     <string name="account_setup_options_show_notifications_label">Shfaq njoftime</string>
     <string name="account_setup_options_section_display_options">Mundësi shfaqjeje</string>
     <string name="account_setup_auto_discovery_validation_error_email_address_not_allowed">Kjo adresë email nuk lejohet.</string>
diff --git a/feature/account/setup/src/main/res/values-sv/strings.xml b/feature/account/setup/src/main/res/values-sv/strings.xml
index 424f7c082e4..2859f2a16b4 100644
--- a/feature/account/setup/src/main/res/values-sv/strings.xml
+++ b/feature/account/setup/src/main/res/values-sv/strings.xml
@@ -25,7 +25,7 @@
     <string name="account_setup_error_network">Nätverk</string>
     <string name="account_setup_options_email_check_frequency_never">Aldrig</string>
     <string name="account_setup_auto_discovery_loading_message">Hitta e-postdetaljer</string>
-    <string name="account_setup_options_section_sync_options_">Synkroniseringsinställningar</string>
+    <string name="account_setup_options_section_sync_options">Synkroniseringsinställningar</string>
     <string name="account_setup_options_show_notifications_label">Visa notiser</string>
     <string name="account_setup_options_section_display_options">Visningsinställningar</string>
     <string name="account_setup_auto_discovery_connection_security_start_tls">StartTLS</string>
diff --git a/feature/account/setup/src/main/res/values-tr/strings.xml b/feature/account/setup/src/main/res/values-tr/strings.xml
index ff12d47ea9d..2bea22e9d54 100644
--- a/feature/account/setup/src/main/res/values-tr/strings.xml
+++ b/feature/account/setup/src/main/res/values-tr/strings.xml
@@ -25,7 +25,7 @@
     <string name="account_setup_error_network">Ağ</string>
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Bu geçerli bir e-posta adresi olarak tanınmıyor.</string>
     <string name="account_setup_auto_discovery_loading_message">E-posta bilgileri bulunuyor</string>
-    <string name="account_setup_options_section_sync_options_">Eşzamanlama seçenekleri</string>
+    <string name="account_setup_options_section_sync_options">Eşzamanlama seçenekleri</string>
     <string name="account_setup_options_section_display_options">Görüntüleme seçenekleri</string>
     <string name="account_setup_title">K-9 Posta</string>
     <string name="account_setup_options_account_check_frequency_label">Denetleme sıklığı</string>
diff --git a/feature/account/setup/src/main/res/values-vi/strings.xml b/feature/account/setup/src/main/res/values-vi/strings.xml
index 40b542d083b..9f6797ebc7d 100644
--- a/feature/account/setup/src/main/res/values-vi/strings.xml
+++ b/feature/account/setup/src/main/res/values-vi/strings.xml
@@ -30,7 +30,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">Đây không được công nhận là địa chỉ email hợp lệ.</string>
     <string name="account_setup_options_email_check_frequency_never">Không bao giờ</string>
     <string name="account_setup_auto_discovery_loading_message">Tìm chi tiết e-mail</string>
-    <string name="account_setup_options_section_sync_options_">Tùy chọn đồng bộ hóa</string>
+    <string name="account_setup_options_section_sync_options">Tùy chọn đồng bộ hóa</string>
     <string name="account_setup_options_show_notifications_label">Hiển thị thông báo</string>
     <string name="account_setup_options_section_display_options">Tùy chọn hiển thị</string>
     <string name="account_setup_title">Thư K-9</string>
diff --git a/feature/account/setup/src/main/res/values-zh-rCN/strings.xml b/feature/account/setup/src/main/res/values-zh-rCN/strings.xml
index 1c5d47157a3..48009f85688 100644
--- a/feature/account/setup/src/main/res/values-zh-rCN/strings.xml
+++ b/feature/account/setup/src/main/res/values-zh-rCN/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">输入值未被识别为有效的邮箱地址。</string>
     <string name="account_setup_options_email_check_frequency_never">从不</string>
     <string name="account_setup_auto_discovery_loading_message">寻找电子邮件详情中</string>
-    <string name="account_setup_options_section_sync_options_">同步选项</string>
+    <string name="account_setup_options_section_sync_options">同步选项</string>
     <string name="account_setup_options_show_notifications_label">显示通知</string>
     <string name="account_setup_options_section_display_options">显示选项</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values-zh-rTW/strings.xml b/feature/account/setup/src/main/res/values-zh-rTW/strings.xml
index 9fc24868e9a..2b88250fd5e 100644
--- a/feature/account/setup/src/main/res/values-zh-rTW/strings.xml
+++ b/feature/account/setup/src/main/res/values-zh-rTW/strings.xml
@@ -28,7 +28,7 @@
     <string name="account_setup_auto_discovery_validation_error_email_address_invalid">輸入值未被識別為有效的電子郵件地址。</string>
     <string name="account_setup_options_email_check_frequency_never">從不</string>
     <string name="account_setup_auto_discovery_loading_message">正在尋找電子郵件詳細資料</string>
-    <string name="account_setup_options_section_sync_options_">同步選項</string>
+    <string name="account_setup_options_section_sync_options">同步選項</string>
     <string name="account_setup_options_show_notifications_label">顯示通知</string>
     <string name="account_setup_options_section_display_options">顯示選項</string>
     <string name="account_setup_title">K-9 Mail</string>
diff --git a/feature/account/setup/src/main/res/values/strings.xml b/feature/account/setup/src/main/res/values/strings.xml
index 41e591f0941..34e3f657026 100644
--- a/feature/account/setup/src/main/res/values/strings.xml
+++ b/feature/account/setup/src/main/res/values/strings.xml
@@ -44,11 +44,11 @@
     <string name="account_setup_options_section_display_options">Display options</string>
     <string name="account_setup_options_account_name_label">Account name</string>
     <string name="account_setup_options_account_name_error_blank">Account name can\'t be blank.</string>
-    <string name="account_setup_options_display_name_label">Display name</string>
-    <string name="account_setup_options_display_name_error_required">Display name is required.</string>
+    <string name="account_setup_options_display_name_label">Your name</string>
+    <string name="account_setup_options_display_name_error_required">Your name is required.</string>
     <string name="account_setup_options_email_signature_label">Email signature</string>
     <string name="account_setup_options_email_signature_error_blank">Email signature name can\'t be blank.</string>
-    <string name="account_setup_options_section_sync_options_">Sync options</string>
+    <string name="account_setup_options_section_sync_options">Sync options</string>
     <string name="account_setup_options_account_check_frequency_label">Check frequency</string>
     <string name="account_setup_options_email_check_frequency_never">Never</string>
     <string name="account_setup_options_email_display_count_label">Number of messages to display</string>


Test patch:
diff --git a/app/k9mail/src/test/java/com/fsck/k9/account/AccountServerSettingsUpdaterTest.kt b/app/k9mail/src/test/java/com/fsck/k9/account/AccountServerSettingsUpdaterTest.kt
index 861a64b214e..6255ea3ab2e 100644
--- a/app/k9mail/src/test/java/com/fsck/k9/account/AccountServerSettingsUpdaterTest.kt
+++ b/app/k9mail/src/test/java/com/fsck/k9/account/AccountServerSettingsUpdaterTest.kt
@@ -53,7 +53,7 @@ class AccountServerSettingsUpdaterTest {
         assertThat(k9Account).isNotNull().all {
             prop(K9Account::incomingServerSettings).isEqualTo(updatedIncomingServerSettings)
             prop(K9Account::outgoingServerSettings).isEqualTo(OUTGOING_SERVER_SETTINGS)
-            prop(K9Account::oAuthState).isEqualTo(updatedAuthorizationState.state)
+            prop(K9Account::oAuthState).isEqualTo(updatedAuthorizationState.value)
         }
     }
 
@@ -77,7 +77,7 @@ class AccountServerSettingsUpdaterTest {
         assertThat(k9Account).isNotNull().all {
             prop(K9Account::incomingServerSettings).isEqualTo(INCOMING_SERVER_SETTINGS)
             prop(K9Account::outgoingServerSettings).isEqualTo(updatedOutgoingServerSettings)
-            prop(K9Account::oAuthState).isEqualTo(updatedAuthorizationState.state)
+            prop(K9Account::oAuthState).isEqualTo(updatedAuthorizationState.value)
         }
     }
 
@@ -136,7 +136,7 @@ class AccountServerSettingsUpdaterTest {
             ).apply {
                 incomingServerSettings = INCOMING_SERVER_SETTINGS
                 outgoingServerSettings = OUTGOING_SERVER_SETTINGS
-                oAuthState = AUTHORIZATION_STATE.state
+                oAuthState = AUTHORIZATION_STATE.value
             }
         }
     }
diff --git a/feature/account/common/src/test/kotlin/app/k9mail/feature/account/common/data/InMemoryAccountStateRepositoryTest.kt b/feature/account/common/src/test/kotlin/app/k9mail/feature/account/common/data/InMemoryAccountStateRepositoryTest.kt
index 5d52ec49352..b8c6a2d1ccf 100644
--- a/feature/account/common/src/test/kotlin/app/k9mail/feature/account/common/data/InMemoryAccountStateRepositoryTest.kt
+++ b/feature/account/common/src/test/kotlin/app/k9mail/feature/account/common/data/InMemoryAccountStateRepositoryTest.kt
@@ -1,7 +1,8 @@
 package app.k9mail.feature.account.common.data
 
-import app.k9mail.feature.account.common.domain.entity.AccountOptions
+import app.k9mail.feature.account.common.domain.entity.AccountDisplayOptions
 import app.k9mail.feature.account.common.domain.entity.AccountState
+import app.k9mail.feature.account.common.domain.entity.AccountSyncOptions
 import app.k9mail.feature.account.common.domain.entity.AuthorizationState
 import assertk.assertThat
 import assertk.assertions.isEqualTo
@@ -25,7 +26,8 @@ class InMemoryAccountStateRepositoryTest {
                 incomingServerSettings = null,
                 outgoingServerSettings = null,
                 authorizationState = null,
-                options = null,
+                displayOptions = null,
+                syncOptions = null,
             ),
         )
     }
@@ -39,7 +41,8 @@ class InMemoryAccountStateRepositoryTest {
                 incomingServerSettings = INCOMING_SERVER_SETTINGS,
                 outgoingServerSettings = OUTGOING_SERVER_SETTINGS,
                 authorizationState = AuthorizationState("authorizationState"),
-                options = OPTIONS,
+                displayOptions = DISPLAY_OPTIONS,
+                syncOptions = SYNC_OPTIONS,
             ),
         )
         val newState = AccountState(
@@ -48,10 +51,12 @@ class InMemoryAccountStateRepositoryTest {
             incomingServerSettings = INCOMING_SERVER_SETTINGS.copy(host = "imap2.example.org"),
             outgoingServerSettings = OUTGOING_SERVER_SETTINGS.copy(host = "smtp2.example.org"),
             authorizationState = AuthorizationState("authorizationState2"),
-            options = OPTIONS.copy(
+            displayOptions = DISPLAY_OPTIONS.copy(
                 accountName = "accountName2",
                 displayName = "displayName2",
                 emailSignature = "emailSignature2",
+            ),
+            syncOptions = SYNC_OPTIONS.copy(
                 checkFrequencyInMinutes = 50,
                 messageDisplayCount = 60,
                 showNotification = false,
@@ -104,13 +109,21 @@ class InMemoryAccountStateRepositoryTest {
     }
 
     @Test
-    fun `should set options`() {
+    fun `should set display options`() {
         val testSubject = InMemoryAccountStateRepository()
 
-        testSubject.setOptions(OPTIONS)
+        testSubject.setDisplayOptions(DISPLAY_OPTIONS)
 
-        assertThat(testSubject.getState().options)
-            .isEqualTo(OPTIONS)
+        assertThat(testSubject.getState().displayOptions).isEqualTo(DISPLAY_OPTIONS)
+    }
+
+    @Test
+    fun `should set sync options`() {
+        val testSubject = InMemoryAccountStateRepository()
+
+        testSubject.setSyncOptions(SYNC_OPTIONS)
+
+        assertThat(testSubject.getState().syncOptions).isEqualTo(SYNC_OPTIONS)
     }
 
     @Test
@@ -122,7 +135,8 @@ class InMemoryAccountStateRepositoryTest {
                 incomingServerSettings = INCOMING_SERVER_SETTINGS,
                 outgoingServerSettings = OUTGOING_SERVER_SETTINGS,
                 authorizationState = AuthorizationState("authorizationState"),
-                options = OPTIONS,
+                displayOptions = DISPLAY_OPTIONS,
+                syncOptions = SYNC_OPTIONS,
             ),
         )
 
@@ -135,7 +149,8 @@ class InMemoryAccountStateRepositoryTest {
                 incomingServerSettings = null,
                 outgoingServerSettings = null,
                 authorizationState = null,
-                options = null,
+                displayOptions = null,
+                syncOptions = null,
             ),
         )
     }
@@ -163,10 +178,13 @@ class InMemoryAccountStateRepositoryTest {
             null,
         )
 
-        val OPTIONS = AccountOptions(
+        val DISPLAY_OPTIONS = AccountDisplayOptions(
             accountName = "accountName",
             displayName = "displayName",
             emailSignature = "emailSignature",
+        )
+
+        val SYNC_OPTIONS = AccountSyncOptions(
             checkFrequencyInMinutes = 10,
             messageDisplayCount = 20,
             showNotification = true,
diff --git a/feature/account/common/src/test/kotlin/app/k9mail/feature/account/common/domain/entity/AccountStateTest.kt b/feature/account/common/src/test/kotlin/app/k9mail/feature/account/common/domain/entity/AccountStateTest.kt
index dd3c0c4e975..6c0405f1839 100644
--- a/feature/account/common/src/test/kotlin/app/k9mail/feature/account/common/domain/entity/AccountStateTest.kt
+++ b/feature/account/common/src/test/kotlin/app/k9mail/feature/account/common/domain/entity/AccountStateTest.kt
@@ -17,7 +17,9 @@ class AccountStateTest {
             prop(AccountState::incomingServerSettings).isNull()
             prop(AccountState::outgoingServerSettings).isNull()
             prop(AccountState::authorizationState).isNull()
-            prop(AccountState::options).isNull()
+            prop(AccountState::specialFolderSettings).isNull()
+            prop(AccountState::displayOptions).isNull()
+            prop(AccountState::syncOptions).isNull()
         }
     }
 }
diff --git a/feature/account/common/src/test/kotlin/app/k9mail/feature/account/common/domain/entity/AuthorizationStateTest.kt b/feature/account/common/src/test/kotlin/app/k9mail/feature/account/common/domain/entity/AuthorizationStateTest.kt
index 1311b660768..0ccdc696b29 100644
--- a/feature/account/common/src/test/kotlin/app/k9mail/feature/account/common/domain/entity/AuthorizationStateTest.kt
+++ b/feature/account/common/src/test/kotlin/app/k9mail/feature/account/common/domain/entity/AuthorizationStateTest.kt
@@ -10,6 +10,6 @@ class AuthorizationStateTest {
     fun `should default to null state`() {
         val authorizationState = AuthorizationState()
 
-        assertThat(authorizationState.state).isNull()
+        assertThat(authorizationState.value).isNull()
     }
 }
diff --git a/feature/account/edit/src/test/kotlin/app/k9mail/feature/account/edit/domain/usecase/GetAccountStateTest.kt b/feature/account/edit/src/test/kotlin/app/k9mail/feature/account/edit/domain/usecase/GetAccountStateTest.kt
index e210e26c19b..e063fac102e 100644
--- a/feature/account/edit/src/test/kotlin/app/k9mail/feature/account/edit/domain/usecase/GetAccountStateTest.kt
+++ b/feature/account/edit/src/test/kotlin/app/k9mail/feature/account/edit/domain/usecase/GetAccountStateTest.kt
@@ -1,8 +1,10 @@
 package app.k9mail.feature.account.edit.domain.usecase
 
 import app.k9mail.feature.account.common.data.InMemoryAccountStateRepository
+import app.k9mail.feature.account.common.domain.entity.AccountDisplayOptions
 import app.k9mail.feature.account.common.domain.entity.AccountOptions
 import app.k9mail.feature.account.common.domain.entity.AccountState
+import app.k9mail.feature.account.common.domain.entity.AccountSyncOptions
 import app.k9mail.feature.account.common.domain.entity.AuthorizationState
 import app.k9mail.feature.account.common.domain.entity.MailConnectionSecurity
 import assertk.assertFailure
@@ -77,13 +79,26 @@ class GetAccountStateTest {
             showNotification = true,
         )
 
+        val DISPLAY_OPTIONS = AccountDisplayOptions(
+            accountName = "accountName",
+            displayName = "displayName",
+            emailSignature = null,
+        )
+
+        val SYNC_OPTIONS = AccountSyncOptions(
+            checkFrequencyInMinutes = 15,
+            messageDisplayCount = 25,
+            showNotification = true,
+        )
+
         val ACCOUNT_STATE = AccountState(
             uuid = ACCOUNT_UUID,
             emailAddress = EMAIL_ADDRESS,
             incomingServerSettings = INCOMING_SERVER_SETTINGS,
             outgoingServerSettings = OUTGOING_SERVER_SETTINGS,
             authorizationState = AUTHORIZATION_STATE,
-            options = OPTIONS,
+            displayOptions = DISPLAY_OPTIONS,
+            syncOptions = SYNC_OPTIONS,
         )
     }
 }
diff --git a/feature/account/edit/src/test/kotlin/app/k9mail/feature/account/edit/domain/usecase/LoadAccountStateTest.kt b/feature/account/edit/src/test/kotlin/app/k9mail/feature/account/edit/domain/usecase/LoadAccountStateTest.kt
index 0d6f66397e3..77a77864bca 100644
--- a/feature/account/edit/src/test/kotlin/app/k9mail/feature/account/edit/domain/usecase/LoadAccountStateTest.kt
+++ b/feature/account/edit/src/test/kotlin/app/k9mail/feature/account/edit/domain/usecase/LoadAccountStateTest.kt
@@ -1,8 +1,9 @@
 package app.k9mail.feature.account.edit.domain.usecase
 
 import app.k9mail.feature.account.common.data.InMemoryAccountStateRepository
-import app.k9mail.feature.account.common.domain.entity.AccountOptions
+import app.k9mail.feature.account.common.domain.entity.AccountDisplayOptions
 import app.k9mail.feature.account.common.domain.entity.AccountState
+import app.k9mail.feature.account.common.domain.entity.AccountSyncOptions
 import app.k9mail.feature.account.common.domain.entity.AuthorizationState
 import app.k9mail.feature.account.common.domain.entity.MailConnectionSecurity
 import assertk.assertFailure
@@ -72,10 +73,13 @@ class LoadAccountStateTest {
 
         val AUTHORIZATION_STATE = AuthorizationState("authorization state")
 
-        val OPTIONS = AccountOptions(
+        val DISPLAY_OPTIONS = AccountDisplayOptions(
             accountName = "accountName",
             displayName = "displayName",
             emailSignature = null,
+        )
+
+        val SYNC_OPTIONS = AccountSyncOptions(
             checkFrequencyInMinutes = 15,
             messageDisplayCount = 25,
             showNotification = true,
@@ -87,7 +91,8 @@ class LoadAccountStateTest {
             incomingServerSettings = INCOMING_SERVER_SETTINGS,
             outgoingServerSettings = OUTGOING_SERVER_SETTINGS,
             authorizationState = AUTHORIZATION_STATE,
-            options = OPTIONS,
+            displayOptions = DISPLAY_OPTIONS,
+            syncOptions = SYNC_OPTIONS,
         )
     }
 }
diff --git a/feature/account/edit/src/test/kotlin/app/k9mail/feature/account/edit/domain/usecase/SaveServerSettingsTest.kt b/feature/account/edit/src/test/kotlin/app/k9mail/feature/account/edit/domain/usecase/SaveServerSettingsTest.kt
index da6250c8c9e..ca414a0bea7 100644
--- a/feature/account/edit/src/test/kotlin/app/k9mail/feature/account/edit/domain/usecase/SaveServerSettingsTest.kt
+++ b/feature/account/edit/src/test/kotlin/app/k9mail/feature/account/edit/domain/usecase/SaveServerSettingsTest.kt
@@ -1,7 +1,8 @@
 package app.k9mail.feature.account.edit.domain.usecase
 
-import app.k9mail.feature.account.common.domain.entity.AccountOptions
+import app.k9mail.feature.account.common.domain.entity.AccountDisplayOptions
 import app.k9mail.feature.account.common.domain.entity.AccountState
+import app.k9mail.feature.account.common.domain.entity.AccountSyncOptions
 import app.k9mail.feature.account.common.domain.entity.AuthorizationState
 import app.k9mail.feature.account.common.domain.entity.MailConnectionSecurity
 import app.k9mail.feature.account.edit.AccountEditExternalContract.AccountUpdaterFailure
@@ -143,10 +144,13 @@ class SaveServerSettingsTest {
 
         val AUTHORIZATION_STATE = AuthorizationState("authorization state")
 
-        val OPTIONS = AccountOptions(
+        val DISPLAY_OPTIONS = AccountDisplayOptions(
             accountName = "accountName",
             displayName = "displayName",
             emailSignature = null,
+        )
+
+        val SYNC_OPTIONS = AccountSyncOptions(
             checkFrequencyInMinutes = 15,
             messageDisplayCount = 25,
             showNotification = true,
@@ -158,7 +162,8 @@ class SaveServerSettingsTest {
             incomingServerSettings = INCOMING_SERVER_SETTINGS,
             outgoingServerSettings = OUTGOING_SERVER_SETTINGS,
             authorizationState = AUTHORIZATION_STATE,
-            options = OPTIONS,
+            displayOptions = DISPLAY_OPTIONS,
+            syncOptions = SYNC_OPTIONS,
         )
     }
 }
diff --git a/feature/account/oauth/src/test/kotlin/app/k9mail/feature/account/oauth/ui/AccountOAuthViewModelTest.kt b/feature/account/oauth/src/test/kotlin/app/k9mail/feature/account/oauth/ui/AccountOAuthViewModelTest.kt
index a7769480b0d..daf97c5a617 100644
--- a/feature/account/oauth/src/test/kotlin/app/k9mail/feature/account/oauth/ui/AccountOAuthViewModelTest.kt
+++ b/feature/account/oauth/src/test/kotlin/app/k9mail/feature/account/oauth/ui/AccountOAuthViewModelTest.kt
@@ -169,7 +169,7 @@ class AccountOAuthViewModelTest {
     @Test
     fun `should finish OAuth sign in when onOAuthResult received with success`() = runTest {
         val initialState = defaultState
-        val authorizationState = AuthorizationState(state = "state")
+        val authorizationState = AuthorizationState(value = "state")
         val testSubject = createTestSubject(
             authorizationResult = AuthorizationResult.Success(authorizationState),
             initialState = initialState,
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/AccountSetupModuleKtTest.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/AccountSetupModuleKtTest.kt
index 4a129f6b4f8..119c5d7140b 100644
--- a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/AccountSetupModuleKtTest.kt
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/AccountSetupModuleKtTest.kt
@@ -14,7 +14,8 @@ import app.k9mail.feature.account.setup.AccountSetupExternalContract.AccountCrea
 import app.k9mail.feature.account.setup.AccountSetupExternalContract.AccountCreator.AccountCreatorResult
 import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryContract
 import app.k9mail.feature.account.setup.ui.createaccount.CreateAccountContract
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract
 import app.k9mail.feature.account.setup.ui.specialfolders.SpecialFoldersContract
 import com.fsck.k9.mail.oauth.AuthStateStorage
 import com.fsck.k9.mail.oauth.OAuth2TokenProvider
@@ -71,7 +72,8 @@ class AccountSetupModuleKtTest : KoinTest {
                 ServerValidationContract.State::class,
                 IncomingServerSettingsContract.State::class,
                 OutgoingServerSettingsContract.State::class,
-                AccountOptionsContract.State::class,
+                DisplayOptionsContract.State::class,
+                SyncOptionsContract.State::class,
                 AccountState::class,
                 ServerCertificateErrorContract.State::class,
                 AuthStateStorage::class,
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/domain/usecase/CreateAccountTest.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/domain/usecase/CreateAccountTest.kt
index 038aa5679ea..1928ca6c713 100644
--- a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/domain/usecase/CreateAccountTest.kt
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/domain/usecase/CreateAccountTest.kt
@@ -1,7 +1,11 @@
 package app.k9mail.feature.account.setup.domain.usecase
 
 import app.k9mail.feature.account.common.domain.entity.Account
+import app.k9mail.feature.account.common.domain.entity.AccountDisplayOptions
 import app.k9mail.feature.account.common.domain.entity.AccountOptions
+import app.k9mail.feature.account.common.domain.entity.AccountState
+import app.k9mail.feature.account.common.domain.entity.AccountSyncOptions
+import app.k9mail.feature.account.common.domain.entity.AuthorizationState
 import app.k9mail.feature.account.common.domain.entity.MailConnectionSecurity
 import app.k9mail.feature.account.common.domain.entity.SpecialFolderOption
 import app.k9mail.feature.account.common.domain.entity.SpecialFolderSettings
@@ -30,12 +34,15 @@ class CreateAccountTest {
         )
 
         val result = createAccount.execute(
-            EMAIL_ADDRESS,
-            INCOMING_SETTINGS,
-            OUTGOING_SETTINGS,
-            AUTHORIZATION_STATE,
-            SPECIAL_FOLDER_SETTINGS,
-            OPTIONS,
+            AccountState(
+                emailAddress = EMAIL_ADDRESS,
+                incomingServerSettings = INCOMING_SETTINGS,
+                outgoingServerSettings = OUTGOING_SETTINGS,
+                authorizationState = AUTHORIZATION_STATE,
+                specialFolderSettings = SPECIAL_FOLDER_SETTINGS,
+                displayOptions = DISPLAY_OPTIONS,
+                syncOptions = SYNC_OPTIONS,
+            ),
         )
 
         assertThat(result).isEqualTo(AccountCreatorResult.Success("uuid"))
@@ -45,7 +52,7 @@ class CreateAccountTest {
                 emailAddress = EMAIL_ADDRESS,
                 incomingServerSettings = INCOMING_SETTINGS,
                 outgoingServerSettings = OUTGOING_SETTINGS,
-                authorizationState = AUTHORIZATION_STATE,
+                authorizationState = AUTHORIZATION_STATE.value,
                 specialFolderSettings = SPECIAL_FOLDER_SETTINGS,
                 options = OPTIONS,
             ),
@@ -77,7 +84,7 @@ class CreateAccountTest {
             clientCertificateAlias = null,
         )
 
-        const val AUTHORIZATION_STATE = "authorization state"
+        val AUTHORIZATION_STATE = AuthorizationState("authorization state")
 
         val SPECIAL_FOLDER_SETTINGS = SpecialFolderSettings(
             archiveSpecialFolderOption = SpecialFolderOption.Special(
@@ -105,5 +112,17 @@ class CreateAccountTest {
             messageDisplayCount = 25,
             showNotification = true,
         )
+
+        val DISPLAY_OPTIONS = AccountDisplayOptions(
+            accountName = "accountName",
+            displayName = "displayName",
+            emailSignature = null,
+        )
+
+        val SYNC_OPTIONS = AccountSyncOptions(
+            checkFrequencyInMinutes = 15,
+            messageDisplayCount = 25,
+            showNotification = true,
+        )
     }
 }
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/autodiscovery/AccountAutoDiscoveryStateMapperKtTest.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/autodiscovery/AccountAutoDiscoveryStateMapperKtTest.kt
index 802cfe0e66e..c66fa1936e4 100644
--- a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/autodiscovery/AccountAutoDiscoveryStateMapperKtTest.kt
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/autodiscovery/AccountAutoDiscoveryStateMapperKtTest.kt
@@ -15,7 +15,7 @@ import app.k9mail.feature.account.server.settings.ui.outgoing.OutgoingServerSett
 import app.k9mail.feature.account.setup.domain.entity.AutoDiscoveryAuthenticationType
 import app.k9mail.feature.account.setup.domain.entity.AutoDiscoveryConnectionSecurity
 import app.k9mail.feature.account.setup.domain.entity.toConnectionSecurity
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract
 import assertk.assertThat
 import assertk.assertions.isEqualTo
 import org.junit.Test
@@ -32,7 +32,8 @@ class AccountAutoDiscoveryStateMapperKtTest {
                 incomingServerSettings = null,
                 outgoingServerSettings = null,
                 authorizationState = null,
-                options = null,
+                displayOptions = null,
+                syncOptions = null,
             ),
         )
     }
@@ -145,7 +146,7 @@ class AccountAutoDiscoveryStateMapperKtTest {
     fun `should map to OptionsState when empty`() {
         val optionsState = EMPTY_STATE.toOptionsState()
 
-        assertThat(optionsState).isEqualTo(AccountOptionsContract.State())
+        assertThat(optionsState).isEqualTo(DisplayOptionsContract.State())
     }
 
     @Test
@@ -153,7 +154,7 @@ class AccountAutoDiscoveryStateMapperKtTest {
         val optionsState = EMAIL_PASSWORD_STATE.toOptionsState()
 
         assertThat(optionsState).isEqualTo(
-            AccountOptionsContract.State(
+            DisplayOptionsContract.State(
                 accountName = StringInputField(value = EMAIL_ADDRESS),
             ),
         )
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/autodiscovery/AccountAutoDiscoveryViewModelTest.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/autodiscovery/AccountAutoDiscoveryViewModelTest.kt
index 0d0da78cf3d..3aa896a8c5d 100644
--- a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/autodiscovery/AccountAutoDiscoveryViewModelTest.kt
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/autodiscovery/AccountAutoDiscoveryViewModelTest.kt
@@ -297,7 +297,8 @@ class AccountAutoDiscoveryViewModelTest {
                     incomingServerSettings = null,
                     outgoingServerSettings = null,
                     authorizationState = null,
-                    options = null,
+                    displayOptions = null,
+                    syncOptions = null,
                 ),
             )
         }
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/createaccount/CreateAccountViewModelTest.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/createaccount/CreateAccountViewModelTest.kt
index c663d601827..6b7b4682bd1 100644
--- a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/createaccount/CreateAccountViewModelTest.kt
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/createaccount/CreateAccountViewModelTest.kt
@@ -4,8 +4,9 @@ import app.cash.turbine.testIn
 import app.k9mail.core.ui.compose.testing.MainDispatcherRule
 import app.k9mail.core.ui.compose.testing.mvi.eventStateTest
 import app.k9mail.feature.account.common.data.InMemoryAccountStateRepository
-import app.k9mail.feature.account.common.domain.entity.AccountOptions
+import app.k9mail.feature.account.common.domain.entity.AccountDisplayOptions
 import app.k9mail.feature.account.common.domain.entity.AccountState
+import app.k9mail.feature.account.common.domain.entity.AccountSyncOptions
 import app.k9mail.feature.account.common.domain.entity.AuthorizationState
 import app.k9mail.feature.account.common.domain.entity.SpecialFolderOption
 import app.k9mail.feature.account.common.domain.entity.SpecialFolderSettings
@@ -60,13 +61,14 @@ class CreateAccountViewModelTest {
         )
 
         assertThat(fakeCreateAccount.recordedInvocations).containsExactly(
-            CreateAccountArguments(
+            AccountState(
                 emailAddress = EMAIL_ADDRESS,
                 incomingServerSettings = INCOMING_SERVER_SETTINGS,
                 outgoingServerSettings = OUTGOING_SERVER_SETTINGS,
-                authorizationState = AUTHORIZATION_STATE.state,
+                authorizationState = AUTHORIZATION_STATE,
                 specialFolderSettings = SPECIAL_FOLDER_SETTINGS,
-                options = ACCOUNT_OPTIONS,
+                displayOptions = ACCOUNT_DISPLAY_OPTIONS,
+                syncOptions = ACCOUNT_SYNC_OPTIONS,
             ),
         )
 
@@ -184,10 +186,13 @@ class CreateAccountViewModelTest {
             ),
         )
 
-        val ACCOUNT_OPTIONS = AccountOptions(
+        val ACCOUNT_DISPLAY_OPTIONS = AccountDisplayOptions(
             accountName = "account name",
             displayName = "display name",
             emailSignature = null,
+        )
+
+        val ACCOUNT_SYNC_OPTIONS = AccountSyncOptions(
             checkFrequencyInMinutes = 0,
             messageDisplayCount = 50,
             showNotification = false,
@@ -199,7 +204,8 @@ class CreateAccountViewModelTest {
             outgoingServerSettings = OUTGOING_SERVER_SETTINGS,
             authorizationState = AUTHORIZATION_STATE,
             specialFolderSettings = SPECIAL_FOLDER_SETTINGS,
-            options = ACCOUNT_OPTIONS,
+            displayOptions = ACCOUNT_DISPLAY_OPTIONS,
+            syncOptions = ACCOUNT_SYNC_OPTIONS,
         )
     }
 }
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/createaccount/FakeCreateAccount.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/createaccount/FakeCreateAccount.kt
index 3711cd9394c..d8c0fefcd30 100644
--- a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/createaccount/FakeCreateAccount.kt
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/createaccount/FakeCreateAccount.kt
@@ -1,44 +1,19 @@
 package app.k9mail.feature.account.setup.ui.createaccount
 
-import app.k9mail.feature.account.common.domain.entity.AccountOptions
-import app.k9mail.feature.account.common.domain.entity.SpecialFolderSettings
+import app.k9mail.feature.account.common.domain.entity.AccountState
 import app.k9mail.feature.account.setup.AccountSetupExternalContract.AccountCreator.AccountCreatorResult
 import app.k9mail.feature.account.setup.domain.DomainContract.UseCase.CreateAccount
-import com.fsck.k9.mail.ServerSettings
 
 class FakeCreateAccount : CreateAccount {
-    val recordedInvocations = mutableListOf<CreateAccountArguments>()
+    val recordedInvocations = mutableListOf<AccountState>()
 
     var result: AccountCreatorResult = AccountCreatorResult.Success("default result")
 
     override suspend fun execute(
-        emailAddress: String,
-        incomingServerSettings: ServerSettings,
-        outgoingServerSettings: ServerSettings,
-        authorizationState: String?,
-        specialFolderSettings: SpecialFolderSettings?,
-        options: AccountOptions,
+        accountState: AccountState,
     ): AccountCreatorResult {
-        recordedInvocations.add(
-            CreateAccountArguments(
-                emailAddress,
-                incomingServerSettings,
-                outgoingServerSettings,
-                authorizationState,
-                specialFolderSettings,
-                options,
-            ),
-        )
+        recordedInvocations.add(accountState)
 
         return result
     }
 }
-
-data class CreateAccountArguments(
-    val emailAddress: String,
-    val incomingServerSettings: ServerSettings,
-    val outgoingServerSettings: ServerSettings,
-    val authorizationState: String?,
-    val specialFolderSettings: SpecialFolderSettings?,
-    val options: AccountOptions,
-)
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsStateMapperKtTest.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsStateMapperKtTest.kt
deleted file mode 100644
index cfaa6c1e052..00000000000
--- a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsStateMapperKtTest.kt
+++ /dev/null
@@ -1,47 +0,0 @@
-package app.k9mail.feature.account.setup.ui.options
-
-import app.k9mail.feature.account.common.domain.entity.AccountOptions
-import app.k9mail.feature.account.common.domain.input.StringInputField
-import app.k9mail.feature.account.setup.domain.entity.EmailCheckFrequency
-import app.k9mail.feature.account.setup.domain.entity.EmailDisplayCount
-import assertk.assertThat
-import assertk.assertions.isEqualTo
-import assertk.assertions.isNull
-import org.junit.Test
-
-class AccountOptionsStateMapperKtTest {
-
-    @Test
-    fun `should map state to account options`() {
-        val state = AccountOptionsContract.State(
-            accountName = StringInputField("accountName"),
-            displayName = StringInputField("displayName"),
-            emailSignature = StringInputField("emailSignature"),
-            checkFrequency = EmailCheckFrequency.EVERY_2_HOURS,
-            messageDisplayCount = EmailDisplayCount.MESSAGES_100,
-            showNotification = true,
-        )
-
-        val result = state.toAccountOptions()
-
-        assertThat(result).isEqualTo(
-            AccountOptions(
-                accountName = "accountName",
-                displayName = "displayName",
-                emailSignature = "emailSignature",
-                checkFrequencyInMinutes = 120,
-                messageDisplayCount = 100,
-                showNotification = true,
-            ),
-        )
-    }
-
-    @Test
-    fun `empty signature should map to null`() {
-        val state = AccountOptionsContract.State(emailSignature = StringInputField(""))
-
-        val result = state.toAccountOptions()
-
-        assertThat(result.emailSignature).isNull()
-    }
-}
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/FakeAccountOptionsViewModel.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/FakeAccountOptionsViewModel.kt
deleted file mode 100644
index e715283ef1a..00000000000
--- a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/FakeAccountOptionsViewModel.kt
+++ /dev/null
@@ -1,22 +0,0 @@
-package app.k9mail.feature.account.setup.ui.options
-
-import app.k9mail.core.ui.compose.common.mvi.BaseViewModel
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Effect
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Event
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.State
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.ViewModel
-
-class FakeAccountOptionsViewModel(
-    initialState: State = State(),
-) : BaseViewModel<State, Event, Effect>(initialState), ViewModel {
-
-    val events = mutableListOf<Event>()
-
-    override fun event(event: Event) {
-        events.add(event)
-    }
-
-    fun effect(effect: Effect) {
-        emitEffect(effect)
-    }
-}
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsScreenKtTest.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsScreenKtTest.kt
new file mode 100644
index 00000000000..0680d9fe7bc
--- /dev/null
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsScreenKtTest.kt
@@ -0,0 +1,45 @@
+package app.k9mail.feature.account.setup.ui.options.display
+
+import app.k9mail.core.ui.compose.testing.ComposeTest
+import app.k9mail.core.ui.compose.testing.setContent
+import app.k9mail.core.ui.compose.theme.ThunderbirdTheme
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.Effect
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.State
+import assertk.assertThat
+import assertk.assertions.isEqualTo
+import kotlinx.coroutines.test.runTest
+import org.junit.Test
+
+class DisplayOptionsScreenKtTest : ComposeTest() {
+
+    @Test
+    fun `should delegate navigation effects`() = runTest {
+        val initialState = State()
+        val viewModel = FakeDisplayOptionsViewModel(initialState)
+        var onNextCounter = 0
+        var onBackCounter = 0
+
+        setContent {
+            ThunderbirdTheme {
+                DisplayOptionsScreen(
+                    onNext = { onNextCounter++ },
+                    onBack = { onBackCounter++ },
+                    viewModel = viewModel,
+                )
+            }
+        }
+
+        assertThat(onNextCounter).isEqualTo(0)
+        assertThat(onBackCounter).isEqualTo(0)
+
+        viewModel.effect(Effect.NavigateNext)
+
+        assertThat(onNextCounter).isEqualTo(1)
+        assertThat(onBackCounter).isEqualTo(0)
+
+        viewModel.effect(Effect.NavigateBack)
+
+        assertThat(onNextCounter).isEqualTo(1)
+        assertThat(onBackCounter).isEqualTo(1)
+    }
+}
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsStateMapperKtTest.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsStateMapperKtTest.kt
new file mode 100644
index 00000000000..99414379f3a
--- /dev/null
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsStateMapperKtTest.kt
@@ -0,0 +1,39 @@
+package app.k9mail.feature.account.setup.ui.options.display
+
+import app.k9mail.feature.account.common.domain.entity.AccountDisplayOptions
+import app.k9mail.feature.account.common.domain.input.StringInputField
+import assertk.assertThat
+import assertk.assertions.isEqualTo
+import assertk.assertions.isNull
+import org.junit.Test
+
+class DisplayOptionsStateMapperKtTest {
+
+    @Test
+    fun `should map state to account options`() {
+        val state = DisplayOptionsContract.State(
+            accountName = StringInputField("accountName"),
+            displayName = StringInputField("displayName"),
+            emailSignature = StringInputField("emailSignature"),
+        )
+
+        val result = state.toAccountDisplayOptions()
+
+        assertThat(result).isEqualTo(
+            AccountDisplayOptions(
+                accountName = "accountName",
+                displayName = "displayName",
+                emailSignature = "emailSignature",
+            ),
+        )
+    }
+
+    @Test
+    fun `empty signature should map to null`() {
+        val state = DisplayOptionsContract.State(emailSignature = StringInputField(""))
+
+        val result = state.toAccountDisplayOptions()
+
+        assertThat(result.emailSignature).isNull()
+    }
+}
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsStateTest.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsStateTest.kt
new file mode 100644
index 00000000000..ed306f2912c
--- /dev/null
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsStateTest.kt
@@ -0,0 +1,23 @@
+package app.k9mail.feature.account.setup.ui.options.display
+
+import app.k9mail.feature.account.common.domain.input.StringInputField
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.State
+import assertk.assertThat
+import assertk.assertions.isEqualTo
+import org.junit.Test
+
+class DisplayOptionsStateTest {
+
+    @Test
+    fun `should set default values`() {
+        val state = State()
+
+        assertThat(state).isEqualTo(
+            State(
+                accountName = StringInputField(),
+                displayName = StringInputField(),
+                emailSignature = StringInputField(),
+            ),
+        )
+    }
+}
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsViewModelTest.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsViewModelTest.kt
similarity index 73%
rename from feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsViewModelTest.kt
rename to feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsViewModelTest.kt
index f610c024940..a9deea0cd15 100644
--- a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsViewModelTest.kt
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/DisplayOptionsViewModelTest.kt
@@ -1,4 +1,4 @@
-package app.k9mail.feature.account.setup.ui.options
+package app.k9mail.feature.account.setup.ui.options.display
 
 import app.cash.turbine.testIn
 import app.k9mail.core.common.domain.usecase.validation.ValidationError
@@ -7,11 +7,9 @@ import app.k9mail.core.ui.compose.testing.MainDispatcherRule
 import app.k9mail.core.ui.compose.testing.mvi.eventStateTest
 import app.k9mail.feature.account.common.data.InMemoryAccountStateRepository
 import app.k9mail.feature.account.common.domain.input.StringInputField
-import app.k9mail.feature.account.setup.domain.entity.EmailCheckFrequency
-import app.k9mail.feature.account.setup.domain.entity.EmailDisplayCount
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Effect
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Event
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.State
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.Effect
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.Event
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.State
 import assertk.assertThat
 import assertk.assertions.assertThatAndTurbinesConsumed
 import assertk.assertions.isEqualTo
@@ -19,13 +17,13 @@ import kotlinx.coroutines.test.runTest
 import org.junit.Rule
 import org.junit.Test
 
-class AccountOptionsViewModelTest {
+class DisplayOptionsViewModelTest {
 
     @get:Rule
     val mainDispatcherRule = MainDispatcherRule()
 
-    private val testSubject = AccountOptionsViewModel(
-        validator = FakeAccountOptionsValidator(),
+    private val testSubject = DisplayOptionsViewModel(
+        validator = FakeDisplayOptionsValidator(),
         accountStateRepository = InMemoryAccountStateRepository(),
     )
 
@@ -62,39 +60,6 @@ class AccountOptionsViewModelTest {
         )
     }
 
-    @Test
-    fun `should change state when OnCheckFrequencyChanged event is received`() = runTest {
-        eventStateTest(
-            viewModel = testSubject,
-            initialState = State(),
-            event = Event.OnCheckFrequencyChanged(EmailCheckFrequency.EVERY_12_HOURS),
-            expectedState = State(checkFrequency = EmailCheckFrequency.EVERY_12_HOURS),
-            coroutineScope = backgroundScope,
-        )
-    }
-
-    @Test
-    fun `should change state when OnMessageDisplayCountChanged event is received`() = runTest {
-        eventStateTest(
-            viewModel = testSubject,
-            initialState = State(),
-            event = Event.OnMessageDisplayCountChanged(EmailDisplayCount.MESSAGES_1000),
-            expectedState = State(messageDisplayCount = EmailDisplayCount.MESSAGES_1000),
-            coroutineScope = backgroundScope,
-        )
-    }
-
-    @Test
-    fun `should change state when OnShowNotificationChanged event is received`() = runTest {
-        eventStateTest(
-            viewModel = testSubject,
-            initialState = State(),
-            event = Event.OnShowNotificationChanged(true),
-            expectedState = State(showNotification = true),
-            coroutineScope = backgroundScope,
-        )
-    }
-
     @Test
     fun `should change state and emit NavigateNext effect when OnNextClicked event received and input valid`() =
         runTest {
@@ -131,8 +96,8 @@ class AccountOptionsViewModelTest {
     @Test
     fun `should change state and not emit effect when OnNextClicked event received and input invalid`() =
         runTest {
-            val viewModel = AccountOptionsViewModel(
-                validator = FakeAccountOptionsValidator(
+            val viewModel = DisplayOptionsViewModel(
+                validator = FakeDisplayOptionsValidator(
                     accountNameAnswer = ValidationResult.Failure(TestError),
                 ),
                 accountStateRepository = InMemoryAccountStateRepository(),
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/FakeAccountOptionsValidator.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/FakeDisplayOptionsValidator.kt
similarity index 76%
rename from feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/FakeAccountOptionsValidator.kt
rename to feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/FakeDisplayOptionsValidator.kt
index bd65543c2da..5cf624745b5 100644
--- a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/FakeAccountOptionsValidator.kt
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/FakeDisplayOptionsValidator.kt
@@ -1,9 +1,9 @@
-package app.k9mail.feature.account.setup.ui.options
+package app.k9mail.feature.account.setup.ui.options.display
 
 import app.k9mail.core.common.domain.usecase.validation.ValidationResult
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Validator
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.Validator
 
-internal class FakeAccountOptionsValidator(
+internal class FakeDisplayOptionsValidator(
     private val accountNameAnswer: ValidationResult = ValidationResult.Success,
     private val displayNameAnswer: ValidationResult = ValidationResult.Success,
     private val emailSignatureAnswer: ValidationResult = ValidationResult.Success,
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/FakeDisplayOptionsViewModel.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/FakeDisplayOptionsViewModel.kt
new file mode 100644
index 00000000000..52d65d6c902
--- /dev/null
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/display/FakeDisplayOptionsViewModel.kt
@@ -0,0 +1,22 @@
+package app.k9mail.feature.account.setup.ui.options.display
+
+import app.k9mail.core.ui.compose.common.mvi.BaseViewModel
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.Effect
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.Event
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.State
+import app.k9mail.feature.account.setup.ui.options.display.DisplayOptionsContract.ViewModel
+
+class FakeDisplayOptionsViewModel(
+    initialState: State = State(),
+) : BaseViewModel<State, Event, Effect>(initialState), ViewModel {
+
+    val events = mutableListOf<Event>()
+
+    override fun event(event: Event) {
+        events.add(event)
+    }
+
+    fun effect(effect: Effect) {
+        emitEffect(effect)
+    }
+}
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/sync/FakeSyncOptionsViewModel.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/sync/FakeSyncOptionsViewModel.kt
new file mode 100644
index 00000000000..4ad539597a0
--- /dev/null
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/sync/FakeSyncOptionsViewModel.kt
@@ -0,0 +1,22 @@
+package app.k9mail.feature.account.setup.ui.options.sync
+
+import app.k9mail.core.ui.compose.common.mvi.BaseViewModel
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.Effect
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.Event
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.State
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.ViewModel
+
+class FakeSyncOptionsViewModel(
+    initialState: State = State(),
+) : BaseViewModel<State, Event, Effect>(initialState), ViewModel {
+
+    val events = mutableListOf<Event>()
+
+    override fun event(event: Event) {
+        events.add(event)
+    }
+
+    fun effect(effect: Effect) {
+        emitEffect(effect)
+    }
+}
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsScreenKtTest.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsScreenKtTest.kt
similarity index 74%
rename from feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsScreenKtTest.kt
rename to feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsScreenKtTest.kt
index e8048736122..92c9698d4ae 100644
--- a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsScreenKtTest.kt
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsScreenKtTest.kt
@@ -1,27 +1,27 @@
-package app.k9mail.feature.account.setup.ui.options
+package app.k9mail.feature.account.setup.ui.options.sync
 
 import app.k9mail.core.ui.compose.testing.ComposeTest
 import app.k9mail.core.ui.compose.testing.setContent
 import app.k9mail.core.ui.compose.theme.ThunderbirdTheme
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Effect
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.State
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.Effect
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.State
 import assertk.assertThat
 import assertk.assertions.isEqualTo
 import kotlinx.coroutines.test.runTest
 import org.junit.Test
 
-class AccountOptionsScreenKtTest : ComposeTest() {
+class SyncOptionsScreenKtTest : ComposeTest() {
 
     @Test
     fun `should delegate navigation effects`() = runTest {
         val initialState = State()
-        val viewModel = FakeAccountOptionsViewModel(initialState)
+        val viewModel = FakeSyncOptionsViewModel(initialState)
         var onNextCounter = 0
         var onBackCounter = 0
 
         setContent {
             ThunderbirdTheme {
-                AccountOptionsScreen(
+                SyncOptionsScreen(
                     onNext = { onNextCounter++ },
                     onBack = { onBackCounter++ },
                     viewModel = viewModel,
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsStateMapperKtTest.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsStateMapperKtTest.kt
new file mode 100644
index 00000000000..eff8cd9d60f
--- /dev/null
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsStateMapperKtTest.kt
@@ -0,0 +1,30 @@
+package app.k9mail.feature.account.setup.ui.options.sync
+
+import app.k9mail.feature.account.common.domain.entity.AccountSyncOptions
+import app.k9mail.feature.account.setup.domain.entity.EmailCheckFrequency
+import app.k9mail.feature.account.setup.domain.entity.EmailDisplayCount
+import assertk.assertThat
+import assertk.assertions.isEqualTo
+import org.junit.Test
+
+class SyncOptionsStateMapperKtTest {
+
+    @Test
+    fun `should map state to account options`() {
+        val state = SyncOptionsContract.State(
+            checkFrequency = EmailCheckFrequency.EVERY_2_HOURS,
+            messageDisplayCount = EmailDisplayCount.MESSAGES_100,
+            showNotification = true,
+        )
+
+        val result = state.toAccountSyncOptions()
+
+        assertThat(result).isEqualTo(
+            AccountSyncOptions(
+                checkFrequencyInMinutes = 120,
+                messageDisplayCount = 100,
+                showNotification = true,
+            ),
+        )
+    }
+}
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsStateTest.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsStateTest.kt
similarity index 59%
rename from feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsStateTest.kt
rename to feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsStateTest.kt
index 40526d70134..35a61e1cc65 100644
--- a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsStateTest.kt
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsStateTest.kt
@@ -1,14 +1,13 @@
-package app.k9mail.feature.account.setup.ui.options
+package app.k9mail.feature.account.setup.ui.options.sync
 
-import app.k9mail.feature.account.common.domain.input.StringInputField
 import app.k9mail.feature.account.setup.domain.entity.EmailCheckFrequency
 import app.k9mail.feature.account.setup.domain.entity.EmailDisplayCount
-import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.State
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.State
 import assertk.assertThat
 import assertk.assertions.isEqualTo
 import org.junit.Test
 
-class AccountOptionsStateTest {
+class SyncOptionsStateTest {
 
     @Test
     fun `should set default values`() {
@@ -16,9 +15,6 @@ class AccountOptionsStateTest {
 
         assertThat(state).isEqualTo(
             State(
-                accountName = StringInputField(),
-                displayName = StringInputField(),
-                emailSignature = StringInputField(),
                 checkFrequency = EmailCheckFrequency.DEFAULT,
                 messageDisplayCount = EmailDisplayCount.DEFAULT,
                 showNotification = false,
diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsViewModelTest.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsViewModelTest.kt
new file mode 100644
index 00000000000..7ecae08e645
--- /dev/null
+++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/options/sync/SyncOptionsViewModelTest.kt
@@ -0,0 +1,123 @@
+package app.k9mail.feature.account.setup.ui.options.sync
+
+import app.cash.turbine.testIn
+import app.k9mail.core.ui.compose.testing.MainDispatcherRule
+import app.k9mail.core.ui.compose.testing.mvi.assertThatAndEffectTurbineConsumed
+import app.k9mail.core.ui.compose.testing.mvi.eventStateTest
+import app.k9mail.core.ui.compose.testing.mvi.turbinesWithInitialStateCheck
+import app.k9mail.feature.account.common.data.InMemoryAccountStateRepository
+import app.k9mail.feature.account.common.domain.entity.AccountState
+import app.k9mail.feature.account.common.domain.entity.AccountSyncOptions
+import app.k9mail.feature.account.setup.domain.entity.EmailCheckFrequency
+import app.k9mail.feature.account.setup.domain.entity.EmailDisplayCount
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.Effect
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.Event
+import app.k9mail.feature.account.setup.ui.options.sync.SyncOptionsContract.State
+import assertk.assertThat
+import assertk.assertions.assertThatAndTurbinesConsumed
+import assertk.assertions.isEqualTo
+import kotlinx.coroutines.test.runTest
+import org.junit.Rule
+import org.junit.Test
+
+class SyncOptionsViewModelTest {
+
+    @get:Rule
+    val mainDispatcherRule = MainDispatcherRule()
+
+    private val testSubject = SyncOptionsViewModel(
+        accountStateRepository = InMemoryAccountStateRepository(),
+    )
+
+    @Test
+    fun `should change state when OnCheckFrequencyChanged event is received`() = runTest {
+        eventStateTest(
+            viewModel = testSubject,
+            initialState = State(),
+            event = Event.OnCheckFrequencyChanged(EmailCheckFrequency.EVERY_12_HOURS),
+            expectedState = State(checkFrequency = EmailCheckFrequency.EVERY_12_HOURS),
+            coroutineScope = backgroundScope,
+        )
+    }
+
+    @Test
+    fun `should change state when OnMessageDisplayCountChanged event is received`() = runTest {
+        eventStateTest(
+            viewModel = testSubject,
+            initialState = State(),
+            event = Event.OnMessageDisplayCountChanged(EmailDisplayCount.MESSAGES_1000),
+            expectedState = State(messageDisplayCount = EmailDisplayCount.MESSAGES_1000),
+            coroutineScope = backgroundScope,
+        )
+    }
+
+    @Test
+    fun `should change state when OnShowNotificationChanged event is received`() = runTest {
+        eventStateTest(
+            viewModel = testSubject,
+            initialState = State(),
+            event = Event.OnShowNotificationChanged(true),
+            expectedState = State(showNotification = true),
+            coroutineScope = backgroundScope,
+        )
+    }
+
+    @Test
+    fun `should store state and emit NavigateNext effect when OnNextClicked event received and input valid`() =
+        runTest {
+            val accountStateRepository = InMemoryAccountStateRepository()
+            val initialState = State(
+                checkFrequency = EmailCheckFrequency.EVERY_HOUR,
+                messageDisplayCount = EmailDisplayCount.MESSAGES_1000,
+                showNotification = true,
+            )
+            val viewModel = SyncOptionsViewModel(
+                accountStateRepository = accountStateRepository,
+                initialState = initialState,
+            )
+            val turbines = turbinesWithInitialStateCheck(
+                viewModel = viewModel,
+                initialState = initialState,
+            )
+
+            viewModel.event(Event.OnNextClicked)
+
+            turbines.assertThatAndEffectTurbineConsumed {
+                isEqualTo(Effect.NavigateNext)
+            }
+
+            assertThat(accountStateRepository.getState()).isEqualTo(
+                AccountState(
+                    syncOptions = AccountSyncOptions(
+                        checkFrequencyInMinutes = 60,
+                        messageDisplayCount = 1000,
+                        showNotification = true,
+                    ),
+                ),
+            )
+        }
+
+    @Test
+    fun `should emit NavigateBack effect when OnBackClicked event received`() = runTest {
+        val viewModel = testSubject
+        val stateTurbine = viewModel.state.testIn(backgroundScope)
+        val effectTurbine = viewModel.effect.testIn(backgroundScope)
+        val turbines = listOf(stateTurbine, effectTurbine)
+
+        assertThatAndTurbinesConsumed(
+            actual = stateTurbine.awaitItem(),
+            turbines = turbines,
+        ) {
+            isEqualTo(State())
+        }
+
+        viewModel.event(Event.OnBackClicked)
+
+        assertThatAndTurbinesConsumed(
+            actual = effectTurbine.awaitItem(),
+            turbines = turbines,
+        ) {
+            isEqualTo(Effect.NavigateBack)
+        }
+    }
+}