One important facet of software reuse is the reuse of autonomous and distributed computational services. Components or applications offering services stay at the provider's site, where they are developed, kept securely, operated, maintained, and updated. Instead of purchasing software components, the customer buys services by invoking methods provided by these remote applications over the Internet. Due to the autonomy of the services, this reuse model causes specific requirements that differ from those where one builds one's own system from components. These requirements have led to the definition of CPAM, a protocol for reusing remote and autonomous services. CPAM can be used on top of various distribution systems, and offers features like presetting of attributes, run-time estimation of costs and having several calls for setup, invocation and result extraction. The CPAM protocol has been successfully used within CHAIMS, a reuse environment that supports the generation of client applications based on CPAM.