Feature/arg refactor

Argument Refactoring: The Refactoring

@syclik Just merged in develop.  test-unit passes.  Tried to rebase but there was a merge conflict, so I'll leave that to you if you'd prefer to clean up the history.