now uses argparse