multi-level argparse