diff --git a/res/values/strings.xml b/res/values/strings.xml
index 10a18db..e83b8fc 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1208,10 +1208,10 @@
     <string name="wifi_notify_open_networks">Network notification</string>
     <!-- Checkbox summary for option to notify user when open networks are nearby -->
     <string name="wifi_notify_open_networks_summary">Notify me when an open network is available</string>
-    <!-- Checkbox title for option to toggle wifi watchdog service -->
-    <string name="wifi_enable_watchdog_service">Avoid poor connections</string>
-    <!-- Checkbox summary for option to toggle wifi watchdog service -->
-    <string name="wifi_enable_watchdog_service_summary">Don\'t use a Wi-Fi network unless it has a good Internet connection</string>
+    <!-- Checkbox title for option to toggle poor network detection -->
+    <string name="wifi_poor_network_detection">Avoid poor connections</string>
+    <!-- Checkbox summary for option to toggle poor network detection -->
+    <string name="wifi_poor_network_detection_summary">Don\'t use a Wi-Fi network unless it has a good Internet connection</string>
     <!-- Setting title for setting the wifi sleep policy. Do we keep Wi-Fi active when the screen turns off? -->
     <string name="wifi_setting_sleep_policy_title">Keep Wi-Fi on during sleep</string>
     <!-- Generic error message when the sleep policy could not be set. -->
@@ -2340,7 +2340,7 @@
     <!-- Applications settings screen, setting check box title. If checked, the system allows installation of applications that are downloaded from random places, such as web sites.  -->
     <string name="install_applications">Unknown sources</string>
     <!-- Applications settings screen, setting check box summary.  This is the summary for "Unknown sources" checkbox  -->
-    <string name="install_unknown_applications">Allow installation of non-Market apps</string>
+    <string name="install_unknown_applications">Allow installation of apps from unknown sources</string>
     <!-- Applications settings screen, message text of alert that appears if user selects the "Unknown sources" check box -->
     <string name="install_all_warning" product="tablet">Your tablet and personal data are more vulnerable to attack by apps
  from unknown sources. You agree that you are solely responsible for any
diff --git a/res/xml/wifi_advanced_settings.xml b/res/xml/wifi_advanced_settings.xml
index d500ff2..3000666 100644
--- a/res/xml/wifi_advanced_settings.xml
+++ b/res/xml/wifi_advanced_settings.xml
@@ -34,9 +34,9 @@
 
     <!-- android:dependency="enable_wifi" -->
     <CheckBoxPreference
-            android:key="wifi_enable_watchdog_service"
-            android:title="@string/wifi_enable_watchdog_service"
-            android:summary="@string/wifi_enable_watchdog_service_summary"
+            android:key="wifi_poor_network_detection"
+            android:title="@string/wifi_poor_network_detection"
+            android:summary="@string/wifi_poor_network_detection_summary"
             android:persistent="false" />
 
     <ListPreference
diff --git a/src/com/android/settings/wifi/AdvancedWifiSettings.java b/src/com/android/settings/wifi/AdvancedWifiSettings.java
index d8a4080..bb50d2a 100644
--- a/src/com/android/settings/wifi/AdvancedWifiSettings.java
+++ b/src/com/android/settings/wifi/AdvancedWifiSettings.java
@@ -43,7 +43,7 @@
     private static final String KEY_FREQUENCY_BAND = "frequency_band";
     private static final String KEY_NOTIFY_OPEN_NETWORKS = "notify_open_networks";
     private static final String KEY_SLEEP_POLICY = "sleep_policy";
-    private static final String KEY_ENABLE_WIFI_WATCHDOG = "wifi_enable_watchdog_service";
+    private static final String KEY_POOR_NETWORK_DETECTION = "wifi_poor_network_detection";
 
     private WifiManager mWifiManager;
 
@@ -73,16 +73,14 @@
                 Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 0) == 1);
         notifyOpenNetworks.setEnabled(mWifiManager.isWifiEnabled());
 
-        boolean watchdogEnabled = Secure.getInt(getContentResolver(),
-                Secure.WIFI_WATCHDOG_ON, 1) != 0;
-        CheckBoxPreference watchdog =
-            (CheckBoxPreference) findPreference(KEY_ENABLE_WIFI_WATCHDOG);
-        if (watchdog != null) {
-            if (watchdogEnabled) {
-                watchdog.setChecked(Secure.getInt(getContentResolver(),
-                        Secure.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED, 1) == 1);
+        CheckBoxPreference poorNetworkDetection =
+            (CheckBoxPreference) findPreference(KEY_POOR_NETWORK_DETECTION);
+        if (poorNetworkDetection != null) {
+            if (Utils.isWifiOnly(getActivity())) {
+                getPreferenceScreen().removePreference(poorNetworkDetection);
             } else {
-                getPreferenceScreen().removePreference(watchdog);
+                poorNetworkDetection.setChecked(Secure.getInt(getContentResolver(),
+                        Secure.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED, 1) == 1);
             }
         }
 
@@ -146,7 +144,7 @@
             Secure.putInt(getContentResolver(),
                     Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON,
                     ((CheckBoxPreference) preference).isChecked() ? 1 : 0);
-        } else if (KEY_ENABLE_WIFI_WATCHDOG.equals(key)) {
+        } else if (KEY_POOR_NETWORK_DETECTION.equals(key)) {
             Secure.putInt(getContentResolver(),
                     Secure.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED,
                     ((CheckBoxPreference) preference).isChecked() ? 1 : 0);
diff --git a/src/com/android/settings/wifi/p2p/WifiP2pSettings.java b/src/com/android/settings/wifi/p2p/WifiP2pSettings.java
index c181db9..684ec30 100644
--- a/src/com/android/settings/wifi/p2p/WifiP2pSettings.java
+++ b/src/com/android/settings/wifi/p2p/WifiP2pSettings.java
@@ -249,7 +249,6 @@
     public void onResume() {
         super.onResume();
         getActivity().registerReceiver(mReceiver, mIntentFilter);
-        mWifiP2pManager.requestPeers(mChannel, WifiP2pSettings.this);
     }
 
     @Override
@@ -435,6 +434,9 @@
 
             mPeersGroup.setEnabled(true);
             preferenceScreen.addPreference(mPeersGroup);
+
+            /* Request latest set of peers */
+            mWifiP2pManager.requestPeers(mChannel, WifiP2pSettings.this);
         }
     }
 
