refactor client to let you pass in args separately