@Override
	public String listFactions()
	{
		final StringBuffer msg=new StringBuffer();
		msg.append("\n\r^.^N");
		msg.append("+--------------------------------+-----------------------------------------+\n\r");
		msg.append(L("| ^HFaction Name^N                   | ^HFaction INI Source File (Faction ID)^N    |\n\r"));
		msg.append("+--------------------------------+-----------------------------------------+\n\r");
		final XVector<Faction> sorted = new XVector<Faction>(factionSet.elements());
		Collections.sort(sorted,new Comparator<Faction>(){
			@Override
			public int compare(Faction o1, Faction o2)
			{
				return o1.name().compareTo(o2.name());
			}
			
		});
		for(final Enumeration<Faction> e=sorted.elements();e.hasMoreElements();)
		{
			final Faction f=e.nextElement();
			msg.append("| ");
			msg.append(CMStrings.padRight(f.name(),30));
			msg.append(" | ");
			msg.append(CMStrings.padRight(f.factionID(),39));
			msg.append(" |\n\r");
		}
		msg.append("+--------------------------------+-----------------------------------------+\n\r");
		msg.append("\n\r");
		return msg.toString();
	}