Rather than embodying the behaviour of toolkit components directly in their implementation, metalevel techniques provide programmers with ways to override and revise them. The style of very flexible design is derived from specialisable generic models of application behaviour. This paper presents a generic model of distribution and synchrony in cooperative systems. Organised around the explicit management of divergence between parallel streams of activity, it links usage and implementation issues, as well as supporting an important class of applications which are not well supported by more traditional CSCW models. Examples are given showing this model as a basis for flexible design.

