class Board implements Serializable {

	public Legality play(short p) {
		if (p == PASS) {
			pass();
			return OK;
		}
		final Legality result = legality(colorToPlay, p);
		if (result != OK) {
			return result;
		}
		finalizePlay(colorToPlay, p);
		colorToPlay = colorToPlay.opposite();
		passes = 0;
		turn++;
		hash = proposedHash;
		superKoTable.add(hash);
		// To ensure that the board is in a stable state, this must be done last
		// The color argument is flipped back to the color of the stone played
		notifyObservers(colorToPlay.opposite(), p);
		return OK;
	}

	public  Board(int width);

}