Basically I think we should start queuing donations as we go rather than waiting until we have processed them all in. Refunds can wait until all donations are done in order to maximise odds that the parent exists
Also - do more per-file logging as we go - we do a lot all at the end which is annoying if you are trying to see where it is sticking