refactoring ArguementBuilder to shift behavior to the responsibilities of other classes