protected void assignCompanion(BoatId id, Point p) throws RemoteException {
		// don't hand help to boats that are expected to help others
		// also if it's arriving at wharf, let him be!
		if (!assignedCompanions.containsKey(id) && !assignedCompanions.containsValue(id)) {
			// don't hand helpers that are already helping others
			for (IBoatDirOper helper : boats) {
				if (!helper.getId().equals(id) && !assignedCompanions.containsKey(helper.getId())
						&& !assignedCompanions.containsValue(helper.getId())
						&& !boatsAtWharf.containsKey(helper.getId())) {
					boats[id.getBoat()].helpRequestServed((IBoatHelper) boats[helper.getId().getBoat()]);
					assignedCompanions.put(id, helper.getId());
					break;
				}
			}
		}
	}