retain completionBlock (revisit later)