Just use the controller passed to the method.
Perform the update methods on the main context's queue
This way we can be sure it happens on the right thread and also wait until completion.
Allow `saveMainContext` to be called from anywhere.