flush does it's own dispatch_async. i think only archive needs to be in here. not sure what nested dispatch_asyncs to the same queue do.