refactor the Bet model to handle bet lifecycle