fn composition, state, lens