abstracted out player to its own class