fully implemented player