public StringBuilder listRaceCats(Session viewerS, Enumeration these, boolean shortList)
	{
		final StringBuilder lines=new StringBuilder("");
		if(!these.hasMoreElements()) return lines;
		int column=0;
		final Vector raceCats=new Vector();
		Race R=null;
		final int COL_LEN=ListingLibrary.ColFixer.fixColWidth(25.0,viewerS);
		for(final Enumeration e=these;e.hasMoreElements();)
		{
			R=(Race)e.nextElement();
			if(!raceCats.contains(R.racialCategory()))
				raceCats.addElement(R.racialCategory());
		}
		final Object[] sortedB=(new TreeSet(raceCats)).toArray();
		if(shortList)
		{
			final String[] sortedC=new String[sortedB.length];
			for(int i=0;i<sortedB.length;i++)
				sortedC[i]=(String)sortedB[i];
			lines.append(CMParms.toStringList(sortedC));
		} else
			for (final Object element : sortedB)
			{
				final String raceCat=(String)element;
				if(++column>3)
				{
					lines.append("\n\r");
					column=1;
				}
				lines.append(CMStrings.padRight(raceCat,COL_LEN));
			}
		lines.append("\n\r");
		return lines;
	}