a generic "group" with explicit type signature