refactored Player model