On my preliminary pass this looked pretty good. However, more comments are almost certainly necessary.
Perhaps place doSumCprWw here.
Let's try to keep related fields together. Perhaps move it to the point I suggested above?
Here as well.
A bit more description in the comment would be helpful: -> -- ^ the name of the function being worker/wrappered for debugging.