finished refactor, but need to work on efficiency. No reason to redraw the board each time.