public void run() throws IOException {
		boolean go = true;

		initialize(); // initializes things which need initializing before
		// the game can run.

		sound = new Sound("assets/sounds/KingSolomonsOverworldTheme.wav", true);

		while (go){
			if(doSetup) {
				if(!sound.isPlaying) {
					sound = new Sound("assets/sounds/KingSolomonsOverworldTheme.wav", true);
				}
				initializeIntroSequence(); // initializes things which need initializing before
				// the game can run

				// initially draws everything
				draw();
				// loop which handles fps
				while (runIntroSequence) {
					// time
					long time = System.currentTimeMillis();

					update();
					draw();

					runIntroSequence = !introSeq.finished;

					// runs an update 30 times a second
					time = (1000 / fps) - (System.currentTimeMillis() - time);

					// what the heck is even going on here man I mean seriously
					// Somethin' 'bout a thread runnin' fer the frame I 'reckon
					// It's limiting the framerate to fps... I think.
					if (time > 0) {
						try {
							Thread.sleep(time);
						} catch (Exception e) {
						}
					}
				}

				gentStats = introSeq.gentStats;
				gentName = introSeq.gentName;
				party = introSeq.party;
				resources = introSeq.resources;

				IntroSequence.removeInputManager();
				introSeq = null;

				isRunning = true;
			}
			//Runs the main game
			initializeMainGame();

			// initially draws everything
			draw();
			// loop which handles fps
			while (isRunning) {
				// time
				long time = System.currentTimeMillis();

				update();
				draw();

				// runs an update 30 times a second
				time = (1000 / fps) - (System.currentTimeMillis() - time);

				// what the heck is even going on here man I mean seriously
				// Somethin' 'bout a thread runnin' fer the frame I 'reckon
				// It's limiting the framerate to fps... I think.
				if (time > 0) {
					try {
						Thread.sleep(time);
					} catch (Exception e) {
					}
				}

			}
		}


		setVisible(false);
	}