 		}
 
 		/**
-		 *
-		 * @param	iq
-		 */
-		public function finish_requestAffiliates( iq:IQ ):void
+		 * IQ callback when configuration is complete.
+		 */
+		private function finish_configure( iq:IQ ):void
+		{
+			if( iq.type == IQ.TYPE_ERROR )
+			{
+				finish_admin( iq );
+				return;
+			}
+
+			var event:RoomEvent = new RoomEvent( RoomEvent.CONFIGURE_ROOM_COMPLETE );
+			dispatchEvent( event );
+		}
+
+		/**
+		 * IQ callback when affiliate request is complete.
+		 */
+		private function finish_requestAffiliates( iq:IQ ):void
 		{
 			finish_admin( iq );
 			if ( iq.type == IQ.TYPE_RESULT )

		{
			if ( isActive )
			{
				var leavePresence:Presence = new Presence( userJID.escaped, null,
														   Presence.TYPE_UNAVAILABLE );
				_connection.send( leavePresence );

				// Clear out the roster items
				removeAll();
				_connection.removeEventListener( MessageEvent.MESSAGE, handleEvent );
				_connection.removeEventListener( DisconnectionEvent.DISCONNECT,
												  handleEvent );
			}
		}

		/*
		 * The default handler for admin IQ messages
		 * Dispatches the adminError event if anything went wrong
		 */
		private function finish_admin( iq:IQ ):void
		{

				dispatchEvent( roomEvent );
			}
		}

		/**
		 * Gets the user's affiliation for this room.
		 * Possible affiliations are "owner", "admin", "member", and "outcast".
		 * It is also possible to have no defined affiliation.
		 */
		public function get affiliation():String
		{
			return _affiliation;
		}

		/**
