Strictly separate argument parsing from main loops