A framework to create subcommand based commands