~ refactored client code and tests using builder pattern