public static TreeMap<String, Integer> getSystems(ArrayList<Kill> Kills) {
		TreeMap<String, Integer> output = new TreeMap<String, Integer>(); // the
																			// output
		// result
		// (Name,
		// Number of
		// occurance)
		ArrayList<int[]> systemStats = new ArrayList<int[]>(); // (ID, number of
																// occurance)
		ArrayList<Integer> systemTypeList = new ArrayList<Integer>(); // list of
																		// system
																		// id's
		TreeMap<Integer, String> systemID = new TreeMap<Integer, String>(); // from
																			// the
		// API
		// (Name,
		// ID)
		int id; // a single ID

		for (Kill k : Kills) {
			boolean found = false;
			id = k.getSolarsysId();

			for (int[] i : systemStats) {
				if (i[0] == id) {
					i[1] = i[1] + 1;
					found = true;
				}
			}
			if (!found) {
				systemStats.add(new int[] { id, 1 });
			}
		}

		for (int[] i : systemStats) {
			systemTypeList.add(i[0]);
		}

		if (systemTypeList.size() < 220) {
			systemID = api.Eve.getEntityName(systemTypeList);
		} else {
			systemID = api.Eve.getEntityName(new ArrayList<Integer>(
					systemTypeList.subList(0, 220)));
			systemTypeList.remove(new ArrayList<Integer>(systemTypeList
					.subList(0, 220)));
			while (systemTypeList.size() > 0) {
				ArrayList<Integer> currentList = new ArrayList<Integer>(
						systemTypeList.subList(0,
								min(systemTypeList.size(), 220)));
				systemTypeList.removeAll(currentList);
				systemID.putAll(api.Eve.getEntityName(currentList));
			}
			// System.out.println("Warning: system lookup overloaded!");
			// return null;
		}

		for (int[] j : systemStats) {
			output.put(systemID.get(j[0]), j[1]);
		}

		return output;
	}