     
     let array = ObservableArray<ElementType>(capturedArray)
     array.deinitDisposable += skip(replayLength).observe { event in
-      array.put(event.operation)
+      array.applyOperation(event.operation)
       return
     }
     return array

/// A type that can be used to encapsulate an array and observe its (incremental) changes.
public final class ObservableArray<ElementType>: EventProducer<ObservableArrayEvent<Array<ElementType>>>, ObservableArrayType {
  
  /// The underlying sink to dispatch events to.
  private var capturedSink: Sink! = nil
  
  /// Batched array operations.
  private var batchedOperations: [ObservableArrayOperation<ElementType>]! = nil
  
  /// Returns `true` if batch update is in progress at the moment.
  private var isBatchUpdateInProgress: Bool {

      }
    case .Remove(let range):
      array.removeRange(range)
    case .Batch(let operations):
      for operation in operations {
        ObservableArray.performOperation(operation, onArray: &array)
      }
    }
  }
}
