changed to abstract player