added cleaner argument handling via argparse