refactor: move game logic to BoardService class