a bit of work to generalize the projections