static void Main(string[] args)
    {
        ChessBoard cb = new ChessBoard();

        cb.SetupBoard(new KeyValuePair <Int32, PieceType>[]
        {
            // Setup Black pieces
            new KeyValuePair <Int32, PieceType>(3, PieceType.BlackRook),
            new KeyValuePair <Int32, PieceType>(5, PieceType.BlackKing),
            new KeyValuePair <Int32, PieceType>(11, PieceType.BlackKnight),
            new KeyValuePair <Int32, PieceType>(12, PieceType.BlackKnight),
            new KeyValuePair <Int32, PieceType>(13, PieceType.BlackPawn),
            new KeyValuePair <Int32, PieceType>(14, PieceType.BlackPawn),
            new KeyValuePair <Int32, PieceType>(16, PieceType.BlackQueen),
            new KeyValuePair <Int32, PieceType>(17, PieceType.BlackPawn),
            new KeyValuePair <Int32, PieceType>(18, PieceType.BlackPawn),
            new KeyValuePair <Int32, PieceType>(19, PieceType.BlackRook),
            new KeyValuePair <Int32, PieceType>(23, PieceType.BlackPawn),
            new KeyValuePair <Int32, PieceType>(24, PieceType.BlackPawn),
            // Setup White pieces
            new KeyValuePair <Int32, PieceType>(31, PieceType.WhitePawn),
            new KeyValuePair <Int32, PieceType>(32, PieceType.WhitePawn),
            new KeyValuePair <Int32, PieceType>(35, PieceType.WhitePawn),
            new KeyValuePair <Int32, PieceType>(36, PieceType.WhitePawn),
            new KeyValuePair <Int32, PieceType>(37, PieceType.WhitePawn),
            new KeyValuePair <Int32, PieceType>(38, PieceType.WhitePawn),
            new KeyValuePair <Int32, PieceType>(40, PieceType.WhiteKnight),
            new KeyValuePair <Int32, PieceType>(41, PieceType.WhiteBishop),
            new KeyValuePair <Int32, PieceType>(42, PieceType.WhiteRook),
            new KeyValuePair <Int32, PieceType>(53, PieceType.WhiteKing)
        }
                      );
        cb.DisplayBoard();
        int               square      = 41;
        ChessEngine       eng         = new ChessEngine();
        List <FutureMove> futureMoves = eng.Calculate(cb, square);
        int               move1       = futureMoves.Where(m => m.Depth == 1).Count();
        int               move2       = futureMoves.Where(m => m.Depth == 2).Count();
        int               move3       = futureMoves.Where(m => m.Depth == 3).Count();

        Console.WriteLine();
        Console.WriteLine(String.Format("Number of potential squares reached in 1 move  {0,3} from square {1,2}", move1, square));
        Console.WriteLine(String.Format("Number of potential squares reached in 2 moves {0,3} from square {1,2}", move2, square));
        Console.WriteLine(String.Format("Number of potential squares reached in 3 moves {0,3} from square {1,2}", move3, square));
        //dumpMoves( node );
        Console.WriteLine();
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }