Hey Chad. Last fall I stumbled onto your blog post and ended up implementing this solution. However, after looking around a bit more I am curious why you are deviating from the common approach here: http://martiancraft.com/blog/2015/03/core-data-stack/. It is very similar to your approach with one difference: the worker contexts would be children of the mainQueueManagedObjectContexts, instead of the privateQueueManagedObjectContext. This way, we would not need to do any manual merging of changes from the worker contexts into the mainQueueContext because the mainQueueContext gets their changes automatically as a parent context.