You do not need a new type. In fact, there are many hack packages that define lenses for existing types (for example, xml-lensor even lens).
The problem with defining instances is that they cannot be hidden. If you define lenses, you can just hide them when importing, like any other function:
import Module.Lens hiding (someGeneratedLens, ...)
(. fooobar.com/questions/19642/... ). .