use initiator/acceptor to make send/response more generic