add getopt function