Abstracted player class