 // MARK: - CKFetchSubscriptionsOperation
 
 extension OPRCKOperation where T: CKFetchSubscriptionsOperationType {
-
-    typealias FetchSubscriptionCompletionBlock = [String: T.Subscription]? -> Void
 
     var subscriptionIDs: [String]? {
         get { return operation.subscriptionIDs }
         set { operation.subscriptionIDs = newValue }
     }
 
-    func setFetchSubscriptionCompletionBlock(block: FetchSubscriptionCompletionBlock) {
+    func setFetchSubscriptionCompletionBlock(block: CloudKitOperation<T>.FetchSubscriptionCompletionBlock) {
         operation.fetchSubscriptionCompletionBlock = { [unowned target] subscriptionsByID, error in
             if let error = error, target = target as? GroupOperation {
                 target.aggregateError(error)

// MARK: - CKModifyBadgeOperation

extension OPRCKOperation where T: CKModifyBadgeOperationType {

    typealias ModifyBadgeCompletionBlock = () -> Void

    var badgeValue: Int {
        get { return operation.badgeValue }
        set { operation.badgeValue = newValue }
    }

    func setModifyBadgeCompletionBlock(block: ModifyBadgeCompletionBlock) {
        operation.modifyBadgeCompletionBlock = { [unowned target] error in
            if let error = error, target = target as? GroupOperation {
                target.aggregateError(error)


extension OPRCKOperation where T: CKDiscoverAllContactsOperationType {

    func setDiscoverAllContactsCompletionBlock(block: CloudKitOperation<T>.DiscoverAllContactsCompletionBlock) {
        operation.discoverAllContactsCompletionBlock = { [unowned target] userInfo, error in
            if let error = error, target = target as? GroupOperation {
                target.aggregateError(error)
