make client more functional