added player abstract class