This paper introduces an executable coordination specification language, which is able to handle prespecified ways as well as more flexible and generic ways of specifying coordination in agent systems. An iterative process was taken to define this language. First of all, useful language elements were defined, after which example coordination approaches were specified using this language. The language was extended incrementally with new language elements whenever new concepts were required to enable specification of the example coordination approaches. The coordination approaches were simulated and tested using particular test cases. Finally, an evaluation of the coordination approaches was performed by means of formal verification.