implement request and reply