Added player abstraction