another refactor -- needed to change optional arguments and this require...

...d top-down refactor