added  abstract Player class