refactor the subcommand architecture for show command