public NonPlayerCharacter createRandom(int levelMin, int levelMax,
			String... names) {
		Set<String> validNames = monsters.keySet();
		if (names != null) {
			Set<String> wantedNames = new HashSet<String>();
			for (String n: names) {
				wantedNames.add(n);
			}
			validNames.retainAll(wantedNames);
		}
		if (validNames.size() == 0) {
			throw new IllegalArgumentException("no valid names given");
		}
		String[] possibleNames =  validNames.toArray(new String[0]);
		int nameInd = (int) Math.floor(Math.random() * possibleNames.length);
		int diff = levelMax - levelMin;
		int level = levelMin + (int) Math.floor(Math.random() * diff);
		String name = possibleNames[nameInd];
		NonPlayerCharacter monster = create(name, level);
		return monster;
	}