 
 extension OPRCKOperation where T: CKPreviousServerChangeToken {
 
-    internal var previousServerChangeToken: T.ServerChangeToken? {
+    var previousServerChangeToken: T.ServerChangeToken? {
         get { return operation.previousServerChangeToken }
         set { operation.previousServerChangeToken = newValue }
     }




// MARK: - CKOperationType

extension OPRCKOperation where T: CKOperationType {

    internal var container: T.Container? {
        get { return operation.container }
        set { operation.container = newValue }
    }


extension OPRCKOperation where T: CKMarkNotificationsReadOperationType {

    typealias MarkNotificationReadCompletionBlock = [T.NotificationID]? -> Void

    var notificationIDs: [T.NotificationID] {
        get { return operation.notificationIDs }
        set { operation.notificationIDs = newValue }
    }

    func setMarkNotificationReadCompletionBlock(block: MarkNotificationReadCompletionBlock) {
        operation.markNotificationsReadCompletionBlock = { [unowned target] notificationIDs, error in
            if let error = error, target = target as? GroupOperation {
                target.aggregateError(error)
