client: use a macro for response stuff