Updated player class (and factory to handle it)