argument parser, initial version, 2nd attempt