rewrite with argparse subparsers