sudoku

clean, refactor, and add more tests