make client more flexible