refactored; added subcommands back