remember projections in closures

This implementation is partial because I'm not sure how to handle sum
types.