todo maybe use lenses