Open
Description
Large interfaces are discouraged in Go. Interfaces should be small (e.g. the io.* interfaces) and generally defined by the user of a type, not the API (unless there are going to be multiple implementations of the interface within the package).
We should consider removing the large interface type and simply expose the underlying concrete type. This is an API incompatible change. First, we'd have to expose the underlying type and maintain the interface for a while, until callers can migrate to the new API, and then remove the interface.
Consider doing this with #71, which also requires API breakage.