We identify two problems with general-purpose programming languages: (i) they do not enforce separation of computations and protocols and (ii) they do not provide an appropriate level of abstraction to implement protocols. To mend these deficiencies, we argue for the use of domain-specific languages (DSL). A concrete instance then demonstrates the feasibility of this approach: we use Reo,which offers a natural separation of protocols and computations, as a high-level protocol DSL.