diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index df00ad1..3f3cfd7 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -92,7 +92,9 @@
             android:requiredForAllUsers="true"
             android:supportsRtl="true"
             android:allowBackup="false"
-            android:usesCleartextTraffic="true">
+            android:usesCleartextTraffic="true"
+            android:forceDeviceEncrypted="true"
+            android:encryptionAware="true">
 
         <!-- Settings -->
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 56c033f..4b5a0e8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7019,8 +7019,8 @@
     <string name="storage_summary"><xliff:g id="size1" example="8GB">%1$s</xliff:g> of <xliff:g id="size2" example="32GB">%2$s</xliff:g> used</string>
 
     <!-- Summary of display with adaptive brightness on [CHAR LIMIT=NONE] -->
-    <string name="display_summary_on">Adaptive brightness in ON</string>
+    <string name="display_summary_on">Adaptive brightness is ON</string>
 
     <!-- Summary of display with adaptive brightness off [CHAR LIMIT=NONE] -->
-    <string name="display_summary_off">Adaptive brightness in OFF</string>
+    <string name="display_summary_off">Adaptive brightness is OFF</string>
 </resources>
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index af34647..c25d2d3 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -54,6 +54,7 @@
 import android.os.SystemProperties;
 import android.os.UserManager;
 import android.os.storage.IMountService;
+import android.os.storage.StorageManager;
 import android.provider.SearchIndexableResource;
 import android.provider.Settings;
 import android.provider.Settings.Global;
@@ -421,7 +422,7 @@
             IMountService mountService = IMountService.Stub.asInterface(service);
             if (!mountService.isConvertibleToFBE()) {
                 removePreference(KEY_CONVERT_FBE);
-            } else if (mountService.isPerUserEncryptionEnabled()) {
+            } else if ("file".equals(SystemProperties.get("ro.crypto.type", "none"))) {
                 convertFbePreference.setEnabled(false);
                 convertFbePreference.setSummary(getResources()
                                    .getString(R.string.convert_to_file_encryption_done));
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
index b00f98e..fe0bb63 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
@@ -50,7 +50,7 @@
 public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
         implements FingerprintEnrollSidecar.Listener {
 
-    static final String TAG_SIDECAR = "sidecar";
+    private static final String TAG_SIDECAR = "sidecar";
 
     private static final int PROGRESS_BAR_MAX = 10000;
     private static final int FINISH_DELAY = 250;
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java
index 8122d02..63d9335 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java
@@ -23,12 +23,11 @@
 import com.android.internal.logging.MetricsLogger;
 import com.android.settings.ChooseLockSettingsHelper;
 import com.android.settings.R;
-import com.android.settings.fingerprint.FingerprintEnrollSidecar.Listener;
 
 /**
  * Activity explaining the fingerprint sensor location for fingerprint enrollment.
  */
-public class FingerprintEnrollFindSensor extends FingerprintEnrollBase implements Listener {
+public class FingerprintEnrollFindSensor extends FingerprintEnrollBase {
 
     private static final int CONFIRM_REQUEST = 1;
     private static final int ENROLLING = 2;
@@ -36,7 +35,6 @@
 
     private FingerprintLocationAnimationView mAnimation;
     private boolean mLaunchedConfirmLock;
-    private FingerprintEnrollSidecar mSidecar;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -56,14 +54,6 @@
     protected void onStart() {
         super.onStart();
         mAnimation.startAnimation();
-        mSidecar = (FingerprintEnrollSidecar) getFragmentManager().findFragmentByTag(
-                FingerprintEnrollEnrolling.TAG_SIDECAR);
-        if (mSidecar == null) {
-            mSidecar = new FingerprintEnrollSidecar();
-            getFragmentManager().beginTransaction()
-                    .add(mSidecar, FingerprintEnrollEnrolling.TAG_SIDECAR).commit();
-        }
-        mSidecar.setListener(this);
     }
 
     @Override
@@ -135,20 +125,4 @@
     protected int getMetricsCategory() {
         return MetricsLogger.FINGERPRINT_FIND_SENSOR;
     }
-
-    @Override
-    public void onEnrollmentHelp(CharSequence helpString) {
-    }
-
-    @Override
-    public void onEnrollmentError(int errMsgId, CharSequence errString) {
-    }
-
-    @Override
-    public void onEnrollmentProgressChange(int steps, int remaining) {
-        // Activity on the sensor should auto-advance to the enrolling step
-        mSidecar.setListener(null);
-        getFragmentManager().beginTransaction().remove(mSidecar).commit();
-        onNextButtonClick();
-    }
 }
