 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 // MARK: - CKOperationType
 
 extension OPRCKOperation where T: CKOperationType {
 
-    internal var container: T.Container? {
+    var container: T.Container? {
         get { return operation.container }
         set { operation.container = newValue }
     }


extension OPRCKOperation where T: CKDatabaseOperationType {

    internal var database: T.Database? {
        get { return operation.database }
        set { operation.database = newValue }
    }


extension OPRCKOperation where T: CKModifySubscriptionsOperationType {

    typealias ModifySubscriptionsCompletionBlock = ([T.Subscription]?, [String]?) -> Void

    var subscriptionsToSave: [T.Subscription]? {
        get { return operation.subscriptionsToSave }
        set { operation.subscriptionsToSave = newValue }
    }

    var subscriptionIDsToDelete: [String]? {
        get { return operation.subscriptionIDsToDelete }
        set { operation.subscriptionIDsToDelete = newValue }
    }

    func setModifySubscriptionsCompletionBlock(block: ModifySubscriptionsCompletionBlock) {
        operation.modifySubscriptionsCompletionBlock = { [unowned target] saved, deleted, error in
            if let error = error, target = target as? GroupOperation {
                target.aggregateError(error)
