ported player class