diff --git a/src/cellcomplex/property_topomesh/example_topomesh.py b/src/cellcomplex/property_topomesh/example_topomesh.py
index f6670bf90fb10b3cd25f1eb9901641867dde8ce1..ab475b9b7fa675121e07e7000230491da0cf25a0 100644
--- a/src/cellcomplex/property_topomesh/example_topomesh.py
+++ b/src/cellcomplex/property_topomesh/example_topomesh.py
@@ -742,7 +742,7 @@ def circle_voronoi_topomesh(size = 1,cell_size = 1.,circle_size = 100.,z_coef =
         iterations = n_cells//2
 
     for iteration in range(iterations):
-        cell_to_cell_vectors = np.array([[p-q for q in cell_points] for p in cell_points])
+        cell_to_cell_vectors = cell_points[np.newaxis] - cell_points[:, np.newaxis]
         cell_to_cell_distances = np.linalg.norm(cell_to_cell_vectors,axis=2)/radius
         cell_to_circle_vectors = np.array([[p-q for q in circle_points] for p in cell_points])
         cell_to_circle_distances = np.linalg.norm(cell_to_circle_vectors,axis=2)/radius
diff --git a/src/cellcomplex/property_topomesh/utils/matching_tools.py b/src/cellcomplex/property_topomesh/utils/matching_tools.py
index fb51323436779f03b3978a2eb4d37fd8965198d7..5c1b0e0f426c33d36d56da20c0354a6fa36e5664 100644
--- a/src/cellcomplex/property_topomesh/utils/matching_tools.py
+++ b/src/cellcomplex/property_topomesh/utils/matching_tools.py
@@ -26,9 +26,8 @@ def brute_force_match(obs, codebook):
     return (np.argmin(distance_matrix,axis=1),np.min(distance_matrix,axis=1))
 
 def kd_tree_match(obs, codebook, radius=1e-5):
-    data = cKDTree(obs)
-    res1 = data.query_ball_tree(cKDTree(codebook), radius, 2, radius)
-    res1 = np.array([r[np.argmin(np.linalg.norm(codebook[r] - o,axis=1))] if len(r)>0 else None for o,r in zip(obs,res1)])
+    code = cKDTree(codebook)
+    res1 = code.query(obs, k=1, distance_upper_bound=radius)[1]
     return res1
 
 def vector_quantization_match(obs, codebook):