     value
   deleteAt: (index) ->
     value = @[index]
-    unmark(@, value)
     Array.prototype.splice.call(@, index, 1)
     @length = getLength(@)
     @trigger("delete", index, value)

    value
  push: (element) ->
    @[@length] = element
    mark(@, element)
    @length = getLength(@)
    @trigger("add", element)
    @trigger("change", @)

  unshift: (item) -> @insertAt(0, item)
  shift: -> @deleteAt(0)
  update: (list) ->
    delete @[index] for index, _ of @ when isArrayIndex(index)
    @[index] = val for val, index in list
    @length = getLength(@)
    @trigger("update", list)
    @trigger("change", @)
    list
  splice: (start, deleteCount, list...) ->
    deleted = Array.prototype.splice.apply(@, [start, deleteCount, list...])
    @length = getLength(@)
    @trigger("update", list)
    @trigger("change", @)
