public Color unique(Object o) {
		if (!uniqueColors.containsKey(o)) {
			Random rand = new Random();
			Color  bestColor = null;
			double bestDelta = -1;

			for(int x = 0; x < 10; x++) {
				Color unique = colorFromHash(rand.nextInt());
				int   delta  = 0;
				for(Color other : uniqueColors.values()) {
					delta += colorDelta(unique, other);
				}
				if (delta > bestDelta) {
					bestDelta = delta;
					bestColor = unique;
				}
			}
			uniqueColors.put(o, bestColor);
		}
		return uniqueColors.get(o);
	}