new and imporved getopts