diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonInGW.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonInGW.scala
index 01bd9100e3a9fc6f194b6cd5c9787c374d43554d..4a5e83e217549329a3eb0984ae4ef96c60d0d99e 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonInGW.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonInGW.scala
@@ -2,8 +2,9 @@ package org.bigbluebutton.core
 
 import org.bigbluebutton.core.bus._
 import org.bigbluebutton.core.api._
+
 import scala.collection.JavaConversions._
-import org.bigbluebutton.core.apps.Presentation
+import org.bigbluebutton.core.apps.{ Presentation, SharedNotesOperation }
 import akka.actor.ActorSystem
 import org.bigbluebutton.common.messages.IBigBlueButtonMessage
 import org.bigbluebutton.common.messages.StartCustomPollRequestMessage
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/InMessages.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/InMessages.scala
index 654ace846da3f475006cda857d11ecdf59c5f291..94d0c6c2b1bc783b3e0813fa451db5260346a52f 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/InMessages.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/InMessages.scala
@@ -1,8 +1,8 @@
 package org.bigbluebutton.core.api
 
 import org.bigbluebutton.common2.msgs.BreakoutUserVO
-import org.bigbluebutton.core.api.SharedNotesOperation.SharedNotesOperation
 import org.bigbluebutton.core.apps.Presentation
+import org.bigbluebutton.core.apps.SharedNotesOperation.SharedNotesOperation
 import spray.json.JsObject
 case class InMessageHeader(name: String)
 case class InHeaderAndJsonPayload(header: InMessageHeader, payload: JsObject)
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/ValueObjects.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/ValueObjects.scala
index c89e6df2c49a066d67fba00e8367b9eea8a63d97..f9c078b9265c06686182ecf6e43fc093b2bd627e 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/ValueObjects.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/ValueObjects.scala
@@ -12,14 +12,6 @@ object Metadata extends Enumeration {
   val INACTIVITY_TIMELEFT = "inactivity-timeleft"
 }
 
-object SharedNotesOperation extends Enumeration {
-  type SharedNotesOperation = Value
-  val PATCH = Value("PATCH")
-  val UNDO = Value("UNDO")
-  val REDO = Value("REDO")
-  val UNDEFINED = Value("UNDEFINED")
-}
-
 case class StatusCode(val code: Int, val text: String)
 object StatusCodes {
   // Borrowed from https://dev.twitter.com/overview/api/response-codes (ralam June 18, 2015)
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/SharedNotesApp.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/SharedNotesApp.scala
index cbd05172f2fea1d2b1e417bf8c7ce420c4c9a0ce..b80e4982241eaa432fc911713117c79a84252a2b 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/SharedNotesApp.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/SharedNotesApp.scala
@@ -2,7 +2,15 @@ package org.bigbluebutton.core.apps
 
 import org.bigbluebutton.core.api._
 import org.bigbluebutton.core.OutMessageGateway
-import org.bigbluebutton.core.running.{ MeetingActor }
+import org.bigbluebutton.core.running.MeetingActor
+
+object SharedNotesOperation extends Enumeration {
+  type SharedNotesOperation = Value
+  val PATCH = Value("PATCH")
+  val UNDO = Value("UNDO")
+  val REDO = Value("REDO")
+  val UNDEFINED = Value("UNDEFINED")
+}
 
 trait SharedNotesApp {
   this: MeetingActor =>
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/SharedNotesModel.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/SharedNotesModel.scala
index 5c8074b604d4f3e8edb68b00ca001b314721ffea..d7c03fa4f2eec37ab41507a6a280a306b08aaad0 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/SharedNotesModel.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/SharedNotesModel.scala
@@ -1,8 +1,9 @@
 package org.bigbluebutton.core.apps
 
 import org.bigbluebutton.core.api._
-import org.bigbluebutton.core.api.SharedNotesOperation._
 import name.fraser.neil.plaintext.diff_match_patch
+import org.bigbluebutton.core.apps.SharedNotesOperation.SharedNotesOperation
+
 import scala.collection.mutable.Stack
 import scala.collection.mutable.HashMap
 import scala.collection._
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/BreakoutApp2x.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/BreakoutApp2x.scala
new file mode 100755
index 0000000000000000000000000000000000000000..08a118774db702eeb4012d34eebb4406c85376f0
--- /dev/null
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/BreakoutApp2x.scala
@@ -0,0 +1,17 @@
+package org.bigbluebutton.core.apps.breakout
+
+import org.bigbluebutton.core.running.MeetingActor
+
+trait BreakoutApp2x extends BreakoutRoomCreatedMsgHdlr
+    with BreakoutRoomEndedMsgHdlr
+    with BreakoutRoomsListMsgHdlr
+    with BreakoutRoomUsersUpdateMsgHdlr
+    with CreateBreakoutRoomsMsgHdlr
+    with EndAllBreakoutRoomsMsgHdlr
+    with RequestBreakoutJoinURLMsgHdlr
+    with SendBreakoutUsersUpdateMsgHdlr
+    with TransferUserToMeetingRequestHdlr {
+
+  this: MeetingActor =>
+
+}
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/BreakoutRoomCreatedMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/BreakoutRoomCreatedMsgHdlr.scala
similarity index 95%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/BreakoutRoomCreatedMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/BreakoutRoomCreatedMsgHdlr.scala
index 8770cc643dc5478ebd4ad2a8cd89be8bc6ee8189..b6ae0af2af3e3d96219c8aeb36d557e2ffbfc138 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/BreakoutRoomCreatedMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/BreakoutRoomCreatedMsgHdlr.scala
@@ -1,4 +1,4 @@
-package org.bigbluebutton.core2.message.handlers.breakoutrooms
+package org.bigbluebutton.core.apps.breakout
 
 import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/BreakoutRoomEndedMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/BreakoutRoomEndedMsgHdlr.scala
similarity index 94%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/BreakoutRoomEndedMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/BreakoutRoomEndedMsgHdlr.scala
index 775aa0784581583b105eadf13f3c1b98be667a2a..21764b6302f054f28c4362e9ef7fbc69eaeeb9fc 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/BreakoutRoomEndedMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/BreakoutRoomEndedMsgHdlr.scala
@@ -1,4 +1,4 @@
-package org.bigbluebutton.core2.message.handlers.breakoutrooms
+package org.bigbluebutton.core.apps.breakout
 
 import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/BreakoutRoomUsersUpdateMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/BreakoutRoomUsersUpdateMsgHdlr.scala
similarity index 95%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/BreakoutRoomUsersUpdateMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/BreakoutRoomUsersUpdateMsgHdlr.scala
index 5c2ffb2dbee86adb79b61240fae05ae655004ceb..eba667e9be32e5b1fc35f9dc89478e3029087271 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/BreakoutRoomUsersUpdateMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/BreakoutRoomUsersUpdateMsgHdlr.scala
@@ -1,4 +1,4 @@
-package org.bigbluebutton.core2.message.handlers.breakoutrooms
+package org.bigbluebutton.core.apps.breakout
 
 import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/BreakoutRoomsListMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/BreakoutRoomsListMsgHdlr.scala
similarity index 95%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/BreakoutRoomsListMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/BreakoutRoomsListMsgHdlr.scala
index e9dd2ff0853f29b2d022e4e8e9bd958490ad1d52..a2b73cb6460e2612561c8e11b64e9ecdd38bb17a 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/BreakoutRoomsListMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/BreakoutRoomsListMsgHdlr.scala
@@ -1,9 +1,9 @@
-package org.bigbluebutton.core2.message.handlers.breakoutrooms
+package org.bigbluebutton.core.apps.breakout
 
 import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
-import org.bigbluebutton.core.running.MeetingActor
 import org.bigbluebutton.core.models.BreakoutRooms
+import org.bigbluebutton.core.running.MeetingActor
 
 trait BreakoutRoomsListMsgHdlr {
   this: MeetingActor =>
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/CreateBreakoutRoomsMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/CreateBreakoutRoomsMsgHdlr.scala
similarity index 93%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/CreateBreakoutRoomsMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/CreateBreakoutRoomsMsgHdlr.scala
index 15278d4fa6bac329c1888e1628672a6c94e5577c..ba2ff5a93fd314e66c830f2e76bc775b0ff70f3e 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/CreateBreakoutRoomsMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/CreateBreakoutRoomsMsgHdlr.scala
@@ -1,9 +1,8 @@
-package org.bigbluebutton.core2.message.handlers.breakoutrooms
+package org.bigbluebutton.core.apps.breakout
 
 import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
-import org.bigbluebutton.core.api.BreakoutRoomOutPayload
-import org.bigbluebutton.core.api.CreateBreakoutRoom
+import org.bigbluebutton.core.api.{ BreakoutRoomOutPayload, CreateBreakoutRoom }
 import org.bigbluebutton.core.apps.BreakoutRoomsUtil
 import org.bigbluebutton.core.models.BreakoutRooms
 import org.bigbluebutton.core.running.MeetingActor
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/EndAllBreakoutRoomsMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/EndAllBreakoutRoomsMsgHdlr.scala
similarity index 94%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/EndAllBreakoutRoomsMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/EndAllBreakoutRoomsMsgHdlr.scala
index 4670545fdea9ff4a4da58610c2668aabd34782ce..88251f247a9177adfafaacc5492e4ae38a9c257d 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/EndAllBreakoutRoomsMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/EndAllBreakoutRoomsMsgHdlr.scala
@@ -1,4 +1,4 @@
-package org.bigbluebutton.core2.message.handlers.breakoutrooms
+package org.bigbluebutton.core.apps.breakout
 
 import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/RequestBreakoutJoinURLMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/RequestBreakoutJoinURLMsgHdlr.scala
similarity index 93%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/RequestBreakoutJoinURLMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/RequestBreakoutJoinURLMsgHdlr.scala
index f79b62fb10c17de7ad86d86b3672f17153a3cae7..68bdfc83de824212967f53b3ad000d89e3f36048 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/RequestBreakoutJoinURLMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/RequestBreakoutJoinURLMsgHdlr.scala
@@ -1,10 +1,9 @@
-package org.bigbluebutton.core2.message.handlers.breakoutrooms
+package org.bigbluebutton.core.apps.breakout
 
-import org.bigbluebutton.core.models.Users1x
-import org.bigbluebutton.core.models.BreakoutRooms
 import org.bigbluebutton.common2.msgs._
-import org.bigbluebutton.core.apps.BreakoutRoomsUtil
 import org.bigbluebutton.core.OutMessageGateway
+import org.bigbluebutton.core.apps.BreakoutRoomsUtil
+import org.bigbluebutton.core.models.{ BreakoutRooms, Users1x }
 import org.bigbluebutton.core.running.MeetingActor
 
 trait RequestBreakoutJoinURLMsgHdlr {
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/SendBreakoutUsersUpdateMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/SendBreakoutUsersUpdateMsgHdlr.scala
similarity index 93%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/SendBreakoutUsersUpdateMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/SendBreakoutUsersUpdateMsgHdlr.scala
index 8c9253680f1264443a25751741823c473554407d..ce709782e5538ddd408d5192e0b8ebc6a73dada2 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/SendBreakoutUsersUpdateMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/SendBreakoutUsersUpdateMsgHdlr.scala
@@ -1,4 +1,4 @@
-package org.bigbluebutton.core2.message.handlers.breakoutrooms
+package org.bigbluebutton.core.apps.breakout
 
 import org.bigbluebutton.common2.msgs.{ BreakoutUserVO, SendBreakoutUsersUpdateMsg }
 import org.bigbluebutton.core.OutMessageGateway
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/TransferUserToMeetingRequestHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/TransferUserToMeetingRequestHdlr.scala
similarity index 92%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/TransferUserToMeetingRequestHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/TransferUserToMeetingRequestHdlr.scala
index dda8f445f510d0aa71d17c13408d60c267410c8b..c5dc1f6a57fe0dd9c93ce8bdcf9d89670498910d 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/breakoutrooms/TransferUserToMeetingRequestHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/TransferUserToMeetingRequestHdlr.scala
@@ -1,9 +1,8 @@
-package org.bigbluebutton.core2.message.handlers.breakoutrooms
+package org.bigbluebutton.core.apps.breakout
 
 import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
-import org.bigbluebutton.core.models.BreakoutRooms
-import org.bigbluebutton.core.models.Users1x
+import org.bigbluebutton.core.models.{ BreakoutRooms, Users1x }
 import org.bigbluebutton.core.running.MeetingActor
 
 trait TransferUserToMeetingRequestHdlr {
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/layout/BroadcastLayoutMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/layout/BroadcastLayoutMsgHdlr.scala
similarity index 71%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/layout/BroadcastLayoutMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/layout/BroadcastLayoutMsgHdlr.scala
index 51eef4df2b171f2d7f42617b0e5ca19085fca06f..5866c2d93427b87468132405a25eca5bae5d0675 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/layout/BroadcastLayoutMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/layout/BroadcastLayoutMsgHdlr.scala
@@ -1,25 +1,27 @@
-package org.bigbluebutton.core2.message.handlers.layout
+package org.bigbluebutton.core.apps.layout
 
 import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
 import org.bigbluebutton.core.models.Layouts
-import org.bigbluebutton.core.running.MeetingActor
 import org.bigbluebutton.core2.MeetingStatus2x
 
 trait BroadcastLayoutMsgHdlr {
-  this: MeetingActor =>
+  this: LayoutApp2x =>
 
   val outGW: OutMessageGateway
 
   def handleBroadcastLayoutMsg(msg: BroadcastLayoutMsg): Unit = {
-
     Layouts.setCurrentLayout(msg.body.layout)
 
-    val routing = Routing.addMsgToClientRouting(MessageTypes.BROADCAST_TO_MEETING, props.meetingProp.intId, msg.header.userId)
+    sendBroadcastLayoutEvtMsg(msg.header.userId)
+  }
+
+  def sendBroadcastLayoutEvtMsg(fromUserId: String): Unit = {
+    val routing = Routing.addMsgToClientRouting(MessageTypes.BROADCAST_TO_MEETING, liveMeeting.props.meetingProp.intId, fromUserId)
     val envelope = BbbCoreEnvelope(BroadcastLayoutEvtMsg.NAME, routing)
-    val header = BbbClientMsgHeader(BroadcastLayoutEvtMsg.NAME, props.meetingProp.intId, msg.header.userId)
+    val header = BbbClientMsgHeader(BroadcastLayoutEvtMsg.NAME, liveMeeting.props.meetingProp.intId, fromUserId)
 
-    val body = BroadcastLayoutEvtMsgBody(msg.body.meetingId, props.recordProp.record, msg.body.requesterId,
+    val body = BroadcastLayoutEvtMsgBody(
       Layouts.getCurrentLayout(),
       MeetingStatus2x.getPermissions(liveMeeting.status).lockedLayout,
       Layouts.getLayoutSetter(), affectedUsers)
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/layout/GetCurrentLayoutReqMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/layout/GetCurrentLayoutReqMsgHdlr.scala
new file mode 100755
index 0000000000000000000000000000000000000000..db5167ba791b7a1d99c1b10d663526f602525deb
--- /dev/null
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/layout/GetCurrentLayoutReqMsgHdlr.scala
@@ -0,0 +1,34 @@
+package org.bigbluebutton.core.apps.layout
+
+import org.bigbluebutton.common2.msgs._
+import org.bigbluebutton.core2.MeetingStatus2x
+import org.bigbluebutton.core.OutMessageGateway
+import org.bigbluebutton.core.models.Layouts
+import org.bigbluebutton.core.running.LiveMeeting
+
+trait GetCurrentLayoutReqMsgHdlr {
+  this: LayoutApp2x =>
+
+  val liveMeeting: LiveMeeting
+  val outGW: OutMessageGateway
+
+  def handle(msg: GetCurrentLayoutReqMsg): Unit = {
+
+    def broadcastEvent(msg: GetCurrentLayoutReqMsg): Unit = {
+
+      val routing = Routing.addMsgToClientRouting(MessageTypes.DIRECT, liveMeeting.props.meetingProp.intId, msg.header.userId)
+      val envelope = BbbCoreEnvelope(GetCurrentLayoutRespMsg.NAME, routing)
+      val header = BbbClientMsgHeader(GetCurrentLayoutRespMsg.NAME, liveMeeting.props.meetingProp.intId, msg.header.userId)
+
+      val body = GetCurrentLayoutRespMsgBody(Layouts.getCurrentLayout(),
+        MeetingStatus2x.getPermissions(liveMeeting.status).lockedLayout,
+        Layouts.getLayoutSetter())
+      val event = GetCurrentLayoutRespMsg(header, body)
+      val msgEvent = BbbCommonEnvCoreMsg(envelope, event)
+
+      outGW.send(msgEvent)
+    }
+
+    broadcastEvent(msg)
+  }
+}
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/layout/LayoutApp2x.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/layout/LayoutApp2x.scala
new file mode 100755
index 0000000000000000000000000000000000000000..fb2ab09d1e5d05b345cbcf863b485f9f85ea5275
--- /dev/null
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/layout/LayoutApp2x.scala
@@ -0,0 +1,23 @@
+package org.bigbluebutton.core.apps.layout
+
+import org.bigbluebutton.core.models.{ Layouts, Roles, Users2x }
+import org.bigbluebutton.core.running.MeetingActor
+
+trait LayoutApp2x
+    extends BroadcastLayoutMsgHdlr
+    with GetCurrentLayoutReqMsgHdlr
+    with LockLayoutMsgHdlr {
+
+  this: MeetingActor =>
+
+  def affectedUsers(): Vector[String] = {
+    if (Layouts.doesLayoutApplyToViewersOnly()) {
+      val users = Users2x.findAll(liveMeeting.users2x) filter { u =>
+        (!u.presenter && u.role != Roles.MODERATOR_ROLE)
+      }
+      users.map(u => u.intId)
+    } else {
+      Users2x.findAll(liveMeeting.users2x).map(u => u.intId)
+    }
+  }
+}
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/layout/LockLayoutMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/layout/LockLayoutMsgHdlr.scala
new file mode 100755
index 0000000000000000000000000000000000000000..c7f5bc2f8d2f90a01eb91f133f24d072143275dd
--- /dev/null
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/layout/LockLayoutMsgHdlr.scala
@@ -0,0 +1,37 @@
+package org.bigbluebutton.core.apps.layout
+
+import org.bigbluebutton.common2.msgs._
+import org.bigbluebutton.core.OutMessageGateway
+import org.bigbluebutton.core.models.Layouts
+
+trait LockLayoutMsgHdlr {
+  this: LayoutApp2x =>
+
+  val outGW: OutMessageGateway
+
+  def handleLockLayoutMsg(msg: LockLayoutMsg): Unit = {
+
+    def broadcastEvent(msg: LockLayoutMsg): Unit = {
+      val routing = Routing.addMsgToClientRouting(MessageTypes.BROADCAST_TO_MEETING, liveMeeting.props.meetingProp.intId, msg.header.userId)
+      val envelope = BbbCoreEnvelope(LockLayoutEvtMsg.NAME, routing)
+      val header = BbbClientMsgHeader(LockLayoutEvtMsg.NAME, liveMeeting.props.meetingProp.intId, msg.header.userId)
+
+      val body = LockLayoutEvtMsgBody(msg.header.userId, msg.body.lock, affectedUsers)
+      val event = LockLayoutEvtMsg(header, body)
+      val msgEvent = BbbCommonEnvCoreMsg(envelope, event)
+
+      outGW.send(msgEvent)
+    }
+
+    Layouts.applyToViewersOnly(msg.body.viewersOnly)
+    liveMeeting.lockLayout(msg.body.lock)
+    broadcastEvent(msg)
+
+    for {
+      newLayout <- msg.body.layout
+    } yield {
+      Layouts.setCurrentLayout(newLayout)
+      sendBroadcastLayoutEvtMsg(msg.header.userId)
+    }
+  }
+}
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/GetCurrentPollReqMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/GetCurrentPollReqMsgHdlr.scala
similarity index 96%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/GetCurrentPollReqMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/GetCurrentPollReqMsgHdlr.scala
index f1c7f0fb1fee1ae05fd3bc52b65ee8df56b7900e..fdd41dbc900d8d727c77b2cb7fc065a1c16fed19 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/GetCurrentPollReqMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/GetCurrentPollReqMsgHdlr.scala
@@ -1,10 +1,10 @@
-package org.bigbluebutton.core2.message.handlers
+package org.bigbluebutton.core.apps.polls
 
+import org.bigbluebutton.common2.domain.PollVO
 import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
 import org.bigbluebutton.core.models.Polls
 import org.bigbluebutton.core.running.MeetingActor
-import org.bigbluebutton.common2.domain.PollVO
 
 trait GetCurrentPollReqMsgHdlr {
   this: MeetingActor =>
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/HidePollResultReqMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/HidePollResultReqMsgHdlr.scala
similarity index 95%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/HidePollResultReqMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/HidePollResultReqMsgHdlr.scala
index c193ab756852670c9e5ebf092affcf5e8ce10c5d..1ba25729fd76afdedc850cc9c047cf49a21a606f 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/HidePollResultReqMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/HidePollResultReqMsgHdlr.scala
@@ -1,4 +1,4 @@
-package org.bigbluebutton.core2.message.handlers
+package org.bigbluebutton.core.apps.polls
 
 import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/PollApp2x.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/PollApp2x.scala
new file mode 100755
index 0000000000000000000000000000000000000000..2125eb817acd83b1aa7acdccdb987b5f9861bbf3
--- /dev/null
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/PollApp2x.scala
@@ -0,0 +1,14 @@
+package org.bigbluebutton.core.apps.polls
+
+import org.bigbluebutton.core.running.{ MeetingActor }
+
+trait PollApp2x extends GetCurrentPollReqMsgHdlr
+    with HidePollResultReqMsgHdlr
+    with RespondToPollReqMsgHdlr
+    with ShowPollResultReqMsgHdlr
+    with StartCustomPollReqMsgHdlr
+    with StartPollReqMsgHdlr
+    with StopPollReqMsgHdlr {
+
+  this: MeetingActor =>
+}
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/RespondToPollReqMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/RespondToPollReqMsgHdlr.scala
similarity index 96%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/RespondToPollReqMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/RespondToPollReqMsgHdlr.scala
index 98fc5689258aaf0970f6f1ed77c6dc1c8605d448..b3b7d37e841beae08952b5a26fd9ed3a30362186 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/RespondToPollReqMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/RespondToPollReqMsgHdlr.scala
@@ -1,4 +1,4 @@
-package org.bigbluebutton.core2.message.handlers
+package org.bigbluebutton.core.apps.polls
 
 import org.bigbluebutton.common2.domain.SimplePollResultOutVO
 import org.bigbluebutton.common2.msgs._
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/ShowPollResultReqMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/ShowPollResultReqMsgHdlr.scala
similarity index 97%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/ShowPollResultReqMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/ShowPollResultReqMsgHdlr.scala
index 320b86ff6a7c4d98576a461dd52eb9be9fdf4486..3d60a7b4d88977813cffc5aa0701624cd8bc4fcf 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/ShowPollResultReqMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/ShowPollResultReqMsgHdlr.scala
@@ -1,10 +1,10 @@
-package org.bigbluebutton.core2.message.handlers
+package org.bigbluebutton.core.apps.polls
 
+import org.bigbluebutton.common2.domain.{ AnnotationVO, SimplePollResultOutVO }
 import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
 import org.bigbluebutton.core.models.Polls
 import org.bigbluebutton.core.running.MeetingActor
-import org.bigbluebutton.common2.domain.{ AnnotationVO, SimplePollResultOutVO }
 
 trait ShowPollResultReqMsgHdlr {
   this: MeetingActor =>
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/StartCustomPollReqMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/StartCustomPollReqMsgHdlr.scala
similarity index 96%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/StartCustomPollReqMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/StartCustomPollReqMsgHdlr.scala
index 82e66fec2cc94fdde9fb453b769e5f77f708ed3a..52c3da3ab15f08f1be203f4f5f9539262d22e2c0 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/StartCustomPollReqMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/StartCustomPollReqMsgHdlr.scala
@@ -1,4 +1,4 @@
-package org.bigbluebutton.core2.message.handlers
+package org.bigbluebutton.core.apps.polls
 
 import org.bigbluebutton.common2.domain.SimplePollOutVO
 import org.bigbluebutton.common2.msgs._
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/StartPollReqMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/StartPollReqMsgHdlr.scala
similarity index 95%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/StartPollReqMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/StartPollReqMsgHdlr.scala
index f7c0553c61de0d5affbc9a3e5ca938f2843e6fe6..f4730393772527f1c8f8106b170aec8282d158eb 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/StartPollReqMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/StartPollReqMsgHdlr.scala
@@ -1,7 +1,7 @@
-package org.bigbluebutton.core2.message.handlers
+package org.bigbluebutton.core.apps.polls
 
-import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.common2.domain.SimplePollOutVO
+import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
 import org.bigbluebutton.core.models.Polls
 import org.bigbluebutton.core.running.MeetingActor
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/StopPollReqMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/StopPollReqMsgHdlr.scala
similarity index 95%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/StopPollReqMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/StopPollReqMsgHdlr.scala
index a746c7d749071906337a935a293429a9d96f05b8..19f5f318d7714a0304d0849bfae9f8353965f0c4 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/StopPollReqMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/polls/StopPollReqMsgHdlr.scala
@@ -1,4 +1,4 @@
-package org.bigbluebutton.core2.message.handlers
+package org.bigbluebutton.core.apps.polls
 
 import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/presentation/poll/EjectUserFromMeetingHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/presentation/poll/EjectUserFromMeetingHdlr.scala
deleted file mode 100755
index fff7a7389f08043958bcb1af9ef0396010063fd2..0000000000000000000000000000000000000000
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/presentation/poll/EjectUserFromMeetingHdlr.scala
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.bigbluebutton.core.apps.presentation.poll
-
-import org.bigbluebutton.core.api._
-import org.bigbluebutton.core.models.{ UserState, Users2x }
-
-trait EjectUserFromMeetingHdlr {
-  this: PollApp2x =>
-
-  def handle(msg: EjectUserFromMeeting, userToEject: UserState) {
-    // Stop poll if one is running as presenter left.
-    log.warning("TODO: Stop poll when presenter is ejected")
-    //handleStopPollRequest(StopPollRequest(liveMeeting.props.meetingProp.intId, assignedBy))
-  }
-}
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/presentation/poll/PollApp2x.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/presentation/poll/PollApp2x.scala
deleted file mode 100755
index 8b62f16d91d6d35c4001c47bd3e36a4da088525b..0000000000000000000000000000000000000000
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/presentation/poll/PollApp2x.scala
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.bigbluebutton.core.apps.presentation.poll
-
-import akka.actor.ActorContext
-import akka.event.Logging
-import org.bigbluebutton.core.OutMessageGateway
-import org.bigbluebutton.core.running.LiveMeeting
-
-class PollApp2x(val liveMeeting: LiveMeeting,
-  val outGW: OutMessageGateway)(implicit val context: ActorContext)
-    extends EjectUserFromMeetingHdlr {
-
-  val log = Logging(context.system, getClass)
-}
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/users/UserJoinedVoiceConfEvtMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserJoinedVoiceConfEvtMsgHdlr.scala
similarity index 95%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/users/UserJoinedVoiceConfEvtMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserJoinedVoiceConfEvtMsgHdlr.scala
index 8c726581eefe463c2c3eb72918af74f6d2107fc7..4c189ebe5b58a7ce27b782f75c1c05f999a17291 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/users/UserJoinedVoiceConfEvtMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserJoinedVoiceConfEvtMsgHdlr.scala
@@ -1,4 +1,4 @@
-package org.bigbluebutton.core2.message.handlers.users
+package org.bigbluebutton.core.apps.voice
 
 import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/users/UserJoinedVoiceConfMessageHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserJoinedVoiceConfMessageHdlr.scala
similarity index 89%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/users/UserJoinedVoiceConfMessageHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserJoinedVoiceConfMessageHdlr.scala
index db6ffe7b469e2a42e1ecf99d2afd622e5790d904..9c17f501be53683e9d9b8a68371b057ac4917478 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/users/UserJoinedVoiceConfMessageHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserJoinedVoiceConfMessageHdlr.scala
@@ -1,11 +1,7 @@
-package org.bigbluebutton.core2.message.handlers.users
+package org.bigbluebutton.core.apps.voice
 
 import org.bigbluebutton.core.OutMessageGateway
-import org.bigbluebutton.core.api._
-import org.bigbluebutton.core.models.{ Roles, Users1x }
 import org.bigbluebutton.core.running.MeetingActor
-import org.bigbluebutton.core2.MeetingStatus2x
-import org.bigbluebutton.common2.domain.VoiceUserVO
 
 trait UserJoinedVoiceConfMessageHdlr {
   this: MeetingActor =>
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/users/UserLeftVoiceConfEvtMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserLeftVoiceConfEvtMsgHdlr.scala
similarity index 93%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/users/UserLeftVoiceConfEvtMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserLeftVoiceConfEvtMsgHdlr.scala
index 57991edec9b489c8c80961c8cc115ee8bed1f4a6..0ce1f7beb862ef341d44fdf57a853b505908eabd 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/users/UserLeftVoiceConfEvtMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserLeftVoiceConfEvtMsgHdlr.scala
@@ -1,4 +1,4 @@
-package org.bigbluebutton.core2.message.handlers.users
+package org.bigbluebutton.core.apps.voice
 
 import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/users/UserMutedInVoiceConfEvtMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserMutedInVoiceConfEvtMsgHdlr.scala
similarity index 92%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/users/UserMutedInVoiceConfEvtMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserMutedInVoiceConfEvtMsgHdlr.scala
index 1b6e4bfd366ff8a40ce32f37cae9f92b8a94ddd0..834284a3c87c8d70307cfb4d38b59a44432751f6 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/users/UserMutedInVoiceConfEvtMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserMutedInVoiceConfEvtMsgHdlr.scala
@@ -1,4 +1,4 @@
-package org.bigbluebutton.core2.message.handlers.users
+package org.bigbluebutton.core.apps.voice
 
 import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/users/UserTalkingInVoiceConfEvtMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserTalkingInVoiceConfEvtMsgHdlr.scala
similarity index 92%
rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/users/UserTalkingInVoiceConfEvtMsgHdlr.scala
rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserTalkingInVoiceConfEvtMsgHdlr.scala
index 17d4b9c9c37f98e211a87da45647e9c5788e6f33..bd4fa03ad26e38cbf9cb3b71db8da7f89aeb7607 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/users/UserTalkingInVoiceConfEvtMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserTalkingInVoiceConfEvtMsgHdlr.scala
@@ -1,4 +1,4 @@
-package org.bigbluebutton.core2.message.handlers.users
+package org.bigbluebutton.core.apps.voice
 
 import org.bigbluebutton.common2.msgs._
 import org.bigbluebutton.core.OutMessageGateway
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/VoiceApp2x.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/VoiceApp2x.scala
new file mode 100755
index 0000000000000000000000000000000000000000..49471d88817f5c9d81b84a4a00790b1e7e08f6ae
--- /dev/null
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/VoiceApp2x.scala
@@ -0,0 +1,12 @@
+package org.bigbluebutton.core.apps.voice
+
+import org.bigbluebutton.core.running.MeetingActor
+
+trait VoiceApp2x extends UserJoinedVoiceConfEvtMsgHdlr
+    with UserJoinedVoiceConfMessageHdlr
+    with UserLeftVoiceConfEvtMsgHdlr
+    with UserMutedInVoiceConfEvtMsgHdlr
+    with UserTalkingInVoiceConfEvtMsgHdlr {
+
+  this: MeetingActor =>
+}
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/ReceivedJsonMsgHandlerActor.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/ReceivedJsonMsgHandlerActor.scala
index fa811677d0e64f1882186a496ef64fcb94de4a72..d04aca35781a6576d9985a7a2f81088810c91efc 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/ReceivedJsonMsgHandlerActor.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/ReceivedJsonMsgHandlerActor.scala
@@ -214,9 +214,9 @@ class ReceivedJsonMsgHandlerActor(
         } yield {
           send(m.header.meetingId, envelope, m)
         }
-      case GetCurrentLayoutMsg.NAME =>
+      case GetCurrentLayoutReqMsg.NAME =>
         for {
-          m <- deserialize[GetCurrentLayoutMsg](jsonNode)
+          m <- deserialize[GetCurrentLayoutReqMsg](jsonNode)
         } yield {
           send(m.header.meetingId, envelope, m)
         }
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/running/MeetingActor.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/running/MeetingActor.scala
index f6faa4e0266a98692513e2efa356ae2a8ba7887b..b5d8c8e68f0148d2b47ac6a7f747791985d86c52 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/running/MeetingActor.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/running/MeetingActor.scala
@@ -3,7 +3,6 @@ package org.bigbluebutton.core.running
 import java.io.{ PrintWriter, StringWriter }
 
 import akka.actor._
-import akka.actor.ActorLogging
 import akka.actor.SupervisorStrategy.Resume
 import org.bigbluebutton.common2.domain.DefaultProps
 import org.bigbluebutton.core._
@@ -12,7 +11,6 @@ import org.bigbluebutton.core.apps._
 import org.bigbluebutton.core.apps.caption.CaptionApp2x
 import org.bigbluebutton.core.apps.deskshare.DeskshareApp2x
 import org.bigbluebutton.core.apps.presentation.PresentationApp2x
-import org.bigbluebutton.core.apps.presentation.poll.PollApp2x
 import org.bigbluebutton.core.apps.users.UsersApp2x
 import org.bigbluebutton.core.bus._
 import org.bigbluebutton.core.models.{ RegisteredUsers, Users1x }
@@ -20,13 +18,15 @@ import org.bigbluebutton.core2.MeetingStatus2x
 import org.bigbluebutton.core2.message.handlers._
 import org.bigbluebutton.core2.message.handlers.users._
 import org.bigbluebutton.common2.msgs._
+import org.bigbluebutton.core.apps.breakout._
+import org.bigbluebutton.core.apps.layout.LayoutApp2x
+import org.bigbluebutton.core.apps.polls._
+import org.bigbluebutton.core.apps.voice._
 
 import scala.concurrent.duration._
 import org.bigbluebutton.core.models.BreakoutRooms
-import org.bigbluebutton.core2.message.handlers.breakoutrooms._
-import org.bigbluebutton.core2.message.handlers.guests.SetGuestPolicyMsgHdlr
 import org.bigbluebutton.core2.testdata.FakeTestData
-import org.bigbluebutton.core2.message.handlers.layout._
+import org.bigbluebutton.core.apps.layout.LayoutApp2x
 
 object MeetingActor {
   def props(props: DefaultProps,
@@ -40,15 +40,17 @@ class MeetingActor(val props: DefaultProps,
   val outGW: OutMessageGateway, val liveMeeting: LiveMeeting)
     extends BaseMeetingActor
     with GuestsApp
+    with LayoutApp2x
+    with VoiceApp2x
+    with PollApp2x
+    with BreakoutApp2x
+
     with UsersApp with PresentationApp
-    with LayoutApp with ChatApp with WhiteboardApp with PollApp
+    with ChatApp with WhiteboardApp with PollApp
     with BreakoutRoomApp
     with SharedNotesApp with PermisssionCheck
     with UserBroadcastCamStartMsgHdlr
-    with UserJoinedVoiceConfEvtMsgHdlr
-    with UserLeftVoiceConfEvtMsgHdlr
     with UserJoinMeetingReqMsgHdlr
-    with StartPollReqMsgHdlr
     with UserBroadcastCamStopMsgHdlr
     with UserConnectedToGlobalAudioHdlr
     with UserDisconnectedFromGlobalAudioHdlr
@@ -57,12 +59,6 @@ class MeetingActor(val props: DefaultProps,
     with IsMeetingMutedRequestHdlr
     with MuteUserRequestHdlr
     with EjectUserFromVoiceRequestHdlr
-    with StartCustomPollReqMsgHdlr
-    with StopPollReqMsgHdlr
-    with RespondToPollReqMsgHdlr
-    with GetCurrentPollReqMsgHdlr
-    with HidePollResultReqMsgHdlr
-    with ShowPollResultReqMsgHdlr
     with UserJoinedVoiceConfMessageHdlr
     with ValidateAuthTokenReqMsgHdlr
     with BreakoutRoomsListMsgHdlr
@@ -75,10 +71,7 @@ class MeetingActor(val props: DefaultProps,
     with SendBreakoutUsersUpdateMsgHdlr
     with TransferUserToMeetingRequestHdlr
     with UserMutedInVoiceConfEvtMsgHdlr
-    with UserTalkingInVoiceConfEvtMsgHdlr
-    with GetCurrentLayoutMsgHdlr
-    with LockLayoutMsgHdlr
-    with BroadcastLayoutMsgHdlr {
+    with UserTalkingInVoiceConfEvtMsgHdlr {
 
   override val supervisorStrategy = OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = 1 minute) {
     case e: Exception => {
@@ -104,7 +97,6 @@ class MeetingActor(val props: DefaultProps,
 
   val usersApp2x = new UsersApp2x(liveMeeting, outGW = outGW)
   val presentationApp2x = new PresentationApp2x(liveMeeting, outGW = outGW)
-  val pollApp2x = new PollApp2x(liveMeeting, outGW = outGW)
   val deskshareApp2x = new DeskshareApp2x(liveMeeting, outGW = outGW)
   val captionApp2x = new CaptionApp2x(liveMeeting, outGW = outGW)
 
@@ -144,8 +136,6 @@ class MeetingActor(val props: DefaultProps,
     case msg: SendPrivateMessageRequest => handleSendPrivateMessageRequest(msg)
     case msg: UserConnectedToGlobalAudio => handleUserConnectedToGlobalAudio(msg)
     case msg: UserDisconnectedFromGlobalAudio => handleUserDisconnectedFromGlobalAudio(msg)
-    case msg: GetCurrentLayoutRequest => handleGetCurrentLayoutRequest(msg)
-    case msg: BroadcastLayoutRequest => handleBroadcastLayoutRequest(msg)
     case msg: InitializeMeeting => handleInitializeMeeting(msg)
     case msg: ClearPresentation => handleClearPresentation(msg)
     case msg: PresentationConversionUpdate => handlePresentationConversionUpdate(msg)
@@ -236,7 +226,7 @@ class MeetingActor(val props: DefaultProps,
       case m: UserLeftVoiceConfEvtMsg => handle(m)
       case m: UserMutedInVoiceConfEvtMsg => handle(m)
       case m: UserTalkingInVoiceConfEvtMsg => handle(m)
-      case m: GetCurrentLayoutMsg => handleGetCurrentLayoutMsg(m)
+      case m: GetCurrentLayoutReqMsg => handle(m)
       case m: LockLayoutMsg => handleLockLayoutMsg(m)
       case m: BroadcastLayoutMsg => handleBroadcastLayoutMsg(m)
       case m: SetCurrentPresentationPubMsg => presentationApp2x.handleSetCurrentPresentationPubMsg(m)
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/SetLockSettingsHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/SetLockSettingsHdlr.scala
index 8d0e9c24891fadf20214d4cd5a89e29fda52454d..216fa1471cec278e7a55b07528ea4fba2bfe398e 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/SetLockSettingsHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/SetLockSettingsHdlr.scala
@@ -20,7 +20,7 @@ trait SetLockSettingsHdlr {
         MeetingStatus2x.getPermissions(liveMeeting.status),
         Users.getUsers(liveMeeting.users).toArray))
 */
-      handleLockLayout(msg.settings.lockedLayout, msg.setByUser)
+      //      handleLockLayout(msg.settings.lockedLayout, msg.setByUser)
     }
   }
 }
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/layout/GetCurrentLayoutMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/layout/GetCurrentLayoutMsgHdlr.scala
deleted file mode 100755
index f7820f09fbf6c4d006f54a35df4b49417a2f851b..0000000000000000000000000000000000000000
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/layout/GetCurrentLayoutMsgHdlr.scala
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.bigbluebutton.core2.message.handlers.layout
-
-import org.bigbluebutton.common2.msgs._
-import org.bigbluebutton.core.running.MeetingActor
-import org.bigbluebutton.core2.MeetingStatus2x
-import org.bigbluebutton.core.OutMessageGateway
-import org.bigbluebutton.core.models.Layouts
-
-trait GetCurrentLayoutMsgHdlr {
-  this: MeetingActor =>
-
-  val outGW: OutMessageGateway
-
-  def handleGetCurrentLayoutMsg(msg: GetCurrentLayoutMsg): Unit = {
-
-    def broadcastEvent(msg: GetCurrentLayoutMsg): Unit = {
-
-      val routing = Routing.addMsgToClientRouting(MessageTypes.DIRECT, props.meetingProp.intId, msg.header.userId)
-      val envelope = BbbCoreEnvelope(GetCurrentLayoutEvtMsg.NAME, routing)
-      val header = BbbClientMsgHeader(GetCurrentLayoutEvtMsg.NAME, props.meetingProp.intId, msg.header.userId)
-
-      val body = GetCurrentLayoutEvtMsgBody(msg.body.meetingId, props.recordProp.record, msg.body.requesterId,
-        Layouts.getCurrentLayout(),
-        MeetingStatus2x.getPermissions(liveMeeting.status).lockedLayout,
-        Layouts.getLayoutSetter())
-      val event = GetCurrentLayoutEvtMsg(header, body)
-      val msgEvent = BbbCommonEnvCoreMsg(envelope, event)
-
-      outGW.send(msgEvent)
-    }
-
-    broadcastEvent(msg)
-  }
-}
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/layout/LockLayoutMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/layout/LockLayoutMsgHdlr.scala
deleted file mode 100755
index 6d7777300c74ebb7b85feec4cf33107242680054..0000000000000000000000000000000000000000
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/message/handlers/layout/LockLayoutMsgHdlr.scala
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.bigbluebutton.core2.message.handlers.layout
-
-import org.bigbluebutton.common2.msgs._
-import org.bigbluebutton.core.OutMessageGateway
-import org.bigbluebutton.core.models.Layouts
-import org.bigbluebutton.core.running.MeetingActor
-import org.bigbluebutton.core2.MeetingStatus2x
-
-trait LockLayoutMsgHdlr {
-  this: MeetingActor =>
-
-  val outGW: OutMessageGateway
-
-  def handleLockLayoutMsg(msg: LockLayoutMsg): Unit = {
-
-    def broadcastEvent(msg: LockLayoutMsg): Unit = {
-
-      Layouts.applyToViewersOnly(msg.body.viewersOnly)
-      liveMeeting.lockLayout(msg.body.lock)
-
-      val routing = Routing.addMsgToClientRouting(MessageTypes.BROADCAST_TO_MEETING, props.meetingProp.intId, msg.header.userId)
-      val envelope = BbbCoreEnvelope(LockLayoutEvtMsg.NAME, routing)
-      val header = BbbClientMsgHeader(LockLayoutEvtMsg.NAME, props.meetingProp.intId, msg.header.userId)
-
-      val body = LockLayoutEvtMsgBody(msg.body.meetingId, props.recordProp.record, msg.body.setById, msg.body.lock, affectedUsers)
-      val event = LockLayoutEvtMsg(header, body)
-      val msgEvent = BbbCommonEnvCoreMsg(envelope, event)
-
-      outGW.send(msgEvent)
-
-      msg.body.layout foreach { l =>
-        Layouts.setCurrentLayout(l)
-        broadcastSyncLayout(msg.body.meetingId, msg.body.setById)
-      }
-
-      outGW.send(msgEvent)
-    }
-
-    def broadcastSyncLayout(meetingId: String, setById: String) {
-
-      val routing = Routing.addMsgToClientRouting(MessageTypes.BROADCAST_TO_MEETING, props.meetingProp.intId, msg.header.userId)
-      val envelope = BbbCoreEnvelope(BroadcastLayoutEvtMsg.NAME, routing)
-      val header = BbbClientMsgHeader(BroadcastLayoutEvtMsg.NAME, props.meetingProp.intId, msg.header.userId)
-
-      val body = BroadcastLayoutEvtMsgBody(meetingId, props.recordProp.record, setById,
-        Layouts.getCurrentLayout(),
-        MeetingStatus2x.getPermissions(liveMeeting.status).lockedLayout,
-        Layouts.getLayoutSetter(), affectedUsers)
-      val event = BroadcastLayoutEvtMsg(header, body)
-      val msgEvent = BbbCommonEnvCoreMsg(envelope, event)
-
-      outGW.send(msgEvent)
-    }
-
-    broadcastEvent(msg)
-  }
-}
diff --git a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/LayoutMsgs.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/LayoutMsgs.scala
index 80117b0b074142614b348cb54d24bc179dff5b05..0309371e46739c3b4a2f1087af1af85eadea5261 100755
--- a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/LayoutMsgs.scala
+++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/LayoutMsgs.scala
@@ -1,36 +1,28 @@
 package org.bigbluebutton.common2.msgs
 
-import org.bigbluebutton.common2.domain.UserVO
 
+// In messages
+object GetCurrentLayoutReqMsg { val NAME = "GetCurrentLayoutReqMsg" }
+case class GetCurrentLayoutReqMsg(header: BbbClientMsgHeader, body: GetCurrentLayoutReqMsgBody) extends BbbCoreMsg
+case class GetCurrentLayoutReqMsgBody()
 
+object LockLayoutMsg { val NAME = "LockLayoutMsg" }
+case class LockLayoutMsg(header: BbbClientMsgHeader, body: LockLayoutMsgBody) extends BbbCoreMsg
+case class LockLayoutMsgBody(lock: Boolean, viewersOnly: Boolean, layout: Option[String])
 
-  // In messages
-  object GetCurrentLayoutMsg { val NAME = "GetCurrentLayoutMsg" }
-  case class GetCurrentLayoutMsg(header: BbbClientMsgHeader, body: GetCurrentLayoutMsgBody) extends BbbCoreMsg
-  case class GetCurrentLayoutMsgBody(meetingId: String, requesterId: String)
+object BroadcastLayoutMsg { val NAME = "BroadcastLayoutMsg" }
+case class BroadcastLayoutMsg(header: BbbClientMsgHeader, body: BroadcastLayoutMsgBody) extends BbbCoreMsg
+case class BroadcastLayoutMsgBody(layout: String)
 
-  object LockLayoutMsg { val NAME = "LockLayoutMsg" }
-  case class LockLayoutMsg(header: BbbClientMsgHeader, body: LockLayoutMsgBody) extends BbbCoreMsg
-  case class LockLayoutMsgBody(meetingId: String, setById: String, lock: Boolean, viewersOnly: Boolean,
-                               layout: Option[String])
+// Out messages
+object GetCurrentLayoutRespMsg { val NAME = "GetCurrentLayoutRespMsg" }
+case class GetCurrentLayoutRespMsg(header: BbbClientMsgHeader, body: GetCurrentLayoutRespMsgBody) extends BbbCoreMsg
+case class GetCurrentLayoutRespMsgBody(layout: String, locked: Boolean, setByUserId: String)
 
-  object BroadcastLayoutMsg { val NAME = "BroadcastLayoutMsg" }
-  case class BroadcastLayoutMsg(header: BbbClientMsgHeader, body: BroadcastLayoutMsgBody) extends BbbCoreMsg
-  case class BroadcastLayoutMsgBody(meetingId: String, requesterId: String, layout: String)
-
-  // Out messages
-  object GetCurrentLayoutEvtMsg { val NAME = "GetCurrentLayoutEvtMsg" }
-  case class GetCurrentLayoutEvtMsg(header: BbbClientMsgHeader, body: GetCurrentLayoutEvtMsgBody) extends BbbCoreMsg
-  case class GetCurrentLayoutEvtMsgBody(meetingId: String, recorded: Boolean, requesterId: String, layoutId: String,
-                                        locked: Boolean, setByUserId: String)
-
-  object BroadcastLayoutEvtMsg { val NAME = "BroadcastLayoutEvtMsg" }
-  case class BroadcastLayoutEvtMsg(header: BbbClientMsgHeader, body: BroadcastLayoutEvtMsgBody) extends BbbCoreMsg
-  case class BroadcastLayoutEvtMsgBody(meetingId: String, recorded: Boolean, requesterId: String,
-                                       layoutId: String, locked: Boolean, setByUserId: String, applyTo: Vector[String])
-
-  object LockLayoutEvtMsg { val NAME = "LockLayoutEvtMsg" }
-  case class LockLayoutEvtMsg(header: BbbClientMsgHeader, body: LockLayoutEvtMsgBody) extends BbbCoreMsg
-  case class LockLayoutEvtMsgBody(meetingId: String, recorded: Boolean, setById: String, locked: Boolean,
-                                  applyTo: Vector[String])
+object BroadcastLayoutEvtMsg { val NAME = "BroadcastLayoutEvtMsg" }
+case class BroadcastLayoutEvtMsg(header: BbbClientMsgHeader, body: BroadcastLayoutEvtMsgBody) extends BbbCoreMsg
+case class BroadcastLayoutEvtMsgBody(layout: String, locked: Boolean, setByUserId: String, applyTo: Vector[String])
 
+object LockLayoutEvtMsg { val NAME = "LockLayoutEvtMsg" }
+case class LockLayoutEvtMsg(header: BbbClientMsgHeader, body: LockLayoutEvtMsgBody) extends BbbCoreMsg
+case class LockLayoutEvtMsgBody(setById: String, locked: Boolean, applyTo: Vector[String])
diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/BroadcastLayoutMsgBody.as b/bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/BroadcastLayoutMsgBody.as
old mode 100644
new mode 100755
index b5c6639273dea881e4032f22106faf9d5b65a96a..91621aa7ec628bd09502a161a8018ea619979d39
--- a/bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/BroadcastLayoutMsgBody.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/BroadcastLayoutMsgBody.as
@@ -20,15 +20,9 @@ package org.bigbluebutton.core.connection.messages.layout {
 
 	public class BroadcastLayoutMsgBody {
 
-		public var meetingId:String;
-
-		public var requesterId:String;
-
 		public var layout:String;
 
-		public function BroadcastLayoutMsgBody(meetingId:String, requesterId:String, layout:String) {
-			this.meetingId = meetingId;
-			this.requesterId = requesterId;
+		public function BroadcastLayoutMsgBody(layout:String) {
 			this.layout = layout;
 		}
 	}
diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/GetCurrentLayoutMsg.as b/bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/GetCurrentLayoutReqMsg.as
old mode 100644
new mode 100755
similarity index 82%
rename from bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/GetCurrentLayoutMsg.as
rename to bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/GetCurrentLayoutReqMsg.as
index 92f97bc667fe65aaeb07136e608cb03812432927..050c638ebe6226e35adae67da24cdc9626e4f024
--- a/bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/GetCurrentLayoutMsg.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/GetCurrentLayoutReqMsg.as
@@ -19,10 +19,10 @@
 package org.bigbluebutton.core.connection.messages.layout {
 	import org.bigbluebutton.core.connection.messages.BbbCommonMsg;
 
-	public class GetCurrentLayoutMsg extends BbbCommonMsg {
-		public var body:GetCurrentLayoutMsgBody;
+	public class GetCurrentLayoutReqMsg extends BbbCommonMsg {
+		public var body:GetCurrentLayoutReqMsgBody;
 
-		public function GetCurrentLayoutMsg(body:GetCurrentLayoutMsgBody) {
+		public function GetCurrentLayoutReqMsg(body:GetCurrentLayoutReqMsgBody) {
 			super();
 			this.body = body;
 		}
diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/GetCurrentLayoutMsgBody.as b/bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/GetCurrentLayoutReqMsgBody.as
old mode 100644
new mode 100755
similarity index 76%
rename from bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/GetCurrentLayoutMsgBody.as
rename to bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/GetCurrentLayoutReqMsgBody.as
index 62f29088cdee17a18756e3fcfc1200df3502ce56..40ff04c0bc9c72dcea15b830eef86940870cbcf6
--- a/bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/GetCurrentLayoutMsgBody.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/GetCurrentLayoutReqMsgBody.as
@@ -18,15 +18,9 @@
  */
 package org.bigbluebutton.core.connection.messages.layout {
 
-	public class GetCurrentLayoutMsgBody {
+	public class GetCurrentLayoutReqMsgBody {
 
-		public var meetingId:String;
-
-		public var requesterId:String;
-
-		public function GetCurrentLayoutMsgBody(meetingId:String, requesterId:String) {
-			this.meetingId = meetingId;
-			this.requesterId = requesterId;
+		public function GetCurrentLayoutReqMsgBody() {
 		}
 	}
 }
diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/LockLayoutMsgBody.as b/bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/LockLayoutMsgBody.as
old mode 100644
new mode 100755
index 6f1eb6c4aae1179e8f3eb60b8a0ca9caf83de499..cad0cc41a5e7f3734e2598aac97e1983b24ba4e9
--- a/bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/LockLayoutMsgBody.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/core/connection/messages/layout/LockLayoutMsgBody.as
@@ -20,19 +20,13 @@ package org.bigbluebutton.core.connection.messages.layout {
 
 	public class LockLayoutMsgBody {
 
-		public var meetingId:String;
-
-		public var setById:String;
-
 		public var lock:Boolean;
 
 		public var viewersOnly:Boolean;
 
 		public var layout:String;
 
-		public function LockLayoutMsgBody(meetingId:String, setById:String, lock:Boolean, viewersOnly:Boolean, layout:String) {
-			this.meetingId = meetingId;
-			this.setById = setById;
+		public function LockLayoutMsgBody(lock:Boolean, viewersOnly:Boolean, layout:String) {
 			this.lock = lock;
 			this.viewersOnly = viewersOnly;
 			this.layout = layout;
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/layout/services/MessageReceiver.as b/bigbluebutton-client/src/org/bigbluebutton/modules/layout/services/MessageReceiver.as
index 4463adccfcc4c84e88b3182b4f3f190ab39da41a..946c6de027432ab2162ec6280222fbd37f992d22 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/layout/services/MessageReceiver.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/layout/services/MessageReceiver.as
@@ -31,13 +31,16 @@ package org.bigbluebutton.modules.layout.services {
 			//      trace("LAYOUT: received message " + messageName);
 
 			switch (messageName) {
-				case "GetCurrentLayoutEvtMsg":
-					handleGetCurrentLayoutEvtMsg(message);
+				case "GetCurrentLayoutRespMsg":
+					handleGetCurrentLayoutRespMsg(message);
 					break;
 				case "BroadcastLayoutEvtMsg":
 					handleBroadcastLayoutEvtMsg(message);
+					break;
 				case "LockLayoutEvtMsg":
 					handleLockLayoutEvtMsg(message);
+					break;
+					/*
 				case "getCurrentLayoutResponse":
 					handleGetCurrentLayoutResponse(message);
 					break;
@@ -47,40 +50,24 @@ package org.bigbluebutton.modules.layout.services {
 				case "syncLayout":
 					handleSyncLayout(message);
 					break;
+					*/
 			}
 		}
 
-		private function handleGetCurrentLayoutEvtMsg(message:Object):void {
+		private function handleGetCurrentLayoutRespMsg(message:Object):void {
 			_applyFirstLayoutTimer.addEventListener(TimerEvent.TIMER, function(e:TimerEvent):void {
 				onReceivedFirstLayout(message.body);
 			});
 			_applyFirstLayoutTimer.start();
 		}
 
-		private function handleBroadcastLayoutEvtMsg(message:Object):void {
+		private function handleLockLayoutEvtMsg(message:Object):void {
 			if (message.body.hasOwnProperty("locked") && message.body.hasOwnProperty("setById"))
 				lockLayout(message.body.locked, message.body.setById);
 		}
 
-		private function handleLockLayoutEvtMsg(message:Object):void {
-			_dispatcher.dispatchEvent(new RemoteSyncLayoutEvent(message.body.layout));
-			if (message.body.layout == "")
-				return;
-
-			var layoutDefinition:LayoutDefinition = new LayoutDefinition();
-			layoutDefinition.load(new XML(message.body.layout));
-			var translatedName:String = ResourceUtil.getInstance().getString(layoutDefinition.name)
-			if (translatedName == "undefined")
-				translatedName = layoutDefinition.name;
-			// remove previously added [Remote] mark
-			var pattern:RegExp = /^\[.*\] /g;
-			translatedName = translatedName.replace(pattern, "");
-			layoutDefinition.name = "[" + ResourceUtil.getInstance().getString('bbb.layout.combo.remote') + "] " + translatedName;
-			var redefineLayout:LayoutFromRemoteEvent = new LayoutFromRemoteEvent();
-			redefineLayout.layout = layoutDefinition;
-			redefineLayout.remote = true;
-
-			_dispatcher.dispatchEvent(redefineLayout);
+		private function handleBroadcastLayoutEvtMsg(message:Object):void {
+			handleSyncLayout(message.body);
 		}
 
 		/*
@@ -98,9 +85,9 @@ package org.bigbluebutton.modules.layout.services {
 		}
 
 		private function onReceivedFirstLayout(message:Object):void {
-			LOGGER.debug("LayoutService: handling the first layout. locked = [{0}] layout = [{1}]", [message.locked, message.layoutId]);
-			trace("LayoutService: handling the first layout. locked = [" + message.locked + "] layout = [" + message.layoutId + "], moderator = [" + UsersUtil.amIModerator() + "]");
-			if (message.layoutId == "")
+			LOGGER.debug("LayoutService: handling the first layout. locked = [{0}] layout = [{1}]", [message.locked, message.layout]);
+			trace("LayoutService: handling the first layout. locked = [" + message.locked + "] layout = [" + message.layout + "], moderator = [" + UsersUtil.amIModerator() + "]");
+			if (message.layout == "")
 				_dispatcher.dispatchEvent(new LayoutEvent(LayoutEvent.APPLY_DEFAULT_LAYOUT_EVENT));
 			else {
 				handleSyncLayout(message);
@@ -111,12 +98,14 @@ package org.bigbluebutton.modules.layout.services {
 		}
 
 		private function handleSyncLayout(message:Object):void {
-			_dispatcher.dispatchEvent(new RemoteSyncLayoutEvent(message.layoutId));
-			if (message.layoutId == "")
+			// is this event needed? Doesn't seem to do anything becasue it only applies to the original layout and then it's changed right afterwards once the new one is loaded
+			_dispatcher.dispatchEvent(new RemoteSyncLayoutEvent(message.layout));
+			
+			if (message.layout == "")
 				return;
 
 			var layoutDefinition:LayoutDefinition = new LayoutDefinition();
-			layoutDefinition.load(new XML(message.layoutId));
+			layoutDefinition.load(new XML(message.layout));
 			var translatedName:String = ResourceUtil.getInstance().getString(layoutDefinition.name)
 			if (translatedName == "undefined")
 				translatedName = layoutDefinition.name;
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/layout/services/MessageSender.as b/bigbluebutton-client/src/org/bigbluebutton/modules/layout/services/MessageSender.as
old mode 100644
new mode 100755
index e474cf3bd87b6c4ca00d111f1e881458cec14388..1f3dd9d9f5fa66b1519f6999b91edf67cae71821
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/layout/services/MessageSender.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/layout/services/MessageSender.as
@@ -5,8 +5,8 @@ package org.bigbluebutton.modules.layout.services {
 	import org.bigbluebutton.core.UsersUtil;
 	import org.bigbluebutton.core.connection.messages.layout.BroadcastLayoutMsg;
 	import org.bigbluebutton.core.connection.messages.layout.BroadcastLayoutMsgBody;
-	import org.bigbluebutton.core.connection.messages.layout.GetCurrentLayoutMsg;
-	import org.bigbluebutton.core.connection.messages.layout.GetCurrentLayoutMsgBody;
+	import org.bigbluebutton.core.connection.messages.layout.GetCurrentLayoutReqMsg;
+	import org.bigbluebutton.core.connection.messages.layout.GetCurrentLayoutReqMsgBody;
 	import org.bigbluebutton.core.connection.messages.layout.LockLayoutMsg;
 	import org.bigbluebutton.core.connection.messages.layout.LockLayoutMsgBody;
 	import org.bigbluebutton.core.managers.ConnectionManager;
@@ -16,8 +16,8 @@ package org.bigbluebutton.modules.layout.services {
 		private static const LOGGER:ILogger = getClassLogger(MessageSender);
 
 		public function getCurrentLayout():void {
-			var body:GetCurrentLayoutMsgBody = new GetCurrentLayoutMsgBody(UsersUtil.getInternalMeetingID(), UsersUtil.getMyUserID());
-			var message:GetCurrentLayoutMsg = new GetCurrentLayoutMsg(body);
+			var body:GetCurrentLayoutReqMsgBody = new GetCurrentLayoutReqMsgBody();
+			var message:GetCurrentLayoutReqMsg = new GetCurrentLayoutReqMsg(body);
 
 			var _nc:ConnectionManager = BBB.initConnectionManager();
 			_nc.sendMessage2x(function(result:String):void { // On successful result
@@ -30,7 +30,7 @@ package org.bigbluebutton.modules.layout.services {
 		}
 
 		public function broadcastLayout(layout:LayoutDefinition):void {
-			var body:BroadcastLayoutMsgBody = new BroadcastLayoutMsgBody(UsersUtil.getInternalMeetingID(), UsersUtil.getMyUserID(), layout.toXml().toXMLString());
+			var body:BroadcastLayoutMsgBody = new BroadcastLayoutMsgBody(layout.toXml().toXMLString());
 			var message:BroadcastLayoutMsg = new BroadcastLayoutMsg(body);
 
 			var _nc:ConnectionManager = BBB.initConnectionManager();
@@ -44,7 +44,7 @@ package org.bigbluebutton.modules.layout.services {
 		}
 
 		public function lockLayout(lock:Boolean, viewersOnly:Boolean, layout:LayoutDefinition = null):void {
-			var body:LockLayoutMsgBody = new LockLayoutMsgBody(UsersUtil.getInternalMeetingID(), UsersUtil.getMyUserID(), lock, viewersOnly, layout != null ? layout.toXml().toXMLString() : null);
+			var body:LockLayoutMsgBody = new LockLayoutMsgBody(lock, viewersOnly, layout != null ? layout.toXml().toXMLString() : null);
 			var message:LockLayoutMsg = new LockLayoutMsg(body);
 
 			var _nc:ConnectionManager = BBB.initConnectionManager();