diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 4f81a38..c1e8d35 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -62,6 +62,9 @@
 
     private String mHelpUri;
 
+    private static final int ORDER_FIRST = -1;
+    private static final int ORDER_LAST = Integer.MAX_VALUE -1;
+
     // Cache the content resolver for async callbacks
     private ContentResolver mContentResolver;
 
@@ -235,7 +238,7 @@
 
     protected void setHeaderView(int resource) {
         mHeader = new LayoutPreference(getPrefContext(), resource);
-        mHeader.setOrder(-1);
+        mHeader.setOrder(ORDER_FIRST);
         if (getPreferenceScreen() != null) {
             getPreferenceScreen().addPreference(mHeader);
         }
@@ -255,7 +258,7 @@
         }
         if (footer != null) {
             mFooter = footer;
-            mFooter.setOrder(Integer.MAX_VALUE);
+            mFooter.setOrder(ORDER_LAST);
             if (getPreferenceScreen() != null) {
                 getPreferenceScreen().addPreference(mFooter);
             }
diff --git a/src/com/android/settings/applications/LayoutPreference.java b/src/com/android/settings/applications/LayoutPreference.java
index ac1bd3e..1b5a8b5 100644
--- a/src/com/android/settings/applications/LayoutPreference.java
+++ b/src/com/android/settings/applications/LayoutPreference.java
@@ -72,6 +72,10 @@
     public void onBindViewHolder(PreferenceViewHolder view) {
         FrameLayout layout = (FrameLayout) view.itemView;
         layout.removeAllViews();
+        ViewGroup parent = (ViewGroup) mRootView.getParent();
+        if (parent != null) {
+            parent.removeView(mRootView);
+        }
         layout.addView(mRootView);
     }
 
diff --git a/src/com/android/settings/fingerprint/FingerprintSettings.java b/src/com/android/settings/fingerprint/FingerprintSettings.java
index 9e90c00..41e96ca 100644
--- a/src/com/android/settings/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/fingerprint/FingerprintSettings.java
@@ -64,9 +64,12 @@
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.SubSettings;
+import com.android.settingslib.RestrictedLockUtils;
 
 import java.util.List;
 
+import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
 /**
  * Settings screen for fingerprints
  */
@@ -291,21 +294,16 @@
             super.onViewCreated(view, savedInstanceState);
             TextView v = (TextView) LayoutInflater.from(view.getContext()).inflate(
                     R.layout.fingerprint_settings_footer, null);
-            v.setText(LearnMoreSpan.linkify(getText(isFingerprintDisabled()
+            EnforcedAdmin admin = RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(
+                    getActivity(), DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT);
+            v.setText(LearnMoreSpan.linkify(getText(admin != null
                             ? R.string.security_settings_fingerprint_enroll_disclaimer_lockscreen_disabled
                             : R.string.security_settings_fingerprint_enroll_disclaimer),
-                    getString(getHelpResource())));
+                    getString(getHelpResource()), admin));
             v.setMovementMethod(new LinkMovementMethod());
             setFooterView(v);
         }
 
-        private boolean isFingerprintDisabled() {
-            final DevicePolicyManager dpm =
-                    (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
-            return dpm != null && (dpm.getKeyguardDisabledFeatures(null)
-                    & DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT) != 0;
-        }
-
         protected void removeFingerprintPreference(int fingerprintId) {
             String name = genKey(fingerprintId);
             Preference prefToRemove = findPreference(name);
@@ -332,6 +330,7 @@
             addPreferencesFromResource(R.xml.security_settings_fingerprint);
             root = getPreferenceScreen();
             addFingerprintItemPreferences(root);
+            setPreferenceScreen(root);
             return root;
         }
 
@@ -729,19 +728,33 @@
         private static final Typeface TYPEFACE_MEDIUM =
                 Typeface.create("sans-serif-medium", Typeface.NORMAL);
 
+        private static final String ANNOTATION_URL = "url";
+        private static final String ANNOTATION_ADMIN_DETAILS = "admin_details";
+
+        private EnforcedAdmin mEnforcedAdmin = null;
+
         private LearnMoreSpan(String url) {
             super(url);
         }
 
+        private LearnMoreSpan(EnforcedAdmin admin) {
+            super((String) null);
+            mEnforcedAdmin = admin;
+        }
+
         @Override
         public void onClick(View widget) {
             Context ctx = widget.getContext();
-            Intent intent = HelpUtils.getHelpIntent(ctx, getURL(), ctx.getClass().getName());
-            try {
-                ((Activity) ctx).startActivityForResult(intent, 0);
-            } catch (ActivityNotFoundException e) {
-                Log.w(FingerprintSettingsFragment.TAG,
-                        "Actvity was not found for intent, " + intent.toString());
+            if (mEnforcedAdmin != null) {
+                RestrictedLockUtils.sendShowAdminSupportDetailsIntent(ctx, mEnforcedAdmin);
+            } else {
+                Intent intent = HelpUtils.getHelpIntent(ctx, getURL(), ctx.getClass().getName());
+                try {
+                    widget.startActivityForResult(intent, 0);
+                } catch (ActivityNotFoundException e) {
+                    Log.w(FingerprintSettingsFragment.TAG,
+                            "Actvity was not found for intent, " + intent.toString());
+                }
             }
         }
 
@@ -752,15 +765,23 @@
             ds.setTypeface(TYPEFACE_MEDIUM);
         }
 
-        public static CharSequence linkify(CharSequence rawText, String uri) {
+        public static CharSequence linkify(CharSequence rawText, String uri, EnforcedAdmin admin) {
             SpannableString msg = new SpannableString(rawText);
             Annotation[] spans = msg.getSpans(0, msg.length(), Annotation.class);
             SpannableStringBuilder builder = new SpannableStringBuilder(msg);
             for (Annotation annotation : spans) {
+                final String key = annotation.getValue();
                 int start = msg.getSpanStart(annotation);
                 int end = msg.getSpanEnd(annotation);
-                LearnMoreSpan link = new LearnMoreSpan(uri);
-                builder.setSpan(link, start, end, msg.getSpanFlags(link));
+                LearnMoreSpan link = null;
+                if (ANNOTATION_URL.equals(key)) {
+                    link = new LearnMoreSpan(uri);
+                } else if (ANNOTATION_ADMIN_DETAILS.equals(key)) {
+                    link = new LearnMoreSpan(admin);
+                }
+                if (link != null) {
+                    builder.setSpan(link, start, end, msg.getSpanFlags(link));
+                }
             }
             return builder;
         }
diff --git a/src/com/android/settings/notification/ConfigureNotificationSettings.java b/src/com/android/settings/notification/ConfigureNotificationSettings.java
index 3c49d82..a81bb13 100644
--- a/src/com/android/settings/notification/ConfigureNotificationSettings.java
+++ b/src/com/android/settings/notification/ConfigureNotificationSettings.java
@@ -191,7 +191,7 @@
 
     private void setRestrictedIfNotificationFeaturesDisabled(CharSequence entry,
             CharSequence entryValue, int keyguardNotificationFeatures) {
-        EnforcedAdmin admin = RestrictedLockUtils.checkIfKeyguardNotificationFeaturesDisabled(
+        EnforcedAdmin admin = RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(
                 mContext, keyguardNotificationFeatures);
         if (admin != null) {
             RestrictedItem item = new RestrictedItem(entry, entryValue, admin);
diff --git a/src/com/android/settings/notification/RedactionInterstitial.java b/src/com/android/settings/notification/RedactionInterstitial.java
index a00f2fa..1541dfe 100644
--- a/src/com/android/settings/notification/RedactionInterstitial.java
+++ b/src/com/android/settings/notification/RedactionInterstitial.java
@@ -110,7 +110,7 @@
 
         private void checkNotificationFeaturesAndSetDisabled(RestrictedRadioButton button,
                 int keyguardNotifications) {
-            EnforcedAdmin admin = RestrictedLockUtils.checkIfKeyguardNotificationFeaturesDisabled(
+            EnforcedAdmin admin = RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(
                     getActivity(), keyguardNotifications);
             button.setDisabledByAdmin(admin);
         }
