improved on argument parsing