diff --git a/src/com/android/settings/wifi/WifiEnabler.java b/src/com/android/settings/wifi/WifiEnabler.java
index 7ede80d..6c55136 100644
--- a/src/com/android/settings/wifi/WifiEnabler.java
+++ b/src/com/android/settings/wifi/WifiEnabler.java
@@ -58,18 +58,12 @@
     };
 
     public WifiEnabler(Context context, CheckBoxPreference checkBox) {
-        this(context, (WifiManager) context.getSystemService(Context.WIFI_SERVICE),
-                checkBox);
-    }
-    
-    public WifiEnabler(Context context, WifiManager wifiManager,
-            CheckBoxPreference checkBox) {
         mContext = context;
         mCheckBox = checkBox;
-        mWifiManager = wifiManager;
         mOriginalSummary = checkBox.getSummary();
         checkBox.setPersistent(false);
-        
+
+        mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
         mIntentFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
         // The order matters! We really should not depend on this. :(
         mIntentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 25b1cdc..ed170f4 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -110,7 +110,7 @@
             addPreferencesFromResource(R.xml.wifi_access_points);
         } else {
             addPreferencesFromResource(R.xml.wifi_settings);
-            mWifiEnabler = new WifiEnabler(this, mWifiManager,
+            mWifiEnabler = new WifiEnabler(this,
                     (CheckBoxPreference) findPreference("enable_wifi"));
             mNotifyOpenNetworks =
                     (CheckBoxPreference) findPreference("notify_open_networks");
@@ -128,10 +128,10 @@
     @Override
     protected void onResume() {
         super.onResume();
-        registerReceiver(mReceiver, mFilter);
         if (mWifiEnabler != null) {
             mWifiEnabler.resume();
         }
+        registerReceiver(mReceiver, mFilter);
         if (mKeyStoreNetworkId != -1 && KeyStore.getInstance().test() == KeyStore.NO_ERROR) {
             connect(mKeyStoreNetworkId);
         }
@@ -141,10 +141,10 @@
     @Override
     protected void onPause() {
         super.onPause();
-        unregisterReceiver(mReceiver);
         if (mWifiEnabler != null) {
             mWifiEnabler.pause();
         }
+        unregisterReceiver(mReceiver);
         mScanner.pause();
         if (mDialog != null) {
             mDialog.dismiss();
