Note that the way we're doing this is elegant, but dangerous.
        It doesn't require, but does encourage, us to define no Application#
        methods beyond those corresponding to the supported subcommands

def dispatch_subcommand(self, parser):
        '''
        Note that the way we're doing this is elegant, but dangerous.
        It doesn't require, but does encourage, us to define no Application#
        methods beyond those corresponding to the supported subcommands
        '''
        # read in the subcommand
        args = parser.parse_args(sys.argv[1:2])

        # check that the subcommand is good
        if not hasattr(self, args.subcommand):
            print('Unrecognized command.')
            parser.print_help()
            exit(1)

        self.configs = ConfigurationLoader(DEFAULT_USER_CONFIG_PATH).load()

        # use dispatch pattern to invoke method with same name
        getattr(self, args.subcommand)()