diff --git a/src/app/settingsview/SettingsView.qml b/src/app/settingsview/SettingsView.qml
index 68dbb17b2f9fe3e0c99b3a603adc695bb03876d2..1021282aa40da9b001bb610b294246c201da703e 100644
--- a/src/app/settingsview/SettingsView.qml
+++ b/src/app/settingsview/SettingsView.qml
@@ -36,23 +36,24 @@ ListSelectionView {
     id: viewNode
     objectName: "SettingsView"
 
-    enum SettingsMenu {
-        ManageAccount,
-        CustomizeProfile,
-        LinkedDevices,
-        AdvancedSettings,
-        System,
-        CallSettings,
-        Appearence,
-        LocationSharing,
-        FileTransfer,
-        CallRecording,
-        Troubleshoot,
-        Update,
-        Audio,
-        Video,
-        Screensharing,
-        Plugin
+    // A map of view names to file paths for QML files that define each view.
+    property variant resources: {
+        "ManageAccountPage": Qt.resolvedUrl("components/ManageAccountPage.qml"),
+        "CustomizeProfilePage": Qt.resolvedUrl("components/CustomizeProfilePage.qml"),
+        "LinkedDevicesPage": Qt.resolvedUrl("components/LinkedDevicesPage.qml"),
+        "CallSettingsPage": Qt.resolvedUrl("components/CallSettingsPage.qml"),
+        "AdvancedSettingsPage": Qt.resolvedUrl("components/AdvancedSettingsPage.qml"),
+        "SystemSettingsPage": Qt.resolvedUrl("components/SystemSettingsPage.qml"),
+        "AppearenceSettingsPage": Qt.resolvedUrl("components/AppearenceSettingsPage.qml"),
+        "LocationSharingSettingsPage": Qt.resolvedUrl("components/LocationSharingSettingsPage.qml"),
+        "FileTransferSettingsPage": Qt.resolvedUrl("components/FileTransferSettingsPage.qml"),
+        "CallRecordingSettingsPage": Qt.resolvedUrl("components/CallRecordingSettingsPage.qml"),
+        "TroubleshootSettingsPage": Qt.resolvedUrl("components/TroubleshootSettingsPage.qml"),
+        "UpdatesSettingsPage": Qt.resolvedUrl("components/UpdatesSettingsPage.qml"),
+        "AudioSettingsPage": Qt.resolvedUrl("components/AudioSettingsPage.qml"),
+        "VideoSettingsPage": Qt.resolvedUrl("components/VideoSettingsPage.qml"),
+        "ScreenSharingSettingsPage": Qt.resolvedUrl("components/ScreenSharingSettingsPage.qml"),
+        "PluginSettingsPage": Qt.resolvedUrl("components/PluginSettingsPage.qml"),
     }
 
     splitViewStateKey: "Main"
@@ -83,50 +84,71 @@ ListSelectionView {
         }
     }
 
-    rightPaneItem: StackLayout {
-        id: settingsViewRect
+    rightPaneItem: StackView {
+        id: settingsView
+        objectName: "settingsView"
 
-        currentIndex: selectedMenu !== -1 ? selectedMenu : 0
+        property var currentIndex: selectedMenu !== -1 ? selectedMenu : 0
         anchors.fill: parent
 
         signal stopBooth
 
-        property bool isSIP: CurrentAccount.type === Profile.Type.SIP
+        initialItem: ManageAccountPage {}
+
+        onCurrentIndexChanged: {
+
+            switch(currentIndex) {
+                default:
+                case 0:
+                    replace(currentItem, viewNode.resources["ManageAccountPage"], StackView.Immediate)
+                    break
+                case 1:
+                    replace(currentItem, viewNode.resources["CustomizeProfilePage"], StackView.Immediate)
+                    break
+                case 2:
+                    replace(currentItem, viewNode.resources["LinkedDevicesPage"], StackView.Immediate)
+                    break
+                case 3:
+                    replace(currentItem, viewNode.resources["CallSettingsPage"], StackView.Immediate)
+                    break
+                case 4:
+                    replace(currentItem, viewNode.resources["AdvancedSettingsPage"], StackView.Immediate)
+                    break
+                case 5:
+                    replace(currentItem, viewNode.resources["SystemSettingsPage"], StackView.Immediate)
+                    break
+                case 6:
+                    replace(currentItem, viewNode.resources["AppearenceSettingsPage"], StackView.Immediate)
+                    break
+                case 7:
+                    replace(currentItem, viewNode.resources["LocationSharingSettingsPage"], StackView.Immediate)
+                    break
+                case 8:
+                    replace(currentItem, viewNode.resources["FileTransferSettingsPage"], StackView.Immediate)
+                    break
+                case 9:
+                    replace(currentItem, viewNode.resources["CallRecordingSettingsPage"], StackView.Immediate)
+                    break
+                case 10:
+                    replace(currentItem, viewNode.resources["TroubleshootSettingsPage"], StackView.Immediate)
+                    break
+                case 11:
+                    replace(currentItem, viewNode.resources["UpdatesSettingsPage"], StackView.Immediate)
+                    break
+                case 12:
+                    replace(currentItem, viewNode.resources["AudioSettingsPage"], StackView.Immediate)
+                    break
+                case 13:
+                    replace(currentItem, viewNode.resources["VideoSettingsPage"], StackView.Immediate)
+                    break
+                case 14:
+                    replace(currentItem, viewNode.resources["ScreenSharingSettingsPage"], StackView.Immediate)
+                    break
+                case 15:
+                    replace(currentItem, viewNode.resources["PluginSettingsPage"], StackView.Immediate)
+                    break
+            }
 
-        ManageAccountPage {
-            isSIP: settingsViewRect.isSIP
-            onNavigateToMainView: dismiss()
-            onNavigateToNewWizardView: dismiss()
         }
-
-        CustomizeProfilePage {}
-
-        LinkedDevicesPage {}
-
-        CallSettingsPage {}
-
-        AdvancedSettingsPage {}
-
-        SystemSettingsPage {}
-
-        AppearenceSettingsPage {}
-
-        LocationSharingSettingsPage {}
-
-        FileTransferSettingsPage{}
-
-        CallRecordingSettingsPage {}
-
-        TroubleshootSettingsPage {}
-
-        UpdatesSettingsPage {}
-
-        AudioSettingsPage {}
-
-        VideoSettingsPage {}
-
-        ScreenSharingSettingsPage {}
-
-        PluginSettingsPage {}
     }
 }
diff --git a/src/app/settingsview/components/AdvancedSettingsPage.qml b/src/app/settingsview/components/AdvancedSettingsPage.qml
index 7d0b314407dd827a316ace74ba1fb8afa447cf82..f27549db069032524955fd3d7c8160c1c42979fc 100644
--- a/src/app/settingsview/components/AdvancedSettingsPage.qml
+++ b/src/app/settingsview/components/AdvancedSettingsPage.qml
@@ -33,9 +33,6 @@ SettingsPageBase {
     property int itemWidth
     signal showAdvancedSettingsRequest
 
-    signal navigateToMainView
-    signal navigateToNewWizardView
-
     title: JamiStrings.advancedSettingsTitle
 
     flickableContent: ColumnLayout {
diff --git a/src/app/settingsview/components/AppearenceSettingsPage.qml b/src/app/settingsview/components/AppearenceSettingsPage.qml
index 8bfb5e6eee6e8312fcb64a58f9a8a3f659cc031b..860daa76592845aa5e7116ac3fe8f4a054d1e0c5 100644
--- a/src/app/settingsview/components/AppearenceSettingsPage.qml
+++ b/src/app/settingsview/components/AppearenceSettingsPage.qml
@@ -36,9 +36,6 @@ SettingsPageBase {
 
     property int itemWidth: 188
 
-    signal navigateToMainView
-    signal navigateToNewWizardView
-
     title: JamiStrings.appearence
 
     flickableContent: ColumnLayout {
diff --git a/src/app/settingsview/components/AudioSettingsPage.qml b/src/app/settingsview/components/AudioSettingsPage.qml
index 067130fcd600982fccf6d47a803d53d5e1be3bd0..de2e919f3a2ee964487863d4ecb548352d29e345 100644
--- a/src/app/settingsview/components/AudioSettingsPage.qml
+++ b/src/app/settingsview/components/AudioSettingsPage.qml
@@ -30,9 +30,6 @@ SettingsPageBase {
     id: root
 
     property int itemWidth: 188
-
-    signal navigateToMainView
-    signal navigateToNewWizardView
     title: JamiStrings.audio
 
     flickableContent: ColumnLayout {
diff --git a/src/app/settingsview/components/CallRecordingSettingsPage.qml b/src/app/settingsview/components/CallRecordingSettingsPage.qml
index d8f72b5327669ea60ed852c44ba4d6fdab0e168a..352d164d0323b79042d3f534b8bda5503a00e68d 100644
--- a/src/app/settingsview/components/CallRecordingSettingsPage.qml
+++ b/src/app/settingsview/components/CallRecordingSettingsPage.qml
@@ -38,9 +38,6 @@ SettingsPageBase {
     property string screenshotPathBestName: UtilsAdapter.dirName(UtilsAdapter.getDirScreenshot())
 
     property int itemWidth: 188
-
-    signal navigateToMainView
-    signal navigateToNewWizardView
     title: JamiStrings.callRecording
 
     onRecordPathChanged: {
diff --git a/src/app/settingsview/components/CallSettingsPage.qml b/src/app/settingsview/components/CallSettingsPage.qml
index 6c30770daddc91d1ff9d6835027e537a31d53c93..b23db21ff24e59bd2042c1a0f4ca72c6ccda8561 100644
--- a/src/app/settingsview/components/CallSettingsPage.qml
+++ b/src/app/settingsview/components/CallSettingsPage.qml
@@ -37,9 +37,6 @@ SettingsPageBase {
 
     property bool isSIP
     property int itemWidth: 132
-
-    signal navigateToMainView
-    signal navigateToNewWizardView
     title: JamiStrings.callSettingsTitle
 
     function updateAndShowModeratorsSlot() {
diff --git a/src/app/settingsview/components/CustomizeProfilePage.qml b/src/app/settingsview/components/CustomizeProfilePage.qml
index 932b63b28463ad1b8ac61bef37a98029d1c83251..dbb053ac27f95192bbf5b5fed8d527d4c03c2734 100644
--- a/src/app/settingsview/components/CustomizeProfilePage.qml
+++ b/src/app/settingsview/components/CustomizeProfilePage.qml
@@ -30,8 +30,6 @@ import "../../commoncomponents"
 SettingsPageBase {
     id: root
 
-    signal navigateToMainView
-    signal navigateToNewWizardView
     title: JamiStrings.customizeProfile
 
     function stopBooth() {
@@ -53,7 +51,7 @@ SettingsPageBase {
             Layout.preferredWidth: parent.width
 
             Connections {
-                target: settingsViewRect
+                target: settingsView
 
                 function onStopBooth() {
                     stopBooth()
diff --git a/src/app/settingsview/components/FileTransferSettingsPage.qml b/src/app/settingsview/components/FileTransferSettingsPage.qml
index c2c0a7e22990ec1ab5b8d6d363f13da61706876f..4db804f226adcc92ca1c4b518e1a8fe399e8f5c7 100644
--- a/src/app/settingsview/components/FileTransferSettingsPage.qml
+++ b/src/app/settingsview/components/FileTransferSettingsPage.qml
@@ -32,9 +32,6 @@ SettingsPageBase {
     id: root
 
     property int itemWidth: 164
-
-    signal navigateToMainView
-    signal navigateToNewWizardView
     title: JamiStrings.fileTransfer
 
 
diff --git a/src/app/settingsview/components/LinkedDevicesPage.qml b/src/app/settingsview/components/LinkedDevicesPage.qml
index 74c26b95d4143792573b29c035776507ec0ab33b..f9de7c82f2ff2337f98ff3313fcc58b53aa39f6b 100644
--- a/src/app/settingsview/components/LinkedDevicesPage.qml
+++ b/src/app/settingsview/components/LinkedDevicesPage.qml
@@ -32,11 +32,8 @@ import "../../commoncomponents"
 SettingsPageBase {
     id: root
 
-    signal navigateToMainView
-    signal navigateToNewWizardView
     title: JamiStrings.linkedDevicesSettingsTitle
 
-
     flickableContent: ColumnLayout {
         id: currentAccountEnableColumnLayout
 
diff --git a/src/app/settingsview/components/LocationSharingSettingsPage.qml b/src/app/settingsview/components/LocationSharingSettingsPage.qml
index 9c5479cdd73740e34bd093c0846bd985d55ef0f8..0f84707d5e3c52e0ef91785112e51784e48d1336 100644
--- a/src/app/settingsview/components/LocationSharingSettingsPage.qml
+++ b/src/app/settingsview/components/LocationSharingSettingsPage.qml
@@ -36,9 +36,6 @@ SettingsPageBase {
     id: root
 
     property int itemWidth: 578
-
-    signal navigateToMainView
-    signal navigateToNewWizardView
     title: JamiStrings.locationSharingLabel
 
 
diff --git a/src/app/settingsview/components/ManageAccountPage.qml b/src/app/settingsview/components/ManageAccountPage.qml
index 807cf3a39c41af973746a818b4b51a805eb05557..f25d2eb286ce8f1a0c740d2818c9ea4872ec6534 100644
--- a/src/app/settingsview/components/ManageAccountPage.qml
+++ b/src/app/settingsview/components/ManageAccountPage.qml
@@ -31,11 +31,12 @@ import "../../commoncomponents"
 SettingsPageBase {
     id: root
 
-    property bool isSIP
+    property bool isSIP: CurrentAccount.type === Profile.Type.SIP
     property int itemWidth: 250
-
     signal navigateToMainView
-    signal navigateToNewWizardView
+
+    onNavigateToMainView: viewNode.dismiss()
+
     title: JamiStrings.manageAccountSettingsTitle
 
     flickableContent: ColumnLayout {
diff --git a/src/app/settingsview/components/ScreenSharingSettingsPage.qml b/src/app/settingsview/components/ScreenSharingSettingsPage.qml
index 171d26ca92d27205ffe7c65126f0309825d2c033..756dae08a2f3b9c43fd94d1c30dd22287b346f22 100644
--- a/src/app/settingsview/components/ScreenSharingSettingsPage.qml
+++ b/src/app/settingsview/components/ScreenSharingSettingsPage.qml
@@ -34,8 +34,6 @@ SettingsPageBase {
 
     property int itemWidth: 150
 
-    signal navigateToMainView
-    signal navigateToNewWizardView
     title: JamiStrings.screenSharing
 
     flickableContent: ColumnLayout {
diff --git a/src/app/settingsview/components/SettingsPageBase.qml b/src/app/settingsview/components/SettingsPageBase.qml
index 8ddfeaee018540baa05a7fe9c28ab49d7c20602f..c5adeca43623dafabf6eedf0e11e02589e257abe 100644
--- a/src/app/settingsview/components/SettingsPageBase.qml
+++ b/src/app/settingsview/components/SettingsPageBase.qml
@@ -62,5 +62,6 @@ Page {
         contentItem.children: [flickableContent]
         topMargin: JamiTheme.preferredSettingsBottomMarginSize
         bottomMargin: JamiTheme.preferredSettingsBottomMarginSize
+        ScrollBar.horizontal.visible: false
     }
 }
diff --git a/src/app/settingsview/components/SystemSettingsPage.qml b/src/app/settingsview/components/SystemSettingsPage.qml
index bed6a358f29ab3bc795c8d3f2ad55f9ba048e159..17ef1c8e364b16d377ce3361c94b57e4595f6985 100644
--- a/src/app/settingsview/components/SystemSettingsPage.qml
+++ b/src/app/settingsview/components/SystemSettingsPage.qml
@@ -37,8 +37,6 @@ SettingsPageBase {
 
     property bool isSIP
 
-    signal navigateToMainView
-    signal navigateToNewWizardView
     title: JamiStrings.system
 
 
diff --git a/src/app/settingsview/components/TroubleshootSettingsPage.qml b/src/app/settingsview/components/TroubleshootSettingsPage.qml
index 7e2332272a60e534e24569b7159e3c206e58ce33..8e8154fc93269e6b4f7b846b1f423d3cbdedc612 100644
--- a/src/app/settingsview/components/TroubleshootSettingsPage.qml
+++ b/src/app/settingsview/components/TroubleshootSettingsPage.qml
@@ -35,8 +35,6 @@ SettingsPageBase {
 
     property int itemWidth
 
-    signal navigateToMainView
-    signal navigateToNewWizardView
     title: JamiStrings.troubleshootTitle
 
 
diff --git a/src/app/settingsview/components/UpdatesSettingsPage.qml b/src/app/settingsview/components/UpdatesSettingsPage.qml
index ce4fa733ae6c2e4264703050c6dd84464c8a4107..35155d008f4864bb9f034475a504a6275cc4c733 100644
--- a/src/app/settingsview/components/UpdatesSettingsPage.qml
+++ b/src/app/settingsview/components/UpdatesSettingsPage.qml
@@ -34,8 +34,6 @@ import "../../commoncomponents"
 SettingsPageBase {
     id: root
 
-    signal navigateToMainView
-    signal navigateToNewWizardView
     title: JamiStrings.updatesTitle
 
     function presentInfoDialog(infoText) {
diff --git a/src/app/settingsview/components/VideoSettingsPage.qml b/src/app/settingsview/components/VideoSettingsPage.qml
index c093404fcb51195801f4065612049a71b4e1e03a..61768b950f519f041cc89ddceeaf0e08f5050d8c 100644
--- a/src/app/settingsview/components/VideoSettingsPage.qml
+++ b/src/app/settingsview/components/VideoSettingsPage.qml
@@ -36,9 +36,6 @@ SettingsPageBase {
 
     property int itemWidth: 266
     property real aspectRatio: 0.75
-
-    signal navigateToMainView
-    signal navigateToNewWizardView
     title: JamiStrings.video
 
     flickableContent: ColumnLayout {
@@ -63,17 +60,6 @@ SettingsPageBase {
                 previewWidget.startWithId(VideoDevices.getDefaultDevice(), force)
             }
 
-            onVisibleChanged: {
-                flipControl.checked = UtilsAdapter.getAppValue(Settings.FlipSelf)
-                if (visible) {
-                    hardwareAccelControl.checked = AvAdapter.getHardwareAcceleration()
-                    if (previewWidget.visible)
-                        generalSettings.startPreviewing(true)
-                } else {
-                    previewWidget.startWithId("")
-                }
-            }
-
             Connections {
                 target: VideoDevices
 
@@ -114,6 +100,17 @@ SettingsPageBase {
                 }
             }
 
+            Component.onCompleted: {
+                flipControl.checked = UtilsAdapter.getAppValue(Settings.FlipSelf)
+                hardwareAccelControl.checked = AvAdapter.getHardwareAcceleration()
+                if (previewWidget.visible)
+                    startPreviewing(true)
+            }
+
+            Component.onDestruction: {
+                previewWidget.startWithId("")
+            }
+
             // video Preview
             Rectangle {
                 visible: VideoDevices.listSize !== 0