[WIP] Implement PCCA and PCCA+

At this point, I think the key idea is to see whether we like the style of how this works / looks / flows.  I'll add tests once we agree on the API etc.