Finished player implementation