[ refactor ] [ Either ] add traverseEither and use map{Left,Right,Either}
[ refactor ] better lenses, stable under record extension
[ refactor ] [ Tuple ] use map{Fst,Snd} instead of *** with id.