Some abstraction for the algorithms
Fold for annotated types halfways done
RenameByLambdas for all types