begin request/response abstraction