 
   _update: ->
     len = @_data.length
-
-    if @length < len
-      @_accessor i for i in [@length...len] by 1
-    # else if @length > len
-    #   @_removeAccessor i for i in [len...@length] by 1
-
-    @length = len
+    plen = @_prev.length
+
+    if plen < len
+      @_accessor i for i in [plen...len] by 1
 
     super()
 

    @length

  pop: ->
    @_recordOperation
      method: 'pop'
      removed: [@length - 1, @length - 1]

    @_archiveCurrentData()
    res = @_data.pop()

    elements.map (el) => @_makeObservable el, @

  push: (elements...) ->
    len = @_data.length

    elen = elements.length
    elements = @_makeElementsObservable elements

    @_recordOperation
      method: 'push'
      args: elements
      added: [len, len + elen - 1]

    @_archiveCurrentData()
    @_data.push elements...
