Refactor to request-response model

This PR refactor the code to use a request/response paradigm.

The advantage is that this seems to simplify how to conceptualize the interaction. Namely...