client just returns code. it's up to the caller to decide what to do with it