a few improvements on client functions