use gnu getopt for more flexible arg parsing