diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 33d96b7..b8eb133 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -352,7 +352,7 @@
         </activity>
 
         <activity android:name=".EnableWifiTether"
-            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
+            android:theme="@style/Transparent"
             android:excludeFromRecents="true" />
 
         <activity android:name="Settings$TetherSettingsActivity"
diff --git a/src/com/android/settings/EnableWifiTether.java b/src/com/android/settings/EnableWifiTether.java
index a67250d..329d92e 100644
--- a/src/com/android/settings/EnableWifiTether.java
+++ b/src/com/android/settings/EnableWifiTether.java
@@ -38,31 +38,16 @@
         super.onCreate(icicle);
         mProvisionApp = getResources().getStringArray(
                 com.android.internal.R.array.config_mobile_hotspot_provision_app);
-        setContentView(R.layout.settings_main_dashboard);
-        startProvisioningIfNecessary();
+        startProvisioning();
     }
 
-    private static boolean isProvisioningNeeded(String[] provisionApp) {
-        if (SystemProperties.getBoolean("net.tethering.noprovisioning", false)
-                || provisionApp == null) {
-            return false;
-        }
-        return (provisionApp.length == 2);
-    }
-
-    private void startProvisioningIfNecessary() {
-
-        if (isProvisioningNeeded(mProvisionApp)) {
-            Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
-            sendBroadcast(closeDialog);
-            Intent intent = new Intent(Intent.ACTION_MAIN);
-            intent.setClassName(mProvisionApp[0], mProvisionApp[1]);
-            intent.putExtra(TETHER_CHOICE, WIFI_TETHERING);
-            startActivityForResult(intent, PROVISION_REQUEST);
-        } else {
-            enableTethering();
-            finish();
-        }
+    private void startProvisioning() {
+        Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
+        sendBroadcast(closeDialog);
+        Intent intent = new Intent(Intent.ACTION_MAIN);
+        intent.setClassName(mProvisionApp[0], mProvisionApp[1]);
+        intent.putExtra(TETHER_CHOICE, WIFI_TETHERING);
+        startActivityForResult(intent, PROVISION_REQUEST);
     }
 
     public void onActivityResult(int requestCode, int resultCode, Intent intent) {
@@ -72,8 +57,8 @@
             if (resultCode == Activity.RESULT_OK) {
                 enableTethering();
             }
+            finish();
         }
-        finish();
     }
 
     private void enableTethering() {
