       # Scroll item into the view if outside the visible border and was triggered by selectItem change
       if selectedRow = el.querySelector('.is-selected')
         selectedRow.scrollIntoViewIfNeeded(false) # centerIfNeeded=false => croll minimal possible to avoid jumps
-    [buses.focus, elementProp], (..., el) ->
+    [bus.focus, elementProp], (..., el) ->
       el.querySelector('.search').focus()
     [resetStream, elementProp], (..., el) ->
       el.querySelector('.search').value = ''
-      buses.search.push('')
-    [buses.search, elementProp], (..., el) ->
+      bus.search.push('')
+    [bus.search, elementProp], (..., el) ->
       el.querySelector('.tbody').scrollTop = 0 #return to top
   )
 

  }
  rowHeightProp = rowHeightStream.toProperty()

  bodyHeightProp = bodyHeightStream.merge(buses.bodyHeight)
    .skipDuplicates()
    .filter (height) -> height > 0
    .toProperty()

  resetStream        = buses.keydown.filter (ev) -> ev.keyCode is 27 #esc
  openSelectedStream = buses.keydown.filter (ev) -> ev.keyCode is 13 #enter
  moveSelectedStream = buses.keydown.filter((ev) -> ev.keyCode is 38).doAction((ev) -> ev.preventDefault()).map(-1) #up
                .merge(buses.keydown.filter((ev) -> ev.keyCode is 40).doAction((ev) -> ev.preventDefault()).map(1)) #down

  selectedItemProp = Bacon.update(undefined,
    [buses.search], -> undefined
    [buses.selectItem], (..., newItem) -> newItem
    [moveSelectedStream, matchedItemsProp], selectItemByRelativeOffset
  ).skipDuplicates()

  scrollTopProp = Bacon.update 0,
    [buses.scrollTop], (..., scrollTop) -> scrollTop
    [selectedItemProp.changes(), matchedItemsProp, rowHeightProp, bodyHeightProp], adjustScrollTopForSelectedItem

  visibleBeginProp = Bacon.combineWith (scrollTop, rowHeight) ->

          items.slice(begin, end)
        , matchedItemsProp, visibleBeginProp, visibleEndProp
      }).map (data) ->
        content(data, bus.selectItem)
    topOffset: Bacon.combineWith (scrollTop, rowHeight) ->
        -(scrollTop % rowHeight)
      , scrollTopProp, rowHeightProp
