public long playGame(final Board start, List<Integer> nextPiece)
	{
		//System.out.println(start);
		//System.out.println("avail moves: " + nextPiece.size());
		
		Board curBoard = new Board(start);
		Board.Direction nextDirection;
		int moves = 0;
		long startTime = System.nanoTime();
		do
		{
			nextDirection = this.nextMove(curBoard, nextPiece);
			if (nextDirection != null)
			{
				movePrint(nextDirection);
				curBoard = curBoard.move(nextDirection, nextPiece.get(0));
				nextPiece.remove(0);
				moves++;
			}		
		}while(nextDirection != null && !nextPiece.isEmpty());
		
		long duration = System.nanoTime() - startTime;
		System.out.println();
		System.out.print(curBoard);
		printStats(curBoard, moves, duration);
		return curBoard.scoreOfBoard();
	}