some work on argument parsing