private Turn evaluateLengthFiveMove(String moveToken) {
		if (moveToken.contains("x")) {
			return handleLengthFiveCapture(moveToken);
		} else if (moveToken.equals("O-O-O")) { 
			return handleQueenSideCastle();
		} else {
			if (moveToken.substring(4, 5).equals("+") || moveToken.substring(4, 5).equals("#")) {
				return handleLengthFiveCheck(moveToken);
			} else {
				// TODO
				// could be generic move specifying moving piece, its file, its rank, and where went
				// also could be pawn promotion with check/checkmate
				throw new RuntimeException("Unknown length five move: " + moveToken);
			}
		}
	}