use a viewer state + lenses