Extract common player code out to a superclass