getopt + complement