 
   show: ( viewName, insertTo, isRelation = false ) ->
     @adaptation ( model ) ->
-      view = model.view viewName
-      if isRelation
-        view.subscribeTo @, 'reset', view.hide
-      else unless @visible
-        @visible = true
-        @prepareViewToShow view
-        @hideVisibleViews()
-      else
-        @::visibleViews.push view
-      view.show insertTo
-      @inside ?= view.element[0].parentNode
+        view = model.view viewName
+        if isRelation
+          view.subscribeTo @, 'reset', view.hide
+        else unless @visible
+          @visible = true
+          @prepareViewToShow view
+          @hideVisibleViews()
+        else
+          @::visibleViews.push view
+        view.show insertTo
+        @inside ?= view.element[0].parentNode
+      , ( model ) ->
+        model.hide viewName
     @
 
   prepareViewToShow: ( view ) ->

          @
    @

  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()

    delete @[ index ] for model, index in @
    @length = 0
    @

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

  sort: ( sorter ) ->
    Array::sort.call @, sorter
