Added a player abstraction class