@Override
	public void nominateCandidate(String electionID,
			HashMap<String, Set<User>> electorateMap, User nominator,
			User nominee) {
		DnDElection el = (DnDElection) electionMap.get(electionID);

		if (el.getElectionState() == ElectionState.NOMINATIONS_OPEN
				&& electorateMap.containsKey(el.getElectoratelectionID()) && // Check
																				// if
																				// there
																				// is
																				// such
																				// an
																				// electorate
																				// ID
				electorateMap.get(el.getElectoratelectionID()).contains(
						nominator) && // Check if current user is a voter
				electorateMap.get(el.getElectoratelectionID())
						.contains(nominee)) { // check if prospective nominee is
												// a
												// voter

			for (Candidate c : el.getCandidates()) {
				if (c.getGUID().equals(nominee.getGUID()))
					throw new RuntimeException(
							"Error! The nominee is already a candidate!");
			}

			el.addNominee(nominee);
		} else
			throw new RuntimeException(
					"Illegal action! Either election is not at the state ElectionState.NOMINATIONS_OPEN, or "
							+ "electorateID is incorrect, or current user is not a voter or prospective nominee is not a voter");
	}