 	     * <code>Room.ADMIN_AFFILIATION</code>,
 	     * <code>Room.OWNER_AFFILIATION</code>
 	     * @param jids An array of JIDs to grant these permissions to
-	     * @param callback The function to call once permission granting is complete
 	     * @see #revoke
-	     * @see #ban
+	     * @see #allow
 	     */
-	    public function grant(affiliation:String, jids:Array, callback:Function):void
+	    public function grant(affiliation:String, jids:Array):void
 	    {
 	        var iq:IQ = new IQ(roomJID, IQ.SET_TYPE);
 	        var owner:MUCOwnerExtension = new MUCOwnerExtension();
 	
-	        iq.callbackScope = this;
-	        iq.callbackName = "finish_admin";
-	        iq.callback = callback;
+		    iq.callbackScope = this;
+		    iq.callback = finish_admin;
 	
 	        for (var i:int=0; i < jids.length; i++) {
 	            owner.addItem(affiliation, null, null, jids[i], null, null);

	     * <code>RoomEvent.ADMIN_ERROR</code></p>
	     * 
	     * @param jids An array of JIDs to allow
	     * @param callback The function to call once allowing is complete
	     * @see #revoke
	     * @see #ban
	     */
	    public function allow( jids:Array, callback:Function ):void
	    {
	        grant(Room.NO_AFFILIATION, jids, callback);
	    }
	
	    /*

	     * then this will also revoke the banned status.</p>
	     * 
	     * @param jids An array of JIDs to revoke affiliations from
	     * @see #grant
	     * @see #allow
	     */
	    public function revoke(jids:Array):void
	    {
	        grant(Room.NO_AFFILIATION, jids);
	    }
	
	    /**
	     * Bans an array of JIDs from entering the room.
	     *
	     * <p>If the process could not be completed, the room will dispatch the event
	     * <code>RoomEvent.ADMIN_ERROR</code>.</p>
	     * 
	     * @param jids An arry of JIDs to ban
	     */
	    public function ban(jids:Array):void
	    {
	        var iq:IQ = new IQ(roomJID, IQ.SET_TYPE);
	        var adminExt:MUCAdminExtension = new MUCAdminExtension();

		    iq.callbackScope = this;
		    iq.callback = finish_admin;
	
	        for (var i:int=0; i < jids.length; i++) {
	            adminExt.addItem(Room.OUTCAST_AFFILIATION, null, null, jids[i], null, null);
	        }
	
	        iq.addExtension(adminExt);
	        connection.send(iq);
	    }
	
	    /**
