diff --git a/bigbluebutton-client/branding/default/style/css/V2Theme.css b/bigbluebutton-client/branding/default/style/css/V2Theme.css
index e4abfd5ca838cad29f2c39229fbfba7bb96050a2..10c789bc0c82193427d0b6584d26cfdedaf3b919 100755
--- a/bigbluebutton-client/branding/default/style/css/V2Theme.css
+++ b/bigbluebutton-client/branding/default/style/css/V2Theme.css
@@ -63,6 +63,7 @@ global {
 mx|Application {
 	backgroundGradientColors : #F1F3F7, #F1F3F7;
 	backgroundColor          : #F1F3F7;
+	paddingTop               : 0;
 }
 
 /*
@@ -123,16 +124,41 @@ mx|Application {
 */
 
 mx|ApplicationControlBar {
+	borderSkin      : ClassReference(null);
 	cornerRadius    : 0;
 	fillAlphas      : 1, 1;
 	fillColors      : #FFFFFF, #FFFFFF;
 	highlightAlphas : 0, 0;
+	paddingBottom   : 0;
+	paddingLeft     : 0;
+	paddingRight    : 0;
+	paddingTop      : 0;
+	verticalAlign   : top;
 }
 
 phonecomponents|MuteMeButton {
 	glowFilterColor : #1070D7;
 }
 
+.toolbarMainBox {
+	backgroundColor : #FFFFFF;
+	paddingTop      : 4;
+	paddingBottom   : 4;
+}
+
+.breakoutRoomRibbon {
+	backgroundColor : #1070D7;
+	color           : #FFFFFF;
+	fontSize        : 16;
+	verticalAlign   : middle;
+	horizontalAlign : center;
+}
+
+.topBoxStyle {
+	paddingLeft  : 8;
+	paddingRight : 8;
+}
+
 .toolbarSeparator {
 	strokeWidth  : 1;
 	strokeColor  : #CDD4DB;
@@ -402,6 +428,14 @@ users|BreakoutRoomSettings {
 	headerHeight : 0;
 }
 
+users|JoinBreakoutRoomWindow {
+	horizontalAlign : center;
+	iconRooms       : Embed(source="assets/swf/v2_skin.swf", symbol="Icon_Join_Room");
+	paddingBottom   : 24;
+	paddingTop      : 0;
+	verticalGap     : 18;
+}
+
 users|RoomActionsRenderer {
 	paddingLeft     : 5;
 	paddingRight    : 5;
@@ -445,6 +479,26 @@ users|RoomActionsRenderer {
 	horizontalAlign : center;
 }
 
+.roomNumberStyle {
+	color         : #25385D;
+	fontSize      : 30;
+	fontWeight    : bold;
+	verticalAlign : middle;
+	textAlign     : center;
+}
+
+.joinBreakoutRoomButton {
+	fillColorUp       : #1070D7;
+	fillColorOver     : #0A5EAC;
+	fillColorDown     : #1070D7;
+	fillColorDisabled : #F0F2F6;
+	color             : #FFFFFF;
+	textRollOverColor : #FFFFFF;
+	textSelectedColor : #FFFFFF;
+	borderStyle       : none;
+	borderThickness   : 0;
+}
+
 /*
 //------------------------------
 //  BrowserPermissionHelper
@@ -802,7 +856,8 @@ views|LockSettings {
 */
 
 views|MainApplicationShell {
-	verticalGap : 0;
+	paddingBottom : 0;
+	verticalGap   : 0;
 }
 
 .logsButton {
diff --git a/bigbluebutton-client/branding/default/style/css/assets/swf/v2_skin.fla b/bigbluebutton-client/branding/default/style/css/assets/swf/v2_skin.fla
index 03a0d0661716db37f5fd41260b1237d59e369705..06b5859ba6294339318e41008864e5a9ad5c72b2 100644
Binary files a/bigbluebutton-client/branding/default/style/css/assets/swf/v2_skin.fla and b/bigbluebutton-client/branding/default/style/css/assets/swf/v2_skin.fla differ
diff --git a/bigbluebutton-client/branding/default/style/css/assets/swf/v2_skin.swf b/bigbluebutton-client/branding/default/style/css/assets/swf/v2_skin.swf
index 180d4f5fd17268b5ab190e384fa24ad0986eebc2..f26e3a69c1a7421e9af6fd53b356db7f2847fcf8 100644
Binary files a/bigbluebutton-client/branding/default/style/css/assets/swf/v2_skin.swf and b/bigbluebutton-client/branding/default/style/css/assets/swf/v2_skin.swf differ
diff --git a/bigbluebutton-client/locale/en_US/bbbResources.properties b/bigbluebutton-client/locale/en_US/bbbResources.properties
index 000cbeb6d5ce75aec440cfd116b2d356f0fa97aa..ee44114ae8b535d7b6231aa8d10a67e6c3e0122d 100755
--- a/bigbluebutton-client/locale/en_US/bbbResources.properties
+++ b/bigbluebutton-client/locale/en_US/bbbResources.properties
@@ -788,11 +788,8 @@ bbb.lockSettings.feature=Feature
 bbb.lockSettings.locked=Locked
 bbb.lockSettings.lockOnJoin=Lock On Join
 
-bbb.meeting.timeRemaining = Time remaining
-
 bbb.users.breakout.breakoutRooms = Breakout Rooms
 bbb.users.breakout.updateBreakoutRooms = Update Breakout Rooms
-bbb.users.breakout.timer = <b>{0}</b>
 bbb.users.breakout.timer.toolTip = Time left for breakout rooms
 bbb.users.breakout.calculatingRemainingTime = Calculating remaining time...
 bbb.users.breakout.closing = Closing
@@ -812,8 +809,11 @@ bbb.users.breakout.invite = Invite
 bbb.users.breakout.close = Close
 bbb.users.breakout.closeAllRooms = Close All Breakout Rooms
 bbb.users.breakout.insufficientUsers = Insufficient users. You should place at least one user in one breakout room.
-bbb.users.breakout.openJoinURL = You have been invited to join Breakout Room {0}\n(By accepting, you will automatically leave the audio conference)
-bbb.users.breakout.confirm = Confirm Join Breakout Room
+bbb.users.breakout.confirm = Join A Breakout Room
+bbb.users.breakout.invited = You have been invited to join <b>Breakout Room</b>
+bbb.users.breakout.accept = By accepting, you will automatically leave the audio and the video confrences.
+bbb.users.breakout.joinSession = Join Session
+bbb.users.breakout.youareinroom = You are in Breakout Room {0}
 bbb.users.roomsGrid.room = Room
 bbb.users.roomsGrid.users = Users
 bbb.users.roomsGrid.action = Action
diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/BreakoutTimerUtil.as b/bigbluebutton-client/src/org/bigbluebutton/core/BreakoutTimerUtil.as
deleted file mode 100755
index 15f3ce07ccf1ae073ad37595f608a9c3e07e2a51..0000000000000000000000000000000000000000
--- a/bigbluebutton-client/src/org/bigbluebutton/core/BreakoutTimerUtil.as
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
- *
- * Copyright (c) 2016 BigBlueButton Inc. and by respective authors (see below).
- *
- * This program is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free Software
- * Foundation; either version 3.0 of the License, or (at your option) any later
- * version.
- *
- * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License along
- * with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.bigbluebutton.core {
-
-	import flash.events.TimerEvent;
-	import flash.utils.Dictionary;
-	import flash.utils.Timer;
-	
-	import mx.controls.Label;
-	
-	import org.bigbluebutton.util.i18n.ResourceUtil;
-
-	public final class BreakoutTimerUtil {
-		public static var timers:Dictionary = new Dictionary(true);
-
-		public static function setCountDownTimer(label:Label, seconds:int):void {
-			var timer:Timer = getTimer(label.id, seconds);
-			if (!timer.hasEventListener(TimerEvent.TIMER)) {
-				timer.addEventListener(TimerEvent.TIMER, function():void {
-					var remainingSeconds:int = timer.repeatCount - timer.currentCount;
-					var formattedTime:String = (Math.floor(remainingSeconds / 60)) + ":" + (remainingSeconds % 60 >= 10 ? "" : "0") + (remainingSeconds % 60);
-					label.htmlText = ResourceUtil.getInstance().getString('bbb.users.breakout.timer', [formattedTime]);
-				});
-				timer.addEventListener(TimerEvent.TIMER_COMPLETE, function():void {
-					label.text = ResourceUtil.getInstance().getString('bbb.users.breakout.closing');
-				});
-			} else {
-				timer.stop();
-				timer.reset();
-			}
-			timer.start();
-		}
-
-		public static function getTimer(name:String, defaultRepeatCount:Number):Timer {
-			if (timers[name] == undefined) {
-				timers[name] = new Timer(1000, defaultRepeatCount);
-			}
-			Timer(timers[name]).repeatCount = defaultRepeatCount;
-			return timers[name];
-		}
-
-		public static function stopTimer(name:String):void {
-			if (timers[name] != undefined) {
-				timers[name].stop();
-			}
-		}
-	}
-}
diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/TimerUtil.as b/bigbluebutton-client/src/org/bigbluebutton/core/TimerUtil.as
index 2d8090c5562ef307327a75044763aed21e5ce7e9..c997d978643fff0c1373576afe0b7d1396de4458 100644
--- a/bigbluebutton-client/src/org/bigbluebutton/core/TimerUtil.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/core/TimerUtil.as
@@ -21,10 +21,10 @@ package org.bigbluebutton.core {
 	import flash.events.TimerEvent;
 	import flash.utils.Dictionary;
 	import flash.utils.Timer;
-	
+
 	import mx.controls.Label;
-	
-	import org.bigbluebutton.util.i18n.ResourceUtil;
+
+	import org.bigbluebutton.util.i18n.ResourceUtil;
 
 	public final class TimerUtil {
 		public static var timers:Dictionary = new Dictionary(true);
@@ -35,7 +35,7 @@ package org.bigbluebutton.core {
 				timer.addEventListener(TimerEvent.TIMER, function():void {
 					var remainingSeconds:int = timer.repeatCount - timer.currentCount;
 					var formattedTime:String = (Math.floor(remainingSeconds / 60)) + ":" + (remainingSeconds % 60 >= 10 ? "" : "0") + (remainingSeconds % 60);
-					label.htmlText = ResourceUtil.getInstance().getString('bbb.users.breakout.timer', [formattedTime]);
+					label.text = formattedTime;
 				});
 				timer.addEventListener(TimerEvent.TIMER_COMPLETE, function():void {
 					label.text = ResourceUtil.getInstance().getString('bbb.users.breakout.closing');
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml
index b98aeb7dcb163409c00bfff9937e78eb80f288a1..98db8fb85aaf0aa197dcbb4a02512f7d6e4f9fd3 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml
@@ -32,8 +32,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 		xmlns:common="org.bigbluebutton.common.*"
 		horizontalScrollPolicy="off" verticalScrollPolicy="off"
 		creationComplete="initializeShell()"
-		addedToStage="onAddedToStage()"
-		verticalGap="0">
+		addedToStage="onAddedToStage()" >
 
 	<!--
 	height="{parentApplication.height - 1}" : The container height is set to fix height because the percentHeight
@@ -82,76 +81,76 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 		<mate:Listener type="{BBBEvent.REMOVE_GUEST_FROM_LIST}" method="removeGuestWindow" />
 		<mate:Listener type="{BBBEvent.WAITING_FOR_MODERATOR_ACCEPTANCE}" method="openWaitWindow" />
 		<mate:Listener type="{BBBEvent.RECONNECT_DISCONNECTED_EVENT}" method="closeWaitWindow"/>
-    <mate:Listener type="{RoundTripLatencyReceivedEvent.ROUND_TRIP_LATENCY_RECEIVED}" method="handleRoundTripLatencyReceivedEvent"/>
+    	<mate:Listener type="{RoundTripLatencyReceivedEvent.ROUND_TRIP_LATENCY_RECEIVED}" method="handleRoundTripLatencyReceivedEvent"/>
     
 	</fx:Declarations>
 	<fx:Script>
 		<![CDATA[
-      import com.asfusion.mate.events.Dispatcher;
-      
-      import flash.events.Event;
-      import flash.events.FullScreenEvent;
-      import flash.events.IOErrorEvent;
-      import flash.events.TextEvent;
-      import flash.geom.Point;
-      import flash.net.navigateToURL;
-      import flash.utils.setTimeout;
-      
-      import mx.binding.utils.ChangeWatcher;
-      import mx.collections.ArrayCollection;
-      import mx.controls.Alert;
-      import mx.core.FlexGlobals;
-      import mx.core.IFlexDisplayObject;
-      import mx.core.UIComponent;
-      import mx.events.FlexEvent;
-      
-      import flexlib.mdi.effects.effectsLib.MDIVistaEffects;
-      
-      import org.as3commons.lang.StringUtils;
-      import org.as3commons.logging.api.ILogger;
-      import org.as3commons.logging.api.getClassLogger;
-      import org.bigbluebutton.common.IBbbModuleWindow;
-      import org.bigbluebutton.common.events.AddUIComponentToMainCanvas;
-      import org.bigbluebutton.common.events.CloseWindowEvent;
-      import org.bigbluebutton.common.events.OpenWindowEvent;
-      import org.bigbluebutton.common.events.ToolbarButtonEvent;
-      import org.bigbluebutton.core.BBB;
-      import org.bigbluebutton.core.Options;
-      import org.bigbluebutton.core.PopUpUtil;
-      import org.bigbluebutton.core.UsersUtil;
-      import org.bigbluebutton.core.events.LockControlEvent;
-      import org.bigbluebutton.core.events.NewGuestWaitingEvent;
-      import org.bigbluebutton.core.events.RoundTripLatencyReceivedEvent;
-      import org.bigbluebutton.core.events.SwitchedLayoutEvent;
-      import org.bigbluebutton.core.vo.LockSettingsVO;
-      import org.bigbluebutton.main.events.AppVersionEvent;
-      import org.bigbluebutton.main.events.BBBEvent;
-      import org.bigbluebutton.main.events.BreakoutRoomEvent;
-      import org.bigbluebutton.main.events.ClientStatusEvent;
-      import org.bigbluebutton.main.events.ConfigLoadedEvent;
-      import org.bigbluebutton.main.events.ExitApplicationEvent;
-      import org.bigbluebutton.main.events.InvalidAuthTokenEvent;
-      import org.bigbluebutton.main.events.MeetingNotFoundEvent;
-      import org.bigbluebutton.main.events.ModuleLoadEvent;
-      import org.bigbluebutton.main.events.NetworkStatsEvent;
-      import org.bigbluebutton.main.events.ShortcutEvent;
-      import org.bigbluebutton.main.model.Guest;
-      import org.bigbluebutton.main.model.ImageLoader;
-      import org.bigbluebutton.main.model.options.BrandingOptions;
-      import org.bigbluebutton.main.model.options.BrowserVersionsOptions;
-      import org.bigbluebutton.main.model.options.LanguageOptions;
-      import org.bigbluebutton.main.model.options.LayoutOptions;
-      import org.bigbluebutton.main.model.users.events.ConnectionFailedEvent;
-      import org.bigbluebutton.modules.phone.events.AudioSelectionWindowEvent;
-      import org.bigbluebutton.modules.phone.events.FlashMicSettingsEvent;
-      import org.bigbluebutton.modules.phone.events.WebRTCCallEvent;
-      import org.bigbluebutton.modules.phone.events.WebRTCEchoTestEvent;
-      import org.bigbluebutton.modules.phone.events.WebRTCMediaEvent;
-      import org.bigbluebutton.modules.phone.models.PhoneOptions;
-      import org.bigbluebutton.modules.users.model.UsersOptions;
-      import org.bigbluebutton.modules.users.views.BreakoutRoomSettings;
-      import org.bigbluebutton.modules.videoconf.events.ShareCameraRequestEvent;
-      import org.bigbluebutton.util.i18n.ResourceUtil;
+			import com.asfusion.mate.events.Dispatcher;
+			
+			import flash.events.Event;
+			import flash.events.FullScreenEvent;
+			import flash.events.IOErrorEvent;
+			import flash.events.TextEvent;
+			import flash.geom.Point;
+			import flash.net.navigateToURL;
+			import flash.utils.setTimeout;
+			
+			import mx.binding.utils.ChangeWatcher;
+			import mx.collections.ArrayCollection;
+			import mx.controls.Alert;
+			import mx.core.FlexGlobals;
+			import mx.core.IFlexDisplayObject;
+			import mx.core.UIComponent;
+			import mx.events.FlexEvent;
+			
+			import flexlib.mdi.effects.effectsLib.MDIVistaEffects;
+			
+			import org.as3commons.lang.StringUtils;
+			import org.as3commons.logging.api.ILogger;
+			import org.as3commons.logging.api.getClassLogger;
+			import org.bigbluebutton.common.IBbbModuleWindow;
+			import org.bigbluebutton.common.events.AddUIComponentToMainCanvas;
+			import org.bigbluebutton.common.events.CloseWindowEvent;
+			import org.bigbluebutton.common.events.OpenWindowEvent;
+			import org.bigbluebutton.common.events.ToolbarButtonEvent;
+			import org.bigbluebutton.core.BBB;
+			import org.bigbluebutton.core.Options;
+			import org.bigbluebutton.core.PopUpUtil;
+			import org.bigbluebutton.core.UsersUtil;
+			import org.bigbluebutton.core.events.LockControlEvent;
+			import org.bigbluebutton.core.events.NewGuestWaitingEvent;
+			import org.bigbluebutton.core.events.RoundTripLatencyReceivedEvent;
+			import org.bigbluebutton.core.events.SwitchedLayoutEvent;
+			import org.bigbluebutton.core.vo.LockSettingsVO;
+			import org.bigbluebutton.main.events.AppVersionEvent;
+			import org.bigbluebutton.main.events.BBBEvent;
+			import org.bigbluebutton.main.events.BreakoutRoomEvent;
+			import org.bigbluebutton.main.events.ClientStatusEvent;
+			import org.bigbluebutton.main.events.ConfigLoadedEvent;
+			import org.bigbluebutton.main.events.ExitApplicationEvent;
+			import org.bigbluebutton.main.events.InvalidAuthTokenEvent;
+			import org.bigbluebutton.main.events.MeetingNotFoundEvent;
+			import org.bigbluebutton.main.events.ModuleLoadEvent;
+			import org.bigbluebutton.main.events.NetworkStatsEvent;
+			import org.bigbluebutton.main.events.ShortcutEvent;
+			import org.bigbluebutton.main.model.Guest;
+			import org.bigbluebutton.main.model.ImageLoader;
+			import org.bigbluebutton.main.model.options.BrandingOptions;
+			import org.bigbluebutton.main.model.options.BrowserVersionsOptions;
+			import org.bigbluebutton.main.model.options.LanguageOptions;
+			import org.bigbluebutton.main.model.options.LayoutOptions;
+			import org.bigbluebutton.main.model.users.events.ConnectionFailedEvent;
+			import org.bigbluebutton.modules.phone.events.AudioSelectionWindowEvent;
+			import org.bigbluebutton.modules.phone.events.FlashMicSettingsEvent;
+			import org.bigbluebutton.modules.phone.events.WebRTCCallEvent;
+			import org.bigbluebutton.modules.phone.events.WebRTCEchoTestEvent;
+			import org.bigbluebutton.modules.phone.events.WebRTCMediaEvent;
+			import org.bigbluebutton.modules.phone.models.PhoneOptions;
+			import org.bigbluebutton.modules.users.model.UsersOptions;
+			import org.bigbluebutton.modules.users.views.BreakoutRoomSettings;
+			import org.bigbluebutton.modules.videoconf.events.ShareCameraRequestEvent;
+			import org.bigbluebutton.util.i18n.ResourceUtil;
 			
 			private static const LOGGER:ILogger = getClassLogger(MainApplicationShell);      
       
@@ -245,11 +244,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 					controlBar.visible = controlBar.includeInLayout = false;
 					calculateCanvasHeight();
 				}
-        
-        _respTimer = new ResponsivenessTimer();
-        _respTimer.start();
+				_respTimer = new ResponsivenessTimer();
+				_respTimer.start();
 			}
-		
+			
 			private function updateCopyrightText():void {
 				if (StringUtils.isEmpty(brandingOptions.copyright)) {
 					copyrightText = ResourceUtil.getInstance().getString('bbb.mainshell.copyrightLabel2',[appVersion]);
@@ -934,6 +932,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 			private function updateToolbarHeight():void {
 				if (toolbarHeight != 0) {
 					toolbarHeight = Math.max(DEFAULT_TOOLBAR_HEIGHT, toolbar.logo.height + toolbar.quickLinks.includeInLayout ? toolbar.quickLinks.height : 0 + 10);
+					if (UsersUtil.isBreakout()) {
+						toolbarHeight += toolbar.breakoutRibbon.height;
+					}
 				}
 				calculateCanvasHeight();
 			}
@@ -1042,8 +1043,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 					   verticalAlign="middle" 
 					   toolbarOptions="{layoutOptions}" 
 					   paddingTop="{toolbarPaddingTop}"
-					   updateComplete="updateToolbarHeight()"
-					   paddingBottom="0" />
+					   updateComplete="updateToolbarHeight()"/>
 				
 	<!-- MainCanvas height has to be forced or it will never show and the application will not continue loading -->
 	<views:MainCanvas id="mdiCanvas"
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml
index 9d4569e23c4d6e84be3a374336eda48327395e1b..44c6364377d4f1cd6f1c9c50bd74bb0b89a1c150 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml
@@ -49,7 +49,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 		<mate:Listener type="{SuccessfulLoginEvent.USER_LOGGED_IN}" method="refreshModeratorButtonsVisibility" />
 		<mate:Listener type="{ChangeMyRole.CHANGE_MY_ROLE_EVENT}" method="refreshRole" />
 		<mate:Listener type="{BBBEvent.CONFIRM_LOGOUT_END_MEETING_EVENT}" method="confirmEndSession" />
-    <mate:Listener type="{MeetingTimeRemainingEvent.TIME_REMAINING}" method="handleRemainingTimeUpdate" />
+    	<mate:Listener type="{MeetingTimeRemainingEvent.TIME_REMAINING}" method="handleRemainingTimeUpdate" />
 	</fx:Declarations>
 	<fx:Script>
 		<![CDATA[
@@ -191,24 +191,30 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 					initBandwidthToolTip();
 				}
 			}
-			
-      private function handleRemainingTimeUpdate(e:MeetingTimeRemainingEvent):void {
-        if (! timeRemaining.visible) {
-          timeRemaining.visible = true;
-          timeRemainingLabel.visible = true;
-        }
-        TimerUtil.setCountDownTimer(timeRemaining, e.timeLeftInSec);
-      }
-      
-      private function retrieveMeetingName(e:ConferenceCreatedEvent):void {
-         if (toolbarOptions.showMeetingName) {
-              var meetingTitle:String = LiveMeeting.inst().meeting.name;                   
-              if (meetingTitle != null) {
-                  meetingNameLbl.text = meetingTitle;
-               } 
-          }
-          logFlashPlayerCapabilities();
-      }
+			private function handleRemainingTimeUpdate(e:MeetingTimeRemainingEvent):void {
+				if (!timeRemaining.visible) {
+					timeRemaining.visible = true;
+				}
+				TimerUtil.setCountDownTimer(timeRemaining, e.timeLeftInSec);
+			}
+
+			private function retrieveMeetingName(e:ConferenceCreatedEvent):void {
+				if (toolbarOptions.showMeetingName) {
+					var meetingTitle:String = LiveMeeting.inst().meeting.name;
+					if (meetingTitle != null) {
+						meetingNameLbl.text = meetingTitle;
+					}
+				}
+
+				if (UsersUtil.isBreakout()) {
+					breakoutRibbon.visible = breakoutRibbon.includeInLayout = true;
+					var sequence:String = StringUtils.substringAfterLast(UsersUtil.getMeetingName(), " ");
+					sequence = StringUtils.substringBefore(sequence, ")");
+					breakoutLabel.text = ResourceUtil.getInstance().getString("bbb.users.breakout.youareinroom", [sequence]);
+				}
+
+				logFlashPlayerCapabilities();
+			}
 
       private function refreshModeratorButtonsVisibility(e:*):void {
           showGuestSettingsButton = UsersUtil.amIModerator() && usersOptions.enableGuestUI;
@@ -506,9 +512,19 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 						   tabIndices="{[recordBtn, webRTCAudioStatus, shortcutKeysBtn, helpBtn, btnLogout]}"/>
 	</fx:Declarations>
 
-	<mx:VBox id="mainBox" width="100%" horizontalScrollPolicy="off" verticalAlign="middle">
+	<mx:VBox id="mainBox" styleName="toolbarMainBox" width="100%" horizontalScrollPolicy="off" verticalAlign="top">
+		<!-- Breakout room  Ribbon-->
+		<mx:HBox id="breakoutRibbon" width="100%" height="30"
+				 styleName="breakoutRoomRibbon" 
+				 visible="false" includeInLayout="false" >
+			<mx:Label id="breakoutLabel" />
+			<mx:Label text="|" visible="{timeRemaining.visible}" includeInLayout="{timeRemaining.visible}"/>
+			<mx:Label id="timeRemaining" visible="false" includeInLayout="{timeRemaining.visible}"
+					  text="{ResourceUtil.getInstance().getString('bbb.users.breakout.calculatingRemainingTime')}"
+					  toolTip="{ResourceUtil.getInstance().getString('bbb.users.breakout.timer.toolTip')}"/>
+		</mx:HBox>
 		<!-- Top bar -->
-		<mx:HBox id="topBox" width="100%" verticalAlign="middle" horizontalScrollPolicy="off">
+		<mx:HBox id="topBox" width="100%" verticalAlign="middle" horizontalScrollPolicy="off" styleName="topBoxStyle">
 			<mx:HBox id="titleBox" width="40%" horizontalAlign="left" verticalAlign="middle" horizontalScrollPolicy="off">
 				<mx:Image id="logo" right="20" maxHeight="35" ioError="hideLogo()" />
 				<mx:VRule styleName="toolbarSeparator" height="10" />
@@ -520,12 +536,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 				<mx:HBox id="addedBtnsDeskShare" />
 			</mx:HBox>
 			<mx:HBox id="rightBox" width="40%" horizontalAlign="right" verticalAlign="middle" horizontalScrollPolicy="off">
-				<mx:Label id="timeRemainingLabel" visible="false" includeInLayout="{timeRemainingLabel.visible}"
-						  text="{ResourceUtil.getInstance().getString('bbb.meeting.timeRemaining')}:"
-						  toolTip="{ResourceUtil.getInstance().getString('bbb.meeting.timeRemaining')}"/>
-				<mx:Label id="timeRemaining" visible="false" includeInLayout="{timeRemaining.visible}"
-						  text="{ResourceUtil.getInstance().getString('bbb.users.breakout.calculatingRemainingTime')}"
-						  toolTip="{ResourceUtil.getInstance().getString('bbb.users.breakout.timer.toolTip')}"/>
 				<views:RecordButton id="recordBtn" visible="{showRecordButton}" includeInLayout="{showRecordButton}"/>
 				<views:WebRTCAudioStatus id="webRTCAudioStatus" height="30"/>
 				
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/users/views/JoinBreakoutRoomWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/users/views/JoinBreakoutRoomWindow.mxml
new file mode 100644
index 0000000000000000000000000000000000000000..c57c483692a38b4bd8268ecb06a4c974d22f76ad
--- /dev/null
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/users/views/JoinBreakoutRoomWindow.mxml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+
+BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
+
+Copyright (c) 2017 BigBlueButton Inc. and by respective authors (see below).
+
+This program is free software; you can redistribute it and/or modify it under the
+terms of the GNU Lesser General Public License as published by the Free Software
+Foundation; either version 3.0 of the License, or (at your option) any later
+version.
+
+BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License along
+with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
+
+-->
+
+<mx:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009"
+				xmlns:s="library://ns.adobe.com/flex/spark"
+				xmlns:mx="library://ns.adobe.com/flex/mx"
+				layout="vertical"
+				showCloseButton="true"
+				close="PopUpUtil.removePopUp(this)"
+				width="600">
+	<fx:Script>
+		<![CDATA[
+			import com.asfusion.mate.events.Dispatcher;
+
+			import flash.net.navigateToURL;
+
+			import org.bigbluebutton.core.PopUpUtil;
+			import org.bigbluebutton.modules.phone.events.LeaveVoiceConferenceCommand;
+			import org.bigbluebutton.modules.videoconf.events.StopBroadcastEvent;
+			import org.bigbluebutton.util.i18n.ResourceUtil;
+
+			private var dispatcher:Dispatcher = new Dispatcher();
+
+			private var joinUrl:String;
+
+			public function setBreakoutRoomSettings(sequence:int, joinUrl:String):void {
+				sequenceLabel.text = sequence.toString();
+				this.joinUrl = joinUrl;
+			}
+
+			protected function joinButtonClickHandler(event:MouseEvent):void {
+				dispatcher.dispatchEvent(new LeaveVoiceConferenceCommand());
+				dispatcher.dispatchEvent(new StopBroadcastEvent());
+				navigateToURL(new URLRequest(this.joinUrl), "_blank");
+				PopUpUtil.removePopUp(this);
+			}
+		]]>
+	</fx:Script>
+
+	<s:Label styleName="titleWindowStyle"
+			 maxWidth="500"
+			 text="{ResourceUtil.getInstance().getString('bbb.users.breakout.confirm')}" />
+	<mx:Label htmlText="{ResourceUtil.getInstance().getString('bbb.users.breakout.invited')}" />
+	<mx:Canvas>
+		<mx:Image source="{getStyle('iconRooms')}" />
+		<mx:Canvas x="16"
+				   y="47"
+				   height="38"
+				   width="70">
+			<s:Label id="sequenceLabel"
+					 styleName="roomNumberStyle"
+					 verticalCenter="0"
+					 horizontalCenter="0" />
+		</mx:Canvas>
+	</mx:Canvas>
+	<mx:Label text="{ResourceUtil.getInstance().getString('bbb.users.breakout.accept')}" />
+	<mx:Button id="joinButton"
+			   label="{ResourceUtil.getInstance().getString('bbb.users.breakout.joinSession')}"
+			   click="joinButtonClickHandler(event)"
+			   styleName="joinBreakoutRoomButton" />
+
+</mx:TitleWindow>
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/users/views/UsersWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/users/views/UsersWindow.mxml
index 3f2b5497fa041e08c659b20c908b53dd132b95aa..c8dec509bb7f5aef0d2d4136ebe63fa393c7a9f6 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/users/views/UsersWindow.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/users/views/UsersWindow.mxml
@@ -65,17 +65,13 @@ $Id: $
     <![CDATA[
       import com.asfusion.mate.events.Dispatcher;
       
-      import flash.net.navigateToURL;
-      
       import mx.binding.utils.BindingUtils;
       import mx.collections.ArrayCollection;
-      import mx.controls.Alert;
       import mx.controls.Menu;
       import mx.controls.dataGridClasses.DataGridColumn;
       import mx.controls.listClasses.IListItemRenderer;
       import mx.core.FlexGlobals;
       import mx.core.mx_internal;
-      import mx.events.CloseEvent;
       import mx.events.CollectionEvent;
       import mx.events.ListEvent;
       import mx.events.MenuEvent;
@@ -86,7 +82,6 @@ $Id: $
       import org.bigbluebutton.common.IBbbModuleWindow;
       import org.bigbluebutton.common.Role;
       import org.bigbluebutton.common.events.LocaleChangeEvent;
-      import org.bigbluebutton.core.BreakoutTimerUtil;
       import org.bigbluebutton.core.EventConstants;
       import org.bigbluebutton.core.KeyboardUtil;
       import org.bigbluebutton.core.PopUpUtil;
@@ -119,13 +114,11 @@ $Id: $
       import org.bigbluebutton.main.model.users.events.StreamStoppedEvent;
       import org.bigbluebutton.main.views.MainCanvas;
       import org.bigbluebutton.main.views.WellPositionedMenu;
-      import org.bigbluebutton.modules.phone.events.LeaveVoiceConferenceCommand;
       import org.bigbluebutton.modules.users.events.MeetingMutedEvent;
       import org.bigbluebutton.modules.users.events.UsersRollEvent;
       import org.bigbluebutton.modules.users.model.BreakoutRoomsOptions;
       import org.bigbluebutton.modules.users.model.UsersOptions;
       import org.bigbluebutton.modules.users.views.model.BBBUser2x;
-      import org.bigbluebutton.modules.videoconf.events.StopBroadcastEvent;
       import org.bigbluebutton.util.i18n.ResourceUtil;
       
       private static const LOGGER:ILogger = getClassLogger(UsersWindow);
@@ -162,7 +155,7 @@ $Id: $
       [Bindable]
       private var amIPresenter:Boolean = false;
       
-      private var joinAlert : Alert;
+      private var joinWindow : JoinBreakoutRoomWindow;
       
       private const MAKE_PRESENTER:String = "Make Presenter";
       private const KICK_USER:String = "Kick User";
@@ -449,7 +442,7 @@ $Id: $
       }
       
       private function handleRemainingTimeUpdate(event:BreakoutRoomEvent):void {
-        BreakoutTimerUtil.setCountDownTimer(breakoutTimeLabel, event.durationInMinutes);
+        TimerUtil.setCountDownTimer(breakoutTimeLabel, event.durationInMinutes);
       }
       
       private function breakoutRoomsListChangeListener(event:CollectionEvent):void {
@@ -457,7 +450,7 @@ $Id: $
           breakoutTimeLabel.text = "...";
           TimerUtil.stopTimer(breakoutTimeLabel.id);
           // All breakout rooms were close we don't need to display the join URL alert anymore
-          removeJoinAlert();
+          removeJoinWindow();
         }
       }
       
@@ -469,26 +462,15 @@ $Id: $
       
       private function handleBreakoutJoinUrl(event:BreakoutRoomEvent):void {
         // We display only one alert
-        removeJoinAlert();
-        joinAlert = Alert.show(
-          ResourceUtil.getInstance().getString('bbb.users.breakout.openJoinURL', [event.breakoutMeetingSequence]),
-          ResourceUtil.getInstance().getString('bbb.users.breakout.confirm'),
-          Alert.YES | Alert.NO,
-          null,
-          function(e:CloseEvent):void {
-            if (e.detail == Alert.YES) {
-              dispatcher.dispatchEvent(new LeaveVoiceConferenceCommand());
-              dispatcher.dispatchEvent(new StopBroadcastEvent());
-              navigateToURL(new URLRequest(event.joinURL), "_blank");
-            }
-          },
-          null, Alert.YES);
-      }
-      
-      private function removeJoinAlert():void {
-        if (joinAlert != null) {
+        removeJoinWindow();
+		joinWindow = PopUpUtil.createModalPopUp(FlexGlobals.topLevelApplication as DisplayObject, JoinBreakoutRoomWindow) as JoinBreakoutRoomWindow;
+		joinWindow.setBreakoutRoomSettings(event.breakoutMeetingSequence, event.joinURL);
+      }
+      
+      private function removeJoinWindow():void {
+        if (joinWindow != null) {
           // @todo: any way using PopUpUtil ?
-          PopUpManager.removePopUp(joinAlert);
+          PopUpManager.removePopUp(joinWindow);
         }
       }