diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/RemoveUserFromPresenterGroupCmdMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/RemoveUserFromPresenterGroupCmdMsgHdlr.scala
index f7e8281cb855546eb40be6c8bbc57b9e92e2a46c..c61995dca2ded8ab1330cbf7fce7a4e52e6cb911 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/RemoveUserFromPresenterGroupCmdMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/RemoveUserFromPresenterGroupCmdMsgHdlr.scala
@@ -13,17 +13,6 @@ trait RemoveUserFromPresenterGroupCmdMsgHdlr {
 
   def handleRemoveUserFromPresenterGroupCmdMsg(msg: RemoveUserFromPresenterGroupCmdMsg) {
 
-    def broadcastRemoveUserFromPresenterGroup(meetingId: String, userId: String, requesterId: String): Unit = {
-      val routing = Routing.addMsgToClientRouting(MessageTypes.BROADCAST_TO_MEETING, meetingId, userId)
-      val envelope = BbbCoreEnvelope(UserRemovedFromPresenterGroupEvtMsg.NAME, routing)
-      val header = BbbClientMsgHeader(UserRemovedFromPresenterGroupEvtMsg.NAME, meetingId, userId)
-      val body = UserRemovedFromPresenterGroupEvtMsgBody(userId, requesterId)
-      val event = UserRemovedFromPresenterGroupEvtMsg(header, body)
-      val msgEvent = BbbCommonEnvCoreMsg(envelope, event)
-
-      outGW.send(msgEvent)
-    }
-
     if (applyPermissionCheck && !PermissionCheck.isAllowed(PermissionCheck.MOD_LEVEL, PermissionCheck.VIEWER_LEVEL, liveMeeting.users2x, msg.header.userId)) {
       val meetingId = liveMeeting.props.meetingProp.intId
       val reason = "No permission to remove user from presenter group."
@@ -37,7 +26,7 @@ trait RemoveUserFromPresenterGroupCmdMsgHdlr {
       } yield {
         if (requester.role == Roles.MODERATOR_ROLE) {
           Users2x.removeUserFromPresenterGroup(liveMeeting.users2x, userId)
-          broadcastRemoveUserFromPresenterGroup(liveMeeting.props.meetingProp.intId, userId, requesterId)
+          outGW.send(buildRemoveUserFromPresenterGroup(liveMeeting.props.meetingProp.intId, userId, requesterId))
         }
       }
     }
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/UserLeaveReqMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/UserLeaveReqMsgHdlr.scala
index 686cf634d1a83d85a2816c59b6b0b48265d886d5..1b422bf666da34578ec2b643ac9eb01de8ff6f76 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/UserLeaveReqMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/UserLeaveReqMsgHdlr.scala
@@ -43,6 +43,11 @@ trait UserLeaveReqMsgHdlr {
         pollApp.stopPoll(state, u.intId, liveMeeting, msgBus)
       }
 
+      if (Users2x.userIsInPresenterGroup(liveMeeting.users2x, u.intId)) {
+        Users2x.removeUserFromPresenterGroup(liveMeeting.users2x, u.intId)
+        outGW.send(buildRemoveUserFromPresenterGroup(liveMeeting.props.meetingProp.intId, u.intId, u.intId))
+      }
+
       def broadcastEvent(vu: VoiceUserState): Unit = {
         val routing = Routing.addMsgToClientRouting(MessageTypes.BROADCAST_TO_MEETING, liveMeeting.props.meetingProp.intId,
           vu.intId)
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/running/HandlerHelpers.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/running/HandlerHelpers.scala
index 3a5bf819779b0f1982e8477242dfd4525aa9f591..ec8374f12a156d69cff3341f9ed95b4745833089 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/running/HandlerHelpers.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/running/HandlerHelpers.scala
@@ -218,4 +218,13 @@ trait HandlerHelpers extends SystemConfiguration {
 
     BbbCommonEnvCoreMsg(envelope, event)
   }
+
+  def buildRemoveUserFromPresenterGroup(meetingId: String, userId: String, requesterId: String): BbbCommonEnvCoreMsg = {
+    val routing = Routing.addMsgToClientRouting(MessageTypes.BROADCAST_TO_MEETING, meetingId, userId)
+    val envelope = BbbCoreEnvelope(UserRemovedFromPresenterGroupEvtMsg.NAME, routing)
+    val header = BbbClientMsgHeader(UserRemovedFromPresenterGroupEvtMsg.NAME, meetingId, userId)
+    val body = UserRemovedFromPresenterGroupEvtMsgBody(userId, requesterId)
+    val event = UserRemovedFromPresenterGroupEvtMsg(header, body)
+    BbbCommonEnvCoreMsg(envelope, event)
+  }
 }
diff --git a/bigbluebutton-client/build.xml b/bigbluebutton-client/build.xml
index b7281c804ad2838697ea6214a873aa8a4a72aa1d..176d5fd1b09a6251f961c426767cf7ab8133cc03 100755
--- a/bigbluebutton-client/build.xml
+++ b/bigbluebutton-client/build.xml
@@ -509,6 +509,4 @@
 	<target name="modules" depends="init-ant-contrib, generate-html-wrapper, compile-screenshare-standalone,
 	                                         build-webcam-preview-standalone, build-webcam-view-standalone, compile-bbb" description="Build BBB client without locales" />
 	<target name="cleanandmake" depends="clean-build-all" description="Build BBB client including locales" />
-
-	<target name="build-poll" depends="init-ant-contrib, build-polling" description="Build only the polling module." />
 </project>