add requester interface and rewrite the client with it.