single player port + implementations