 		 */
 		public function ban( jids:Array ):void
 		{
-			var iq:IQ = new IQ( roomJID.escaped, IQ.TYPE_SET );
+			var iq:IQ = new IQ( roomJID.escaped, IQ.TYPE_SET, null, ban_response, ban_error );
 			var adminExt:MUCAdminExtension = new MUCAdminExtension();
-
-			iq.callback = finish_admin;
 
 			for each ( var banJID:UnescapedJID in jids )
 			{

	 * @eventType org.igniterealtime.xiff.events.RoomEvent.DECLINED
	 */
	[Event( name="declined",type="org.igniterealtime.xiff.events.RoomEvent" )]
	
	/**
	 * Manages incoming and outgoing data from a conference room as part of multi-user conferencing (XEP-0045).
	 * You will need an instance of this class for each room that the user joins.

		}

		/**
		 * @private
		 *
		 * The default error handler for admin IQ messages.
		 * Dispatches the adminError event.
		 */
		private function admin_error( iq:IQ ):void
		{
			var event:RoomEvent = new RoomEvent( RoomEvent.ADMIN_ERROR );
			event.errorCondition = iq.errorCondition;
			event.errorMessage = iq.errorMessage;
			event.errorType = iq.errorType;
			event.errorCode = iq.errorCode;
			dispatchEvent( event );
		}

		/**
		 * @private
		 *
		 * The default response handler for admin IQ messages.
		 */
		private function admin_response( iq:IQ ):void
		{
		}

		/**
		 * @private
		 */
		private function ban_error( iq:IQ ):void
		{
			admin_error( iq );
		}

		/**
		 * @private
		 */
		private function ban_response( iq:IQ ):void
		{
		}

		/**
		 * @private
		 */
		private function configure_error( iq:IQ ):void
		{
			admin_error( iq );
		}

		/**
		 * @private
		 */
		private function configure_response( iq:IQ ):void
		{
			var event:RoomEvent = new RoomEvent( RoomEvent.CONFIGURE_ROOM_COMPLETE );
			dispatchEvent( event );
		}

		/**
		 * @private
		 */
		private function grant_error( iq:IQ ):void
		{
			if( affiliationExtension is MUCAdminExtension && affiliationArgs.length > 0 )
			{
				affiliationExtension = new MUCOwnerExtension();
				grant.apply( null, affiliationArgs );
			}
			else
			{
				affiliationArgs = [];

				admin_error( iq );
			}
		}

		/**
		 * @private
		 */
		private function grant_response( iq:IQ ):void
		{
			affiliationArgs = [];
			
			var event:RoomEvent = new RoomEvent( RoomEvent.AFFILIATION_CHANGE_COMPLETE );
			dispatchEvent( event );
		}

		/**
		 * @private
		 *
		 * @param	eventObj
		 */
		private function handleEvent( eventObj:Object ):void
		{
			var userExt:MUCUserExtension;

			switch ( eventObj.type )
			{
				case "message":
