use getopts crate for cli