public void loadAGame() {
		storyMode = true;
		// Create a file chooser
		JFileChooser fc = new JFileChooser(basePath);
		FileNameExtensionFilter sokfilter = new FileNameExtensionFilter(
				"Sokoban game files (*.sok)", "sok");
		// set the filter to only allow sok files
		fc.setFileFilter(sokfilter);
		fc.setDialogTitle("Open schedule file");
		// set selected filter
		fc.setFileFilter(sokfilter);
		// Handle open button action.
		int returnVal = fc.showOpenDialog(frame);

		if (returnVal == JFileChooser.APPROVE_OPTION) {
			File file = fc.getSelectedFile();
			levelName = file.getName();
			// Get content from file
			String fileContent = new String();
			try {
				fileContent = new String(Files.readAllBytes(Paths.get(file
						.toString())));
			} catch (IOException ex) {
				ex.printStackTrace();
			}
			System.out.println(fileContent);
			String[] content = fileContent.split(":");
			player = content[0];
			currentStoryLevel = levels.getLevelByHash(content[1]);

			currentLevel = levels.getLevel(currentStoryLevel);

			try {
				BoardController board = levelService.getLevelProgressForUser(
						player, levels.getLevel(currentStoryLevel));
				if (board == null) {
					board = levelService.getLevel(new File(levels
							.getLevel(currentStoryLevel)));
				}
				board.addView(GameWindowView.this);

				view = (BoardView) board.getView(BoardView.class);
				model = (Board) board.getModel(Board.class);

				frame.setSize(view.getWindowSizeX(), view.getWindowSizeY());
				revalidateLevel(frame);
			} catch (LevelMisconfigurationException e1) {
				LOG.error(e1.getMessage());
				JOptionPane.showMessageDialog(frame, e1.getMessage());
			}
		}
		frame.getContentPane().revalidate();
	}