private void showSolution(List<PieceMovePair<Vehicle, Cell>> solution){
		if(solution != null && solution.size() != 0) {
			solving = true;
			final Iterator<PieceMovePair<Vehicle, Cell>> pathIterator = solution.iterator();
			PieceMovePair<Vehicle, Cell> nextMove = pathIterator.next();
			Vehicle nextCar = currentBoard.getBoard().getPiece(nextMove.piece);
			Cell newMove = currentBoard.getBoard().getMove(nextMove.move);
			currentBoard.moveVehicle(nextCar, newMove);
			if(pathIterator.hasNext()){
				Timer moveTimer = new Timer(MOVE_TURN_TIME, new ActionListener() {
					@Override
					public void actionPerformed(ActionEvent e) {
						PieceMovePair<Vehicle, Cell> nextMove = pathIterator.next();
						Vehicle nextCar = currentBoard.getBoard().getPiece(nextMove.piece);
						Cell newMove = currentBoard.getBoard().getMove(nextMove.move);
						currentBoard.moveVehicle(nextCar, newMove);
						if(!pathIterator.hasNext() || !solving){
							((Timer) e.getSource()).stop();
							controlGUI.enableButtons();
							solving = false;
							solved = true;
							if(!pathIterator.hasNext()){
								int reply = JOptionPane.showConfirmDialog(getContentPane(),
										"Do you want a new game?",
										"New Game", JOptionPane.YES_NO_OPTION);
								if(reply == JOptionPane.YES_OPTION){
									newGameSetup();
								}
							}
						}
					}
				});
				moveTimer.setRepeats(true);
				moveTimer.start();
			}
			else{
				controlGUI.enableButtons();
				solving = false;
				int reply = JOptionPane.showConfirmDialog(getContentPane(),
						"Do you want a new game?",
						"New Game", JOptionPane.YES_NO_OPTION);
				if(reply == JOptionPane.YES_OPTION){
					newGameSetup();
				}
			}
		}
		else{
			controlGUI.enableButtons();
			solving = false;
			int reply = JOptionPane.showConfirmDialog(getContentPane(),
					"Do you want a new game?",
					"New Game", JOptionPane.YES_NO_OPTION);
			if(reply == JOptionPane.YES_OPTION){
				newGameSetup();
			}
		}
	}