use argparse, add --port option