 											for item in result
 												newItems.push (insert ++next, item)
 											#log "appended: requested #{bufferSize} received #{result.length} buffer size #{buffer.length} first #{first} next #{next}"
-										finalize(rid, scrolling, newItems)
+										finalize(rid, newItems)
 							else
 								if buffer.length && !shouldLoadTop()
-									finalize(rid, scrolling)
+									finalize(rid)
 								else
 									#log "prepending... requested #{size} records starting from #{start}"
 									datasource.get first-bufferSize, bufferSize,

									# if not, increment scrollTop
									viewport.scrollTop(viewport.scrollTop() + wrapper.element.outerHeight(true))

						doAdjustment = (rid, scrolling, finalize)->
							log "top {actual=#{adapter.topDataPos()} visible from=#{topVisiblePos()} bottom {visible through=#{bottomVisiblePos()} actual=#{adapter.bottomDataPos()}}"
							if shouldLoadBottom()
								enqueueFetch(rid, true, scrolling)
							else
								enqueueFetch(rid, false, scrolling) if shouldLoadTop()
							finalize(rid) if finalize
							if pending.length == 0
								topHeight = 0

											rowTop = itemTop
									for row in rows
										adjustRowHeight(row.appended, row.wrapper)
									doAdjustment(rid, finalize)
							else
								doAdjustment(rid, finalize)

						finalize = (rid, newItems)->
							adjustBuffer rid, newItems, ->
								pending.shift()
								if pending.length == 0
									isLoading = false
									loading(false)
								else
									fetch(rid)

						fetch = (rid) ->
							direction = pending[0]
							#log "Running fetch... #{{true:'bottom', false: 'top'}[direction]} pending #{pending.length}"
							if direction
								if buffer.length && !shouldLoadBottom()
									finalize(rid)
								else
									#log "appending... requested #{bufferSize} records starting from #{next}"
									datasource.get next, bufferSize,
