First of all you should not create new board every time you make a move. That is a total waste of space and time.
Instead have methods to make and unmake a move. Also you need an evaluation...