private final MaplePortal getFreePortal() {
	final List<MaplePortal> freePortals = new ArrayList<MaplePortal>();

	for (final MaplePortal port : town.getPortals()) {
	    if (port.getType() == 6) {
		freePortals.add(port);
	    }
	}
	Collections.sort(freePortals, new Comparator<MaplePortal>() {

	    @Override
	    public final int compare(final MaplePortal o1, final MaplePortal o2) {
		if (o1.getId() < o2.getId()) {
		    return -1;
		} else if (o1.getId() == o2.getId()) {
		    return 0;
		} else {
		    return 1;
		}
	    }
	});
	for (final MapleMapObject obj : town.getAllDoor()) {
	    final MapleDoor door = (MapleDoor) obj;
	    if (door.getOwner().getParty() != null
		    && owner.getParty().containsMembers(new MaplePartyCharacter(door.getOwner()))) {
		freePortals.remove(door.getTownPortal());
	    }
	}
	return freePortals.iterator().next();
    }