There is great promise in the idea of having agent or web services available on the internet, that can be flexibly composed to achieve more complex services, which can themselves then also be used as components in other contexts. However it is challenging to realise this idea, without essentially programming the composition using some process language such as BPEL4WS or OWL-S process descriptions. This paper presents a mechanism for specifying the external interface to composite and component services, and then deriving an appropriate internal model to realise a functioning composition. We present a conversation specification language for defining interaction protocols and investigate the issue of synchronous and asynchronous communication between the composite service and the component services. The algorithm presented computes a valid orchestration of components, given the interface specification of the desired composite service, interface specifications of available components, and some mapping rules between parameters to deal with ontological issues.