separate group constructions from type defs in lib.groups