model a request-response cycle