diff --git a/res/xml/device_picker.xml b/res/xml/device_picker.xml
index 43b5829..9fef34d 100644
--- a/res/xml/device_picker.xml
+++ b/res/xml/device_picker.xml
@@ -21,7 +21,7 @@
         android:key="bt_scan"
         android:title="@string/bluetooth_preference_scan_title" />
 
-    <com.android.settings.ProgressCategory
+    <com.android.settings.bluetooth.BluetoothProgressCategory
         android:key="bt_device_list"
         android:title="@string/bluetooth_preference_found_devices"
         android:orderingFromXml="false" />
diff --git a/res/xml/wifi_access_points.xml b/res/xml/wifi_access_points.xml
index 48104dd..7b8c92b 100644
--- a/res/xml/wifi_access_points.xml
+++ b/res/xml/wifi_access_points.xml
@@ -17,7 +17,7 @@
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
         android:title="@string/wifi_settings_category">
 
-    <com.android.settings.ProgressCategory
+    <com.android.settings.bluetooth.BluetoothProgressCategory
             android:key="access_points"
             android:title="@string/wifi_access_points"
             android:persistent="false" />
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 705ce55..b6a2beb 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -706,8 +706,8 @@
     }
 
     private void updateOverlayDisplayDevicesOptions() {
-        String value = Settings.System.getString(getActivity().getContentResolver(),
-                Settings.Secure.OVERLAY_DISPLAY_DEVICES);
+        String value = Settings.Global.getString(getActivity().getContentResolver(),
+                Settings.Global.OVERLAY_DISPLAY_DEVICES);
         if (value == null) {
             value = "";
         }
@@ -725,8 +725,8 @@
     }
 
     private void writeOverlayDisplayDevicesOptions(Object newValue) {
-        Settings.System.putString(getActivity().getContentResolver(),
-                Settings.Secure.OVERLAY_DISPLAY_DEVICES, (String)newValue);
+        Settings.Global.putString(getActivity().getContentResolver(),
+                Settings.Global.OVERLAY_DISPLAY_DEVICES, (String)newValue);
         updateOverlayDisplayDevicesOptions();
     }
 
diff --git a/src/com/android/settings/bluetooth/BluetoothProgressCategory.java b/src/com/android/settings/bluetooth/BluetoothProgressCategory.java
new file mode 100644
index 0000000..1c81360
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BluetoothProgressCategory.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.bluetooth;
+
+import com.android.settings.ProgressCategory;
+import com.android.settings.R;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+public class BluetoothProgressCategory extends ProgressCategory {
+    public BluetoothProgressCategory(Context context, AttributeSet attrs) {
+        super(context, attrs, R.string.bluetooth_no_devices_found);
+    }
+}
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index 0765d8f..e9ba39d 100755
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -282,8 +282,7 @@
 
                 // Available devices category
                 if (mAvailableDevicesCategory == null) {
-                    mAvailableDevicesCategory = new ProgressCategory(getActivity(), null,
-                            R.string.bluetooth_no_devices_found);
+                    mAvailableDevicesCategory = new BluetoothProgressCategory(getActivity(), null);
                 } else {
                     mAvailableDevicesCategory.removeAll();
                 }
diff --git a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
index 90f8de5..7fc1b65 100644
--- a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
+++ b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
@@ -193,8 +193,8 @@
     }
 
     private void updateProgressUi(boolean start) {
-        if (mDeviceListGroup instanceof ProgressCategory) {
-            ((ProgressCategory) mDeviceListGroup).setProgress(start);
+        if (mDeviceListGroup instanceof BluetoothProgressCategory) {
+            ((BluetoothProgressCategory) mDeviceListGroup).setProgress(start);
         }
     }
 
diff --git a/src/com/android/settings/wifi/AdvancedWifiSettings.java b/src/com/android/settings/wifi/AdvancedWifiSettings.java
index f574808..ac664e2 100644
--- a/src/com/android/settings/wifi/AdvancedWifiSettings.java
+++ b/src/com/android/settings/wifi/AdvancedWifiSettings.java
@@ -70,8 +70,8 @@
     private void initPreferences() {
         CheckBoxPreference notifyOpenNetworks =
             (CheckBoxPreference) findPreference(KEY_NOTIFY_OPEN_NETWORKS);
-        notifyOpenNetworks.setChecked(Secure.getInt(getContentResolver(),
-                Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 0) == 1);
+        notifyOpenNetworks.setChecked(Settings.Global.getInt(getContentResolver(),
+                Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 0) == 1);
         notifyOpenNetworks.setEnabled(mWifiManager.isWifiEnabled());
 
         CheckBoxPreference poorNetworkDetection =
@@ -148,7 +148,7 @@
 
         if (KEY_NOTIFY_OPEN_NETWORKS.equals(key)) {
             Secure.putInt(getContentResolver(),
-                    Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON,
+                    Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON,
                     ((CheckBoxPreference) preference).isChecked() ? 1 : 0);
         } else if (KEY_POOR_NETWORK_DETECTION.equals(key)) {
             Secure.putInt(getContentResolver(),
