refactor options mgmt, inspiriation from clojure.tools.cli