uses docopt instead of getopt.