 
   cloning: ->
     @subscribeTo @Model, "create.#{ @model._name.lower() }", @onModelCreated
-    @adaptations = []
+    @subscribeTo @Model, "update.#{ @model._name.lower() }", @onModelUpdated
+    @adaptations = apply: [], cancel: []
     @ordering    = {}
     @adaptCollection()
     @

          @
    @

  adaptModel: ( model ) ->
    adaptation.call @, model for adaptation in @adaptations
    @

  adaptation: ( callback ) ->
    callback.call @, model for model in @
    @adaptations.push callback
    @

  add: ( model ) ->
    Array::push.call @, model
    @adaptModel  model
    @subscribeTo model, 'destroy', @onModelDestroyed
    @subscribeTo model, 'update',  @onModelUpdated
    @reorder()
    @trigger 'update.length.add', model
    @trigger 'update.length', 'add', model
    @

  indexOf: ( model ) ->
    Array::indexOf.call @, model

  remove: ( model ) ->
    Array::splice.call @, @indexOf( model ), 1
    @unsubscribeFrom model
    @reorder()

    @add model if model.isCorrect @filters
    @

  onModelUpdated: ( extModel, model ) ->
    if model in @
      if model.isCorrect @filters
        @reorder()
        @trigger 'update.model', model
      else @remove model
    else if model.isCorrect @filters
      @add model
    @

  onModelDestroyed: ( model ) ->
