improve command line argument parsing