diff --git a/res/layout/choose_data_sim_page.xml b/res/layout/choose_data_sim_page.xml
index fdac422..0de7e1d 100644
--- a/res/layout/choose_data_sim_page.xml
+++ b/res/layout/choose_data_sim_page.xml
@@ -25,7 +25,8 @@
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        style="@style/SudContentFrame">
 
         <FrameLayout
             android:id="@+id/page"
@@ -43,7 +44,6 @@
                     android:orientation="vertical"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    style="@style/SudContentFrame"
                     android:visibility="gone">
 
                     <TextView
@@ -67,11 +67,10 @@
                 android:visibility="gone" />
         </FrameLayout>
 
-        <com.google.android.setupdesign.view.NavigationBar
+        <org.lineageos.setupwizard.NavigationLayout
             android:id="@+id/navigation_bar"
-            style="@style/SudNavBarTheme"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/sud_navbar_height" />
+            android:layout_height="wrap_content" />
 
     </LinearLayout>
 </com.google.android.setupdesign.GlifLayout>
diff --git a/res/layout/finish_activity.xml b/res/layout/finish_activity.xml
index a80a560..7005063 100644
--- a/res/layout/finish_activity.xml
+++ b/res/layout/finish_activity.xml
@@ -28,7 +28,8 @@
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:orientation="vertical">
+        android:orientation="vertical"
+        style="@style/SudContentFrame">
 
         <ImageView
             android:id="@+id/brand_logo"
@@ -39,14 +40,12 @@
             android:adjustViewBounds="true"
             android:scaleType="fitCenter"
             android:gravity="center"
-            android:padding="@dimen/content_margin_left"
-            style="@style/SudContentFrame"/>
+            android:padding="@dimen/content_margin_left"/>
 
-        <com.google.android.setupdesign.view.NavigationBar
+        <org.lineageos.setupwizard.NavigationLayout
             android:id="@+id/navigation_bar"
-            style="@style/SudNavBarTheme"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/sud_navbar_height" />
+            android:layout_height="wrap_content" />
 
     </LinearLayout>
 
diff --git a/res/layout/intro_restore_activity.xml b/res/layout/intro_restore_activity.xml
index 0936605..a3934a0 100644
--- a/res/layout/intro_restore_activity.xml
+++ b/res/layout/intro_restore_activity.xml
@@ -25,7 +25,8 @@
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        style="@style/SudContentFrame">
 
         <FrameLayout android:id="@+id/page"
             android:layout_width="match_parent"
@@ -39,8 +40,7 @@
                 <LinearLayout
                     android:orientation="vertical"
                     android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    style="@style/SudContentFrame">
+                    android:layout_height="wrap_content">
 
                     <TextView
                         android:layout_width="match_parent"
@@ -48,23 +48,15 @@
                         android:text="@string/intro_restore_subtitle"
                         style="@style/SudItemTitle.GlifDescription" />
 
-                    <Button
-                        android:id="@+id/intro_restore_button"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginTop="24dp"
-                        android:text="@string/intro_restore_button"
-                        style="@style/SudGlifButton.Primary" />
-
                 </LinearLayout>
             </ScrollView>
         </FrameLayout>
 
-        <com.google.android.setupdesign.view.NavigationBar
+        <org.lineageos.setupwizard.NavigationLayout
             android:id="@+id/navigation_bar"
-            style="@style/SudNavBarTheme"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/sud_navbar_height" />
+            android:layout_height="wrap_content"
+            app:showSkipButton="true" />
 
     </LinearLayout>
 </com.google.android.setupdesign.GlifLayout>
diff --git a/res/layout/location_settings.xml b/res/layout/location_settings.xml
index 094bc8b..3771fc3 100644
--- a/res/layout/location_settings.xml
+++ b/res/layout/location_settings.xml
@@ -25,7 +25,8 @@
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        style="@style/SudContentFrame">
 
         <FrameLayout 
             android:id="@+id/page"
@@ -41,8 +42,7 @@
                 <LinearLayout
                     android:orientation="vertical"
                     android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    style="@style/SudContentFrame">
+                    android:layout_height="match_parent">
 
                     <LinearLayout
                         android:id="@+id/location"
@@ -75,11 +75,10 @@
             </ScrollView>
         </FrameLayout>
 
-        <com.google.android.setupdesign.view.NavigationBar
+        <org.lineageos.setupwizard.NavigationLayout
             android:id="@+id/navigation_bar"
-            style="@style/SudNavBarTheme"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/sud_navbar_height" />
+            android:layout_height="wrap_content" />
 
     </LinearLayout>
 </com.google.android.setupdesign.GlifLayout>
diff --git a/res/layout/mobile_data_settings.xml b/res/layout/mobile_data_settings.xml
index 54bbd60..26888c5 100644
--- a/res/layout/mobile_data_settings.xml
+++ b/res/layout/mobile_data_settings.xml
@@ -25,7 +25,8 @@
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        style="@style/SudContentFrame">
 
         <ProgressBar
             android:id="@+id/progress"
@@ -50,8 +51,7 @@
                     android:id="@+id/page_view"
                     android:orientation="vertical"
                     android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    style="@style/SudContentFrame">
+                    android:layout_height="wrap_content">
 
                     <TextView
                         android:id="@+id/mobile_data_summary"
@@ -107,11 +107,10 @@
             </ScrollView>
         </FrameLayout>
 
-        <com.google.android.setupdesign.view.NavigationBar
+        <org.lineageos.setupwizard.NavigationLayout
             android:id="@+id/navigation_bar"
-            style="@style/SudNavBarTheme"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/sud_navbar_height" />
+            android:layout_height="wrap_content" />
 
     </LinearLayout>
 </com.google.android.setupdesign.GlifLayout>
diff --git a/res/layout/navigation_layout.xml b/res/layout/navigation_layout.xml
new file mode 100644
index 0000000..9b56278
--- /dev/null
+++ b/res/layout/navigation_layout.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <Button
+        android:id="@+id/navbar_skip"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentStart="true"
+        android:text="@string/skip"
+        android:visibility="gone"
+        style="@style/SudGlifButton.Secondary" />
+
+    <Button
+        android:id="@+id/navbar_next"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentEnd="true"
+        android:text="@string/next"
+        style="@style/SudGlifButton.Primary" />
+
+</RelativeLayout>
diff --git a/res/layout/setup_biometric.xml b/res/layout/setup_biometric.xml
index 6c7d86d..492a9d7 100644
--- a/res/layout/setup_biometric.xml
+++ b/res/layout/setup_biometric.xml
@@ -25,7 +25,8 @@
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        style="@style/SudContentFrame">
 
         <FrameLayout android:id="@+id/page"
             android:layout_width="match_parent"
@@ -40,8 +41,7 @@
                 <LinearLayout
                     android:orientation="vertical"
                     android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    style="@style/SudContentFrame">
+                    android:layout_height="wrap_content">
 
                     <TextView
                         android:id="@+id/setup_biometric_summary"
@@ -75,22 +75,15 @@
                         android:textSize="16sp"
                         android:textStyle="bold"/>
 
-                    <Button
-                        android:id="@+id/setup_biometric"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:text="@string/biometric_setup_screen_lock_setup"
-                        style="@style/SudGlifButton.Primary" />
-
                 </LinearLayout>
             </ScrollView>
         </FrameLayout>
 
-        <com.google.android.setupdesign.view.NavigationBar
+        <org.lineageos.setupwizard.NavigationLayout
             android:id="@+id/navigation_bar"
-            style="@style/SudNavBarTheme"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/sud_navbar_height" />
+            android:layout_height="wrap_content"
+            app:showSkipButton="true" />
 
     </LinearLayout>
 </com.google.android.setupdesign.GlifLayout>
diff --git a/res/layout/setup_datetime_page.xml b/res/layout/setup_datetime_page.xml
index 304d9f7..f658425 100644
--- a/res/layout/setup_datetime_page.xml
+++ b/res/layout/setup_datetime_page.xml
@@ -25,7 +25,8 @@
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        style="@style/SudContentFrame">
 
         <FrameLayout
             android:id="@+id/page"
@@ -41,8 +42,7 @@
                 <LinearLayout
                     android:orientation="vertical"
                     android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    style="@style/SudContentFrame">
+                    android:layout_height="wrap_content">
 
                     <TextView
                         android:layout_width="match_parent"
@@ -115,11 +115,10 @@
             </ScrollView>
         </FrameLayout>
 
-        <com.google.android.setupdesign.view.NavigationBar
+        <org.lineageos.setupwizard.NavigationLayout
             android:id="@+id/navigation_bar"
-            style="@style/SudNavBarTheme"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/sud_navbar_height" />
+            android:layout_height="wrap_content" />
 
     </LinearLayout>
 </com.google.android.setupdesign.GlifLayout>
diff --git a/res/layout/setup_lineage_settings.xml b/res/layout/setup_lineage_settings.xml
index 3e808ae..a222d5b 100644
--- a/res/layout/setup_lineage_settings.xml
+++ b/res/layout/setup_lineage_settings.xml
@@ -25,7 +25,8 @@
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        style="@style/SudContentFrame">
 
         <FrameLayout
             android:id="@+id/page"
@@ -41,8 +42,7 @@
                 <LinearLayout
                     android:orientation="vertical"
                     android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    style="@style/SudContentFrame">
+                    android:layout_height="match_parent">
 
                     <!-- The caption about privacy policy -->
                     <TextView
@@ -114,11 +114,10 @@
             </ScrollView>
         </FrameLayout>
 
-        <com.google.android.setupdesign.view.NavigationBar
+        <org.lineageos.setupwizard.NavigationLayout
             android:id="@+id/navigation_bar"
-            style="@style/SudNavBarTheme"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/sud_navbar_height" />
+            android:layout_height="wrap_content" />
 
     </LinearLayout>
 </com.google.android.setupdesign.GlifLayout>
diff --git a/res/layout/setup_locale.xml b/res/layout/setup_locale.xml
index 672d4f2..9af6d00 100644
--- a/res/layout/setup_locale.xml
+++ b/res/layout/setup_locale.xml
@@ -25,14 +25,14 @@
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:orientation="vertical">
+        android:orientation="vertical"
+        style="@style/SudContentFrame">
 
         <RelativeLayout
             android:layout_width="match_parent"
             android:layout_height="0dp"
             android:layout_weight="1"
-            android:gravity="center"
-            style="@style/SudContentFrame">
+            android:gravity="center">
 
             <org.lineageos.setupwizard.widget.LocalePicker
                 android:id="@+id/locale_list"
@@ -46,11 +46,10 @@
 
         </RelativeLayout>
     
-        <com.google.android.setupdesign.view.NavigationBar
+        <org.lineageos.setupwizard.NavigationLayout
             android:id="@+id/navigation_bar"
-            style="@style/SudNavBarTheme"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/sud_navbar_height" />
+            android:layout_height="wrap_content" />
             
     </LinearLayout>
 </com.google.android.setupdesign.GlifLayout>
diff --git a/res/layout/setup_lockscreen.xml b/res/layout/setup_lockscreen.xml
index 299cc05..895b06f 100644
--- a/res/layout/setup_lockscreen.xml
+++ b/res/layout/setup_lockscreen.xml
@@ -25,7 +25,8 @@
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        style="@style/SudContentFrame">
 
         <FrameLayout android:id="@+id/page"
             android:layout_width="match_parent"
@@ -41,8 +42,7 @@
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:paddingStart="@dimen/content_margin_left"
-                    android:paddingEnd="@dimen/content_margin_left"
-                    style="@style/SudContentFrame">
+                    android:paddingEnd="@dimen/content_margin_left">
 
                     <TextView
                         android:layout_width="match_parent"
@@ -50,23 +50,15 @@
                         android:text="@string/lockscreen_setup_summary"
                         style="@style/SudItemTitle.GlifDescription" />
 
-                    <Button
-                        android:id="@+id/setup_lockscreen"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginTop="24dp"
-                        android:text="@string/lockscreen_setup_screen_lock_setup"
-                        style="@style/SudGlifButton.Primary" />
-
                 </LinearLayout>
             </ScrollView>
         </FrameLayout>
 
-        <com.google.android.setupdesign.view.NavigationBar
+        <org.lineageos.setupwizard.NavigationLayout
             android:id="@+id/navigation_bar"
-            style="@style/SudNavBarTheme"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/sud_navbar_height" />
+            android:layout_height="wrap_content"
+            app:showSkipButton="true" />
 
     </LinearLayout>
 </com.google.android.setupdesign.GlifLayout>
diff --git a/res/layout/sim_missing_page.xml b/res/layout/sim_missing_page.xml
index f53a080..5c15a6d 100644
--- a/res/layout/sim_missing_page.xml
+++ b/res/layout/sim_missing_page.xml
@@ -25,7 +25,8 @@
     <LinearLayout 
         android:orientation="vertical"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        style="@style/SudContentFrame">
 
         <FrameLayout
             android:id="@+id/page"
@@ -36,8 +37,7 @@
             <LinearLayout
                 android:orientation="vertical"
                 android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                style="@style/SudContentFrame">
+                android:layout_height="match_parent">
 
                 <TextView
                     android:layout_width="match_parent"
@@ -57,11 +57,10 @@
             </LinearLayout>
         </FrameLayout>
 
-        <com.google.android.setupdesign.view.NavigationBar
+        <org.lineageos.setupwizard.NavigationLayout
             android:id="@+id/navigation_bar"
-            style="@style/SudNavBarTheme"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/sud_navbar_height" />
+            android:layout_height="wrap_content" />
 
     </LinearLayout>
 </com.google.android.setupdesign.GlifLayout>
diff --git a/res/layout/update_recovery_page.xml b/res/layout/update_recovery_page.xml
index 0f91393..de7fec4 100644
--- a/res/layout/update_recovery_page.xml
+++ b/res/layout/update_recovery_page.xml
@@ -25,7 +25,8 @@
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        style="@style/SudContentFrame">
 
         <FrameLayout
             android:id="@+id/page"
@@ -41,8 +42,7 @@
                 <LinearLayout
                     android:orientation="vertical"
                     android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    style="@style/SudContentFrame">
+                    android:layout_height="match_parent">
 
                     <TextView
                         android:layout_width="match_parent"
@@ -86,11 +86,10 @@
             </ScrollView>
         </FrameLayout>
 
-        <com.google.android.setupdesign.view.NavigationBar
+        <org.lineageos.setupwizard.NavigationLayout
             android:id="@+id/navigation_bar"
-            style="@style/SudNavBarTheme"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/sud_navbar_height" />
+            android:layout_height="wrap_content" />
 
     </LinearLayout>
 </com.google.android.setupdesign.GlifLayout>
diff --git a/res/layout/welcome_activity.xml b/res/layout/welcome_activity.xml
index 0515c95..1aa834f 100644
--- a/res/layout/welcome_activity.xml
+++ b/res/layout/welcome_activity.xml
@@ -25,7 +25,8 @@
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        style="@style/SudContentFrame">
 
         <ImageView
             android:id="@+id/brand_logo"
@@ -36,14 +37,12 @@
             android:adjustViewBounds="true"
             android:scaleType="fitCenter"
             android:gravity="center"
-            android:padding="@dimen/content_margin_left"
-            style="@style/SudContentFrame" />
+            android:padding="@dimen/content_margin_left" />
           
-        <com.google.android.setupdesign.view.NavigationBar
+        <org.lineageos.setupwizard.NavigationLayout
             android:id="@+id/navigation_bar"
-            style="@style/SudNavBarTheme"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/sud_navbar_height" />
+            android:layout_height="wrap_content" />
 
     </LinearLayout>
 </com.google.android.setupdesign.GlifLayout>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 4bf723f..b5fdee8 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -32,4 +32,8 @@
         <attr name="internalLayout" format="reference" />
         <attr name="virtualButtonPressedDrawable" format="reference"/>
     </declare-styleable>
+
+    <declare-styleable name="NavigationLayout">
+        <attr name="showSkipButton" format="boolean" />
+    </declare-styleable>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index f2b4f86..fca98ca 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -21,31 +21,6 @@
         <item name="android:paddingLeft">@dimen/content_margin_left</item>
     </style>
 
-    <style name="ButtonBar" parent="@android:style/Widget.Material.ActionButton">
-        <item name="android:layout_height">56dp</item>
-        <item name="android:textSize">16sp</item>
-        <item name="android:textAllCaps">true</item>
-        <item name="android:maxLines">1</item>
-        <item name="android:minWidth">15dp</item>
-        <item name="android:minHeight">15dp</item>
-        <item name="android:textColor">@color/button_bar_text</item>
-        <item name="android:fontFamily">sans-serif</item>
-        <item name="android:drawablePadding">6dp</item>
-        <item name="android:ellipsize">end</item>
-    </style>
-
-    <style name="ButtonBar.Left">
-        <item name="android:paddingStart">34dp</item>
-        <item name="android:gravity">center_vertical|start</item>
-        <item name="android:drawableLeft">@drawable/ic_chevron_left_dark</item>
-    </style>
-
-    <style name="ButtonBar.Right">
-        <item name="android:paddingEnd">34dp</item>
-        <item name="android:gravity">center_vertical|end</item>
-        <item name="android:drawableRight">@drawable/ic_chevron_right_dark</item>
-    </style>
-
     <style name="LocaleWidget">
         <item name="android:textAppearance">?android:attr/textAppearance</item>
     </style>
diff --git a/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java b/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java
index 512e75b..d27a5f6 100644
--- a/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java
+++ b/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java
@@ -56,12 +56,10 @@
 
 import com.android.settingslib.Utils;
 
-import com.google.android.setupdesign.view.NavigationBar;
-import com.google.android.setupdesign.view.NavigationBar.NavigationBarListener;
-import com.google.android.setupcompat.util.SystemBarHelper;
 import com.google.android.setupcompat.util.WizardManagerHelper;
 import com.google.android.setupdesign.GlifLayout;
 
+import org.lineageos.setupwizard.NavigationLayout.NavigationBarListener;
 import org.lineageos.setupwizard.util.SetupWizardUtils;
 
 import java.util.List;
@@ -83,11 +81,11 @@
     protected static final int BIOMETRIC_ACTIVITY_REQUEST = 10101;
     protected static final int SCREENLOCK_ACTIVITY_REQUEST = 10102;
 
-    private static final int IMMERSIVE_FLAGS =
-            View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
-    private int mSystemUiFlags = IMMERSIVE_FLAGS | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
+    private static final int IMMERSIVE_FLAGS = View.STATUS_BAR_DISABLE_HOME
+            | View.STATUS_BAR_DISABLE_RECENT;
+    private int mSystemUiFlags = IMMERSIVE_FLAGS;
 
-    private NavigationBar mNavigationBar;
+    private NavigationLayout mNavigationBar;
 
     protected boolean mIsActivityVisible = false;
     protected boolean mIsExiting = false;
@@ -96,6 +94,7 @@
     private boolean mIsPrimaryUser;
     protected int mResultCode = 0;
     private Intent mResultData;
+
     private final BroadcastReceiver finishReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -121,11 +120,6 @@
         mNavigationBar = getNavigationBar();
         if (mNavigationBar != null) {
             mNavigationBar.setNavigationBarListener(this);
-            mNavigationBar.addOnLayoutChangeListener((View view,
-                    int left, int top, int right, int bottom,
-                    int oldLeft, int oldTop, int oldRight, int oldBottom) -> {
-                view.requestApplyInsets();
-            });
             mNavigationBar.setSystemUiVisibility(mSystemUiFlags);
             // Set the UI flags before draw because the visibility might change in unexpected /
             // undetectable times, like transitioning from a finishing activity that had a keyboard
@@ -237,59 +231,9 @@
      * @return The navigation bar instance in the layout, or null if the layout does not have a
      *     navigation bar.
      */
-    public NavigationBar getNavigationBar() {
+    public NavigationLayout getNavigationBar() {
         final View view = findViewById(R.id.navigation_bar);
-        return view instanceof NavigationBar ? (NavigationBar) view : null;
-    }
-
-    /**
-     * Sets whether system navigation bar should be hidden.
-     * @param useImmersiveMode True to activate immersive mode and hide the system navigation bar
-     */
-    public void setUseImmersiveMode(boolean useImmersiveMode) {
-        // By default, enable layoutHideNavigation if immersive mode is used
-        setUseImmersiveMode(useImmersiveMode, useImmersiveMode);
-    }
-
-    public void setUseImmersiveMode(boolean useImmersiveMode, boolean layoutHideNavigation) {
-        if (useImmersiveMode) {
-            mSystemUiFlags |= IMMERSIVE_FLAGS;
-            if (layoutHideNavigation) {
-                mSystemUiFlags |= View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
-            }
-        } else {
-            mSystemUiFlags &= ~(IMMERSIVE_FLAGS | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
-        }
-        if (mNavigationBar != null) {
-            mNavigationBar.setSystemUiVisibility(mSystemUiFlags);
-        }
-    }
-
-    protected void setBackDrawable(Drawable drawable) {
-        if (mNavigationBar != null) {
-            mNavigationBar.getBackButton().setCompoundDrawables(drawable, null, null, null);
-        }
-    }
-
-    protected void setNextDrawable(Drawable drawable) {
-        if (mNavigationBar != null) {
-            mNavigationBar.getBackButton().setCompoundDrawables(null, null, drawable, null);
-        }
-    }
-
-    public void setBackAllowed(boolean allowed) {
-        SystemBarHelper.setBackButtonVisible(getWindow(), allowed);
-        if (mNavigationBar != null) {
-            Button backButton = mNavigationBar.getBackButton();
-            backButton.setEnabled(allowed);
-        }
-    }
-
-    protected boolean isBackAllowed() {
-        if (mNavigationBar != null) {
-            mNavigationBar.getBackButton().isEnabled();
-        }
-        return false;
+        return view instanceof NavigationLayout ? (NavigationLayout) view : null;
     }
 
     public void setNextAllowed(boolean allowed) {
@@ -309,15 +253,19 @@
         nextAction(NEXT_REQUEST);
     }
 
+    protected void onSkipPressed() {
+        nextAction(NEXT_REQUEST);
+    }
+
     protected void setNextText(int resId) {
         if (mNavigationBar != null) {
             mNavigationBar.getNextButton().setText(resId);
         }
     }
 
-    protected void setBackText(int resId) {
+    protected void setSkipText(int resId) {
         if (mNavigationBar != null) {
-            mNavigationBar.getBackButton().setText(resId);
+            mNavigationBar.getSkipButton().setText(resId);
         }
     }
 
@@ -351,6 +299,10 @@
         onNextPressed();
     }
 
+    public void onSkip() {
+        onSkipPressed();
+    }
+
     protected void startEmergencyDialer() {
         try {
             startFirstRunActivityForResult(new Intent(ACTION_EMERGENCY_DIAL),
@@ -528,15 +480,6 @@
         }
     }
 
-    protected void hideBackButton() {
-        if (mNavigationBar != null) {
-            Animation fadeOut = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);
-            final Button back = mNavigationBar.getBackButton();
-            back.startAnimation(fadeOut);
-            back.setVisibility(INVISIBLE);
-        }
-    }
-
     protected int getTransition() {
         return TRANSITION_ID_SLIDE;
     }
diff --git a/src/org/lineageos/setupwizard/BiometricActivity.java b/src/org/lineageos/setupwizard/BiometricActivity.java
index 0eaaa26..510bc46 100644
--- a/src/org/lineageos/setupwizard/BiometricActivity.java
+++ b/src/org/lineageos/setupwizard/BiometricActivity.java
@@ -51,9 +51,13 @@
     }
 
     @Override
+    protected void onNextPressed() {
+        launchBiometricSetup();
+    }
+
+    @Override
     protected void onStartSubactivity() {
         setNextAllowed(true);
-        findViewById(R.id.setup_biometric).setOnClickListener(view -> launchBiometricSetup());
     }
 
     @Override
diff --git a/src/org/lineageos/setupwizard/FinishActivity.java b/src/org/lineageos/setupwizard/FinishActivity.java
index 4eeaeb9..6937454 100644
--- a/src/org/lineageos/setupwizard/FinishActivity.java
+++ b/src/org/lineageos/setupwizard/FinishActivity.java
@@ -111,7 +111,6 @@
         sendBroadcastAsUser(i, getCallingUserHandle(), FINISH_SETUP);
 
         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
-        hideBackButton();
         hideNextButton();
         finishSetup();
     }
diff --git a/src/org/lineageos/setupwizard/NavigationLayout.java b/src/org/lineageos/setupwizard/NavigationLayout.java
new file mode 100644
index 0000000..daa837f
--- /dev/null
+++ b/src/org/lineageos/setupwizard/NavigationLayout.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2021 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.lineageos.setupwizard;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.Button;
+import android.widget.RelativeLayout;
+
+public class NavigationLayout extends RelativeLayout {
+    /*
+     * An interface to listen to events of the navigation bar,
+     * namely when the user clicks on the back or next button.
+     */
+    public interface NavigationBarListener {
+        void onNavigateBack();
+        void onNavigateNext();
+        void onSkip();
+    }
+
+    private final Button mNextButton;
+    private final Button mSkipButton;
+
+    public NavigationLayout(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        View.inflate(context, R.layout.navigation_layout, this);
+        mNextButton = findViewById(R.id.navbar_next);
+        mSkipButton = findViewById(R.id.navbar_skip);
+
+        TypedArray a = context.getTheme().obtainStyledAttributes(
+             attrs, R.styleable.NavigationLayout, 0, 0);
+        final boolean showSkipButton;
+        try {
+            showSkipButton = a.getBoolean(
+                    R.styleable.NavigationLayout_showSkipButton, false);
+        } finally {
+            a.recycle();
+        }
+
+        if (showSkipButton) {
+            mSkipButton.setVisibility(View.VISIBLE);
+        }
+    }
+
+    public Button getSkipButton() {
+        return mSkipButton;
+    }
+
+    public Button getNextButton() {
+        return mNextButton;
+    }
+
+    public void setNavigationBarListener(NavigationBarListener listener) {
+        mSkipButton.setOnClickListener(view -> listener.onSkip());
+        mNextButton.setOnClickListener(view -> listener.onNavigateNext());
+    }
+}
diff --git a/src/org/lineageos/setupwizard/ScreenLockActivity.java b/src/org/lineageos/setupwizard/ScreenLockActivity.java
index 92fa528..74b1062 100644
--- a/src/org/lineageos/setupwizard/ScreenLockActivity.java
+++ b/src/org/lineageos/setupwizard/ScreenLockActivity.java
@@ -24,8 +24,8 @@
 
 import android.app.KeyguardManager;
 import android.content.Intent;
+import android.os.Bundle;
 import android.util.Log;
-import android.view.View;
 
 import org.lineageos.setupwizard.util.SetupWizardUtils;
 
@@ -34,6 +34,11 @@
     public static final String TAG = ScreenLockActivity.class.getSimpleName();
 
     @Override
+    protected void onNextPressed() {
+        launchLockscreenSetup();
+    }
+
+    @Override
     protected void onStartSubactivity() {
         if (isKeyguardSecure()) {
             Log.v(TAG, "Screen lock already set up; skipping ScreenLockActivity");
@@ -43,12 +48,6 @@
             return;
         }
         setNextAllowed(true);
-        findViewById(R.id.setup_lockscreen).setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                launchLockscreenSetup();
-            }
-        });
     }
 
     @Override
diff --git a/src/org/lineageos/setupwizard/WelcomeActivity.java b/src/org/lineageos/setupwizard/WelcomeActivity.java
index 7f6aac2..3fef20d 100644
--- a/src/org/lineageos/setupwizard/WelcomeActivity.java
+++ b/src/org/lineageos/setupwizard/WelcomeActivity.java
@@ -35,8 +35,7 @@
         super.onCreate(savedInstanceState);
         mRootView = findViewById(R.id.setup_wizard_layout);
         setNextText(R.string.next);
-        setBackText(R.string.emergency_call);
-        setBackDrawable(null);
+        setSkipText(R.string.emergency_call);
         mEnableAccessibilityController =
                 EnableAccessibilityController.getInstance(getApplicationContext());
         mRootView.setOnTouchListener((v, event) ->
@@ -48,6 +47,11 @@
     public void onBackPressed() {}
 
     @Override
+    public void onSkip() {
+        startEmergencyDialer();
+    }
+
+    @Override
     public void onNavigateBack() {
         startEmergencyDialer();
     }
diff --git a/src/org/lineageos/setupwizard/backup/RestoreIntroActivity.java b/src/org/lineageos/setupwizard/backup/RestoreIntroActivity.java
index b0ee807..aa10d97 100644
--- a/src/org/lineageos/setupwizard/backup/RestoreIntroActivity.java
+++ b/src/org/lineageos/setupwizard/backup/RestoreIntroActivity.java
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2019-2020 The Calyx Institute
- * Copyright (C) 2020 The LineageOS Project
+ * Copyright (C) 2020-2021 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,6 +22,7 @@
 
 import com.google.android.setupcompat.util.WizardManagerHelper;
 
+import org.lineageos.setupwizard.NavigationLayout;
 import org.lineageos.setupwizard.R;
 import org.lineageos.setupwizard.SubBaseActivity;
 
@@ -33,12 +34,15 @@
     @Override
     protected void onStartSubactivity() {
         setNextAllowed(true);
-
-        findViewById(R.id.intro_restore_button).setOnClickListener(v -> launchRestore());
     }
 
     @Override
     protected void onNextPressed() {
+        launchRestore();
+    }
+
+    @Override
+    protected void onSkipPressed() {
         Intent intent = WizardManagerHelper.getNextIntent(getIntent(), Activity.RESULT_OK);
         nextAction(NEXT_REQUEST, intent);
     }
