lots of getopt.h