use argparse instead optparse