public void loadGame(File file) {
		FileInputStream fileStream;
		ObjectInputStream objectStream;

		try {
			fileStream = new FileInputStream(file);
			objectStream = new ObjectInputStream(fileStream);

			// read IGame object from file
			game = (IGame) objectStream.readObject();

			objectStream.close();
		} catch (Exception ex) {
			ex.printStackTrace();
		}

		// Switch to GameMenu
		window.setMenu(new GameMenu(window, game));

		// Make sure the Game has an Observer
		if (game instanceof Game) {
			((Game) game).addObserver((Observer) window);
		} else if (game instanceof GameCoop) {
			((GameCoop) game).addObserver((Observer) window);
		}

		// Enable game specific menu items
		window.getSaveItem().setEnabled(true);
		window.getSurrenderItem().setEnabled(true);
		window.getQuitItem().setEnabled(true);

		// Make sure all Window and Game references are up to date
		game.setWindow(window);
		game.getCurrentState().setGame(game);
		game.getCurrentState().setWindow(window);
		game.getCurrentState().enter();

		// Update the View
		game.update(Update.PlayerChange);
		game.update(Update.StateChanged);
		game.update(Update.PlayerMoved);

		if (game.getCurrentTile() != null) {
			game.update(Update.TileDrawn);
		}
	}