diff --git a/cmd/program.go b/cmd/program.go
index e5af52618f506ee9d9cdd7bf0a1003e0af6d60f4_Y21kL3Byb2dyYW0uZ28=..e0809eb545e2529247271a00a43ee4748375b375_Y21kL3Byb2dyYW0uZ28= 100644
--- a/cmd/program.go
+++ b/cmd/program.go
@@ -130,6 +130,18 @@
 	}
 }
 
+func WithOptionsGroup[E any](
+	name string, description string, getgroup func(*Program[E]) any,
+) Option[E] {
+	return PostInit( func (program *Program[E]) {
+			if _, err := program.Parser.AddGroup(
+				name, description, getgroup(program),
+			); err != nil {
+				panic(err)
+			}
+		})
+}
+
 func WithTokenOptions[E any]() Option[E] {
 	return func(program *Program[E]) {
 		program.TokenOptions = auth.NewTokenOptions()