 
 		private static var roomStaticConstructed:Boolean = RoomStaticConstructor();
 
-		private static var staticConstructorDependencies:Array = [ FormExtension,
-																   MUC ]
+		private static var staticConstructorDependencies:Array = [ FormExtension, MUC ]
+
+		private var _active:Boolean;
+
+		private var _affiliation:String;
+
+		private var _anonymous:Boolean = true;
+
+		private var _connection:XMPPConnection;
 
 		//private var _fileRepo:RoomFileRepository;
 
-		private var _active:Boolean;
-
-		private var _anonymous:Boolean = true;
-
-		private var _affiliation:String;
-
-		private var _connection:XMPPConnection;
-
-		private var _roomJID:UnescapedJID
-
 		private var _nickname:String;
 
 		private var _password:String;
 
 		private var _role:String;
 
+		private var _roomJID:UnescapedJID;
+
 		private var _subject:String;
+
+		private var myIsReserved:Boolean;
 
 		// Used to store nicknames in pending status, awaiting change approval from server
 		private var pendingNickname:String;
-
-		private var myIsReserved:Boolean;
-		
 
 		/**
 		 *

				dispatchEvent( roomEvent );
			}
		}
		
		/**
		 * Requests an affiliation list for a given affiliation with with room.
		 * This will either dispatch the event <code>RoomEvent.AFFILIATIONS</code> or
		 * <code>RoomEvent.ADMIN_ERROR</code> depending on the result of the request.
		 *
		 * @param	affiliation Use one of the following affiliations: <code>Room.AFFILIATION_NONE</code>,
		 * <code>Room.AFFILIATION_OUTCAST</code>,
		 * <code>Room.AFFILIATION_MEMBER</code>,
		 * <code>Room.AFFILIATION_ADMIN</code>,
		 * <code>Room.AFFILIATION_OWNER</code>
		 * @see	#revoke
		 * @see	#grant
		 * @see	#affiliations
		 */
		public function requestAffiliations( affiliation:String ):void
		{
			var iq:IQ = new IQ( roomJID.escaped, IQ.TYPE_GET );
			var adminExt:MUCAdminExtension = new MUCAdminExtension();

			iq.callback = finish_requestAffiliates;

			adminExt.addItem( affiliation );

			iq.addExtension( adminExt );
			_connection.send( iq );
		}

		/**
		 * Requests a configuration form from the room.	Listen to <code>configureForm</code>
		 * event to fill out the form then call either <code>configure</code> or
		 * <code>cancelConfiguration</code> to complete the configuration process
		 *
		 * You must be joined to the room and have the owner affiliation to request
		 * a configuration form
		 *
		 * @see	#configureForm
		 * @see	#configure
		 * @see	#cancelConfiguration
		 */
		public function requestConfiguration():void
		{
			var iq:IQ = new IQ( roomJID.escaped, IQ.TYPE_GET );
			var ownerExt:MUCOwnerExtension = new MUCOwnerExtension();

			iq.callback = finish_requestConfiguration;
			iq.addExtension( ownerExt );

			_connection.send( iq );
		}

		/**
		 * Revokes all affiliations from the JIDs. This is the same as:
		 * <code>grant( Room.AFFILIATION_NONE, jids )</code>
		 *
		 * <p>If the process could not be completed, the room will dispatch the event
		 * <code>RoomEvent.ADMIN_ERROR</code>. Note: if the JID is banned from this room,
		 * then this will also revoke the banned status.</p>
		 *
		 * @param	jids An array of UnescapedJIDs to revoke affiliations from
		 * @see	#grant
		 * @see	#allow
		 */
		public function revoke( jids:Array ):void
		{
			grant( Room.AFFILIATION_NONE, jids );
		}

		/**
		 * Sends a message to the conference room.
		 *
		 * @param	body The message body
		 * @param	htmlBody The message body with HTML formatting
		 */
		public function sendMessage( body:String = null, htmlBody:String = null ):void
		{
			if ( isActive )
			{
				var message:Message = new Message( roomJID.escaped, null, body,
													   htmlBody, Message.TYPE_GROUPCHAT );
				_connection.send( message );
			}
		}

		/**
		 * Sends a message to the conference room with an extension attached.
		 * Use this method in conjunction with the <code>getMessage</code> method.
		 *
		 * @param	message The message to send
		 */
		public function sendMessageWithExtension( message:Message ):void
		{
			if ( isActive )
			{
				_connection.send( message );
			}
		}

		/**
		 * Sends a private message to a specific participant in the conference room.
		 *
		 * @param	recipientNickname The conference room nickname of the recipient who should
		 * receive the private message
		 * @param	body The message body
		 * @param	htmlBody The message body with HTML formatting
		 */
		public function sendPrivateMessage( recipientNickname:String, body:String = null, htmlBody:String = null ):void
		{
			if ( isActive )
			{
				var message:Message = new Message( new EscapedJID( roomJID + "/" + recipientNickname ),
													   null, body, htmlBody, Message.TYPE_CHAT );
				_connection.send( message );
			}
		}

		/**
		 * In a moderated room, sets voice status to a particular occupant, assuming the user
		 * has the necessary permissions to do so.
		 *
		 * @param	occupantNick The nickname of the occupant to give voice
		 * @param	voice Whether to add voice (true) or remove voice (false). Having voice means
		 * that the user is actually able to talk. Without voice the user is effectively muted.
		 */
		public function setOccupantVoice( occupantNick:String, voice:Boolean ):void
		{
			if ( isActive )
			{
				var iq:IQ = new IQ( roomJID.escaped, IQ.TYPE_SET, XMPPStanza.generateID( "voice_" ) );
				var adminExt:MUCAdminExtension = new MUCAdminExtension( iq.getNode() );
				adminExt.addItem( null, voice ? MUC.ROLE_PARTICIPANT : MUC.ROLE_VISITOR, occupantNick );
				iq.addExtension( adminExt );
				_connection.send( iq );
			}
		}

		/**
		 * @private
		 */
		override public function toString():String
		{
			return '[object Room]';
		}

		/**

			var message:Message = new Message( roomJID.escaped, null, body, htmlBody,
												   Message.TYPE_GROUPCHAT );
			return message;
		}

		/**
		 * Gets the <code>RoomOccupant</code> whose displayName matches the name passed in.
		 *
		 * @param	name
		 * @return
		 */
		public function getOccupantNamed( name:String ):RoomOccupant
		{
			for each ( var occ:RoomOccupant in this )
			{
				if ( occ.displayName == name )
				{
					return occ;
				}
			}
			return null;
		}

		/**
