function querySetup(payload) {
  // This is called when a query was successfull
  // some hiding
  queryResultsExportElement.classList.add("disabled");

  console.log("Query initial setup seccessfull.");
  queryResultsDeterminateElement.style.width = "0%";
  queryResultsProgressElement.classList.remove("hide");
  queryResultsUserFeedbackElement.classList.remove("hide");
  receivedMatchCountElement.innerText = "0";
  textLookupCountElement.innerText = "0";
  matchCountElement.innerText = payload.match_count;
  // always re initializes results to delete old results from it
  results.resultsJSON["matches"] = [];  // list of all c with lc and rc
  results.resultsJSON["cpos_lookup"] = {};  // object contains all cpos as key value pair
  results.resultsJSON["text_lookup"] = {};  // same as above for all text ids
  results.resultsJSON["match_count"] = payload.match_count;
  results.resultsJSON["query"] = getQueryStr(queryFormElement);
}

function queryRenderResults(payload) {
  // This is called when results are transmitted and being recieved
  console.log("Current recieved chunk:", payload.chunk);
  if (payload.chunk.cpos_ranges == true) {
    results.resultsJSON["cpos_ranges"] = true;
  } else {
    results.resultsJSON["cpos_ranges"] = false;
  }
  // update progress bar
  queryResultsDeterminateElement.style.width = `${payload.progress}%`;
  // building the result list js list from incoming chunk
  resultItems = []; // list for holding every row item
  // get infos for full match row
  for (let [index, match] of payload.chunk.matches.entries()) {
    resultItems.push({...match, ...{"index": index + results.resultsJSON.matches.length}});
  }
  resultsList.add(resultItems, (items) => {
    for (let item of items) {
      item.elm = resultsList.createResultRowElement(item, payload.chunk);
    }
    resultsList.update();
    changeContext(); // sets lr context on first result load
  });
  // incorporating new chunk results into full results
  results.resultsJSON.matches.push(...payload.chunk.matches);
  Object.assign(results.resultsJSON.cpos_lookup, payload.chunk.cpos_lookup);
  Object.assign(results.resultsJSON.text_lookup, payload.chunk.text_lookup);
  // show user current and total match count
  receivedMatchCountElement.innerText = `${results.resultsJSON.matches.length}`;
  textLookupCountElement.innerText = `${Object.keys(results.resultsJSON.text_lookup).length}`;
  console.log("Results recieved:", results.resultsJSON);
  // upate progress status
  progress = payload.progress;  // global declaration
  if (progress === 100) {
    queryResultsProgressElement.classList.add("hide");
    queryResultsUserFeedbackElement.classList.add("hide");
    queryResultsExportElement.classList.remove("disabled");
    activateInspect();
  }
  // inital expert mode check and activation
  if (expertModeSwitchElement.checked) {
    let initialTokenElements = document.getElementsByClassName("token");
    expertModeOn(initialTokenElements, resultsJSON);
  }
}