optimization of PAV projection, this yields a speedup by half or so; multiprocessing doesn't give any speedup on the small data, but perhaps it will be useful as we scale up