diff --git a/lib/di.dart b/lib/di.dart
index 815a3740e..2edb9057e 100644
--- a/lib/di.dart
+++ b/lib/di.dart
@@ -31,6 +31,10 @@ import 'package:cake_wallet/src/screens/dashboard/widgets/balance_page.dart';
 import 'package:cake_wallet/view_model/ionia/ionia_account_view_model.dart';
 import 'package:cake_wallet/view_model/ionia/ionia_gift_cards_list_view_model.dart';
 import 'package:cake_wallet/view_model/ionia/ionia_purchase_merch_view_model.dart';
+import 'package:cake_wallet/view_model/settings/display_settings_view_model.dart';
+import 'package:cake_wallet/view_model/settings/other_settings_view_model.dart';
+import 'package:cake_wallet/view_model/settings/privacy_settings_view_model.dart';
+import 'package:cake_wallet/view_model/settings/security_settings_view_model.dart';
 import 'package:cw_core/unspent_coins_info.dart';
 import 'package:cake_wallet/core/backup_service.dart';
 import 'package:cw_core/wallet_service.dart';
@@ -443,6 +447,26 @@ Future setup(
     return SettingsViewModel(appStore.settingsStore, yatStore, appStore.wallet!);
   });
 
+  getIt.registerFactory(() {
+    final appStore = getIt.get<AppStore>();
+    return DisplaySettingsViewModel(appStore.settingsStore);
+  });
+
+  getIt.registerFactory(() {
+    final appStore = getIt.get<AppStore>();
+    return PrivacySettingsViewModel(appStore.settingsStore);
+  });
+
+  getIt.registerFactory(() {
+    final appStore = getIt.get<AppStore>();
+    return OtherSettingsViewModel(appStore.settingsStore, appStore.wallet!);
+  });
+
+  getIt.registerFactory(() {
+    final appStore = getIt.get<AppStore>();
+    return SecuritySettingsViewModel(appStore.settingsStore);
+  });
+
   getIt
       .registerFactory(() => WalletSeedViewModel(getIt.get<AppStore>().wallet!));
 
@@ -481,13 +505,13 @@ Future setup(
 
   getIt.registerFactory(() => ConnectionSyncPage(getIt.get<NodeListViewModel>(), getIt.get<DashboardViewModel>()));
 
-  getIt.registerFactory(() => SecurityBackupPage(getIt.get<SettingsViewModel>()));
+  getIt.registerFactory(() => SecurityBackupPage(getIt.get<SecuritySettingsViewModel>()));
 
-  getIt.registerFactory(() => PrivacyPage(getIt.get<SettingsViewModel>()));
+  getIt.registerFactory(() => PrivacyPage(getIt.get<PrivacySettingsViewModel>()));
 
-  getIt.registerFactory(() => DisplaySettingsPage(getIt.get<SettingsViewModel>()));
+  getIt.registerFactory(() => DisplaySettingsPage(getIt.get<DisplaySettingsViewModel>()));
 
-  getIt.registerFactory(() => OtherSettingsPage(getIt.get<SettingsViewModel>()));
+  getIt.registerFactory(() => OtherSettingsPage(getIt.get<OtherSettingsViewModel>()));
 
   getIt.registerFactory(() =>
       NodeCreateOrEditViewModel(_nodeSource, getIt.get<AppStore>().wallet!));
diff --git a/lib/entities/priority_for_wallet_type.dart b/lib/entities/priority_for_wallet_type.dart
new file mode 100644
index 000000000..927ab8803
--- /dev/null
+++ b/lib/entities/priority_for_wallet_type.dart
@@ -0,0 +1,21 @@
+import 'package:cake_wallet/bitcoin/bitcoin.dart';
+import 'package:cake_wallet/haven/haven.dart';
+import 'package:cake_wallet/monero/monero.dart';
+import 'package:cw_core/transaction_priority.dart';
+import 'package:cw_core/wallet_type.dart';
+
+List<TransactionPriority> priorityForWalletType(WalletType type) {
+  switch (type) {
+    case WalletType.monero:
+      return monero!.getTransactionPriorities();
+    case WalletType.bitcoin:
+      return bitcoin!.getTransactionPriorities();
+    case WalletType.litecoin:
+      return bitcoin!.getLitecoinTransactionPriorities();
+    case WalletType.haven:
+      return haven!.getTransactionPriorities();
+    default:
+      return [];
+  }
+}
+
diff --git a/lib/src/screens/send/widgets/send_card.dart b/lib/src/screens/send/widgets/send_card.dart
index dc589923f..d5775e2b5 100644
--- a/lib/src/screens/send/widgets/send_card.dart
+++ b/lib/src/screens/send/widgets/send_card.dart
@@ -1,11 +1,10 @@
-import 'dart:ui';
+import 'package:cake_wallet/entities/priority_for_wallet_type.dart';
 import 'package:cake_wallet/utils/payment_request.dart';
 import 'package:cw_core/transaction_priority.dart';
 import 'package:cake_wallet/routes.dart';
 import 'package:cake_wallet/src/widgets/keyboard_done_button.dart';
 import 'package:cake_wallet/src/widgets/picker.dart';
 import 'package:cake_wallet/view_model/send/output.dart';
-import 'package:cake_wallet/view_model/settings/settings_view_model.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_mobx/flutter_mobx.dart';
diff --git a/lib/src/screens/settings/display_settings_page.dart b/lib/src/screens/settings/display_settings_page.dart
index 0c18ce09a..fd26da1c4 100644
--- a/lib/src/screens/settings/display_settings_page.dart
+++ b/lib/src/screens/settings/display_settings_page.dart
@@ -8,7 +8,7 @@ import 'package:cake_wallet/src/screens/settings/widgets/settings_switcher_cell.
 import 'package:cake_wallet/themes/theme_base.dart';
 import 'package:cake_wallet/themes/theme_list.dart';
 import 'package:cake_wallet/view_model/settings/choices_list_item.dart';
-import 'package:cake_wallet/view_model/settings/settings_view_model.dart';
+import 'package:cake_wallet/view_model/settings/display_settings_view_model.dart';
 import 'package:cake_wallet/wallet_type_utils.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_mobx/flutter_mobx.dart';
@@ -19,7 +19,7 @@ class DisplaySettingsPage extends BasePage {
   @override
   String get title => S.current.display_settings;
 
-  final SettingsViewModel settingsViewModel;
+  final DisplaySettingsViewModel settingsViewModel;
 
   @override
   Widget body(BuildContext context) {
diff --git a/lib/src/screens/settings/other_settings_page.dart b/lib/src/screens/settings/other_settings_page.dart
index 65d976708..01bd861b1 100644
--- a/lib/src/screens/settings/other_settings_page.dart
+++ b/lib/src/screens/settings/other_settings_page.dart
@@ -1,3 +1,4 @@
+import 'package:cake_wallet/entities/priority_for_wallet_type.dart';
 import 'package:cake_wallet/generated/i18n.dart';
 import 'package:cake_wallet/routes.dart';
 import 'package:cake_wallet/src/screens/base_page.dart';
@@ -5,8 +6,7 @@ import 'package:cake_wallet/src/screens/settings/widgets/settings_cell_with_arro
 import 'package:cake_wallet/src/screens/settings/widgets/settings_picker_cell.dart';
 import 'package:cake_wallet/src/screens/settings/widgets/settings_version_cell.dart';
 import 'package:cake_wallet/src/widgets/standard_list.dart';
-import 'package:cake_wallet/view_model/settings/settings_view_model.dart';
-import 'package:cw_core/transaction_priority.dart';
+import 'package:cake_wallet/view_model/settings/other_settings_view_model.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_mobx/flutter_mobx.dart';
 
@@ -16,7 +16,7 @@ class OtherSettingsPage extends BasePage {
   @override
   String get title => S.current.other_settings;
 
-  final SettingsViewModel _settingsViewModel;
+  final OtherSettingsViewModel _settingsViewModel;
 
   @override
   Widget body(BuildContext context) {
diff --git a/lib/src/screens/settings/privacy_page.dart b/lib/src/screens/settings/privacy_page.dart
index d8518ce3b..08ab945cc 100644
--- a/lib/src/screens/settings/privacy_page.dart
+++ b/lib/src/screens/settings/privacy_page.dart
@@ -1,7 +1,7 @@
 import 'package:cake_wallet/generated/i18n.dart';
 import 'package:cake_wallet/src/screens/base_page.dart';
 import 'package:cake_wallet/src/screens/settings/widgets/settings_switcher_cell.dart';
-import 'package:cake_wallet/view_model/settings/settings_view_model.dart';
+import 'package:cake_wallet/view_model/settings/privacy_settings_view_model.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_mobx/flutter_mobx.dart';
 
@@ -11,7 +11,7 @@ class PrivacyPage extends BasePage {
   @override
   String get title => S.current.privacy_settings;
 
-  final SettingsViewModel settingsViewModel;
+  final PrivacySettingsViewModel settingsViewModel;
 
   @override
   Widget body(BuildContext context) {
diff --git a/lib/src/screens/settings/security_backup_page.dart b/lib/src/screens/settings/security_backup_page.dart
index d950597f0..633450313 100644
--- a/lib/src/screens/settings/security_backup_page.dart
+++ b/lib/src/screens/settings/security_backup_page.dart
@@ -6,6 +6,7 @@ import 'package:cake_wallet/src/screens/pin_code/pin_code_widget.dart';
 import 'package:cake_wallet/src/screens/settings/widgets/settings_cell_with_arrow.dart';
 import 'package:cake_wallet/src/screens/settings/widgets/settings_switcher_cell.dart';
 import 'package:cake_wallet/src/widgets/standard_list.dart';
+import 'package:cake_wallet/view_model/settings/security_settings_view_model.dart';
 import 'package:cake_wallet/view_model/settings/settings_view_model.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_mobx/flutter_mobx.dart';
@@ -16,7 +17,7 @@ class SecurityBackupPage extends BasePage {
   @override
   String get title => S.current.security_and_backup;
 
-  final SettingsViewModel settingsViewModel;
+  final SecuritySettingsViewModel settingsViewModel;
 
   @override
   Widget body(BuildContext context) {
diff --git a/lib/view_model/send/send_view_model.dart b/lib/view_model/send/send_view_model.dart
index cdef6faba..c673c452d 100644
--- a/lib/view_model/send/send_view_model.dart
+++ b/lib/view_model/send/send_view_model.dart
@@ -1,10 +1,10 @@
 import 'package:cake_wallet/entities/balance_display_mode.dart';
+import 'package:cake_wallet/entities/priority_for_wallet_type.dart';
 import 'package:cake_wallet/entities/transaction_description.dart';
 import 'package:cake_wallet/view_model/dashboard/balance_view_model.dart';
 import 'package:cw_core/transaction_priority.dart';
 import 'package:cake_wallet/view_model/send/output.dart';
 import 'package:cake_wallet/view_model/send/send_template_view_model.dart';
-import 'package:cake_wallet/view_model/settings/settings_view_model.dart';
 import 'package:hive/hive.dart';
 import 'package:mobx/mobx.dart';
 import 'package:cake_wallet/entities/template.dart';
diff --git a/lib/view_model/settings/display_settings_view_model.dart b/lib/view_model/settings/display_settings_view_model.dart
new file mode 100644
index 000000000..3537dfa6e
--- /dev/null
+++ b/lib/view_model/settings/display_settings_view_model.dart
@@ -0,0 +1,63 @@
+import 'package:cake_wallet/entities/balance_display_mode.dart';
+import 'package:cake_wallet/entities/fiat_currency.dart';
+import 'package:cake_wallet/store/settings_store.dart';
+import 'package:cake_wallet/themes/theme_base.dart';
+import 'package:mobx/mobx.dart';
+
+part 'display_settings_view_model.g.dart';
+
+class DisplaySettingsViewModel = DisplaySettingsViewModelBase with _$DisplaySettingsViewModel;
+
+
+abstract class DisplaySettingsViewModelBase with Store {
+  DisplaySettingsViewModelBase(
+      this._settingsStore,
+  );
+
+  final SettingsStore _settingsStore;
+
+  @computed
+  FiatCurrency get fiatCurrency => _settingsStore.fiatCurrency;
+
+  @computed
+  String get languageCode => _settingsStore.languageCode;
+
+
+  @computed
+  BalanceDisplayMode get balanceDisplayMode =>
+      _settingsStore.balanceDisplayMode;
+
+  @computed
+  bool get shouldDisplayBalance => balanceDisplayMode == BalanceDisplayMode.displayableBalance;
+
+  @computed
+  ThemeBase get theme => _settingsStore.currentTheme;
+
+  @action
+  void setBalanceDisplayMode(BalanceDisplayMode value) =>
+      _settingsStore.balanceDisplayMode = value;
+
+  @action
+  void setShouldDisplayBalance(bool value){
+  if (value) {
+    _settingsStore.balanceDisplayMode = BalanceDisplayMode.displayableBalance;
+    } else {
+    _settingsStore.balanceDisplayMode = BalanceDisplayMode.hiddenBalance;
+    }
+  }
+
+  @action
+  void onLanguageSelected (String code) {
+    _settingsStore.languageCode = code;
+  }
+
+  @action
+  void setTheme(ThemeBase newTheme){
+     _settingsStore.currentTheme = newTheme;
+  }
+
+  @action
+  void setFiatCurrency(FiatCurrency value) =>
+      _settingsStore.fiatCurrency = value;
+
+}
\ No newline at end of file
diff --git a/lib/view_model/settings/other_settings_view_model.dart b/lib/view_model/settings/other_settings_view_model.dart
new file mode 100644
index 000000000..b0ba4c9b5
--- /dev/null
+++ b/lib/view_model/settings/other_settings_view_model.dart
@@ -0,0 +1,72 @@
+import 'package:cake_wallet/bitcoin/bitcoin.dart';
+import 'package:cake_wallet/entities/priority_for_wallet_type.dart';
+import 'package:cake_wallet/store/settings_store.dart';
+import 'package:cw_core/balance.dart';
+import 'package:cw_core/transaction_history.dart';
+import 'package:cw_core/transaction_info.dart';
+import 'package:cw_core/transaction_priority.dart';
+import 'package:cw_core/wallet_base.dart';
+import 'package:cw_core/wallet_type.dart';
+import 'package:mobx/mobx.dart';
+import 'package:package_info/package_info.dart';
+
+part 'other_settings_view_model.g.dart';
+
+class OtherSettingsViewModel = OtherSettingsViewModelBase
+    with _$OtherSettingsViewModel;
+
+
+abstract class OtherSettingsViewModelBase with Store {
+  OtherSettingsViewModelBase(this._settingsStore,  WalletBase<Balance, TransactionHistoryBase<TransactionInfo>,
+              TransactionInfo>
+          wallet):
+  walletType = wallet.type,
+  _wallet = wallet,
+  currentVersion = ''{
+     PackageInfo.fromPlatform().then(
+        (PackageInfo packageInfo) => currentVersion = packageInfo.version);
+
+    final priority = _settingsStore.priority[wallet.type];
+    final priorities = priorityForWalletType(wallet.type);
+
+    if (!priorities.contains(priority)) {
+      _settingsStore.priority[wallet.type] = priorities.first;
+  }
+
+   }
+
+     final WalletType walletType;
+  final  WalletBase<Balance, TransactionHistoryBase<TransactionInfo>,
+              TransactionInfo> _wallet;
+
+  @observable
+  String currentVersion;
+
+  final SettingsStore _settingsStore;
+
+  @computed
+  TransactionPriority get transactionPriority {
+    final priority = _settingsStore.priority[walletType];
+
+    if (priority == null) {
+      throw Exception('Unexpected type ${walletType.toString()}');
+    }
+
+    return priority;
+  }
+
+   String getDisplayPriority(dynamic priority) {
+    final _priority = priority as TransactionPriority;
+
+    if (_wallet.type == WalletType.bitcoin
+        || _wallet.type == WalletType.litecoin) {
+      final rate = bitcoin!.getFeeRate(_wallet, _priority);
+      return bitcoin!.bitcoinTransactionPriorityWithLabel(_priority, rate);
+    }
+
+    return priority.toString();
+  }
+
+  void onDisplayPrioritySelected(TransactionPriority priority) =>
+    _settingsStore.priority[_wallet.type] = priority;
+}
\ No newline at end of file
diff --git a/lib/view_model/settings/privacy_settings_view_model.dart b/lib/view_model/settings/privacy_settings_view_model.dart
new file mode 100644
index 000000000..2ea816724
--- /dev/null
+++ b/lib/view_model/settings/privacy_settings_view_model.dart
@@ -0,0 +1,21 @@
+import 'package:cake_wallet/store/settings_store.dart';
+import 'package:mobx/mobx.dart';
+
+part 'privacy_settings_view_model.g.dart';
+
+class PrivacySettingsViewModel = PrivacySettingsViewModelBase
+    with _$PrivacySettingsViewModel;
+
+abstract class PrivacySettingsViewModelBase with Store {
+  PrivacySettingsViewModelBase(this._settingsStore);
+
+  final SettingsStore _settingsStore;
+
+  @computed
+  bool get shouldSaveRecipientAddress =>
+      _settingsStore.shouldSaveRecipientAddress;
+
+  @action
+  void setShouldSaveRecipientAddress(bool value) =>
+      _settingsStore.shouldSaveRecipientAddress = value;
+}
\ No newline at end of file
diff --git a/lib/view_model/settings/security_settings_view_model.dart b/lib/view_model/settings/security_settings_view_model.dart
new file mode 100644
index 000000000..9bf2fb6eb
--- /dev/null
+++ b/lib/view_model/settings/security_settings_view_model.dart
@@ -0,0 +1,29 @@
+import 'package:cake_wallet/entities/biometric_auth.dart';
+import 'package:cake_wallet/store/settings_store.dart';
+import 'package:mobx/mobx.dart';
+
+part 'security_settings_view_model.g.dart';
+
+class SecuritySettingsViewModel = SecuritySettingsViewModelBase
+    with _$SecuritySettingsViewModel;
+
+abstract class SecuritySettingsViewModelBase with Store {
+  SecuritySettingsViewModelBase(this._settingsStore): _biometricAuth = BiometricAuth();
+
+  final BiometricAuth _biometricAuth;
+  final SettingsStore _settingsStore;
+  
+  @computed
+  bool get allowBiometricalAuthentication =>
+      _settingsStore.allowBiometricalAuthentication;
+
+  @action
+  Future<bool> biometricAuthenticated()async{
+   return await _biometricAuth.canCheckBiometrics() && await _biometricAuth.isAuthenticated();
+  }
+
+  @action
+  void setAllowBiometricalAuthentication(bool value) =>
+      _settingsStore.allowBiometricalAuthentication = value;
+
+}
\ No newline at end of file
diff --git a/lib/view_model/settings/settings_view_model.dart b/lib/view_model/settings/settings_view_model.dart
index 7783cd200..1f34d5374 100644
--- a/lib/view_model/settings/settings_view_model.dart
+++ b/lib/view_model/settings/settings_view_model.dart
@@ -1,6 +1,6 @@
+import 'package:cake_wallet/entities/priority_for_wallet_type.dart';
 import 'package:cake_wallet/store/yat/yat_store.dart';
 import 'package:mobx/mobx.dart';
-import 'package:package_info/package_info.dart';
 import 'package:cw_core/wallet_base.dart';
 import 'package:cake_wallet/store/settings_store.dart';
 import 'package:cake_wallet/entities/biometric_auth.dart';
@@ -22,21 +22,6 @@ part 'settings_view_model.g.dart';
 
 class SettingsViewModel = SettingsViewModelBase with _$SettingsViewModel;
 
-List<TransactionPriority> priorityForWalletType(WalletType type) {
-  switch (type) {
-    case WalletType.monero:
-      return monero!.getTransactionPriorities();
-    case WalletType.bitcoin:
-      return bitcoin!.getTransactionPriorities();
-    case WalletType.litecoin:
-      return bitcoin!.getLitecoinTransactionPriorities();
-    case WalletType.haven:
-      return haven!.getTransactionPriorities();
-    default:
-      return [];
-  }
-}
-
 abstract class SettingsViewModelBase with Store {
   SettingsViewModelBase(
       this._settingsStore,
@@ -46,12 +31,8 @@ abstract class SettingsViewModelBase with Store {
           wallet)
       : itemHeaders = {},
         walletType = wallet.type,
-        _wallet = wallet,
-        _biometricAuth = BiometricAuth(),
-        currentVersion = '' {
-    PackageInfo.fromPlatform().then(
-        (PackageInfo packageInfo) => currentVersion = packageInfo.version);
-
+        _wallet = wallet{
+  
     final priority = _settingsStore.priority[wallet.type];
     final priorities = priorityForWalletType(wallet.type);
 
@@ -85,18 +66,9 @@ abstract class SettingsViewModelBase with Store {
 
   }
 
-  @observable
-  String currentVersion;
-
-  @computed
-  Node get node => _settingsStore.getCurrentNode(walletType);
-
   @computed
   FiatCurrency get fiatCurrency => _settingsStore.fiatCurrency;
 
-  @computed
-  String get languageCode => _settingsStore.languageCode;
-
   @computed
   ObservableList<ActionListDisplayMode> get actionlistDisplayMode =>
       _settingsStore.actionlistDisplayMode;
@@ -112,21 +84,6 @@ abstract class SettingsViewModelBase with Store {
     return priority;
   }
 
-  @computed
-  BalanceDisplayMode get balanceDisplayMode =>
-      _settingsStore.balanceDisplayMode;
-
-  @computed
-  bool get shouldDisplayBalance => balanceDisplayMode == BalanceDisplayMode.displayableBalance;
-
-  @computed
-  bool get shouldSaveRecipientAddress =>
-      _settingsStore.shouldSaveRecipientAddress;
-
-  @computed
-  bool get allowBiometricalAuthentication =>
-      _settingsStore.allowBiometricalAuthentication;
-
   @computed
   ThemeBase get theme => _settingsStore.currentTheme;
 
@@ -136,26 +93,13 @@ abstract class SettingsViewModelBase with Store {
   final SettingsStore _settingsStore;
   final YatStore _yatStore;
   final WalletType walletType;
-  final BiometricAuth _biometricAuth;
   final  WalletBase<Balance, TransactionHistoryBase<TransactionInfo>,
               TransactionInfo> _wallet;
 
-  @action
-  void setBalanceDisplayMode(BalanceDisplayMode value) =>
-      _settingsStore.balanceDisplayMode = value;
-
   @action
   void setFiatCurrency(FiatCurrency value) =>
       _settingsStore.fiatCurrency = value;
 
-  @action
-  void setShouldSaveRecipientAddress(bool value) =>
-      _settingsStore.shouldSaveRecipientAddress = value;
-
-  @action
-  void setAllowBiometricalAuthentication(bool value) =>
-      _settingsStore.allowBiometricalAuthentication = value;
-
   @action
   void toggleTransactionsDisplay() =>
       actionlistDisplayMode.contains(ActionListDisplayMode.transactions)
@@ -183,43 +127,4 @@ abstract class SettingsViewModelBase with Store {
   @action
   void _showTrades() => actionlistDisplayMode.add(ActionListDisplayMode.trades);
 
-  @action
-  Future<bool> biometricAuthenticated()async{
-   return await _biometricAuth.canCheckBiometrics() && await _biometricAuth.isAuthenticated();
-  }
-
-  @action
-  void onLanguageSelected (String code) {
-    _settingsStore.languageCode = code;
-  }
-
-  @action
-  void setTheme(ThemeBase newTheme){
-     _settingsStore.currentTheme = newTheme;
-  }
-
-  @action
-  void setShouldDisplayBalance(bool value){
-  if (value) {
-    _settingsStore.balanceDisplayMode = BalanceDisplayMode.displayableBalance;
-    } else {
-    _settingsStore.balanceDisplayMode = BalanceDisplayMode.hiddenBalance;
-    }
-  }
-
-  String getDisplayPriority(dynamic priority) {
-    final _priority = priority as TransactionPriority;
-
-    if (_wallet.type == WalletType.bitcoin
-        || _wallet.type == WalletType.litecoin) {
-      final rate = bitcoin!.getFeeRate(_wallet, _priority);
-      return bitcoin!.bitcoinTransactionPriorityWithLabel(_priority, rate);
-    }
-
-    return priority.toString();
-  }
-
-  void onDisplayPrioritySelected(TransactionPriority priority) =>
-    _settingsStore.priority[_wallet.type] = priority;
-
 }