implement more of player.d