docs: @Override
  	public void prepare(ResponseBuilder rb) throws IOException {
  		// System.out
  		// .println(System.nanoTime() + " - " + Thread.currentThread().getId()
  		// + " - " + rb.req.getParams().getBool(ShardParams.IS_SHARD, false)
  		// + " PREPARE " + rb.stage + " " + rb.req.getParamString());
  		// always create status
  		initializeRequestHandler(rb);
  		MtasSolrStatus solrStatus = new MtasSolrStatus(rb.req.getOriginalParams().toQueryString(),
  				rb.req.getParams().getBool(ShardParams.IS_SHARD, false), rb.shards, rb.rsp);
  		rb.req.getContext().put(MtasSolrStatus.class, solrStatus);
  		solrStatus.setStage(rb.stage);
  		if (rb.req.getParams().getBool(PARAM_MTAS, false)) {
  			try {
  				// initialize
  				mtasSolrResultMerge = new MtasSolrResultMerge();
  				// prepare components
  				ComponentFields mtasFields = new ComponentFields();
  				// get settings version
  				if (rb.req.getParams().getBool(MtasSolrComponentVersion.PARAM_MTAS_VERSION, false)) {
  					searchVersion.prepare(rb, mtasFields);
  				}
  				// get settings status
  				if (rb.req.getParams().getBool(MtasSolrComponentStatus.PARAM_MTAS_STATUS, false)) {
  					searchStatus.prepare(rb, mtasFields);
  					mtasFields.status.handler = requestHandlerName;
  					if (mtasFields.status.key != null) {
  						solrStatus.setKey(mtasFields.status.key);
  					}
  				}
  				// now, register status
  				registerStatus(solrStatus);
  				// get settings document
  				if (rb.req.getParams().getBool(MtasSolrComponentDocument.PARAM_MTAS_DOCUMENT, false)) {
  					searchDocument.prepare(rb, mtasFields);
  				}
  				// get settings kwic
  				if (rb.req.getParams().getBool(MtasSolrComponentKwic.PARAM_MTAS_KWIC, false)) {
  					searchKwic.prepare(rb, mtasFields);
  				}
  				// get settings list
  				if (rb.req.getParams().getBool(MtasSolrComponentList.PARAM_MTAS_LIST, false)) {
  					searchList.prepare(rb, mtasFields);
  				}
  				// get settings group
  				if (rb.req.getParams().getBool(MtasSolrComponentGroup.PARAM_MTAS_GROUP, false)) {
  					searchGroup.prepare(rb, mtasFields);
  				}
  				// get settings termvector
  				if (rb.req.getParams().getBool(MtasSolrComponentTermvector.PARAM_MTAS_TERMVECTOR, false)) {
  					searchTermvector.prepare(rb, mtasFields);
  				}
  				// get settings prefix
  				if (rb.req.getParams().getBool(MtasSolrComponentPrefix.PARAM_MTAS_PREFIX, false)) {
  					searchPrefix.prepare(rb, mtasFields);
  				}
  				// get settings stats
  				if (rb.req.getParams().getBool(MtasSolrComponentStats.PARAM_MTAS_STATS, false)) {
  					searchStats.prepare(rb, mtasFields);
  				}
  				// get settings facet
  				if (rb.req.getParams().getBool(MtasSolrComponentFacet.PARAM_MTAS_FACET, false)) {
  					searchFacet.prepare(rb, mtasFields);
  				}
  				// get settings collection
  				if (rb.req.getParams().getBool(MtasSolrComponentCollection.PARAM_MTAS_COLLECTION, false)) {
  					searchCollection.prepare(rb, mtasFields);
  				}
  				rb.req.getContext().put(ComponentFields.class, mtasFields);
  			} catch (ExitableDirectoryReader.ExitingReaderException e) {
  				solrStatus.setError(e.getMessage());
  			} catch (IOException e) {
  				solrStatus.setError(e);
  			} finally {
  				checkStatus(solrStatus);
  			}
  		} else {
  			// register and check status
  			registerStatus(solrStatus);
  			checkStatus(solrStatus);
  		}
  	}