   options.advancedSearch ?= getAdvancedSearchFilter(options.cellValueLookup, options.termLookup)
 
   # cached values
-  filtered = undefined
+  filterCache = undefined
   filterCacheTerm = undefined
   sorted = undefined
   sortCacheTerm = {}

        sorted = if range.sort and range.sort.column
          direction = if range.sort.direction is 'asc' then 1 else -1
          column = range.sort.column
          filtered.sort (r1, r2) -> direction * options.compare(r1.cells[column], r2.cells[column])
          filtered
        else filtered
        sortCacheTerm.column = range.sort?.column
        sortCacheTerm.direction = range.sort?.direction


    hx.defined validFilters


getFiltered = (rows, term, filterCache, filterCacheTerm, fn) ->
  # term can be a string (regular filter) or an array (advanced search)
  if (term?.length and (filterCache is undefined or filterCacheTerm isnt term))
    rows.filter fn
  else if filterCache is undefined or not term?.length
    rows.slice()
  else
    filterCache

objectFeed = (data, options) ->
  options = hx.merge({
