add command line arguments and robust usge instructions