refactor to use lens