add set -u
add getopts