decouple request generation and response processing