require completionBlock *or* completionDataBlock