Maybe we should make `envelope` into a `lens`?  (Though for backwards compatibility we should probably continue to export `setEnvelope`.)