public void modelPropertyChange(final PropertyChangeEvent evt) {
		switch (evt.getPropertyName()) {
		case AbstractController.PROPERTY_LEVEL_STATUS:
			if ((boolean) evt.getNewValue() == true) {

				new Thread(new Runnable() {

					@Override
					public void run() {
						try {
							Thread.sleep(500l);
						} catch (InterruptedException e) {
							e.printStackTrace();
						}
						exportSolution();
						// If user is in story mode, load the next level
						if (storyMode) {
							int maxLevel = new Integer(CoreConstants.getProperty("game.story.levels"));
							if(currentStoryLevel<maxLevel-1 ){
							loadNextLevel();
							}else{
								JOptionPane.showMessageDialog(null, "Der StoryModus wurde erfolgreich beendet!");
								view.setMode(Mode.BLOCKED);
							}
						// Otherwise only give a message
						}else{
							int steps = model.getMoves().size();
							int diamondMoves = model.getDiamondMoveCounter();
							JOptionPane.showMessageDialog(null, "Level wurde erfolgreich gelöst. \nSchritte:" + steps
									+ "\nDiamantverschiebungen:" + diamondMoves);
							view.setMode(Mode.BLOCKED);
						}
					}
				}).start();
			}
			break;
		case AbstractController.PROPERTY_LEVEL_SCORE:
			Highscore.getInstance().addHighscore(player, model.getUuid(),
					(Integer) evt.getNewValue());
			break;
		}
	}