diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index f83aa20e10c67fe045b791394c732f71c834488d..ac52cff49a801542d4a6f120d13b8c3858db1441 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -12734,5 +12734,16 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+     <key>AllowBottomTrayButtonReordering</key>
+    <map>
+      <key>Comment</key>
+      <string>Allow user to move and hide bottom tray buttons</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
+    </map>
 </map>
 </llsd>
diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml
index bb022b7b112b929acb4fe48c56f5607420eeba0f..d3f0ec5dad65535b7cff6f98e5d0ea60edc491c1 100644
--- a/indra/newview/app_settings/settings_minimal.xml
+++ b/indra/newview/app_settings/settings_minimal.xml
@@ -124,7 +124,7 @@
         <key>Type</key>
             <string>Boolean</string>
         <key>Value</key>
-            <integer>0</integer>
+            <integer>1</integer>
         </map>
     <key>VoiceDisableMic</key>
         <map>
@@ -457,5 +457,16 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+    <key>AllowBottomTrayButtonReordering</key>
+    <map>
+      <key>Comment</key>
+      <string>Allow user to move and hide bottom tray buttons</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
   </map>
 </llsd>
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 189175566e8efa141f1c81cd73455621d55b935d..c72cdfd1dcaf84a1eeea048b7ad3f0350561e982 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -555,8 +555,14 @@ BOOL LLBottomTray::postBuild()
 		// Localization tool doesn't understand custom buttons like <talk_button>
 		mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") );
 		mSpeakBtn->setShowToolTip( getString("VoiceControlBtnToolTip") );
+	}	
+	else
+	{
+		LLTransientFloaterMgr::getInstance()->addControlView(getChild<LLButton>("speak_btn"));
+		LLTransientFloaterMgr::getInstance()->addControlView(getChild<LLButton>("speak_flyout_btn"));
 	}
 
+
 	// Both parts of speak button should be initially disabled because
 	// it takes some time between logging in to world and connecting to voice channel.
 	getChild<LLButton>("speak_btn")->setEnabled(false);
@@ -745,6 +751,8 @@ void LLBottomTray::updateButtonsOrdersAfterDnD()
 
 void LLBottomTray::saveButtonsOrder()
 {
+	if (!gSavedSettings.getBOOL("AllowBottomTrayButtonReordering")) return;
+
 	std::string user_dir = gDirUtilp->getLindenUserDir();
 	if (user_dir.empty()) return;
 	
@@ -765,6 +773,8 @@ void LLBottomTray::saveButtonsOrder()
 
 void LLBottomTray::loadButtonsOrder()
 {
+	if (!gSavedSettings.getBOOL("AllowBottomTrayButtonReordering")) return;
+
 	// load per-resident sorting information
 	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SORTING_DATA_FILE_NAME);
 
@@ -1537,9 +1547,6 @@ void LLBottomTray::initResizeStateContainers()
 	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_HOWTO, getChild<LLPanel>("howto_panel")));
 
 	// init an order of processed buttons
-	mButtonsProcessOrder.push_back(RS_BUTTON_GESTURES);
-	mButtonsProcessOrder.push_back(RS_BUTTON_MOVEMENT);
-	mButtonsProcessOrder.push_back(RS_BUTTON_CAMERA);
 	mButtonsProcessOrder.push_back(RS_BUTTON_DESTINATIONS);
 	mButtonsProcessOrder.push_back(RS_BUTTON_AVATARS);
 	mButtonsProcessOrder.push_back(RS_BUTTON_SNAPSHOT);
@@ -1552,6 +1559,9 @@ void LLBottomTray::initResizeStateContainers()
 	mButtonsProcessOrder.push_back(RS_BUTTON_PROFILE);
 	mButtonsProcessOrder.push_back(RS_BUTTON_SPLITTER_2);
 	mButtonsProcessOrder.push_back(RS_BUTTON_HOWTO);
+	mButtonsProcessOrder.push_back(RS_BUTTON_MOVEMENT);
+	mButtonsProcessOrder.push_back(RS_BUTTON_CAMERA);
+	mButtonsProcessOrder.push_back(RS_BUTTON_GESTURES);
 
 	mButtonsOrder.push_back(RS_BUTTON_SPEAK);
 	mButtonsOrder.insert(mButtonsOrder.end(), mButtonsProcessOrder.begin(), mButtonsProcessOrder.end());
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 3f018fc57cceb5177e2df42ac7c06fc2d0818f1a..ef5968a5e24eb65094afe97dac1b37b567f1ca82 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -5522,14 +5522,19 @@ void process_alert_core(const std::string& message, BOOL modal)
 	}
 	else
 	{
-		LLSD args;
-		std::string new_msg =LLNotifications::instance().getGlobalString(message);
+		// Hack fix for EXP-623 (blame fix on RN :)) to avoid a sim deploy
+		const std::string AUTOPILOT_CANCELED_MSG("Autopilot canceled");
+		if (message.find(AUTOPILOT_CANCELED_MSG) == std::string::npos )
+		{
+			LLSD args;
+			std::string new_msg =LLNotifications::instance().getGlobalString(message);
 
-		std::string localized_msg;
-		bool is_message_localized = LLTrans::findString(localized_msg, new_msg);
+			std::string localized_msg;
+			bool is_message_localized = LLTrans::findString(localized_msg, new_msg);
 
-		args["MESSAGE"] = is_message_localized ? localized_msg : new_msg;
-		LLNotificationsUtil::add("SystemMessageTip", args);
+			args["MESSAGE"] = is_message_localized ? localized_msg : new_msg;
+			LLNotificationsUtil::add("SystemMessageTip", args);
+		}
 	}
 }
 
diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
index b5d95aeca43f06120b6f529494f3e5086ebc339e..c7c7a05af2b9741c158f20f010a8f10085c149a1 100644
--- a/indra/newview/skins/default/xui/en/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
@@ -4,7 +4,7 @@
  border="false"
  legacy_header_height="18"
  can_minimize="true"
- can_resize="true"
+ can_resize="false"
  can_close="false"
  save_dock_state="true"
  save_visibility="true"
diff --git a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
index 9c14edb3067e381135d4cea6e8f604d6fdb44472..237af61717b0d7d9b13200883825494a444e19e5 100644
--- a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
@@ -47,7 +47,7 @@
          mouse_opaque="false"
 		 name="chat_bar_layout_panel"
          user_resize="true"
-         width="308" >
+         width="312" >
 			<panel
 		   name="chat_bar"
 			  filename="panel_nearby_chat_bar.xml"
@@ -108,7 +108,7 @@
           name="speak_flyout_panel"
           top_delta="0"
           user_resize="false"
-          width="20">
+          width="26">
       <button
      follows="left|right"
      width="20"
@@ -151,7 +151,7 @@
              layout="topleft"
              get_more="false"
              view_all="false"
-             left="3"
+             left="0"
              name="Gesture"
              tool_tip="Make your avatar do things"
              top="5"
@@ -174,7 +174,7 @@
          mouse_opaque="false"
          name="cam_panel"
          user_resize="false"
-         width="83">
+         width="86">
 			<bottomtray_button
               can_drag="false"
              follows="left|right"
@@ -201,15 +201,15 @@
          follows="left|right"
          height="28"
          layout="topleft"
-         min_width="17"
+         min_width="8"
          name="splitter_panel_1"
          user_resize="false"
-         width="17">
+         width="8">
 			<icon
              follows="left|bottom"
              height="18"
              width="2"
-             left="6"
+             left="0"
              image_name="Button_Separator"
              name="separator"
              top="7"/>
@@ -224,7 +224,7 @@
 		  mouse_opaque="false"
 		  name="destinations_panel"
 		  user_resize="false"
-		  width="103">
+		  width="106">
 			<bottomtray_button
 			 can_drag="false"
 			follows="left|right"
@@ -255,7 +255,7 @@
 		  mouse_opaque="false"
 		  name="avatar_panel"
 		  user_resize="false"
-		  width="103">
+		  width="106">
 			<bottomtray_button
 			 can_drag="false"
 			follows="left|right"
@@ -281,15 +281,15 @@
 		  follows="left|right"
 		  height="28"
 		  layout="topleft"
-		  min_width="17"
+		  min_width="8"
 		  name="splitter_panel_2"
 		  user_resize="false"
-		  width="17">
+		  width="8">
 			<icon
              follows="left|bottom"
              height="18"
              width="2"
-             left="6"
+             left="0"
              image_name="Button_Separator"
              name="separator"
              top="7"/>
@@ -305,7 +305,7 @@
          name="people_panel"
          top_delta="0"
          user_resize="false"
-         width="105">
+         width="106">
 			<bottomtray_button
 			   can_drag="false"
 			  follows="left|right"
@@ -338,7 +338,7 @@
 		   name="profile_panel"
 		   top_delta="0"
 		   user_resize="false"
-		   width="105">
+		   width="106">
 			<bottomtray_button
 			   can_drag="false"
 			  follows="left|right"
@@ -371,7 +371,7 @@
 		   name="howto_panel"
 		   top_delta="0"
 		   user_resize="false"
-		   width="105">
+		   width="106">
 			<bottomtray_button
 			   can_drag="false"
 			  follows="left|right"