improve public API; only expose NewWriter/NewReader and io.Writer/io.Reader interfaces