refactored subcommands to use their own flagsets