diff --git a/gui/components/Preferences.qml b/gui/components/Preferences.qml
index e5c48286f92bba995c6d9f47c6dd2072e534c221..481444a0cfd6be53afbc05726d06cce23c434355 100644
--- a/gui/components/Preferences.qml
+++ b/gui/components/Preferences.qml
@@ -1,23 +1,111 @@
 import QtQuick 2.9
 import QtQuick.Controls 2.2
+import QtQuick.Controls.Material 2.1
 
 Page {
     title: qsTr("Preferences")
 
     Column {
-        spacing: 2
-        topPadding: root.width * 0.2
+        id: prefCol
+        // FIXME the checkboxes seem to have a bigger lineHeight themselves, need to pack more.
+        spacing: 1
+        topPadding: root.width * 0.1
         leftPadding: root.width * 0.15
         rightPadding: root.width * 0.15
 
+        Rectangle {
+            id: turnOffWarning
+            visible: false
+            height: 40
+            width: 300
+
+            anchors.horizontalCenter: parent.horizontalCenter
+
+            Label {
+                color: "red"
+                text: qsTr("Turn off the VPN to make changes")
+                width: prefCol.width
+            }
+        }
+
+
         Label {
             text: qsTr("Anti-censorship")
             font.bold: true
         }
 
         CheckBox {
+            id: useBridgesCheckBox
             checked: false
-            text: qsTr("Use Bridges")
+            text: qsTr("Use obfs4 bridges")
         }
+
+        CheckBox {
+            id: useSnowflake
+            checked: false
+            text: qsTr("Use Snowflake (experimental)")
+        }
+
+        Label {
+            text: qsTr("Transport")
+            font.bold: true
+        }
+
+        CheckBox {
+            id: useUDP
+            checked: false
+            text: qsTr("UDP")
+        }
+    }
+
+    StateGroup {
+        state: ctx ? ctx.status : "off"
+        states: [
+            State {
+                name: "on"
+                PropertyChanges {
+                    target: turnOffWarning
+                    visible: true
+                }
+                PropertyChanges {
+                    target: useBridgesCheckBox
+                    checkable: false
+                }
+                PropertyChanges {
+                    target: useUDP
+                    checkable: false
+                }
+            },
+            State {
+                name: "starting"
+                PropertyChanges {
+                    target: turnOffWarning
+                    visible: true
+                }
+                PropertyChanges {
+                    target: useBridgesCheckBox
+                    checkable: false
+                }
+                PropertyChanges {
+                    target: useUDP
+                    checkable: false
+                }
+            },
+            State {
+                name: "off"
+                PropertyChanges {
+                    target: turnOffWarning
+                    visible: false
+                }
+                PropertyChanges {
+                    target: useBridgesCheckBox
+                    checkable: true
+                }
+                PropertyChanges {
+                    target: useUDP
+                    checkable: true
+                }
+            }
+        ]
     }
 }