diff --git a/lib/src/screens/settings/connection_sync_page.dart b/lib/src/screens/settings/connection_sync_page.dart
index bec2e6296..5ef878bdd 100644
--- a/lib/src/screens/settings/connection_sync_page.dart
+++ b/lib/src/screens/settings/connection_sync_page.dart
@@ -8,6 +8,7 @@ import 'package:cake_wallet/utils/feature_flag.dart';
 import 'package:cake_wallet/utils/show_pop_up.dart';
 import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart';
 import 'package:cake_wallet/view_model/settings/sync_mode.dart';
+import 'package:cake_wallet/view_model/settings/tor_connection.dart';
 import 'package:flutter/material.dart';
 import 'package:cake_wallet/routes.dart';
 import 'package:cake_wallet/generated/i18n.dart';
@@ -89,17 +90,31 @@ class ConnectionSyncPage extends BasePage {
             ),
             const StandardListSeparator(padding: EdgeInsets.symmetric(horizontal: 24)),
           ],
-          if (FeatureFlag.isInAppTorEnabled)
-            SettingsCellWithArrow(
-              title: S.current.tor_connection,
-              handler: (context) => Navigator.of(context).pushNamed(Routes.torPage),
+          if (FeatureFlag.isInAppTorEnabled) ...[
+            Observer(builder: (context) {
+              return SettingsPickerCell<TorConnection>(
+                title: S.current.background_sync_mode,
+                items: TorConnection.all,
+                displayItem: (TorConnection torConnection) => torConnection.name,
+                selectedItem: dashboardViewModel.torConnection,
+                onItemSelected: dashboardViewModel.setTorConnection,
+              );
+            }),
+            Container(
+              color: Colors.amber, // TODO: CW-519 change
+              child: Column(children: [
+                SettingsCellWithArrow(
+                  title: S.current.tor_connection,
+                  handler: (context) => Navigator.of(context).pushNamed(Routes.torPage),
+                ),
+              ]),
             ),
+          ],
         ],
       ),
     );
   }
 
-
   Future<void> _presentReconnectAlert(BuildContext context) async {
     await showPopUp<void>(
       context: context,
diff --git a/lib/src/screens/settings/widgets/settings_tor_status.dart b/lib/src/screens/settings/widgets/settings_tor_status.dart
new file mode 100644
index 000000000..180942f84
--- /dev/null
+++ b/lib/src/screens/settings/widgets/settings_tor_status.dart
@@ -0,0 +1,67 @@
+import 'package:cake_wallet/routes.dart';
+import 'package:cake_wallet/src/screens/nodes/widgets/node_indicator.dart';
+import 'package:cake_wallet/src/widgets/standard_list.dart';
+import 'package:cake_wallet/themes/extensions/receive_page_theme.dart';
+import 'package:cw_core/node.dart';
+import 'package:flutter/material.dart';
+import 'package:cake_wallet/themes/extensions/filter_theme.dart';
+
+class NodeListRow extends StandardListRow {
+  NodeListRow(
+      {required String title,
+      required this.node,
+      required void Function(BuildContext context) onTap,
+      required bool isSelected,
+      required this.isPow})
+      : super(title: title, onTap: onTap, isSelected: isSelected);
+
+  final Node node;
+  final bool isPow;
+
+  @override
+  Widget buildLeading(BuildContext context) {
+    return FutureBuilder(
+        future: node.requestNode(),
+        builder: (context, snapshot) {
+          switch (snapshot.connectionState) {
+            case ConnectionState.done:
+              return NodeIndicator(isLive: (snapshot.data as bool?) ?? false);
+            default:
+              return NodeIndicator(isLive: false);
+          }
+        });
+  }
+
+  @override
+  Widget buildTrailing(BuildContext context) {
+    return GestureDetector(
+        onTap: () => Navigator.of(context).pushNamed(isPow ? Routes.newPowNode : Routes.newNode,
+            arguments: {'editingNode': node, 'isSelected': isSelected}),
+        child: Container(
+            padding: EdgeInsets.all(10),
+            decoration: BoxDecoration(
+                shape: BoxShape.circle,
+                color: Theme.of(context)
+                                  .extension<ReceivePageTheme>()!
+                                  .iconsBackgroundColor),
+            child: Icon(Icons.edit,
+                size: 14,
+                color: Theme.of(context)
+                                  .extension<ReceivePageTheme>()!
+                                  .iconsColor)));
+  }
+}
+
+class NodeHeaderListRow extends StandardListRow {
+  NodeHeaderListRow({required String title, required void Function(BuildContext context) onTap})
+      : super(title: title, onTap: onTap, isSelected: false);
+
+  @override
+  Widget buildTrailing(BuildContext context) {
+    return SizedBox(
+      width: 20,
+      child: Icon(Icons.add,
+          color: Theme.of(context).extension<FilterTheme>()!.titlesColor,size: 24.0),
+    );
+  }
+}
diff --git a/lib/store/settings_store.dart b/lib/store/settings_store.dart
index f71282b5a..314583210 100644
--- a/lib/store/settings_store.dart
+++ b/lib/store/settings_store.dart
@@ -19,6 +19,7 @@ import 'package:cake_wallet/exchange/provider/trocador_exchange_provider.dart';
 import 'package:cake_wallet/view_model/settings/sync_mode.dart';
 import 'package:cake_wallet/utils/device_info.dart';
 import 'package:cake_wallet/ethereum/ethereum.dart';
+import 'package:cake_wallet/view_model/settings/tor_connection.dart';
 import 'package:cw_core/transaction_priority.dart';
 import 'package:cake_wallet/themes/theme_base.dart';
 import 'package:cake_wallet/themes/theme_list.dart';
@@ -671,6 +672,9 @@ abstract class SettingsStoreBase with Store {
   @observable
   SyncMode currentSyncMode;
 
+  @observable
+  TorConnection currentTorConnection;
+
   @observable
   bool currentSyncAll;
 
diff --git a/lib/view_model/dashboard/dashboard_view_model.dart b/lib/view_model/dashboard/dashboard_view_model.dart
index a794c2262..55db250c2 100644
--- a/lib/view_model/dashboard/dashboard_view_model.dart
+++ b/lib/view_model/dashboard/dashboard_view_model.dart
@@ -27,6 +27,7 @@ import 'package:cake_wallet/view_model/dashboard/order_list_item.dart';
 import 'package:cake_wallet/view_model/dashboard/trade_list_item.dart';
 import 'package:cake_wallet/view_model/dashboard/transaction_list_item.dart';
 import 'package:cake_wallet/view_model/settings/sync_mode.dart';
+import 'package:cake_wallet/view_model/settings/tor_connection.dart';
 import 'package:cake_wallet/wallet_type_utils.dart';
 import 'package:cryptography/cryptography.dart';
 import 'package:cw_core/balance.dart';
@@ -460,6 +461,12 @@ abstract class DashboardViewModelBase with Store {
   @action
   void setSyncMode(SyncMode syncMode) => settingsStore.currentSyncMode = syncMode;
 
+  @computed
+  TorConnection get torConnection => settingsStore.currentTorConnection;
+
+  @action
+  void setTorConnection(TorConnection torConnection) => settingsStore.currentTorConnection = torConnection;
+
   @computed
   bool get syncAll => settingsStore.currentSyncAll;
 
diff --git a/lib/view_model/settings/tor_connection.dart b/lib/view_model/settings/tor_connection.dart
new file mode 100644
index 000000000..c0dc628bb
--- /dev/null
+++ b/lib/view_model/settings/tor_connection.dart
@@ -0,0 +1,14 @@
+enum TorConnectionType { enabled, disabled, onionOnly }
+
+class TorConnection {
+  TorConnection(this.name, this.type);
+
+  final String name;
+  final TorConnectionType type;
+
+  static final all = [
+    TorConnection("Enabled", TorConnectionType.enabled),
+    TorConnection("Disabled", TorConnectionType.disabled),
+    TorConnection("Onion Only", TorConnectionType.onionOnly),
+  ];
+}