diff --git a/akka-bbb-apps/build.sbt b/akka-bbb-apps/build.sbt
index 3409c0ecd8a3a1b75f3e9c861cac396ab96bb6a9..a951b1e1d12fa9cb9dd299b0cf1908bb9e33e79a 100755
--- a/akka-bbb-apps/build.sbt
+++ b/akka-bbb-apps/build.sbt
@@ -49,8 +49,8 @@ libraryDependencies ++= {
 	  "joda-time"                 %  "joda-time"         % "2.3",
 	  "com.google.code.gson"      %  "gson"              % "1.7.1",
 	  "redis.clients"             %  "jedis"             % "2.7.2",
-      "org.apache.commons"        %  "commons-lang3"     % "3.2",
-      "org.bigbluebutton"         %  "bbb-common-message" % "0.0.13"
+	  "org.apache.commons"        %  "commons-lang3"     % "3.2",
+	  "org.bigbluebutton"         %  "bbb-common-message" % "0.0.14-SNAPSHOT"
 	)}
 
 seq(Revolver.settings: _*)
diff --git a/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/AbstractDeskShareRecordEvent.java b/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/AbstractDeskShareRecordEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..90758f8303e22993c94dbd71cd9df95defdc80d6
--- /dev/null
+++ b/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/AbstractDeskShareRecordEvent.java
@@ -0,0 +1,28 @@
+/**
+* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
+* 
+* Copyright (c) 2015 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.recorders.events;
+
+import org.bigbluebutton.core.service.recorder.RecordEvent;
+
+public abstract class AbstractDeskShareRecordEvent extends RecordEvent {
+	
+	public AbstractDeskShareRecordEvent() {
+		setModule("DESKSHARE");
+	}
+}
diff --git a/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/DeskShareNotifyViewersRTMPRecordEvent.java b/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/DeskShareNotifyViewersRTMPRecordEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..27ddf2886c9ac65f420f4117d925843b3eae8392
--- /dev/null
+++ b/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/DeskShareNotifyViewersRTMPRecordEvent.java
@@ -0,0 +1,26 @@
+package org.bigbluebutton.core.recorders.events;
+
+public class DeskShareNotifyViewersRTMPRecordEvent extends
+		AbstractDeskShareRecordEvent {
+
+	public DeskShareNotifyViewersRTMPRecordEvent() {
+		super();
+		setEvent("DeskShareNotifyViewersRTMP");
+	}
+
+	public void setStreamPath(String streamPath) {
+		eventMap.put("streamPath", streamPath);
+	}
+
+	public void setBroadcasting(Boolean broadcasting) {
+		eventMap.put("broadcasting", broadcasting.toString());
+	}
+
+	public void setVideoWidth(int videoWidth) {
+		eventMap.put("videoWidth", Integer.toString(videoWidth));
+	}
+
+	public void setVideoHeight(int videoHeight) {
+		eventMap.put("videoHeight", Integer.toString(videoHeight));
+	}
+}
diff --git a/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/DeskShareStartRTMPRecordEvent.java b/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/DeskShareStartRTMPRecordEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..83389b00894fa472d48fbced1c27223cc7a6f186
--- /dev/null
+++ b/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/DeskShareStartRTMPRecordEvent.java
@@ -0,0 +1,14 @@
+package org.bigbluebutton.core.recorders.events;
+
+public class DeskShareStartRTMPRecordEvent extends
+		AbstractDeskShareRecordEvent {
+
+	public DeskShareStartRTMPRecordEvent() {
+		super();
+		setEvent("DeskShareStartRTMP");
+	}
+
+	public void setStreamPath(String streamPath) {
+		eventMap.put("streamPath", streamPath);
+	}
+}
diff --git a/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/DeskShareStartRecordingRecordEvent.java b/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/DeskShareStartRecordingRecordEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..a45072e3f9b9eea950a9ad51ed1ca341c39395e5
--- /dev/null
+++ b/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/DeskShareStartRecordingRecordEvent.java
@@ -0,0 +1,14 @@
+package org.bigbluebutton.core.recorders.events;
+
+public class DeskShareStartRecordingRecordEvent extends
+		AbstractDeskShareRecordEvent {
+
+	public DeskShareStartRecordingRecordEvent() {
+		super();
+		setEvent("DeskShareStartRecording");
+	}
+
+	public void setFilename(String filename) {
+		eventMap.put("filename", filename);
+	}
+}
diff --git a/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/DeskShareStopRTMPRecordEvent.java b/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/DeskShareStopRTMPRecordEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..76457cdfbfeb0fe88a445ae04c8eb8e5d2082966
--- /dev/null
+++ b/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/DeskShareStopRTMPRecordEvent.java
@@ -0,0 +1,14 @@
+package org.bigbluebutton.core.recorders.events;
+
+public class DeskShareStopRTMPRecordEvent extends
+		AbstractDeskShareRecordEvent {
+
+	public DeskShareStopRTMPRecordEvent() {
+		super();
+		setEvent("DeskShareStopRTMP");
+	}
+
+	public void setStreamPath(String streamPath) {
+		eventMap.put("streamPath", streamPath);
+	}
+}
diff --git a/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/DeskShareStopRecordingRecordEvent.java b/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/DeskShareStopRecordingRecordEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..0023d1fe401fb7136ab6b863c7083f2a87dd7c45
--- /dev/null
+++ b/akka-bbb-apps/src/main/java/org/bigbluebutton/core/recorders/events/DeskShareStopRecordingRecordEvent.java
@@ -0,0 +1,14 @@
+package org.bigbluebutton.core.recorders.events;
+
+public class DeskShareStopRecordingRecordEvent extends
+		AbstractDeskShareRecordEvent {
+
+	public DeskShareStopRecordingRecordEvent() {
+		super();
+		setEvent("DeskShareStopRecording");
+	}
+
+	public void setFilename(String filename) {
+		eventMap.put("filename", filename);
+	}
+}
diff --git a/akka-bbb-apps/src/main/resources/application.conf b/akka-bbb-apps/src/main/resources/application.conf
index d0e832cc2bf155818e0430ab9d3ad84bb77783ac..8629421b9c2fe03c342e1e8cfd1f3583bc16d3a6 100755
--- a/akka-bbb-apps/src/main/resources/application.conf
+++ b/akka-bbb-apps/src/main/resources/application.conf
@@ -31,9 +31,9 @@ redis {
     host="127.0.0.1"
     port=6379
     password=""
-}
+}
 
 red5 {
-    deskshareip="127.0.0.1"
-    deskshareapp="live"
+    deskshareip="192.168.0.109"
+    deskshareapp="video-broadcast"
 }
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonActor.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonActor.scala
index c399cd10a9a1c6ad053f0160a656402679de421e..54536f2f8f26cd49d88dff5708dcbfec760b9f10 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonActor.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonActor.scala
@@ -57,11 +57,11 @@ class BigBlueButtonActor(val system: ActorSystem, recorderApp: RecorderApplicati
   }
 
   private def findMeetingWithVoiceConfId(voiceConfId: String): Option[RunningMeeting] = {
-    // println("searching meeeting with voiceConfId=" + voiceConfId)
-    // meetings.values.find(m => {
-    //   println("^^^^^^" + m.mProps.voiceBridge)
-    //   m.mProps.voiceBridge == voiceConfId
-    // })
+    println("searching meeeting with voiceConfId=" + voiceConfId)
+    meetings.values.find(m => {
+      println("^^^^^^" + m.mProps.voiceBridge)
+      m.mProps.voiceBridge == voiceConfId
+    })
     meetings.values.find(m => m.mProps.voiceBridge == voiceConfId)
   }
 
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MeetingActor.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MeetingActor.scala
index 8fe2836a2ccf522fecdf6628b40cef8988ed57d2..ade84e56ab154733b5abc1e962bbd10646fdbfeb 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MeetingActor.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MeetingActor.scala
@@ -318,6 +318,7 @@ class MeetingActor(val mProps: MeetingProperties, val outGW: OutMessageGateway)
       val streamPath = "rtmp://" + mProps.red5DeskShareIP + "/" + mProps.red5DeskShareApp +
         "/" + mProps.meetingID + "/" + mProps.meetingID + "-" + timestamp
 
+      println("____ in handleDeskShareStartedRequest and streamPath=" + streamPath)
       // Tell FreeSwitch to broadcast to RTMP
       outGW.send(new DeskShareStartRTMPBroadcast(msg.conferenceName, streamPath, timestamp))
 
@@ -368,9 +369,9 @@ class MeetingActor(val mProps: MeetingProperties, val outGW: OutMessageGateway)
   }
 
   private def handleDeskShareRTMPBroadcastStartedRequest(msg: DeskShareRTMPBroadcastStartedRequest) {
-    // println("\nMeetingActor-handleDeskShareRTMPBroadcastStartedRequest\n")
-    // println("isRecording=" + meetingModel.isRecording())
-    // println("recorded=" + mProps.recorded)
+    println("\nMeetingActor-handleDeskShareRTMPBroadcastStartedRequest\n")
+    println("isRecording=" + meetingModel.isRecording())
+    println("recorded=" + mProps.recorded)
 
     // only valid if not broadcasting yet
     if (!meetingModel.isBroadcastingRTMP()) {
@@ -388,9 +389,9 @@ class MeetingActor(val mProps: MeetingProperties, val outGW: OutMessageGateway)
   }
 
   private def handleDeskShareRTMPBroadcastStoppedRequest(msg: DeskShareRTMPBroadcastStoppedRequest) {
-    // println("\nMeetingActor-handleDeskShareRTMPBroadcastStoppedRequest\n")
-    // println("isRecording=" + meetingModel.isRecording())
-    // println("recorded=" + mProps.recorded)
+    println("\nMeetingActor-handleDeskShareRTMPBroadcastStoppedRequest\n")
+    println("isRecording=" + meetingModel.isRecording())
+    println("recorded=" + mProps.recorded)
 
     // only valid if currently broadcasting
     if (meetingModel.isBroadcastingRTMP()) {
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/RecorderActor.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/RecorderActor.scala
index d3365f115c39c43a52095ce84714aca33b1a7c3e..e4bbc010d4da843dd6c0c241523d454d00efb8f9 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/RecorderActor.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/RecorderActor.scala
@@ -29,6 +29,11 @@ import org.bigbluebutton.core.recorders.events.ParticipantEndAndKickAllRecordEve
 import org.bigbluebutton.core.recorders.events.UndoShapeWhiteboardRecordEvent
 import org.bigbluebutton.core.recorders.events.ClearPageWhiteboardRecordEvent
 import org.bigbluebutton.core.recorders.events.AddShapeWhiteboardRecordEvent
+import org.bigbluebutton.core.recorders.events.DeskShareStartRTMPRecordEvent
+import org.bigbluebutton.core.recorders.events.DeskShareStopRTMPRecordEvent
+import org.bigbluebutton.core.recorders.events.DeskShareStartRecordingRecordEvent
+import org.bigbluebutton.core.recorders.events.DeskShareStopRecordingRecordEvent
+import org.bigbluebutton.core.recorders.events.DeskShareNotifyViewersRTMPRecordEvent
 // import org.bigbluebutton.core.service.whiteboard.WhiteboardKeyUtil
 import org.bigbluebutton.common.messages.WhiteboardKeyUtil
 import org.bigbluebutton.core.recorders.events.ModifyTextWhiteboardRecordEvent
@@ -69,6 +74,11 @@ class RecorderActor(val meetingId: String, val recorder: RecorderApplication)
     case msg: SendWhiteboardAnnotationEvent => handleSendWhiteboardAnnotationEvent(msg)
     case msg: ClearWhiteboardEvent => handleClearWhiteboardEvent(msg)
     case msg: UndoWhiteboardEvent => handleUndoWhiteboardEvent(msg)
+    case msg: DeskShareStartRTMPBroadcast => handleDeskShareStartRTMPBroadcast(msg)
+    case msg: DeskShareStopRTMPBroadcast => handleDeskShareStopRTMPBroadcast(msg)
+    case msg: DeskShareStartRecording => handleDeskShareStartRecording(msg)
+    case msg: DeskShareStopRecording => handleDeskShareStopRecording(msg)
+    case msg: DeskShareNotifyViewersRTMP => handleDeskShareNotifyViewersRTMP(msg)
     case _ => // do nothing
   }
 
@@ -424,4 +434,54 @@ class RecorderActor(val meetingId: String, val recorder: RecorderApplication)
     event.setShapeId(msg.shapeId);
     recorder.record(msg.meetingID, event)
   }
+
+  private def handleDeskShareStartRTMPBroadcast(msg: DeskShareStartRTMPBroadcast) {
+    val event = new DeskShareStartRTMPRecordEvent()
+    event.setMeetingId(msg.conferenceName)
+    event.setStreamPath(msg.streamPath)
+    event.setTimestamp(TimestampGenerator.generateTimestamp)
+    println("\n\n\n\n recorder handleDeskShareStartRTMPBroadcast\n\n\n\n")
+    recorder.record(msg.conferenceName, event)
+  }
+
+  private def handleDeskShareStopRTMPBroadcast(msg: DeskShareStopRTMPBroadcast) {
+    val event = new DeskShareStopRTMPRecordEvent()
+    event.setMeetingId(msg.conferenceName)
+    event.setStreamPath(msg.streamPath)
+    event.setTimestamp(TimestampGenerator.generateTimestamp)
+    println("\n\n\n\n recorder handleDeskShareStopRTMPBroadcast\n\n\n\n")
+    recorder.record(msg.conferenceName, event)
+  }
+
+  private def handleDeskShareStartRecording(msg: DeskShareStartRecording) {
+    val event = new DeskShareStartRecordingRecordEvent()
+    event.setMeetingId(msg.conferenceName)
+    event.setFilename(msg.filename)
+    event.setTimestamp(TimestampGenerator.generateTimestamp)
+    println("\n\n\n\n recorder handleDeskShareStartRecording\n\n\n\n")
+    recorder.record(msg.conferenceName, event)
+  }
+
+  private def handleDeskShareStopRecording(msg: DeskShareStopRecording) {
+    val event = new DeskShareStopRecordingRecordEvent()
+    event.setMeetingId(msg.conferenceName)
+    event.setFilename(msg.filename)
+    event.setTimestamp(TimestampGenerator.generateTimestamp)
+    println("\n\n\n\n recorder handleDeskShareStopRecording\n\n\n\n")
+    recorder.record(msg.conferenceName, event)
+  }
+
+  private def handleDeskShareNotifyViewersRTMP(msg: DeskShareNotifyViewersRTMP) {
+    val event = new DeskShareNotifyViewersRTMPRecordEvent()
+    event.setMeetingId(msg.meetingID)
+    event.setStreamPath(msg.streamPath)
+    event.setBroadcasting(msg.broadcasting)
+    event.setVideoWidth(msg.videoWidth)
+    event.setVideoHeight(msg.videoHeight)
+    event.setTimestamp(TimestampGenerator.generateTimestamp)
+
+    println("\n\n\n\n recorder handleDeskShareNotifyViewersRTMP\n\n\n\n")
+    recorder.record(msg.meetingID, event)
+  }
+
 }
\ No newline at end of file
diff --git a/akka-bbb-fsesl/build.sbt b/akka-bbb-fsesl/build.sbt
index 0ea8a8eb04168b2438701ff19a4ccefffac7d684..5bc27e861063aaf6001d99f1265232b16a47d696 100755
--- a/akka-bbb-fsesl/build.sbt
+++ b/akka-bbb-fsesl/build.sbt
@@ -50,8 +50,8 @@ libraryDependencies ++= {
 	  "com.google.code.gson"      %  "gson"              % "1.7.1",
 	  "redis.clients"             %  "jedis"             % "2.1.0",
       "org.apache.commons"        %  "commons-lang3"     % "3.2",
-      "org.bigbluebutton"         %  "bbb-common-message" % "0.0.13",
-      "org.bigbluebutton"         %  "bbb-fsesl-client"   % "0.0.2"
+      "org.bigbluebutton"         %  "bbb-common-message" % "0.0.14-SNAPSHOT",
+      "org.bigbluebutton"         %  "bbb-fsesl-client"   % "0.0.3-SNAPSHOT"
 	)}
 
 seq(Revolver.settings: _*)
diff --git a/akka-bbb-fsesl/src/main/resources/application.conf b/akka-bbb-fsesl/src/main/resources/application.conf
index 391e7827b8c39e967da65516dd11ea58577be125..4b0460696caa2f00d4f87c86fcf3ebab9721b150 100755
--- a/akka-bbb-fsesl/src/main/resources/application.conf
+++ b/akka-bbb-fsesl/src/main/resources/application.conf
@@ -19,7 +19,7 @@ akka {
 
 freeswitch {
     esl {
-        host="127.0.0.1"
+        host="192.168.23.45"
         port=8021
         password="ClueCon"
     }
diff --git a/bbb-common-message/build.sbt b/bbb-common-message/build.sbt
index 6d78d92b26c6fe47b334223a0271d0b08a43b64d..24215e66984cef145136a77d57b872861c35a297 100755
--- a/bbb-common-message/build.sbt
+++ b/bbb-common-message/build.sbt
@@ -4,7 +4,7 @@ name := "bbb-common-message"
 
 organization := "org.bigbluebutton"
 
-version := "0.0.13"
+version := "0.0.14-SNAPSHOT"
 
 // We want to have our jar files in lib_managed dir.
 // This way we'll have the right path when we import
@@ -48,19 +48,19 @@ autoScalaLibrary := false
 * publish to the local maven repo using "sbt publish"
 */
 // Uncomment this to publish to local maven repo while commenting out the nexus repo
-//publishTo := Some(Resolver.file("file",  new File(Path.userHome.absolutePath+"/.m2/repository")))
+publishTo := Some(Resolver.file("file",  new File(Path.userHome.absolutePath+"/.m2/repository")))
 
 
 // Comment this out when publishing to local maven repo using SNAPSHOT version.
 // To push to sonatype "sbt publishSigned"
 
-publishTo := {
-  val nexus = "https://oss.sonatype.org/"
-  if (isSnapshot.value)
-    Some("snapshots" at nexus + "content/repositories/snapshots")
-  else
-    Some("releases"  at nexus + "service/local/staging/deploy/maven2")
-}
+// publishTo := {
+//   val nexus = "https://oss.sonatype.org/"
+//   if (isSnapshot.value)
+//     Some("snapshots" at nexus + "content/repositories/snapshots")
+//   else
+//     Some("releases"  at nexus + "service/local/staging/deploy/maven2")
+// }
 
 
 // Enables publishing to maven repo
diff --git a/bbb-fsesl-client/build.sbt b/bbb-fsesl-client/build.sbt
index eb9f166450bfccabe95387d183c6caaaec100ca6..e8df772f62149a74df54b127b90f08967329d41a 100755
--- a/bbb-fsesl-client/build.sbt
+++ b/bbb-fsesl-client/build.sbt
@@ -6,7 +6,7 @@ description := "BigBlueButton custom FS-ESL client built on top of FS-ESL Java l
 
 organization := "org.bigbluebutton"
 
-version := "0.0.2"
+version := "0.0.3-SNAPSHOT"
 
 // We want to have our jar files in lib_managed dir.
 // This way we'll have the right path when we import
diff --git a/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java b/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java
index d21613c306b6cf5701fa93ed2be71c587d4a0895..b5ead5e55dabf24b3cda153945e48b20dd034c66 100755
--- a/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java
+++ b/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java
@@ -179,7 +179,11 @@ public class VideoApplication extends MultiThreadedApplicationAdapter {
     	String meetingId = conn.getScope().getName();
     	String streamId = stream.getPublishedName();
     	
-    	publisher.userSharedWebcamMessage(meetingId, userId, streamId);
+    	//publisher.userSharedWebcamMessage(meetingId, userId, streamId);
+    	log.info("^^^^^^^^^^^publisher.userSharedWebcamMessage(meetingId, userId, streamId);");
+
+
+
     	VideoStreamListener listener = new VideoStreamListener(conn.getScope(), stream, recordVideoStream, userId, packetTimeout);
         listener.setEventRecordingService(recordingService);
         stream.addStreamListener(listener); 
@@ -212,7 +216,10 @@ public class VideoApplication extends MultiThreadedApplicationAdapter {
   		String meetingId = conn.getScope().getName();
   		String streamId = stream.getPublishedName();
   	
-  		publisher.userUnshareWebcamRequestMessage(meetingId, userId, streamId);
+  		//publisher.userUnshareWebcamRequestMessage(meetingId, userId, streamId);
+		log.info("^^^^^^^^^^^publisher.userUnshareWebcamRequestMessage(meetingId, userId, streamId);");
+
+
 
         IStreamListener listener = streamListeners.remove(scopeName + "-" + stream.getPublishedName());
         if (listener != null) {
diff --git a/bigbluebutton-apps/build.gradle b/bigbluebutton-apps/build.gradle
index fc6a8dfd7ab0cf5a64cbe1b8ee8366c4c6031e4a..7dd9efc3d8a302c1e9c88b0681f99bdbf18fdc1a 100755
--- a/bigbluebutton-apps/build.gradle
+++ b/bigbluebutton-apps/build.gradle
@@ -105,7 +105,7 @@ dependencies {
    compile 'com.google.code.gson:gson:1.7.1'
    providedCompile 'org.apache.commons:commons-lang3:3.2'
 
-  compile 'org.bigbluebutton:bbb-common-message:0.0.13'
+  compile 'org.bigbluebutton:bbb-common-message:0.0.14-SNAPSHOT'
 }
 
 test {
diff --git a/bigbluebutton-client/build.xml b/bigbluebutton-client/build.xml
index bc9485afef5324a9eff00d87ad5fc17b56b5767b..be07181c649cb21e7bf51f385b409742c8a9f387 100755
--- a/bigbluebutton-client/build.xml
+++ b/bigbluebutton-client/build.xml
@@ -11,10 +11,10 @@
       <property name="themeFile" value="BBBDefault.css"/>
 	    <property name="blackTheme" value="BBBBlack.css"/>
 	    <property name="LOCALE" value="en_US" />
-	     <property name="RESOURCES_DIR" value="${BASE_DIR}/resources" />	
-	<property name="PROD_RESOURCES_DIR" value="${RESOURCES_DIR}/prod" />	
+	     <property name="RESOURCES_DIR" value="${BASE_DIR}/resources" />
+	<property name="PROD_RESOURCES_DIR" value="${RESOURCES_DIR}/prod" />
 	<property name="SRC_DIR" value="${BASE_DIR}/src" />
-		
+
 	<property name="OUTPUT_DIR" value="${BASE_DIR}/client" />
 	<taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}/ant/lib/flexTasks.jar" />
 
@@ -38,31 +38,31 @@
 	<property name="POLLING" value="PollingModule" />
 	<property name="LAYOUT" value="LayoutModule" />
 	<property name="USERS" value="UsersModule" />
-	
+
 	<xmlproperty file="${SRC_DIR}/conf/locales.xml" collapseAttributes="true"/>
-	
+
 	<target name="init-ant-contrib">
 		<property name="ant-contrib.jar" location="${BASE_DIR}/build/lib/ant-contrib-0.6.jar"/>
 		<taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="${ant-contrib.jar}"/>
 	</target>
-	  
+
 	<target name="locales" depends="init-ant-contrib">
 		<echo message="Checking if locale output dir exists"/>
 		<available file="${OUTPUT_DIR}/locale" type="file" property="locale.dir.present"/>
-		<if> 
-        	<equals arg1="${locale.dir.present}" arg2="true"/> 
-           	<then> 
-				<echo message="Locale output dir exists. Deleting contents of ${OUTPUT_DIR}/locale"/> 
+		<if>
+        	<equals arg1="${locale.dir.present}" arg2="true"/>
+           	<then>
+				<echo message="Locale output dir exists. Deleting contents of ${OUTPUT_DIR}/locale"/>
 				<delete>
 					<fileset dir="${OUTPUT_DIR}/locale">
 						<include name="**/*"/>
 					</fileset>
 				</delete>
-           	</then> 
-           	<else> 
-				<echo message="Locale output dir does not exists. Creating ${OUTPUT_DIR}/locale"/> 
+           	</then>
+           	<else>
+				<echo message="Locale output dir does not exists. Creating ${OUTPUT_DIR}/locale"/>
 				<mkdir dir="${OUTPUT_DIR}/locale"/>
-           	</else> 
+           	</else>
         </if>
 
 		<echo message="Determining supported locales."/>
@@ -75,38 +75,38 @@
 		  	</path>
 		</foreach>
 	</target>
-		
+
 	<target name="branding" depends="init-ant-contrib">
 		<sequential>
-			<mxmlc file="${BASE_DIR}/branding/default/style/css/${themeFile}" 
-				output="${OUTPUT_DIR}/branding/css/${themeFile}.swf" 
-				debug="${DEBUG}" 
-				mxml.compatibility-version="3.0.0" 
-				swf-version="13" 
+			<mxmlc file="${BASE_DIR}/branding/default/style/css/${themeFile}"
+				output="${OUTPUT_DIR}/branding/css/${themeFile}.swf"
+				debug="${DEBUG}"
+				mxml.compatibility-version="3.0.0"
+				swf-version="13"
 				optimize="true">
 			</mxmlc>
 		</sequential>
 	</target>
-	
+
 	 <target name="branding-black" depends="init-ant-contrib">
 	    <sequential>
-	      <mxmlc file="${BASE_DIR}/branding/default/style/css/${blackTheme}" 
-	        output="${OUTPUT_DIR}/branding/css/${blackTheme}.swf" 
-	        debug="${DEBUG}" 
-	        mxml.compatibility-version="3.0.0" 
-	        swf-version="13" 
+	      <mxmlc file="${BASE_DIR}/branding/default/style/css/${blackTheme}"
+	        output="${OUTPUT_DIR}/branding/css/${blackTheme}.swf"
+	        debug="${DEBUG}"
+	        mxml.compatibility-version="3.0.0"
+	        swf-version="13"
 	        optimize="true">
 	      </mxmlc>
 	    </sequential>
 	  </target>
-	
+
 	<target name="build-bbb-main-test" description="Compile BigBlueButton Main Test">
     	<build-main src="${SRC_DIR}" target="${BBB_MAIN_TEST}" />
 	</target>
 
 	<target name="build-locale">
 		<echo message="Locale dir is ${supportedlocale}. Extract locale name." />
-	   	<basename property="locale.name" file="${supportedlocale}"/>  
+	   	<basename property="locale.name" file="${supportedlocale}"/>
    		<echo message="Locale name is ${locale.name}"/>
 
 		<sequential>
@@ -116,33 +116,33 @@
                 <equals arg1="${locale.name}" arg2="locale"/>
                 <then>
                 	<echo message="Somehow, the dirset for locales is passing the parent (${locale.name}) dir."/>
-                	<echo message="We don't want it, so we need to skip it."/> 
+                	<echo message="We don't want it, so we need to skip it."/>
                 </then>
-              	<else>		
-					<if> 
-		           		<equals arg1="${locale.dir.present}" arg2="true"/> 
-		           		<then> 
+              	<else>
+					<if>
+		           		<equals arg1="${locale.dir.present}" arg2="true"/>
+		           		<then>
 		           			<echo message="We already have a copy of the framework locale. No need to copy ${LOCALE_DIR}/${locale.name}"/>
-		           		</then> 
-		           		<else> 	
-		           			<echo message="No copy of the framework locale. Copying ${LOCALE_DIR}/${locale.name}"/>       
+		           		</then>
+		           		<else>
+		           			<echo message="No copy of the framework locale. Copying ${LOCALE_DIR}/${locale.name}"/>
 		              		<exec  vmlauncher="true" executable="copylocale">
 								<arg value="en_US"/>
 		    					<arg value="${locale.name}"/>
-							</exec>	
+							</exec>
 			  			</else>
-					</if>	
+					</if>
 					<echo message="Compiling locale ${locale.name}"/>
-					<compileLocale locale="${locale.name}" />  
-           		</else> 
-        	</if>       	   
+					<compileLocale locale="${locale.name}" />
+           		</else>
+        	</if>
        </sequential>
 	</target>
-	
+
 	<target name="localize">
-	 <compileLocale locale="${LOCALE}" /> 
+	 <compileLocale locale="${LOCALE}" />
 	</target>
-		
+
 	<macrodef name="compileLocale" description="Compiles the Resource package for the given locale">
 		<attribute name="locale" default="en_US"/>
 		<sequential>
@@ -150,13 +150,13 @@
 			<echo message="**********************************************"/>
 			<echo message="*    Did you check bundles.txt  and made     *"/>
 			<echo message="*    all resources listed here?              *"/>
-			<echo message="**********************************************"/>			
+			<echo message="**********************************************"/>
 			<!-- Invoke MXMLC -->
 			<mxmlc output="${OUTPUT_DIR}/locale/@{locale}_resources.swf">
 				<locale>@{locale}</locale>
 				<target-player>11</target-player>
 				<source-path path-element="locale/{locale}"/>
-				
+
 				<!--
 				  Look into bundles.txt to find out what resources to include here.
 				  http://forums.adobe.com/thread/758619
@@ -164,47 +164,47 @@
 				-->
 				<include-resource-bundles>SharedResources</include-resource-bundles>
 				<include-resource-bundles>bbbResources</include-resource-bundles>
-				<include-resource-bundles>collections</include-resource-bundles> 
-				<include-resource-bundles>containers</include-resource-bundles> 
-				<include-resource-bundles>controls</include-resource-bundles> 
-				<include-resource-bundles>core</include-resource-bundles> 
-				<include-resource-bundles>effects</include-resource-bundles> 
-				<include-resource-bundles>logging</include-resource-bundles> 
-				<include-resource-bundles>messaging</include-resource-bundles> 
-				<include-resource-bundles>modules</include-resource-bundles> 
-				<include-resource-bundles>rpc</include-resource-bundles> 
-				<include-resource-bundles>skins</include-resource-bundles> 
+				<include-resource-bundles>collections</include-resource-bundles>
+				<include-resource-bundles>containers</include-resource-bundles>
+				<include-resource-bundles>controls</include-resource-bundles>
+				<include-resource-bundles>core</include-resource-bundles>
+				<include-resource-bundles>effects</include-resource-bundles>
+				<include-resource-bundles>logging</include-resource-bundles>
+				<include-resource-bundles>messaging</include-resource-bundles>
+				<include-resource-bundles>modules</include-resource-bundles>
+				<include-resource-bundles>rpc</include-resource-bundles>
+				<include-resource-bundles>skins</include-resource-bundles>
 				<include-resource-bundles>styles</include-resource-bundles>
 				<source-path path-element="${FLEX_HOME}/frameworks"/>
 			</mxmlc>
 		</sequential>
 	</macrodef>
-	
+
 	<target name="build-bbb-main" description="Compile BigBlueButton Main">
 		<build-main src="${SRC_DIR}" target="${BBB_MAIN}" />
-		
+
 		<echo message="Copying common assets for BBB Main" />
 		<copy todir="${OUTPUT_DIR}/org/bigbluebutton/common/assets/images" >
 			<fileset dir="${BASE_DIR}/src/org/bigbluebutton/common/assets/images/" />
-		</copy>		
+		</copy>
 	</target>
 
   <target name="build-broadcast" description="Compile Broadcast Module" >
     <build-module src="${SRC_DIR}" target="${BROADCAST}" />
   </target>
-  	
+
 	<target name="build-chat" description="Compile Chat Module">
 		<build-module src="${SRC_DIR}" target="${CHAT}" />
 	</target>
-  
+
   <target name="build-notes" description="Compile Notes Module">
     <build-module src="${SRC_DIR}" target="${NOTES}" />
   </target>
-	
+
 	<target name="build-polling" description="Compile Polling Module">
 		<build-module src="${SRC_DIR}" target="${POLLING}" />
 	</target>
-	
+
 	<target name="build-present" description="Compile Present Module">
 		<build-module src="${SRC_DIR}" target="${PRESENT}" />
 	</target>
@@ -243,28 +243,28 @@
     <echo message="Compiling Camera Check Application." />
     <build-module-no-link src="${SRC_DIR}" target="${CAMERA_CHECK}" />
   </target>
-   
+
   <target name="build-conn-check" description="Compile Connection Check Application">
     <echo message="Compiling Connection Check Application." />
     <build-module-no-link src="${SRC_DIR}" target="${CONNECTION_CHECK}" />
   </target>
-          	
+
 	<target name="build-deskshare" description="Compile Deskshare Module">
 		<build-module src="${SRC_DIR}" target="${DESKSHARE}" />
 		<echo message="Copying deskshare applet for Deskshare Module" />
-		<copy file="${PROD_RESOURCES_DIR}/bbb-deskshare-applet-unsigned-0.9.0.jar" todir="${OUTPUT_DIR}"/>		
-		<copy file="${PROD_RESOURCES_DIR}/bbb-deskshare-applet-0.9.0.jar" todir="${OUTPUT_DIR}"/>		
+		<copy file="${PROD_RESOURCES_DIR}/bbb-deskshare-applet-unsigned-0.9.0.jar" todir="${OUTPUT_DIR}"/>
+		<copy file="${PROD_RESOURCES_DIR}/bbb-deskshare-applet-0.9.0.jar" todir="${OUTPUT_DIR}"/>
 	</target>
-	
+
 	<target name="build-phone" description="Compile Phone Module">
 		<build-module src="${SRC_DIR}" target="${PHONE}" />
-		
+
 		<echo message="Copying assets for Phone Module" />
 		<copy todir="${OUTPUT_DIR}/org/bigbluebutton/modules/phone/views/assets/images/" >
 			<fileset dir="${BASE_DIR}/src/org/bigbluebutton/modules/phone/views/assets/images/" />
-		</copy>		
+		</copy>
 	</target>
-	
+
 	<target name="build-video" description="Compile Video Module">
 		<build-module src="${SRC_DIR}" target="${VIDEO}" />
 	</target>
@@ -272,27 +272,27 @@
 	<target name="build-whiteboard" description="Compile Whiteboard Module">
 		<build-module src="${SRC_DIR}" target="${WHITEBOARD}" />
 	</target>
-	
+
 	<target name="build-layout" description="Compile Layout Module">
 		<build-module src="${SRC_DIR}" target="${LAYOUT}" />
 	</target>
-	
+
 	<target name="build-users" description="Compile Users Module">
 			<build-module src="${SRC_DIR}" target="${USERS}" />
 	</target>
-	
+
 	<!-- just a grouping of modules to compile -->
-	<target name="build-main-chat-present" 
+	<target name="build-main-chat-present"
 			depends="build-bbb-main, build-chat, build-present, build-layout, build-broadcast, build-users"
 			description="Compile main, chat, present modules">
 	</target>
-	
+
 	<!-- just a grouping of modules to compile -->
-	<target name="build-deskshare-phone-video-whiteboard-dyn" 
+	<target name="build-deskshare-phone-video-whiteboard-dyn"
 			depends="build-deskshare, build-phone, build-video, build-whiteboard, build-notes, build-polling"
 			description="Compile deskshare, phone, video, whiteboard modules">
 	</target>
-	
+
 	<macrodef name="build-main">
 			<attribute name="target" description="Module to compile" />
 			<attribute name="flex" default="${FLEX_HOME}" description="Location of the Flex install." />
@@ -303,7 +303,7 @@
 					<target-player>11</target-player>
 					<load-config filename="@{flex}/frameworks/flex-config.xml" />
 					<source-path path-element="@{flex}/frameworks" />
-					
+
 					<!--
 				  		Dump out resources to find out what resources to include building the locales.
 				  		http://forums.adobe.com/thread/758619
@@ -311,7 +311,7 @@
 					-->
 					<resource-bundle-list>bundles.txt</resource-bundle-list>
 	        			<static-link-runtime-shared-libraries>${STATIC_RSL}</static-link-runtime-shared-libraries>
-				
+
 					<compiler.library-path dir="@{flex}/frameworks" append="true">
 						<include name="libs" />
 						<include name="../bundles/{locale}" />
@@ -331,7 +331,7 @@
 				<echo message="**********************************************"/>
 			</sequential>
 		</macrodef>
-	
+
 	<macrodef name="build-module-no-link">
 		<attribute name="target" description="Module to compile" />
 		<attribute name="flex" default="${FLEX_HOME}" description="Location of the Flex install." />
@@ -358,7 +358,7 @@
 			</mxmlc>
 		</sequential>
 	</macrodef>
-	
+
 	<macrodef name="build-module">
 		<attribute name="target" description="Module to compile" />
 		<attribute name="flex" default="${FLEX_HOME}" description="Location of the Flex install." />
@@ -387,12 +387,12 @@
 	</macrodef>
 
 	<target name="compile-deskshare-standalone" depends="build-deskshare-standalone"
-			description="Compiling standalone desktop sharing">	
+			description="Compiling standalone desktop sharing">
 			<echo message="Deskshare standalone built without optimization." />
 	</target>
-		
+
 	<target name="compile-bbb" depends="build-main-chat-present, build-deskshare-phone-video-whiteboard-dyn, copy-resource-files"
-			description="Compiling the BBB without copying config.xml">	
+			description="Compiling the BBB without copying config.xml">
 	</target>
 
 	<target name="copy-config-if-needed">
@@ -402,7 +402,7 @@
             		<copy file="/var/www/bigbluebutton/client/conf/config.xml" todir="${BASE_DIR}/src/conf" />
         	</else>
     		</if>
-	</target>	
+	</target>
 
 	<target name="copy-join-mock-if-needed">
     		<if>
@@ -411,22 +411,22 @@
             		<copy file="${RESOURCES_DIR}/dev/join-mock.xml" todir="${BASE_DIR}/src/conf" />
         	</else>
     		</if>
-	</target>	
+	</target>
 
 	<target name="copy-resource-files" >
 		<copy todir="${OUTPUT_DIR}/swfobject/" >
 			<fileset dir="${PROD_RESOURCES_DIR}/swfobject" />
-		</copy>	
+		</copy>
 		<copy todir="${OUTPUT_DIR}/lib/" >
 			<fileset dir="${PROD_RESOURCES_DIR}/lib"/>
-		</copy> 
+		</copy>
 		<copy file="${PROD_RESOURCES_DIR}/BigBlueButtonTest.html" todir="${OUTPUT_DIR}" overwrite="true"/>
 		<copy file="${PROD_RESOURCES_DIR}/BigBlueButton.html" todir="${OUTPUT_DIR}" overwrite="true"/>
 		<copy file="${PROD_RESOURCES_DIR}/DeskshareStandalone.html" todir="${OUTPUT_DIR}" overwrite="true"/>
-		<copy file="${PROD_RESOURCES_DIR}/bbb.gif" todir="${OUTPUT_DIR}" overwrite="true"/>	
+		<copy file="${PROD_RESOURCES_DIR}/bbb.gif" todir="${OUTPUT_DIR}" overwrite="true"/>
 		<copy file="${PROD_RESOURCES_DIR}/avatar.png" todir="${OUTPUT_DIR}" overwrite="true"/>
-		<copy file="${PROD_RESOURCES_DIR}/locales.xml" todir="${OUTPUT_DIR}/conf" overwrite="true"/>	
-		<copy file="${PROD_RESOURCES_DIR}/expressInstall.swf" todir="${OUTPUT_DIR}" overwrite="true"/>	
+		<copy file="${PROD_RESOURCES_DIR}/locales.xml" todir="${OUTPUT_DIR}/conf" overwrite="true"/>
+		<copy file="${PROD_RESOURCES_DIR}/expressInstall.swf" todir="${OUTPUT_DIR}" overwrite="true"/>
 		<copy file="${PROD_RESOURCES_DIR}/example-info-data.xml" todir="${OUTPUT_DIR}/conf" overwrite="true"/>
 		<copy file="${PROD_RESOURCES_DIR}/layout.xml" todir="${OUTPUT_DIR}/conf" overwrite="true"/>
 		<copy file="${PROD_RESOURCES_DIR}/profiles.xml" todir="${OUTPUT_DIR}/conf" overwrite="true"/>
@@ -434,17 +434,17 @@
 			<equals arg1="${BUILD_ENV}" arg2="DEV"/>
 			<then>
 				<echo message="Copying config.xml for development environment"/>
-				<copy file="${BASE_DIR}/src/conf/config.xml" todir="${OUTPUT_DIR}/conf" /> 
+				<copy file="${BASE_DIR}/src/conf/config.xml" todir="${OUTPUT_DIR}/conf" />
 				<!-- echo message="Copying layout.xml for development environment"/>
-				<copy file="${BASE_DIR}/src/conf/layout.xml" todir="${OUTPUT_DIR}/conf" /--> 
+				<copy file="${BASE_DIR}/src/conf/layout.xml" todir="${OUTPUT_DIR}/conf" /-->
 			</then>
 			<else>
 				<echo message="Need to copy config.xml.template for production environment"/>
-				<copy file="${RESOURCES_DIR}/config.xml.template" todir="${OUTPUT_DIR}/conf" overwrite="true"/>		
+				<copy file="${RESOURCES_DIR}/config.xml.template" todir="${OUTPUT_DIR}/conf" overwrite="true"/>
 			</else>
 		</if>
 	</target>
-	
+
 
 	<target name="generate-html-wrapper">
 		<html-wrapper
@@ -469,9 +469,9 @@
                 <mkdir dir="${BASE_DIR}/asdoc" />
 		<!-- asdoc task not natively supported for ant flexTasks.jar for flex3. It is supported for flex 4, so it should be enabled here
 		when bbb-client is moved to Flex 4 -->
-		<!--<asdoc output="${BASE_DIR}/asdoc" 
-			external-library-path="{BASE_DIR}/libs" 
-			lenient="true" 
+		<!--<asdoc output="${BASE_DIR}/asdoc"
+			external-library-path="{BASE_DIR}/libs"
+			lenient="true"
 			failonerror="true"
 			source-path="${SRC_DIR}"
 			doc-sources="${SRC_DIR}"
diff --git a/record-and-playback/core/scripts/bigbluebutton.yml b/record-and-playback/core/scripts/bigbluebutton.yml
index 263b210baa220b368ae70aaf5f04c4ba920dc893..c7c9e1b3348c2bcc640fee21359a356cef1ecb50 100755
--- a/record-and-playback/core/scripts/bigbluebutton.yml
+++ b/record-and-playback/core/scripts/bigbluebutton.yml
@@ -9,15 +9,15 @@ redis_port: 6379
 
 
 # # For PRODUCTION
-log_dir: /var/log/bigbluebutton
-recording_dir: /var/bigbluebutton/recording
-published_dir: /var/bigbluebutton/published
-playback_host: 10.0.3.203
+# log_dir: /var/log/bigbluebutton
+# recording_dir: /var/bigbluebutton/recording
+# published_dir: /var/bigbluebutton/published
+# playback_host: 10.0.3.203
 
 # For DEVELOPMENT
 # This allows us to run the scripts manually
-# scripts_dir: /home/ubuntu/dev/bigbluebutton/record-and-playback/core/scripts
-# log_dir: /home/ubuntu/temp/log
-# recording_dir: /home/ubuntu/temp/recording
-# published_dir: /home/ubuntu/temp/published
-# playback_host: 192.168.22.137
+scripts_dir: /home/ubuntu/dev/bigbluebutton/record-and-playback/core/scripts
+log_dir: /home/ubuntu/temp/log
+recording_dir: /home/ubuntu/temp/recording
+published_dir: /home/ubuntu/temp/published
+playback_host: 192.168.0.109
diff --git a/record-and-playback/presentation/scripts/process/presentation.rb b/record-and-playback/presentation/scripts/process/presentation.rb
index a66ef6fd00e9c1b8460a828abdd65bab5ad6c59f..869e9fbd8b96bfa54fd5f39852e842e7e489e369 100755
--- a/record-and-playback/presentation/scripts/process/presentation.rb
+++ b/record-and-playback/presentation/scripts/process/presentation.rb
@@ -21,10 +21,10 @@
 
 # For DEVELOPMENT
 # Allows us to run the script manually
-# require File.expand_path('../../../../core/lib/recordandplayback', __FILE__)
+require File.expand_path('../../../../core/lib/recordandplayback', __FILE__)
 
 # For PRODUCTION
-require File.expand_path('../../../lib/recordandplayback', __FILE__)
+# require File.expand_path('../../../lib/recordandplayback', __FILE__)
 
 require 'rubygems'
 require 'trollop'
diff --git a/video-broadcast/src/main/java/org/bigbluebutton/app/videobroadcast/VideoApplication.java b/video-broadcast/src/main/java/org/bigbluebutton/app/videobroadcast/VideoApplication.java
index 95d876898036832e8f46a80fe65a371ee6c172c4..b485bc13a9255be83da673b20568f1d42c395070 100755
--- a/video-broadcast/src/main/java/org/bigbluebutton/app/videobroadcast/VideoApplication.java
+++ b/video-broadcast/src/main/java/org/bigbluebutton/app/videobroadcast/VideoApplication.java
@@ -22,7 +22,6 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
-import org.bigbluebutton.red5.pubsub.MessagePublisher;
 import org.red5.logging.Red5LoggerFactory;
 import org.red5.server.adapter.MultiThreadedApplicationAdapter;
 import org.red5.server.api.IConnection;
@@ -41,7 +40,6 @@ public class VideoApplication extends MultiThreadedApplicationAdapter {
 
 	private IScope appScope;
 	private IServerStream serverStream;
-	private MessagePublisher publisher;
 	private boolean recordVideoStream = false;
 	private EventRecordingService recordingService;
 	private final Map<String, IStreamListener> streamListeners = new HashMap<String, IStreamListener>();
@@ -52,7 +50,7 @@ public class VideoApplication extends MultiThreadedApplicationAdapter {
 	public boolean appStart(IScope app) {
 		super.appStart(app);
 		log.info("BBB Video-broadcast appStart");
-		System.out.println("BBB Video-broadcast appStart\n\n\n\n\n\n\n\n\n");
+		System.out.println("BBB Video-broadcast appStart");
 		appScope = app;
 		return true;
 	}
@@ -67,11 +65,7 @@ public class VideoApplication extends MultiThreadedApplicationAdapter {
 	public boolean roomConnect(IConnection conn, Object[] params) {
 		log.info("BBB Video-broadcast roomConnect"); 
 
-		log.info("\n\n\n\n\n\n video-broadcast roomConnect AAAAAAAA\n\n\n");
-
-
 		return super.roomConnect(conn, params);
-		// return true;
 	}
 
 	private String getConnectionType(String connType) {
@@ -113,20 +107,20 @@ public class VideoApplication extends MultiThreadedApplicationAdapter {
 		logData.put("userId", getUserId());
 		logData.put("connType", connType);
 		logData.put("connId", connId);
-		logData.put("event", "user_leaving_bbb_video"); //TODO video-broadcast
-		logData.put("description", "User leaving BBB Video."); //TODO video-broadcast
+		logData.put("event", "user_leaving_bbb_video_broadcast");
+		logData.put("description", "User leaving BBB video-broadcast.");
 		
 		Gson gson = new Gson();
 		String logStr =  gson.toJson(logData);
 		
-		log.info("User leaving bbb-video: data={}", logStr); //TODO video-broadcast
+		log.info("User leaving bbb-video-broadcast: data={}", logStr);
 		
 		super.appDisconnect(conn);
 	}
 
 	@Override
 	public void roomDisconnect(IConnection conn) {
-		log.info("BBB Video roomDisconnect"); //TODO video-broadcast
+		log.info("BBB video-broadcast roomDisconnect");
 
 		String connType = getConnectionType(Red5.getConnectionLocal().getType());
 		String connId = Red5.getConnectionLocal().getSessionId();
@@ -136,13 +130,13 @@ public class VideoApplication extends MultiThreadedApplicationAdapter {
 		logData.put("userId", getUserId());
 		logData.put("connType", connType);
 		logData.put("connId", connId);
-		logData.put("event", "user_leaving_bbb_video"); //TODO video-broadcast
-		logData.put("description", "User leaving BBB Video."); //TODO video-broadcast
+		logData.put("event", "user_leaving_bbb_video_broadcast");
+		logData.put("description", "User leaving BBB video-broadcast.");
 
 		Gson gson = new Gson();
 		String logStr =  gson.toJson(logData);
 
-		log.info("User leaving bbb-video: data={}", logStr); //TODO video-broadcast
+		log.info("User leaving bbb-video-broadcast: data={}", logStr);
 
 		super.roomDisconnect(conn);
 	}
@@ -162,15 +156,8 @@ public class VideoApplication extends MultiThreadedApplicationAdapter {
 		log.info("streamBroadcastStart " + stream.getPublishedName() + " " + System.currentTimeMillis()
 		 + " " + conn.getScope().getName());
 
-		String userId = getUserId();
-		String meetingId = conn.getScope().getName();
-		String streamId = stream.getPublishedName();
-
-		publisher.userSharedWebcamMessage(meetingId, userId, streamId);
-		// VideoStreamListener listener = new VideoStreamListener(conn.getScope(), stream, recordVideoStream, userId, packetTimeout);
-		// listener.setEventRecordingService(recordingService);
-		// stream.addStreamListener(listener); 
-		// streamListeners.put(conn.getScope().getName() + "-" + stream.getPublishedName(), listener);
+		// TODO Anton publish a message to a redis channel so that all [Flash client] users are
+		// notified that there is an rtmp stream being broadcasted.
 
 		if (recordVideoStream) {
 			recordStream(stream);
@@ -195,34 +182,29 @@ public class VideoApplication extends MultiThreadedApplicationAdapter {
 
 		log.info("Stream broadcast closed for stream=[{}] meeting=[{}]", stream.getPublishedName(), scopeName);
 
+		// TODO Anton publish a message to a redis channel so that all [Flash client] users are
+		// notified that there is no longer rtmp stream being broadcasted.
+
 		String userId = getUserId();
 		String meetingId = conn.getScope().getName();
 		String streamId = stream.getPublishedName();
 
-		publisher.userUnshareWebcamRequestMessage(meetingId, userId, streamId);
-
-		// IStreamListener listener = streamListeners.remove(scopeName + "-" + stream.getPublishedName());
-		// if (listener != null) {
-		// 	((VideoStreamListener) listener).streamStopped();
-		// 	stream.removeStreamListener(listener);
-		// }
-
 		if (recordVideoStream) {
 			long publishDuration = (System.currentTimeMillis() - stream.getCreationTime()) / 1000;
 			log.info("Stop recording event for stream=[{}] meeting=[{}]", stream.getPublishedName(), scopeName);
 			Map<String, String> event = new HashMap<String, String>();
-			event.put("module", "WEBCAM");
+			event.put("module", "WEBRTC-DESKSHARE");
 			event.put("timestamp", genTimestamp().toString());
 			event.put("meetingId", scopeName);
 			event.put("stream", stream.getPublishedName());
 			event.put("duration", new Long(publishDuration).toString());
-			event.put("eventName", "StopWebcamShareEvent");
+			event.put("eventName", "StopWebRTCDesktopShareEvent");
 			recordingService.record(scopeName, event);
 		}
 	}
 
 	/**
-	 * A hook to record a stream. A file is written in webapps/video/streams/ //TODO video-broadcast
+	 * A hook to record a stream. A file is written in webapps/video-broadcast/streams/
 	 * @param stream
 	 */
 	private void recordStream(IBroadcastStream stream) {
@@ -252,10 +234,6 @@ public class VideoApplication extends MultiThreadedApplicationAdapter {
 		recordingService = s;
 	}
 
-	public void setMessagePublisher(MessagePublisher publisher) {
-		this.publisher = publisher;
-	}
-
 	/**
 	 * Start transmission notification from Flash Player 11.1+. This command asks the server to transmit more data because the buffer is running low.
 	 * 
diff --git a/video-broadcast/src/main/java/org/bigbluebutton/app/videobroadcast/VideoStreamListener.java b/video-broadcast/src/main/java/org/bigbluebutton/app/videobroadcast/VideoStreamListener.java
index a4c928de0a12243b876938ce241dac7cebbf92b0..58575becd5ce5f947b92f1218173ffe51463aef1 100755
--- a/video-broadcast/src/main/java/org/bigbluebutton/app/videobroadcast/VideoStreamListener.java
+++ b/video-broadcast/src/main/java/org/bigbluebutton/app/videobroadcast/VideoStreamListener.java
@@ -93,7 +93,6 @@ public class VideoStreamListener implements IStreamListener {
 
 		// get the scheduler
 		scheduler = (QuartzSchedulingService) scope.getParent().getContext().getBean(QuartzSchedulingService.BEAN_NAME);
-
 	}
 
 	private Long genTimestamp() {
@@ -115,7 +114,7 @@ public class VideoStreamListener implements IStreamListener {
 			// keep track of last time video was received
 			lastVideoTime = System.currentTimeMillis();
 			packetCount++;
-			
+
 			if (! firstPacketReceived) {
 				firstPacketReceived = true;
 				publishing = true;
@@ -130,46 +129,44 @@ public class VideoStreamListener implements IStreamListener {
 					event.put("timestamp", genTimestamp().toString());
 					event.put("meetingId", scope.getName());
 					event.put("stream", stream.getPublishedName());
-					event.put("eventName", "StartWebcamShareEvent");
-						
-					  recordingService.record(scope.getName(), event);
-				  }		          
-			  }
-			  
-			  
-			  if (streamPaused) {
-				  streamPaused = false;
-				  long now = System.currentTimeMillis();
-				  long numSeconds = (now - lastVideoTime)/1000;
-					
-				  Map<String, Object> logData = new HashMap<String, Object>();
-				  logData.put("meetingId", scope.getName());
-				  logData.put("userId", userId);
-				  logData.put("stream", stream.getPublishedName());
-				  logData.put("packetCount", packetCount);
-				  logData.put("publishing", publishing);
-				  logData.put("pausedFor (sec)", numSeconds);
-					
-				  Gson gson = new Gson();
-				  String logStr =  gson.toJson(logData);
-					
-				  log.warn("Video stream restarted. data={}", logStr );	    		  
-			  }
-			  
-		  } 
+					event.put("eventName", "StartWebRTCDeskShareEvent");
+
+					recordingService.record(scope.getName(), event);
+				}
+			}
+
+			if (streamPaused) {
+				streamPaused = false;
+				long now = System.currentTimeMillis();
+				long numSeconds = (now - lastVideoTime)/1000;
+
+				Map<String, Object> logData = new HashMap<String, Object>();
+				logData.put("meetingId", scope.getName());
+				logData.put("userId", userId);
+				logData.put("stream", stream.getPublishedName());
+				logData.put("packetCount", packetCount);
+				logData.put("publishing", publishing);
+				logData.put("pausedFor (sec)", numSeconds);
+
+				Gson gson = new Gson();
+				String logStr = gson.toJson(logData);
+
+				log.warn("Video stream restarted. data={}", logStr );
+			}
+		}
 	}
-	
+
 	public void setEventRecordingService(EventRecordingService s) {
 		recordingService = s;
 	}
-	
+
 	public void streamStopped() {
 		this.publishing = false;
 	}
-	
+
 	private class TimeoutJob implements IScheduledJob {
 		private boolean streamStopped = false;
-		
+
 		public void execute(ISchedulingService service) {
 			Map<String, Object> logData = new HashMap<String, Object>();
 			logData.put("meetingId", scope.getName());
@@ -177,22 +174,20 @@ public class VideoStreamListener implements IStreamListener {
 			logData.put("stream", stream.getPublishedName());
 			logData.put("packetCount", packetCount);
 			logData.put("publishing", publishing);
-			
+
 			Gson gson = new Gson();
-			
+
 			long now = System.currentTimeMillis();
 			if ((now - lastVideoTime) > videoTimeout && !streamPaused) {
 				streamPaused = true;
 				long numSeconds = (now - lastVideoTime)/1000;
-				
 
 				logData.put("lastPacketTime (sec)", numSeconds);
-				
-				
+
+
 				String logStr =  gson.toJson(logData);
-				
+
 				log.warn("Video packet timeout. data={}", logStr );
-				
 
 				
 /*                
diff --git a/video-broadcast/src/main/java/org/bigbluebutton/red5/pubsub/MessagePublisher.java b/video-broadcast/src/main/java/org/bigbluebutton/red5/pubsub/MessagePublisher.java
index db0c5b0584616338394c6f264ec382c35acb1bcd..3f4d12fc3d08fe51cc7fe4a474fd538be8c09a2c 100755
--- a/video-broadcast/src/main/java/org/bigbluebutton/red5/pubsub/MessagePublisher.java
+++ b/video-broadcast/src/main/java/org/bigbluebutton/red5/pubsub/MessagePublisher.java
@@ -1,24 +1,25 @@
 package org.bigbluebutton.red5.pubsub;
 
-import org.bigbluebutton.common.messages.*;
+import org.bigbluebutton.common.messages.*; //TODO try with just the 2 messages
 
 public class MessagePublisher {
 
 	private MessageSender sender;
-	
+
 	public void setMessageSender(MessageSender sender) {
 		this.sender = sender;
 	}
-	
-	// Polling 
+
 	public void userSharedWebcamMessage(String meetingId, String userId, String streamId) {
 		UserSharedWebcamMessage msg = new UserSharedWebcamMessage(meetingId, userId, streamId);
-		sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
+		//sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson()); //TODO change the channel
 	}
 
 	public void userUnshareWebcamRequestMessage(String meetingId, String userId, String streamId) {
 		UserUnshareWebcamRequestMessage msg = new UserUnshareWebcamRequestMessage(meetingId, userId, streamId);
-		sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
+		//sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson()); //TODO what do we do with these
 	}
-	
+
+
+
 }