refactored poker model