     @
 
   removeAll: ->
-    delete @[ index ] for model, index in @
+    @each ( model ) -> @remove model
     @length = 0
+    @
+
+  each: ( callback ) ->
+    callback.call @, model, index for model, index in @
     @
 
   pluck: ( property ) ->


  toArray: ->
    Array::slice.call @, 0

  order: ( @ordering ) ->
    @reorder()

    @

  adaptation: ( apply, cancel ) ->
    @each ( model ) -> apply.call @, model
    @adaptations.apply.push apply
    @adaptations.cancel.unshift cancel if cancel
    @
