Client can now be a simple io.Reader