diff --git a/Android.mk b/Android.mk
index 0955671..dedda01 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,7 +1,7 @@
 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)
 
-LOCAL_MODULE_TAGS := user development
+LOCAL_MODULE_TAGS := user
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 8707dd8..24dda75 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -812,9 +812,15 @@
     <!-- Sound & display settings screen, animations check box label -->
     <string name="animations_title">Animation</string>
     <!-- Sound & display settings screen, animations option summary text when check box is selected -->
-    <string name="animations_summary_on">Show animation when opening/closing windows</string>
+    <string name="animations_summary_on">Show animation when opening &amp; closing windows</string>
     <!-- Sound & display settings screen, animations option summary text when check box is clear -->
-    <string name="animations_summary_off">Show animation when opening/closing windows</string>
+    <string name="animations_summary_off">Show animation when opening &amp; closing windows</string>
+    <!-- Sound & display settings screen, accelerometer-based rotation check box label -->
+    <string name="accelerometer_title">Orientation</string>
+    <!-- Sound & display settings screen, accelerometer-based rotation summary text when check box is selected -->
+    <string name="accelerometer_summary_on">Switch orientation automatically when rotating phone</string>
+    <!-- Sound & display settings screen, accelerometer-based rotation summary text when check box is clear -->
+    <string name="accelerometer_summary_off">Switch orientation automatically when rotating phone</string>
     <!-- Sound & display settings screen, setting option name to change brightness -->
     <string name="brightness">Brightness</string>
     <!-- Sound & display settings screen, setting option summary to change brightness -->
diff --git a/res/xml/sound_and_display_settings.xml b/res/xml/sound_and_display_settings.xml
index 2aa44c8..c8a9360 100644
--- a/res/xml/sound_and_display_settings.xml
+++ b/res/xml/sound_and_display_settings.xml
@@ -97,13 +97,18 @@
     <PreferenceCategory
             android:title="@string/display_settings">
 
+        <CheckBoxPreference 
+            android:key="accelerometer" 
+            android:title="@string/accelerometer_title" 
+            android:summaryOn="@string/accelerometer_summary_on"
+            android:summaryOff="@string/accelerometer_summary_off"/>
+    
         <CheckBoxPreference
                 android:key="animations"
                 android:title="@string/animations_title"
                 android:summaryOn="@string/animations_summary_on"
                 android:summaryOff="@string/animations_summary_off" />
 
-    
         <com.android.settings.BrightnessPreference
                 android:key="brightness"
                 android:title="@string/brightness"
diff --git a/src/com/android/settings/SoundAndDisplaySettings.java b/src/com/android/settings/SoundAndDisplaySettings.java
index 53912e3..2a4e133 100644
--- a/src/com/android/settings/SoundAndDisplaySettings.java
+++ b/src/com/android/settings/SoundAndDisplaySettings.java
@@ -50,6 +50,7 @@
     private static final String KEY_DTMF_TONE = "dtmf_tone";
     private static final String KEY_SOUND_EFFECTS = "sound_effects";
     private static final String KEY_ANIMATIONS = "animations";
+    private static final String KEY_ACCELEROMETER = "accelerometer";
     private static final String KEY_PLAY_MEDIA_NOTIFICATION_SOUNDS = "play_media_notification_sounds";
     
     private CheckBoxPreference mSilent;
@@ -69,6 +70,7 @@
     private CheckBoxPreference mDtmfTone;
     private CheckBoxPreference mSoundEffects;
     private CheckBoxPreference mAnimations;
+    private CheckBoxPreference mAccelerometer;
     private float[] mAnimationScales;
     
     private AudioManager mAudioManager;
@@ -108,6 +110,8 @@
                 Settings.System.SOUND_EFFECTS_ENABLED, 0) != 0);
         mAnimations = (CheckBoxPreference) findPreference(KEY_ANIMATIONS);
         mAnimations.setPersistent(false);
+        mAccelerometer = (CheckBoxPreference) findPreference(KEY_ACCELEROMETER);
+        mAccelerometer.setPersistent(false);
         
         ListPreference screenTimeoutPreference =
             (ListPreference) findPreference(KEY_SCREEN_TIMEOUT);
@@ -174,6 +178,9 @@
         if (animations != mAnimations.isChecked() || force) {
             mAnimations.setChecked(animations);
         }
+        mAccelerometer.setChecked(Settings.System.getInt(
+                getContentResolver(), 
+                Settings.System.ACCELEROMETER_ROTATION, 0) != 0);
     }
 
     @Override
@@ -224,6 +231,11 @@
                 mWindowManager.setAnimationScales(mAnimationScales);
             } catch (RemoteException e) {
             }
+            
+        } else if (preference == mAccelerometer) {
+            Settings.System.putInt(getContentResolver(),
+                    Settings.System.ACCELEROMETER_ROTATION,
+                    mAccelerometer.isChecked() ? 1 : 0);
         }
         return true;
     }
diff --git a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
index a51f9b5e..f1a2a1e4 100644
--- a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
+++ b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
@@ -127,7 +127,10 @@
 
             int timeout = getDiscoverableTimeout();
             manager.setDiscoverableTimeout(timeout);
-            
+
+            mCheckBoxPreference.setSummaryOn(
+                    mContext.getResources().getString(R.string.bluetooth_is_discoverable, timeout));
+
             long endTimestamp = System.currentTimeMillis() + timeout * 1000;
             persistDiscoverableEndTimestamp(endTimestamp);
             
diff --git a/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java b/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
index a1a2af6..50edf86 100644
--- a/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
+++ b/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
@@ -132,6 +132,12 @@
 
         @Override
         public int connect(String address) {
+            List<String> sinks = mService.listConnectedSinks();
+            if (sinks != null) {
+                for (String sinkAddress : sinks) {
+                    mService.disconnectSink(sinkAddress);
+                }
+            }
             return mService.connectSink(address);
         }
 
