Largely ported Player