   addItem: (item) ->
     {cell} = @initView item
     scroll = @isVisible @lastCell()
-    @items.appendChild @fadeIn cell
-    @items.appendChild @fadeIn @divider()
+    @items.appendChild cell
+    @items.appendChild @divider()
     if scroll then @scroll()
 
   insertItem: ([item, i]) ->
-    if @isVisible(@lastCell()) then @scroll()
+    if @isVisible(@lastCell()) then @lock 200
     {cell} = @initView item
     before = @model.items[i+1].cell
-    @items.insertBefore @slideIn(cell), before
-    @items.insertBefore @fadeIn(@divider()), before
+    @items.insertBefore cell, before
+    @items.insertBefore @divider(), before
 
   divider: ->
     d = document.createElement 'div'

    view.appendChild result
    view

  # Animations

  fadeIn: (view) ->
    view.classList.add 'ink-hide'
    setTimeout (-> view.classList.remove 'ink-hide'), 0
    view

  fadeOut: (view) ->
    view.classList.add 'ink-hide'
    setTimeout (-> view.parentElement?.removeChild(view)), 100
    view

  slideIn: (view) ->
    h = view.clientHeight
    view.style.height = '0'
    setTimeout (-> view.style.height = h + 'px'), 0
    setTimeout (-> view.style.height = ''), 100
    view

  setIcon: (cell, name) ->
    gutter = cell.querySelector '.gutter'
    icon = cell.querySelector '.icon'

    return 0 unless @lastDivider()?
    @lastDivider().offsetTop - @clientHeight + 8

  scroll: ->
    target = @scrollEndValue()
    delta = target-@scrollTop
    if delta > 0 then @scrollTop += delta
    @focusLast()

  isLocked: false

  _lock: (input, target) ->
    if input.offsetTop + input.clientHeight + 10 <
