diff --git a/res/drawable/ic_suggested_notifications.xml b/res/drawable/ic_suggested_notifications.xml
index 5bce000..a696f47 100644
--- a/res/drawable/ic_suggested_notifications.xml
+++ b/res/drawable/ic_suggested_notifications.xml
@@ -19,9 +19,9 @@
         android:viewportWidth="24.0"
         android:viewportHeight="24.0">
     <path
-        android:fillColor="@color/sud_color_accent_light"
+        android:fillColor="?android:attr/colorPrimary"
         android:pathData="M18,17v-6c0,-3.07 -1.63,-5.64 -4.5,-6.32V4c0,-0.83 -0.67,-1.5 -1.5,-1.5S10.5,3.17 10.5,4v0.68C7.64,5.36 6,7.92 6,11v6H4v2h10h0.38H20v-2H18zM16,17H8v-6c0,-2.48 1.51,-4.5 4,-4.5s4,2.02 4,4.5V17z"/>
     <path
-        android:fillColor="@color/sud_color_accent_light"
+        android:fillColor="?android:attr/colorPrimary"
         android:pathData="M12,22c1.1,0 2,-0.9 2,-2h-4C10,21.1 10.9,22 12,22z"/>
 </vector>
diff --git a/res/layout-land/choose_lock_pattern.xml b/res/layout-land/choose_lock_pattern.xml
deleted file mode 100644
index 29c3350..0000000
--- a/res/layout-land/choose_lock_pattern.xml
+++ /dev/null
@@ -1,133 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright (C) 2015 The Android Open Source 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.
--->
-
-<com.google.android.setupdesign.GlifLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:icon="@drawable/ic_lock"
-    android:layout="@layout/sud_glif_blank_template"
-    settings:sucHeaderText="@string/lock_settings_picker_title">
-
-    <com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient
-        android:id="@+id/topLayout"
-        android:clipChildren="false"
-        android:clipToPadding="false"
-        android:orientation="horizontal"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <!-- left side: instructions and messages -->
-        <LinearLayout
-            android:layout_width="0dip"
-            android:layout_height="match_parent"
-            android:layout_weight="1.0"
-            android:layout_marginStart="?attr/sudMarginStart"
-            android:layout_marginBottom="@dimen/sud_content_frame_padding_bottom"
-            android:clipChildren="false"
-            android:clipToPadding="false"
-            android:orientation="vertical">
-
-            <ScrollView
-                android:id="@+id/scroll_layout_title_header"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_weight="1">
-
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="vertical">
-
-                    <ImageView
-                        android:id="@+id/sud_layout_icon"
-                        style="@style/SudGlifIcon"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_gravity="?attr/sudGlifHeaderGravity"
-                        android:layout_marginStart="0dp"
-                        android:layout_marginEnd="0dp"
-                        android:src="@drawable/ic_lock"/>
-
-                    <TextView
-                        android:id="@+id/suc_layout_title"
-                        style="@style/SudGlifHeaderTitle"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginStart="0dp"
-                        android:layout_marginEnd="0dp"/>
-
-                    <TextView
-                        android:id="@+id/sud_layout_description"
-                        style="@style/SudDescription.Glif"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:minLines="2" />
-
-                    <!-- header message -->
-                    <TextView
-                        android:id="@+id/headerText"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginTop="10dp"
-                        android:gravity="?attr/sudGlifHeaderGravity"
-                        android:textSize="18sp"/>
-
-                    <TextView android:id="@+id/footerText"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_centerHorizontal="true"
-                        android:layout_marginTop="10dp"
-                        android:textSize="14sp"
-                        android:visibility="gone" />
-
-                    <Button
-                        android:id="@+id/screen_lock_options"
-                        style="@style/SudGlifButton.Tertiary"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginTop="5dp"
-                        android:gravity="?attr/sudGlifHeaderGravity"
-                        android:text="@string/setup_lock_settings_options_button_label"
-                        android:visibility="gone" />
-
-                </LinearLayout>
-
-            </ScrollView>
-
-        </LinearLayout>
-
-        <!-- right side: lock pattern -->
-        <com.google.android.setupdesign.view.FillContentLayout
-            style="@style/LockPatternContainerStyle"
-            android:layout_width="0dp"
-            android:layout_height="match_parent"
-            android:layout_weight="1.0"
-            android:paddingStart="0dp">
-
-            <com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:layout_gravity="center"
-                android:background="@color/lock_pattern_background" />
-
-        </com.google.android.setupdesign.view.FillContentLayout>
-
-    </com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient>
-
-</com.google.android.setupdesign.GlifLayout>
diff --git a/res/layout/choose_lock_pattern_common.xml b/res/layout/choose_lock_pattern_common.xml
index 46e857b..b238d93 100644
--- a/res/layout/choose_lock_pattern_common.xml
+++ b/res/layout/choose_lock_pattern_common.xml
@@ -18,97 +18,55 @@
 <!-- Used in phone portrait and tablet, as referenced in alias.xml. -->
 <com.google.android.setupdesign.GlifLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:id="@+id/setup_wizard_layout"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:icon="@drawable/ic_lock"
-    android:layout="@layout/sud_glif_blank_template">
+    android:icon="@drawable/ic_lock">
 
+    <!-- takes up all space above button bar at bottom -->
     <com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient
         android:id="@+id/topLayout"
+        style="@style/SudContentFrame"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:gravity="center"
         android:clipChildren="false"
         android:clipToPadding="false"
-        android:orientation="vertical">
+        android:orientation="vertical"
+        android:paddingLeft="0dp"
+        android:paddingRight="0dp">
 
-        <LinearLayout
-            style="@style/SudGlifHeaderContainer"
+        <TextView
+            android:id="@+id/headerText"
+            style="@style/SudDescription.Glif"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:orientation="vertical">
-
-            <ImageView
-                android:id="@+id/sud_layout_icon"
-                style="@style/SudGlifIcon"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:src="@drawable/ic_lock" />
-
-            <TextView
-                android:id="@+id/suc_layout_title"
-                style="@style/SudGlifHeaderTitle"
-                android:accessibilityLiveRegion="polite"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content" />
-
-        </LinearLayout>
-
-        <!-- takes up all space above button bar at bottom -->
-        <LinearLayout
-            style="@style/SudContentFrame"
-            android:layout_width="match_parent"
-            android:layout_height="0dip"
-            android:layout_weight="1"
+            android:minLines="2"
             android:gravity="center"
-            android:clipChildren="false"
-            android:clipToPadding="false"
-            android:orientation="vertical"
-            android:paddingLeft="0dp"
-            android:paddingRight="0dp">
+            android:paddingStart="?attr/sudMarginStart"
+            android:paddingEnd="?attr/sudMarginEnd"/>
 
-            <TextView
-                android:id="@+id/sud_layout_description"
-                style="@style/SudDescription.Glif"
+        <com.google.android.setupdesign.view.FillContentLayout
+            style="@style/LockPatternContainerStyle"
+            android:layout_width="wrap_content"
+            android:layout_height="0dp"
+            android:layout_weight="1">
+
+            <com.android.internal.widget.LockPatternView
+                android:id="@+id/lockPattern"
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginStart="?attr/sudMarginStart"
-                android:layout_marginEnd="?attr/sudMarginEnd"
-                android:minLines="2" />
+                android:layout_height="match_parent"
+                android:layout_gravity="center"/>
 
-            <TextView android:id="@+id/headerText"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:minLines="2"
-                android:gravity="center"
-                android:paddingStart="?attr/sudMarginStart"
-                android:paddingEnd="?attr/sudMarginEnd"
-                android:textSize="12sp" />
-
-            <com.google.android.setupdesign.view.FillContentLayout
-                style="@style/LockPatternContainerStyle"
-                android:layout_width="wrap_content"
-                android:layout_height="0dp"
-                android:layout_weight="1">
-
-                <com.android.internal.widget.LockPatternView
-                    android:id="@+id/lockPattern"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:layout_gravity="center" />
-
-            </com.google.android.setupdesign.view.FillContentLayout>
-
-        </LinearLayout>
+        </com.google.android.setupdesign.view.FillContentLayout>
 
         <TextView android:id="@+id/footerText"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center_horizontal"
-            android:minHeight="50dip"
-            android:textSize="14sp"
-            android:visibility="gone"/>
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content"
+                  android:layout_gravity="center_horizontal"
+                  android:minHeight="50dip"
+                  android:textSize="14sp"
+                  android:visibility="gone"/>
 
         <Button
             android:id="@+id/screen_lock_options"
@@ -116,8 +74,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="@string/setup_lock_settings_options_button_label"
-            android:visibility="gone" />
-
+            android:visibility="gone"/>
     </com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient>
 
 </com.google.android.setupdesign.GlifLayout>
diff --git a/src/com/android/settings/notification/RedactionInterstitial.java b/src/com/android/settings/notification/RedactionInterstitial.java
index 27e2b72..c8d5ffd 100644
--- a/src/com/android/settings/notification/RedactionInterstitial.java
+++ b/src/com/android/settings/notification/RedactionInterstitial.java
@@ -26,7 +26,6 @@
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.content.Intent;
-import android.content.res.Resources;
 import android.os.Bundle;
 import android.os.UserManager;
 import android.provider.Settings;
@@ -50,6 +49,7 @@
 import com.google.android.setupcompat.template.FooterButton;
 import com.google.android.setupcompat.util.WizardManagerHelper;
 import com.google.android.setupdesign.GlifLayout;
+import com.google.android.setupdesign.util.ThemeHelper;
 
 public class RedactionInterstitial extends SettingsActivity {
 
@@ -61,18 +61,14 @@
     }
 
     @Override
-    protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
-        final int new_resid = SetupWizardUtils.getTheme(this, getIntent());
-        super.onApplyThemeResource(theme, new_resid, first);
-    }
-
-    @Override
     protected boolean isValidFragment(String fragmentName) {
         return RedactionInterstitialFragment.class.getName().equals(fragmentName);
     }
 
     @Override
     protected void onCreate(Bundle savedInstance) {
+        setTheme(SetupWizardUtils.getTheme(this, getIntent()));
+        ThemeHelper.trySetDynamicColor(this);
         super.onCreate(savedInstance);
         findViewById(R.id.content_parent).setFitsSystemWindows(false);
     }
diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java
index 6382abf..06b17cd 100644
--- a/src/com/android/settings/password/ChooseLockPassword.java
+++ b/src/com/android/settings/password/ChooseLockPassword.java
@@ -42,7 +42,6 @@
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.content.Intent;
-import android.content.res.Resources.Theme;
 import android.graphics.Insets;
 import android.graphics.Typeface;
 import android.os.Bundle;
@@ -89,6 +88,7 @@
 import com.google.android.setupcompat.template.FooterBarMixin;
 import com.google.android.setupcompat.template.FooterButton;
 import com.google.android.setupdesign.GlifLayout;
+import com.google.android.setupdesign.util.ThemeHelper;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -107,12 +107,6 @@
         return modIntent;
     }
 
-    @Override
-    protected void onApplyThemeResource(Theme theme, int resid, boolean first) {
-        final int new_resid = SetupWizardUtils.getTheme(this, getIntent());
-        super.onApplyThemeResource(theme, new_resid, first);
-    }
-
     public static class IntentBuilder {
 
         private final Intent mIntent;
@@ -207,6 +201,8 @@
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
+        setTheme(SetupWizardUtils.getTheme(this, getIntent()));
+        ThemeHelper.trySetDynamicColor(this);
         super.onCreate(savedInstanceState);
         findViewById(R.id.content_parent).setFitsSystemWindows(false);
     }
diff --git a/src/com/android/settings/password/ChooseLockPattern.java b/src/com/android/settings/password/ChooseLockPattern.java
index 6e5368d..53898a6 100644
--- a/src/com/android/settings/password/ChooseLockPattern.java
+++ b/src/com/android/settings/password/ChooseLockPattern.java
@@ -33,10 +33,8 @@
 import android.util.TypedValue;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
-import android.view.Surface;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.ScrollView;
 import android.widget.TextView;
 
 import androidx.fragment.app.Fragment;
@@ -61,6 +59,8 @@
 import com.google.android.setupcompat.template.FooterBarMixin;
 import com.google.android.setupcompat.template.FooterButton;
 import com.google.android.setupdesign.GlifLayout;
+import com.google.android.setupdesign.template.IconMixin;
+import com.google.android.setupdesign.util.ThemeHelper;
 
 import java.util.Collections;
 import java.util.List;
@@ -94,12 +94,6 @@
         return modIntent;
     }
 
-    @Override
-    protected void onApplyThemeResource(Theme theme, int resid, boolean first) {
-        final int new_resid = SetupWizardUtils.getTheme(this, getIntent());
-        super.onApplyThemeResource(theme, new_resid, first);
-    }
-
     public static class IntentBuilder {
         private final Intent mIntent;
 
@@ -171,7 +165,8 @@
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
-        // requestWindowFeature(Window.FEATURE_NO_TITLE);
+        setTheme(SetupWizardUtils.getTheme(this, getIntent()));
+        ThemeHelper.trySetDynamicColor(this);
         super.onCreate(savedInstanceState);
         findViewById(R.id.content_parent).setFitsSystemWindows(false);
     }
@@ -205,9 +200,7 @@
 
         private LockscreenCredential mCurrentCredential;
         private boolean mRequestGatekeeperPassword;
-        protected TextView mTitleText;
         protected TextView mHeaderText;
-        protected TextView mMessageText;
         protected LockPatternView mLockPatternView;
         protected TextView mFooterText;
         protected FooterButton mSkipOrClearButton;
@@ -215,9 +208,6 @@
         @VisibleForTesting protected LockscreenCredential mChosenPattern;
         private ColorStateList mDefaultHeaderColorList;
 
-        // ScrollView that contains title and header, only exist in land mode
-        private ScrollView mTitleHeaderScrollView;
-
         /**
          * The patten used during the help screen to show how to draw a pattern.
          */
@@ -308,15 +298,6 @@
                     }
                     mFooterText.setText("");
                     mNextButton.setEnabled(false);
-
-                    if (mTitleHeaderScrollView != null) {
-                        mTitleHeaderScrollView.post(new Runnable() {
-                            @Override
-                            public void run() {
-                                mTitleHeaderScrollView.fullScroll(ScrollView.FOCUS_DOWN);
-                            }
-                        });
-                    }
                 }
          };
 
@@ -513,17 +494,12 @@
                 Bundle savedInstanceState) {
             final GlifLayout layout = (GlifLayout) inflater.inflate(
                     R.layout.choose_lock_pattern, container, false);
-            switch(getContext().getDisplay().getRotation()) {
-                case Surface.ROTATION_90:
-                case Surface.ROTATION_270:
-                    layout.setLandscapeHeaderAreaVisible(false /* visible */);
-                    break;
-            }
             updateActivityTitle();
+            layout.setHeaderText(getActivity().getTitle());
             if (getResources().getBoolean(R.bool.config_lock_pattern_minimal_ui)) {
                 View iconView = layout.findViewById(R.id.sud_layout_icon);
                 if (iconView != null) {
-                    iconView.setVisibility(View.GONE);
+                    layout.getMixin(IconMixin.class).setVisibility(View.GONE);
                 }
             } else {
                 if (mForFingerprint) {
@@ -561,10 +537,8 @@
         @Override
         public void onViewCreated(View view, Bundle savedInstanceState) {
             super.onViewCreated(view, savedInstanceState);
-            mTitleText = view.findViewById(R.id.suc_layout_title);
             mHeaderText = (TextView) view.findViewById(R.id.headerText);
             mDefaultHeaderColorList = mHeaderText.getTextColors();
-            mMessageText = view.findViewById(R.id.sud_layout_description);
             mLockPatternView = (LockPatternView) view.findViewById(R.id.lockPattern);
             mLockPatternView.setOnPatternListener(mChooseNewLockPatternListener);
             mLockPatternView.setTactileFeedbackEnabled(
@@ -573,9 +547,6 @@
 
             mFooterText = (TextView) view.findViewById(R.id.footerText);
 
-            mTitleHeaderScrollView = (ScrollView) view.findViewById(R.id
-                    .scroll_layout_title_header);
-
             // make it so unhandled touch events within the unlock screen go to the
             // lock pattern view.
             final LinearLayoutWithDefaultTouchRecepient topLayout
@@ -756,12 +727,13 @@
             } else {
                 mHeaderText.setText(stage.headerMessage);
             }
+            final GlifLayout layout = getActivity().findViewById(R.id.setup_wizard_layout);
             final boolean forAnyBiometric = mForFingerprint || mForFace || mForBiometrics;
             int message = forAnyBiometric ? stage.messageForBiometrics : stage.message;
             if (message == ID_EMPTY_MESSAGE) {
-                mMessageText.setText("");
+                layout.setDescriptionText("");
             } else {
-                mMessageText.setText(message);
+                layout.setDescriptionText(message);
             }
             if (stage.footerMessage == ID_EMPTY_MESSAGE) {
                 mFooterText.setText("");
@@ -782,7 +754,7 @@
 
                 if (stage == Stage.NeedToConfirm && forAnyBiometric) {
                     mHeaderText.setText("");
-                    mTitleText.setText(R.string.lockpassword_draw_your_pattern_again_header);
+                    layout.setHeaderText(R.string.lockpassword_draw_your_pattern_again_header);
                 }
             }
 
diff --git a/src/com/android/settings/password/SetupChooseLockPattern.java b/src/com/android/settings/password/SetupChooseLockPattern.java
index b34863d..70cd6f2 100644
--- a/src/com/android/settings/password/SetupChooseLockPattern.java
+++ b/src/com/android/settings/password/SetupChooseLockPattern.java
@@ -30,6 +30,8 @@
 import com.android.settings.R;
 import com.android.settings.SetupRedactionInterstitial;
 
+import com.google.android.setupdesign.GlifLayout;
+
 /**
  * Setup Wizard's version of ChooseLockPattern screen. It inherits the logic and basic structure
  * from ChooseLockPattern class, and should remain similar to that behaviorally. This class should
@@ -142,10 +144,11 @@
 
             // Show generic pattern message when pattern lock screen launch in Setup wizard flow
             // before fingerprint and face setup.
+            final GlifLayout layout = getActivity().findViewById(R.id.setup_wizard_layout);
             if (stage.message == ID_EMPTY_MESSAGE) {
-                mMessageText.setText("");
+                layout.setDescriptionText("");
             } else {
-                mMessageText.setText(stage.message);
+                layout.setDescriptionText(stage.message);
             }
         }
 
