p0 reading now with shared/weak ptr not mutex

It looks simpler. Hopefully it is at least a correct as the previous
version.