implemented using argparse