replace NSOperation mainQueue with dispatch async