diff --git a/pyfastani/_utils.cpp b/pyfastani/_utils.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c3c37c444a0369d355b71f6598bc8a634291752b
--- /dev/null
+++ b/pyfastani/_utils.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <ctime>
+#include <chrono>
+#include <functional>
+
+#include "_utils.hpp"
+
+
+skch::Map* new_map_with_result_vector(
+    const skch::Parameters &p,
+    const skch::Sketch &refsketch,
+    uint64_t &totalQueryFragments,
+    int queryno,
+    skch::MappingResultsVector_t &r
+) {
+  auto fn = std::bind(skch::Map::insertL2ResultsToVec, std::ref(r), std::placeholders::_1);
+  return new skch::Map( p, refsketch, totalQueryFragments, queryno, fn );
+}
+
+int omp_get_thread_num(void) {
+    return 0;
+}
+
+int omp_get_num_threads(void) {
+    return 1;
+}
diff --git a/pyfastani/_utils.hpp b/pyfastani/_utils.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..74c08bf5241b92884e1ed8c20573b3ff272c009b
--- /dev/null
+++ b/pyfastani/_utils.hpp
@@ -0,0 +1,25 @@
+#ifndef __UTILS_HPP
+#define __UTILS_HPP
+
+#include "map/include/computeMap.hpp"
+
+#include <stdint.h>
+#include <functional>
+
+#include "map/include/base_types.hpp"
+#include "map/include/computeMap.hpp"
+
+skch::Map* new_map_with_result_vector(
+    const skch::Parameters &p,
+    const skch::Sketch &refsketch,
+    uint64_t &totalQueryFragments,
+    int queryno,
+    skch::MappingResultsVector_t &r
+);
+
+// not needed anywhere except in `cgi::correctRefGenomeIds`
+// so we can just patch them
+extern int omp_get_thread_num(void);
+extern int omp_get_num_threads(void);
+
+#endif
diff --git a/pyfastani/_utils.pxd b/pyfastani/_utils.pxd
new file mode 100644
index 0000000000000000000000000000000000000000..fd07fe3d7cc07fa397a19d4683025158dea879a0
--- /dev/null
+++ b/pyfastani/_utils.pxd
@@ -0,0 +1,17 @@
+from libc.stdint cimport uint64_t
+
+from fastani.map.base_types cimport MappingResultsVector_t
+from fastani.map.compute_map cimport Map
+from fastani.map.map_parameters cimport Parameters
+from fastani.map.win_sketch cimport Sketch
+
+
+cdef extern from "_utils.hpp" nogil:
+
+    Map* new_map_with_result_vector(
+        const Parameters &p,
+        const Sketch &refsketch,
+        uint64_t &totalQueryFragments,
+        int queryno,
+        MappingResultsVector_t &r
+    )