public static void runRace() {
		try {
			while (!exit && !goToMainMenu && !goToPostRaceScreen && !restart) {

				// If the display isn't visible (minimised), delay the game more
				if (!Display.isVisible()) {
					Thread.sleep(200);
				}

				// If the display is requested to close, exit the program
				else if (Display.isCloseRequested()) {
					exit = true;
				}

				// If program has to go to the prompt screen, set it up and run
				// it
				else if (goToPromptScreen) {
					goToPromptScreen = false;
					resume = false;
					goToMainMenu = false;
					restart = false;
					setupExitPrompt();
					runExitPrompt();
					initGL();
				}

				// If none of those things occur (The race is running normally)
				else {
					// Add a little delay to let the other threads catch up
					Thread.sleep(1);

					// Update the timer, handle the inputs, draw and update the
					// screen
					updateTimer();
					handleInputs();
					update();
					draw();
					Display.update();

					// If the race is done, end the race
					if (currentLap > 3) {
						endRace();
					}
				}
			}
		} catch (Exception exception) {
			System.out.println("RacingApp.run() error: " + exception);
		}
	}