diff --git a/clients/flash/air-client/src/Main.mxml b/clients/flash/air-client/src/Main.mxml
index fb42d0e853f6886f3dc4bd11e353e15b8c9f3c69..0ae7ebbef6d3fa38a256a634366fac45a095b7f0 100755
--- a/clients/flash/air-client/src/Main.mxml
+++ b/clients/flash/air-client/src/Main.mxml
@@ -71,7 +71,7 @@
 					.configure(ParticipantsConfig)
 					.configure(UsersConfig)
 					.configure(ChatConfig)
-					.configure(new ContextView(this));
+					.configure(new ContextView(this.systemManager as DisplayObjectContainer));
 				// If you wish to change the log level then uncomment the line below and set 
 				// the logLevel to the value you desire. The default logLevel is DEBUG, which 
 				// is set in the MVCSBundle. The default log level traces out the framework 
diff --git a/clients/flash/air-client/src/css/hdpi.css b/clients/flash/air-client/src/css/hdpi.css
index ffa3be5167448396b2b1b1ea0a17b26691fd91b0..8f4f7c1e81706af4fd26d61dea572b266f3eb87e 100755
--- a/clients/flash/air-client/src/css/hdpi.css
+++ b/clients/flash/air-client/src/css/hdpi.css
@@ -113,6 +113,10 @@
         fontSize: 18.00;
     }
 
+    main|EmojiPopUp {
+        fontSize: 16.50;
+    }
+
     .icon {
         fontSize: 15.00;
     }
diff --git a/clients/flash/air-client/src/css/ldpi.css b/clients/flash/air-client/src/css/ldpi.css
index 6913ca3b44b931f22a43fc3025cb624d33ffafd4..189a499cba7ee2abde09e0042516878583e9c57e 100755
--- a/clients/flash/air-client/src/css/ldpi.css
+++ b/clients/flash/air-client/src/css/ldpi.css
@@ -113,6 +113,10 @@
         fontSize: 9.000;
     }
 
+    main|EmojiPopUp {
+        fontSize: 8.250;
+    }
+
     .icon {
         fontSize: 7.500;
     }
diff --git a/clients/flash/air-client/src/css/mdpi.css b/clients/flash/air-client/src/css/mdpi.css
index 7b156dd70acd406e2847ee73346bcdf8a911d51a..cedc89f168c26237447d3ff28af3c32a2c2c8e2a 100755
--- a/clients/flash/air-client/src/css/mdpi.css
+++ b/clients/flash/air-client/src/css/mdpi.css
@@ -113,6 +113,10 @@
         fontSize: 12.0;
     }
 
+    main|EmojiPopUp {
+        fontSize: 11.0;
+    }
+
     .icon {
         fontSize: 10.0;
     }
diff --git a/clients/flash/air-client/src/css/xhdpi.css b/clients/flash/air-client/src/css/xhdpi.css
index bcbdd07b3f9000ad6c865fa04f7be0ae74f4cc8e..3fec492d8b425b02df61daba6587470964702747 100755
--- a/clients/flash/air-client/src/css/xhdpi.css
+++ b/clients/flash/air-client/src/css/xhdpi.css
@@ -102,6 +102,10 @@
 		fontSize : 24;
 	}
 	
+	main|EmojiPopUp {
+		fontSize     : 22;
+	}
+	
 	.icon {
 		fontSize : 20;
 	}
diff --git a/clients/flash/air-client/src/css/xxhdpi.css b/clients/flash/air-client/src/css/xxhdpi.css
index 03118bff89d0e576bfb055b5d069e70d27d85a44..7bff7f17cb80d258b13f6b95097b0323c8718d55 100755
--- a/clients/flash/air-client/src/css/xxhdpi.css
+++ b/clients/flash/air-client/src/css/xxhdpi.css
@@ -113,6 +113,10 @@
         fontSize: 36.0;
     }
 
+    main|EmojiPopUp {
+        fontSize: 33.0;
+    }
+
     .icon {
         fontSize: 30.0;
     }
diff --git a/clients/flash/air-client/src/css/xxxhdpi.css b/clients/flash/air-client/src/css/xxxhdpi.css
index 6fab6be135fba8f7eef99f9af9d62f1dcb896470..f155b1d2aa555231549ccded357d9b04efbf4878 100755
--- a/clients/flash/air-client/src/css/xxxhdpi.css
+++ b/clients/flash/air-client/src/css/xxxhdpi.css
@@ -113,6 +113,10 @@
         fontSize: 48;
     }
 
+    main|EmojiPopUp {
+        fontSize: 44;
+    }
+
     .icon {
         fontSize: 40;
     }
diff --git a/clients/flash/air-client/src/org/bigbluebutton/air/main/MainConfig.as b/clients/flash/air-client/src/org/bigbluebutton/air/main/MainConfig.as
index 2b68c6e55f642f97103c229179128a5bb2da3892..9d525594a01d6b1f059a829318283325a93e6265 100755
--- a/clients/flash/air-client/src/org/bigbluebutton/air/main/MainConfig.as
+++ b/clients/flash/air-client/src/org/bigbluebutton/air/main/MainConfig.as
@@ -10,6 +10,8 @@ package org.bigbluebutton.air.main {
 	import org.bigbluebutton.air.main.views.BannerViewMediator;
 	import org.bigbluebutton.air.main.views.DisconnectView;
 	import org.bigbluebutton.air.main.views.DisconnectViewMediator;
+	import org.bigbluebutton.air.main.views.EmojiPopUp;
+	import org.bigbluebutton.air.main.views.EmojiPopUpMediator;
 	import org.bigbluebutton.air.main.views.ExitView;
 	import org.bigbluebutton.air.main.views.ExitViewMediator;
 	import org.bigbluebutton.air.main.views.LoadingScreen;
@@ -44,22 +46,17 @@ package org.bigbluebutton.air.main {
 		 */
 		private function mediators():void {
 			/*
-				 mediatorMap.map(INavigationButton).toMediator(NavigationButtonMediator);
-				 mediatorMap.map(IRecordingStatus).toMediator(RecordingStatusMediator);
-				 mediatorMap.map(IPagesNavigatorView).toMediator(PagesNavigatorViewMediator);
-				 mediatorMap.map(IMenuButtonsView).toMediator(MenuButtonsViewMediator);
-				 mediatorMap.map(ILoginPageView).toMediator(LoginPageViewMediator);
-				 mediatorMap.map(ILoadingScreen).toMediator(LoadingScreenMediator);
-				 mediatorMap.map(IDisconnectPageView).toMediator(DisconnectPageViewMediator);
-				 mediatorMap.map(IProfileView).toMediator(ProfileViewMediator);
-				 mediatorMap.map(IChangeStatusPopUp).toMediator(ChangeStatusPopUpMediator);
-				 mediatorMap.map(IExitPageView).toMediator(ExitPageViewMediator);
+			   mediatorMap.map(INavigationButton).toMediator(NavigationButtonMediator);
+			   mediatorMap.map(IRecordingStatus).toMediator(RecordingStatusMediator);
+			   mediatorMap.map(IPagesNavigatorView).toMediator(PagesNavigatorViewMediator);
+			   mediatorMap.map(IProfileView).toMediator(ProfileViewMediator);
 			 */
 			mediatorMap.map(LoadingScreen).toMediator(LoadingScreenMediator);
 			mediatorMap.map(PagesNavigatorView).toMediator(PagesNavigatorViewMediator);
 			mediatorMap.map(BannerView).toMediator(BannerViewMediator);
 			mediatorMap.mapMatcher(new TypeMatcher().allOf(TopToolbarBase)).toMediator(TopToolbarMediator);
 			mediatorMap.map(MenuButtons).toMediator(MenuButtonsMediator);
+			mediatorMap.map(EmojiPopUp).toMediator(EmojiPopUpMediator);
 			mediatorMap.map(ExitView).toMediator(ExitViewMediator);
 			mediatorMap.map(DisconnectView).toMediator(DisconnectViewMediator);
 		}
diff --git a/clients/flash/air-client/src/org/bigbluebutton/air/main/commands/EmojiCommand.as b/clients/flash/air-client/src/org/bigbluebutton/air/main/commands/EmojiCommand.as
index c52d0cdcf207a7d293c2c6461cc28a93bbcee9a9..2759c8a1a33da2fa81d866412d8ebbe9b6de9a87 100755
--- a/clients/flash/air-client/src/org/bigbluebutton/air/main/commands/EmojiCommand.as
+++ b/clients/flash/air-client/src/org/bigbluebutton/air/main/commands/EmojiCommand.as
@@ -1,7 +1,7 @@
 package org.bigbluebutton.air.main.commands {
 	
-	import org.bigbluebutton.air.main.models.IUserSession;
 	import org.bigbluebutton.air.user.models.EmojiStatus;
+	import org.bigbluebutton.air.user.models.User2x;
 	import org.bigbluebutton.air.user.services.IUsersService;
 	
 	import robotlegs.bender.bundles.mvcs.Command;
@@ -12,7 +12,7 @@ package org.bigbluebutton.air.main.commands {
 		public var userService:IUsersService;
 		
 		[Inject]
-		public var userId:String;
+		public var user:User2x;
 		
 		[Inject]
 		public var status:String;
@@ -20,7 +20,7 @@ package org.bigbluebutton.air.main.commands {
 		override public function execute():void {
 			trace("EmojiCommand.execute() - change emoji status");
 			if (EmojiStatus.STATUS_ARRAY.indexOf(status) != -1) {
-				userService.emojiStatus(userId, status);
+				userService.emojiStatus(user.intId, status);
 			} else {
 				trace("Emoji status [" + status + "] not supported");
 			}
diff --git a/clients/flash/air-client/src/org/bigbluebutton/air/main/commands/EmojiSignal.as b/clients/flash/air-client/src/org/bigbluebutton/air/main/commands/EmojiSignal.as
index cb982ff2e5a6c159dbf1ad45fa15e79f8af6f711..8c0038666e1bd24a0dd08def1395299d582f74fb 100755
--- a/clients/flash/air-client/src/org/bigbluebutton/air/main/commands/EmojiSignal.as
+++ b/clients/flash/air-client/src/org/bigbluebutton/air/main/commands/EmojiSignal.as
@@ -1,14 +1,15 @@
 package org.bigbluebutton.air.main.commands {
 	
+	import org.bigbluebutton.air.user.models.User2x;
 	import org.osflash.signals.Signal;
 	
 	public class EmojiSignal extends Signal {
+		/**
+		 * @1 user
+		 * @2 status
+		 */
 		public function EmojiSignal() {
-			/**
-			 * @1 userId
-			 * @2 status
-			 */
-			super(String, String);
+			super(User2x, String);
 		}
 	}
 }
diff --git a/clients/flash/air-client/src/org/bigbluebutton/air/main/commands/GoToSlideSignal.as b/clients/flash/air-client/src/org/bigbluebutton/air/main/commands/GoToSlideSignal.as
index 28b7685a73089b5702665c464f43288f56cb429e..2e42c0a341474abd88364ff46c6948011eea0039 100755
--- a/clients/flash/air-client/src/org/bigbluebutton/air/main/commands/GoToSlideSignal.as
+++ b/clients/flash/air-client/src/org/bigbluebutton/air/main/commands/GoToSlideSignal.as
@@ -4,7 +4,7 @@ package org.bigbluebutton.air.main.commands {
 	public class GoToSlideSignal extends Signal {
 		public function GoToSlideSignal() {
 			/**
-			 * @1 mute
+			 * @1 pageId
 			 */
 			super(String);
 		}
diff --git a/clients/flash/air-client/src/org/bigbluebutton/air/main/views/EmojiItemRenderer.mxml b/clients/flash/air-client/src/org/bigbluebutton/air/main/views/EmojiItemRenderer.mxml
new file mode 100644
index 0000000000000000000000000000000000000000..7d1cc15936b96337ee39a0cb0223cda3e5a52333
--- /dev/null
+++ b/clients/flash/air-client/src/org/bigbluebutton/air/main/views/EmojiItemRenderer.mxml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
+				xmlns:s="library://ns.adobe.com/flex/spark"
+				xmlns:mx="library://ns.adobe.com/flex/mx"
+				styleName="statusItemStyle">
+	<s:states>
+		<s:State name="normal" />
+		<s:State name="selected" />
+	</s:states>
+
+	<fx:Script>
+		<![CDATA[
+			override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
+				icon.text = getStyle("icon");
+				icon.setStyle("fontFamily", getStyle("iconFont"));
+				icon.setStyle("fontSize", getStyle("iconSize"));
+				icon.setStyle("color", getStyle("iconColor"));
+				
+				if (selected) {
+					setStyle("color", getStyle("selectedColor"));
+					icon.setStyle("color", getStyle("selectedColor"));
+				}
+				
+				super.updateDisplayList(unscaledWidth, unscaledHeight);
+			}
+			
+			override public function set data(obj:Object):void {
+				super.data = obj;
+				if (obj) {
+					styleName = "icon-" + obj.icon;
+				}
+			}
+		]]>
+	</fx:Script>
+	<s:HGroup id="content"
+			  width="100%"
+			  verticalAlign="middle"
+			  padding="6"
+			  height="{getStyle('itemHeight')}">
+
+		<s:Label id="icon" />
+
+		<s:Label id="labelDisplay"
+				 maxDisplayedLines="1" />
+	</s:HGroup>
+</s:ItemRenderer>
diff --git a/clients/flash/air-client/src/org/bigbluebutton/air/main/views/EmojiListSkin.mxml b/clients/flash/air-client/src/org/bigbluebutton/air/main/views/EmojiListSkin.mxml
new file mode 100644
index 0000000000000000000000000000000000000000..76a8654d935a0e9824158a7f8372a9cf1f32c657
--- /dev/null
+++ b/clients/flash/air-client/src/org/bigbluebutton/air/main/views/EmojiListSkin.mxml
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+
+
+<!--- The default skin class for a Spark List component.  
+
+      @see spark.components.List
+        
+      @langversion 3.0
+      @playerversion Flash 10
+      @playerversion AIR 1.5
+      @productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
+      xmlns:fb="http://ns.adobe.com/flashbuilder/2009" minWidth="112"
+      alpha.disabled="0.5" blendMode="normal"> 
+    
+    <fx:Metadata>
+    <![CDATA[ 
+        /** 
+         * @copy spark.skins.spark.ApplicationSkin#hostComponent
+         */
+        [HostComponent("spark.components.List")]
+    ]]>
+    </fx:Metadata> 
+    
+    <fx:Script fb:purpose="styling">
+		<![CDATA[
+		import mx.core.FlexVersion;
+		
+		/* Define the skin elements that should not be colorized. 
+           For list, the skin itself is colorized but the individual parts are not. */
+        static private const exclusions:Array = ["scroller", "background", "border"];
+			
+		/* exclusions before Flex 4.5 for backwards-compatibility purposes */
+		static private const exclusions_4_0:Array = ["scroller", "background"];
+			
+        /**
+         * @private
+         */
+        override public function get colorizeExclusions():Array 
+		{
+			// Since border is styleable via borderColor, no need to allow chromeColor to affect
+			// the border.  This is wrapped in a compatibility flag since this change was added  
+			// in Flex 4.5
+			if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_5)
+			{
+				return exclusions_4_0;
+			}
+			
+			return exclusions;
+		}
+        
+        /* Define the content fill items that should be colored by the "contentBackgroundColor" style. */
+        static private const contentFill:Array = ["bgFill"];
+        
+        /**
+         * @private
+         */
+        override public function get contentItems():Array { return contentFill; }
+        
+        /**
+         * @private
+         */
+        override protected function initializationComplete():void
+        {
+            useChromeColor = true;
+            super.initializationComplete();
+        }
+ 
+        /**
+         * @private
+         */
+        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+        {
+            if (getStyle("borderVisible") == true)
+            {
+                border.visible = true;
+                background.left = background.top = background.right = background.bottom = 1;
+                scroller.minViewportInset = 1;
+            }
+            else
+            {
+                border.visible = false;
+                background.left = background.top = background.right = background.bottom = 0;
+                scroller.minViewportInset = 0;
+            }
+            
+            borderStroke.color = getStyle("borderColor");
+            borderStroke.alpha = getStyle("borderAlpha");
+			
+            super.updateDisplayList(unscaledWidth, unscaledHeight);
+        }
+		]]>
+    </fx:Script>
+    
+    <s:states>
+        <s:State name="normal" />
+        <s:State name="disabled" />
+    </s:states>
+    
+    <fx:Declarations>
+        <!--- 
+              Defines the appearance of the the List's drop indicator.
+              To customize the drop indicator appearance, create a custom ListSkin class.
+              The List's layout takes care to size and position the dropIndicator.
+              The size of the <code>dropIndicator</code> is typically set to the size of the gaps between the items.
+              The minimum and maximum settings are typically respected only in the direction
+              along the major axis (the gap axis).  For example a VerticalLayout ignores the 
+              <code>minWidth</code> and <code>maxWidth</code> settings, 
+              but respect <code>minHeight</code> and <code>maxHeight</code>. 
+        
+              @copy spark.components.List#dropIndicator
+        -->
+        <fx:Component id="dropIndicator">
+            <s:Group minWidth="3" minHeight="3" maxWidth="3" maxHeight="3">
+                <s:Rect left="0" right="0" top="0" bottom="0">
+                    <s:fill>
+                        <!--- Defines the color of the background. -->
+                        <s:SolidColor color="0xBBBBBB" />
+                    </s:fill>
+                    <s:stroke>
+                        <s:SolidColorStroke color="0x868686" weight="1"/>
+                    </s:stroke>
+                </s:Rect>
+            </s:Group>
+        </fx:Component>
+    </fx:Declarations>
+
+    <!-- border -->
+    <!--- @private -->
+    <s:Rect left="0" right="0" top="0" bottom="0" id="border">
+        <s:stroke>
+            <!--- @private -->
+            <s:SolidColorStroke id="borderStroke" weight="1"/>
+        </s:stroke>
+    </s:Rect>
+    
+    <!-- fill -->
+    <!--- Defines the background appearance of the list-based component. -->
+    <s:Rect id="background" left="1" right="1" top="1" bottom="1" >
+        <s:fill>
+        <!--- Defines the color of the background. The default color is 0xFFFFFF. -->
+            <s:SolidColor id="bgFill" color="0xFFFFFF" />
+        </s:fill>
+    </s:Rect>
+	
+    <!--- The Scroller component to add scroll bars to the list. -->
+    <s:Scroller left="0" top="0" right="0" bottom="0" id="scroller" minViewportInset="1" hasFocusableChildren="false">
+        <!--- @copy spark.components.SkinnableDataContainer#dataGroup -->
+        <s:DataGroup id="dataGroup" itemRenderer="org.bigbluebutton.air.main.views.EmojiItemRenderer">
+            <s:layout>
+                <!--- The default layout is vertical and measures at least for 5 rows.  
+                When switching to a different layout, HorizontalLayout for example,
+                make sure to adjust the minWidth, minHeight sizes of the skin -->
+                <s:VerticalLayout gap="0" horizontalAlign="contentJustify" requestedMinRowCount="5" />
+            </s:layout>
+        </s:DataGroup>
+    </s:Scroller>
+	
+	<s:Path id="triangle" bottom="-15" left="20" data="M 0 0 L 40 0 L 20 15 z">
+		<s:fill>
+			<s:SolidColor id="arrow" color="0xFFFFFF" />
+		</s:fill>
+	</s:Path>
+	
+</s:SparkSkin>
diff --git a/clients/flash/air-client/src/org/bigbluebutton/air/main/views/EmojiPopUp.as b/clients/flash/air-client/src/org/bigbluebutton/air/main/views/EmojiPopUp.as
new file mode 100644
index 0000000000000000000000000000000000000000..fa7d85aa162bdbe5b15c2e397bfd2bc95ca7fd7e
--- /dev/null
+++ b/clients/flash/air-client/src/org/bigbluebutton/air/main/views/EmojiPopUp.as
@@ -0,0 +1,58 @@
+package org.bigbluebutton.air.main.views {
+	import mx.collections.ArrayCollection;
+	import mx.core.ScrollPolicy;
+	
+	import spark.components.List;
+	import spark.components.SkinnablePopUpContainer;
+	import spark.components.VGroup;
+	import spark.layouts.HorizontalAlign;
+	import spark.layouts.VerticalAlign;
+	
+	import org.bigbluebutton.air.user.models.EmojiStatus;
+	
+	public class EmojiPopUp extends SkinnablePopUpContainer {
+		
+		private var _statusList:List;
+		
+		public function get statusList():List {
+			return _statusList;
+		}
+		
+		public function EmojiPopUp() {
+			super();
+			
+			var mainGroup:VGroup = new VGroup();
+			mainGroup.horizontalAlign = HorizontalAlign.CENTER;
+			mainGroup.verticalAlign = VerticalAlign.MIDDLE;
+			this.addElement(mainGroup);
+			
+			_statusList = new List();
+			_statusList.percentWidth = 100;
+			_statusList.minWidth = 160;
+			_statusList.styleName = "statusList";
+			_statusList.percentHeight = 100;
+			_statusList.labelField = "label";
+			_statusList.dataProvider = new ArrayCollection([
+				{label: "Raise", signal: EmojiStatus.RAISE_HAND, icon: "hand"},
+				{label: "Happy", signal: EmojiStatus.HAPPY, icon: "happy"},
+				{label: "Undecided", signal: EmojiStatus.NEUTRAL, icon: "undecided"},
+				{label: "Sad", signal: EmojiStatus.SAD, icon: "sad"},
+				{label: "Confused", signal: EmojiStatus.CONFUSED, icon: "confused"},
+				{label: "Away", signal: EmojiStatus.AWAY, icon: "hand"},
+				{label: "Thumbs up", signal: EmojiStatus.THUMBS_UP, icon: "thumbs-up"},
+				{label: "Thumbs down", signal: EmojiStatus.THUMBS_DOWN, icon: "thumbs-down"},
+				{label: "Applause", signal: EmojiStatus.APPLAUSE, icon: "applause"},
+				{label: "Clear", signal: EmojiStatus.NO_STATUS, icon: "clear-status"}]
+				);
+			mainGroup.addElement(_statusList);
+		}
+		
+		
+		override protected function updateDisplayList(w:Number, h:Number):void {
+			super.updateDisplayList(w, h);
+			
+			_statusList.setStyle('verticalScrollPolicy', ScrollPolicy.OFF);
+			_statusList.setStyle('horizontalScrollPolicy', ScrollPolicy.OFF);
+		}
+	}
+}
diff --git a/clients/flash/air-client/src/org/bigbluebutton/air/main/views/EmojiPopUpMediator.as b/clients/flash/air-client/src/org/bigbluebutton/air/main/views/EmojiPopUpMediator.as
new file mode 100644
index 0000000000000000000000000000000000000000..af9e14aa1ea1b3ce7a3d3f7e5f37f22388383605
--- /dev/null
+++ b/clients/flash/air-client/src/org/bigbluebutton/air/main/views/EmojiPopUpMediator.as
@@ -0,0 +1,71 @@
+package org.bigbluebutton.air.main.views {
+	import flash.events.MouseEvent;
+	
+	import mx.collections.ArrayCollection;
+	import mx.events.FlexMouseEvent;
+	
+	import spark.components.SkinnablePopUpContainer;
+	
+	import org.bigbluebutton.air.main.commands.EmojiSignal;
+	import org.bigbluebutton.air.main.models.IMeetingData;
+	
+	import robotlegs.bender.bundles.mvcs.Mediator;
+	
+	public class EmojiPopUpMediator extends Mediator {
+		
+		[Inject]
+		public var meetingData:IMeetingData;
+		
+		[Inject]
+		public var view:EmojiPopUp;
+		
+		[Inject]
+		public var emojiSignal:EmojiSignal;
+		
+		protected var dataProvider:ArrayCollection;
+		
+		override public function initialize():void {
+			view.statusList.addEventListener(MouseEvent.CLICK, onSelectStatus);
+			
+			for (var i:Number = 0; i < view.statusList.dataProvider.length; i++) {
+				if (meetingData.users.me.emoji == view.statusList.dataProvider.getItemAt(i).signal) {
+					view.statusList.setSelectedIndex(i);
+					break;
+				}
+			}
+			updateListOrientation();
+			view.addEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE, closePopUp);
+		}
+		
+		private function closePopUp(e:FlexMouseEvent):void {
+			(view as SkinnablePopUpContainer).close(false);
+		}
+		
+		private function updateListOrientation():void {
+		/*
+		   if (FlexGlobals.topLevelApplication.aspectRatio == "landscape") {
+		   view.statusList.layout = new HorizontalLayout();
+		   view.statusList.width = FlexGlobals.topLevelApplication.width;
+		   view.statusList.setStyle('verticalScrollPolicy', ScrollPolicy.OFF);
+		   view.statusList.itemRenderer = new ClassFactory(HorizontalStatusItemRenderer);
+		   } else {
+		
+		   }
+		 */
+		}
+		
+		private function onSelectStatus(event:MouseEvent):void {
+			emojiSignal.dispatch(meetingData.users.me, view.statusList.selectedItem.signal);
+			view.close();
+		}
+		
+		override public function destroy():void {
+			view.statusList.addEventListener(MouseEvent.CLICK, onSelectStatus);
+			view.removeEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE, closePopUp);
+			view.close();
+			view = null;
+			super.destroy();
+		}
+	
+	}
+}
diff --git a/clients/flash/air-client/src/org/bigbluebutton/air/main/views/MenuButtonsMediator.as b/clients/flash/air-client/src/org/bigbluebutton/air/main/views/MenuButtonsMediator.as
index d8b67f4dcd2233f3755676e208e5200a772f6b4a..fed60934919386d9cb12df05c7e05ece023d8f16 100755
--- a/clients/flash/air-client/src/org/bigbluebutton/air/main/views/MenuButtonsMediator.as
+++ b/clients/flash/air-client/src/org/bigbluebutton/air/main/views/MenuButtonsMediator.as
@@ -1,5 +1,6 @@
 package org.bigbluebutton.air.main.views {
 	
+	import flash.display.DisplayObjectContainer;
 	import flash.events.MouseEvent;
 	
 	import org.bigbluebutton.air.common.PageEnum;
@@ -14,12 +15,16 @@ package org.bigbluebutton.air.main.views {
 	import org.bigbluebutton.air.voice.models.VoiceUser;
 	
 	import robotlegs.bender.bundles.mvcs.Mediator;
+	import robotlegs.bender.extensions.mediatorMap.api.IMediatorMap;
 	
 	public class MenuButtonsMediator extends Mediator {
 		
 		[Inject]
 		public var view:MenuButtons;
 		
+		[Inject]
+		public var mediatorMap:IMediatorMap;
+		
 		[Inject]
 		public var shareMicrophoneSignal:ShareMicrophoneSignal;
 		
@@ -51,20 +56,14 @@ package org.bigbluebutton.air.main.views {
 		}
 		
 		private function changeStatus(e:MouseEvent):void {
-		/*var changeStatusPopUp:ChangeStatusPopUp = new ChangeStatusPopUp();
-		   mediatorMap.mediate(changeStatusPopUp);
-		   changeStatusPopUp.width = view.width;
-		   changeStatusPopUp.height = view.height;
-		   changeStatusPopUp.open(view as DisplayObjectContainer, true);
-		
-		   if (FlexGlobals.topLevelApplication.aspectRatio == "landscape") {
-		   changeStatusPopUp.x = view.x + view.statusButton.x;
-		   changeStatusPopUp.y = view.y - changeStatusPopUp.height * 2;
-		   } else {
-		   changeStatusPopUp.x = -(view.width - view.statusButton.x - view.statusButton.width) / 2 - (view.statusButton.width - (view.statusButton.skin as PresentationButtonSkin).backgroundEllipse.width) / 2 + 6;
-		   changeStatusPopUp.y = view.y - changeStatusPopUp.height * changeStatusPopUp.statusList.dataProvider.length;
-		   }
-		 */
+			// TODO : improve use a singel instance
+			var emojiPopUp:EmojiPopUp = new EmojiPopUp();
+			emojiPopUp.width = view.width;
+			emojiPopUp.height = view.height;
+			emojiPopUp.open(view.parentApplication as DisplayObjectContainer, true);
+			
+			emojiPopUp.x = view.x + view.statusButton.x - 10;
+			emojiPopUp.y = view.y - emojiPopUp.height * 2 - 35;
 		}
 		
 		protected function micOnOff(e:MouseEvent):void {
diff --git a/clients/flash/air-client/src/org/bigbluebutton/air/main/views/menubuttons/changestatus/StatusItemRenderer.mxml b/clients/flash/air-client/src/org/bigbluebutton/air/main/views/menubuttons/changestatus/StatusItemRenderer.mxml
new file mode 100644
index 0000000000000000000000000000000000000000..5610991beb8851a79fec0fe0cef4100871329976
--- /dev/null
+++ b/clients/flash/air-client/src/org/bigbluebutton/air/main/views/menubuttons/changestatus/StatusItemRenderer.mxml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
+				xmlns:s="library://ns.adobe.com/flex/spark"
+				xmlns:mx="library://ns.adobe.com/flex/mx"
+				autoDrawBackground="false"
+				styleName="statusItemStyle">
+	<s:states>
+		<s:State name="normal" />
+		<s:State name="selected" />
+	</s:states>
+
+	<fx:Script>
+		<![CDATA[
+			override public function set data(obj:Object):void {
+				super.data = obj;
+				if (obj) {
+					statusButton.styleName = "bottomPresentationBtnStyle " + obj.style;
+				}
+			}
+		]]>
+	</fx:Script>
+	<s:Group id="content"
+			 width="100%"
+			 height="{getStyle('itemHeight')}">
+		<s:layout>
+			<s:HorizontalLayout verticalAlign="middle"
+								horizontalAlign="right"
+								paddingLeft="{getStyle('itemPaddingLeft')}"
+								paddingRight="{getStyle('itemPaddingRight')}" />
+		</s:layout>
+
+		<s:Label id="labelDisplay"
+				 textAlign="right"
+				 width="100%"
+				 height="100%"
+				 styleName="contentFontSize" />
+
+		<s:Group id="icon">
+			<s:Button id="statusButton"
+					  height="100%" />
+		</s:Group>
+	</s:Group>
+
+	<s:Group visible.normal="false"
+			 width="100%"
+			 x="{icon.x + icon.width - selectionCircle.width/1.5}"
+			 y="{icon.y + icon.height/4}"
+			 height="100%">
+		<s:Ellipse id="selectionCircle"
+				   height="30%"
+				   width="{selectionCircle.height}">
+			<s:fill>
+				<s:SolidColor color="{getStyle('selectedColor')}" />
+			</s:fill>
+		</s:Ellipse>
+
+		<s:Ellipse id="innerSelectionCircle"
+				   height="{selectionCircle.height * 0.7}"
+				   width="{innerSelectionCircle.height}"
+				   x="{selectionCircle.x + (selectionCircle.width - innerSelectionCircle.width)/2}"
+				   y="{selectionCircle.y + (selectionCircle.height - innerSelectionCircle.height)/2}">
+			<s:stroke>
+				<s:SolidColorStroke color="{getStyle('strokeColor')}" />
+			</s:stroke>
+		</s:Ellipse>
+
+		<s:Line id="selectedLine1"
+				xFrom="{innerSelectionCircle.x + innerSelectionCircle.width / 3.2}"
+				xTo="{innerSelectionCircle.x + innerSelectionCircle.width / 2.3}"
+				yFrom="{innerSelectionCircle.y + innerSelectionCircle.height / 2}"
+				yTo="{innerSelectionCircle.y + innerSelectionCircle.height / 1.5}">
+			<s:stroke>
+				<s:SolidColorStroke color="{getStyle('strokeColor')}" />
+			</s:stroke>
+		</s:Line>
+
+		<s:Line id="selectedLine2"
+				xFrom="{innerSelectionCircle.x + innerSelectionCircle.width / 1.4}"
+				xTo="{innerSelectionCircle.x + innerSelectionCircle.width / 2.3}"
+				yFrom="{innerSelectionCircle.y + innerSelectionCircle.height / 2.5}"
+				yTo="{innerSelectionCircle.y + innerSelectionCircle.height / 1.5}">
+			<s:stroke>
+				<s:SolidColorStroke color="{getStyle('strokeColor')}" />
+			</s:stroke>
+		</s:Line>
+
+	</s:Group>
+
+</s:ItemRenderer>
diff --git a/clients/flash/air-client/src/org/bigbluebutton/air/main/views/skins/PresentationButtonSkin.mxml b/clients/flash/air-client/src/org/bigbluebutton/air/main/views/skins/PresentationButtonSkin.mxml
new file mode 100644
index 0000000000000000000000000000000000000000..b037ab503af726b501b4960901c618c7472a82df
--- /dev/null
+++ b/clients/flash/air-client/src/org/bigbluebutton/air/main/views/skins/PresentationButtonSkin.mxml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
+		xmlns:s="library://ns.adobe.com/flex/spark">
+	<!-- host component -->
+	<fx:Metadata>
+		[HostComponent("spark.components.Button")]
+	</fx:Metadata>
+
+	<!-- states -->
+	<s:states>
+		<s:State name="disabled" />
+		<s:State name="down" />
+		<s:State name="over" />
+		<s:State name="up" />
+	</s:states>
+
+	<s:Ellipse id="backgroundEllipse"
+			   height="{image.height * 3/2}"
+			   width="{backgroundEllipse.height}"
+			   x="{(this.width - backgroundEllipse.width)/2}"
+			   y="{(this.height - backgroundEllipse.height)/2}">
+		<s:fill>
+			<s:SolidColor color="{hostComponent.getStyle('backgroundColor')}"
+						  color.down="{hostComponent.getStyle('selectedBackgroundColor')}" />
+		</s:fill>
+	</s:Ellipse>
+	<s:BitmapImage id="image"
+				   source="{getStyle('backgroundImage')}"
+				   horizontalCenter="0"
+				   verticalCenter="0" />
+
+	<s:Label id="iconLabel"
+			 text="{hostComponent.label}"
+			 x="{(this.width - iconLabel.width)/2}"
+			 y="{backgroundEllipse.y + backgroundEllipse.height * 9/8}" />
+
+</s:Skin>
diff --git a/clients/flash/air-client/src/org/bigbluebutton/air/user/models/EmojiStatus.as b/clients/flash/air-client/src/org/bigbluebutton/air/user/models/EmojiStatus.as
index 209673d59c455cb1ec5f8da2eedbdc9e87ba1629..94d3dcdac49e1f8a7ba33040007b9a6348524409 100755
--- a/clients/flash/air-client/src/org/bigbluebutton/air/user/models/EmojiStatus.as
+++ b/clients/flash/air-client/src/org/bigbluebutton/air/user/models/EmojiStatus.as
@@ -21,7 +21,6 @@ package org.bigbluebutton.air.user.models {
 		
 		public static const APPLAUSE:String = "applause";
 		
-		
 		public static const STATUS_ARRAY:Array = [RAISE_HAND, HAPPY, NEUTRAL, SAD, CONFUSED, AWAY, THUMBS_UP, THUMBS_DOWN, APPLAUSE];
 	}
 }