@Override
	public void start(final Stage primaryStage) throws Exception {
		// load game config to set correct size, title, etc.
		GameLogic.INSTANCE.loadGameConfigValues();

		// get window size and title from game.ini file
		int windowWidth = Integer.parseInt(GameLogic.INSTANCE.getGameConfigValue(LOTDConstants.INI_KEY_WINDOW_WIDTH));
		int windowHeight = Integer.parseInt(GameLogic.INSTANCE.getGameConfigValue(LOTDConstants.INI_KEY_WINDOW_HEIGHT));
		String gameTitle = GameLogic.INSTANCE.getGameConfigValue(LOTDConstants.INI_KEY_GAME_TITLE);

		if (LOGGER.isDebugEnabled())
			LOGGER.debug("Creating game '" + gameTitle + "' of size (" + windowWidth + "," + windowHeight + ")");

		primaryStage.setTitle(gameTitle);

		// create scene and canvas to render the game graphics on it
		Group group = new Group();
		primaryStage.setScene(new Scene(group, windowWidth, windowHeight, Color.BLACK));

		Canvas canvas = new Canvas();
		// resize canvas when window is resized
		canvas.widthProperty().bind(primaryStage.widthProperty());
		canvas.heightProperty().bind(primaryStage.heightProperty());
		group.getChildren().add(canvas);

		// create gameloop to update/render periodically
		gameloop = new GameLoop(canvas.getGraphicsContext2D());

		primaryStage.show();
	}