argument parser, initial version