much like in the client, should prolly move this to user service