@Override
	public List<Employee> listEmployeesInDept(List<Integer> departmentIds) {

		XStream xstream = new XStream();

		ArrayList<ContentExchange> exchanges =
		    new ArrayList<ContentExchange>(departmentIds.size());

		String serverUrl;
		for (Integer i : departmentIds) {
			try {
				serverUrl = getServerURLForDepartment(i);
			} catch (DepartmentNotFoundException err) {
				// TODO: handle
				return new ArrayList<Employee>();
			}
			ByteArrayBuffer listData =
			    new ByteArrayBuffer(xstream.toXML(departmentIds));

			ContentExchange exchange = new ContentExchange();
			exchange.setMethod("POST");
			exchange.setURL(serverUrl + "/listEmployeesInDept");
			exchange.setRequestContent(listData);
			exchanges.add(exchange);
			try {
			  client.send(exchange);
			} catch (IOException err) {
				// TODO: handle
			}
		}

		// Use a HashMap to avoid duplicate employees
		HashMap<Integer, Employee> employeeList = new HashMap<Integer, Employee>();

		for (ContentExchange ex : exchanges) {
			try {
				if (ex.waitForDone() == HttpExchange.STATUS_COMPLETED) {
					try {
						// TODO: retrieve and parse response
						List<Employee> retrievedEmployees = new ArrayList<Employee>();
						for (Employee em : retrievedEmployees) {
							employeeList.put(em.getId(), em);
						}
					} catch (Exception err) {
						// TODO: Handle this
					}
				} else {
					// TODO: Handle this
				}
		  } catch (InterruptedException err) {
				// TODO: handle this
			}
		}

		return new ArrayList<Employee>(employeeList.values());
	}