WIP speed up projection functors

Try to speed up projection functors by manually generalizing things.
It's very slow going, though, so I'm putting this on hold for now.
WIP
WIP
WIP
WIP