Updated player implementation