refactor player class first pass