boilerplate SOAP client