                           finalize()
                           return
                         for item in result
-                          insert item, false
+                          lastScope = insert item, false
                         next += result.length
                         console.log "appended: #{result.length} buffer size #{buffer.length} first #{first} next #{next}"
                         finalize()
-                        adjustBuffer()
+                        lastScope.$watch 'adjustBuffer', ->
+                          adjustBuffer()
 
                   else
                     if buffer.length && !shouldLoadTop()

    bottom {visible through #{viewport.scrollTop() + viewport.height()} actual=#{buffer[buffer.length-1].element.offset().top - canvas.offset().top}}"

                  enqueueFetch(true) if reloadRequested || shouldLoadBottom()
                  enqueueFetch(false) if reloadRequested || shouldLoadTop()

                insert = (item, top) ->
                  itemScope = $scope.$new()

                fetch = () ->
                  direction = pending[0]
                  #console.log "Running fetch... #{{true:'bottom', false: 'top'}[direction]} pending #{pending.length}"
                  lastScope = null
                  if direction
                    if buffer.length && !shouldLoadBottom()
                      finalize()
