Add lenses and refactor