made archiving use dispatch_async