this allows to keep a single Algorithm template parameter in internal interfaces as template <typename Algorithm> search(SearchEngineData<Algorithm> &, const datafacade::ContiguousInternalMemoryDataFacade<Algorithm> &, ...)