refactoring, move some logic from PlayerModel to BoardModel