Techniques for Programming with Groups