refactor puzzle board
Separate solver from board