@Override
    public void removeVisitor(MapleCharacter visitor) {
	final byte slot = getVisitorSlot(visitor);
	boolean shouldUpdate = getFreeSlot() == -1;
	if (slot != -1) {
	    broadcastToVisitors(PlayerShopPacket.shopVisitorLeave(slot));

	    switch (slot) {
		case 1:
		    chr1 = new WeakReference(null);
		    break;
		case 2:
		    chr2 = new WeakReference(null);
		    break;
		case 3:
		    chr3 = new WeakReference(null);
		    break;
	    }
	    if (shouldUpdate) {
		if (getShopType() == 1) {
		    ((HiredMerchant) this).getMap().broadcastMessage(PlayerShopPacket.updateHiredMerchant((HiredMerchant) this));
		} else {
		    ((MaplePlayerShop) this).getMCOwner().getMap().broadcastMessage(PlayerShopPacket.sendPlayerShopBox(((MaplePlayerShop) this).getMCOwner()));
		}
	    }
	}
    }