use getopt_long()