     @length = getLength(@)
   get: (index) -> @[index]
   set: (index, value) ->
-    unmark(@, @[index])
     @[index] = value
-    mark(@, value)
     @length = getLength(@)
     @trigger("change:#{index}", value)
     @trigger("set", index, value)

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

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