refactored for future support of other players