public void play() {
		state.setup();
		Event e = new Event(state, null, null, null);
		notifyPlayers(e);
		notifyObservers(e);

		while (true) {
			try {
				advance();
				
				if (aborted)
					return;
				
				if (state.gameOver()) {
					if (state.isDraw()) {
						for (Player p: players)
							p.draw(state);
					} else {
						Player w = players[state.winner()];
						for (Player l: players) {
							if (l != w)
								l.loss(state);
						}
						w.win(state);
					}
					break;
				}
			} catch (IllegalDecisionException ex) {
				ex.printStackTrace();
			}
		}
	}