diff --git a/Comparison/src/main/java/cz/fidentis/analyst/visitors/face/HausdorffDistancePrioritized.java b/Comparison/src/main/java/cz/fidentis/analyst/visitors/face/HausdorffDistancePrioritized.java
index de2c96b11752453c188e9b6d6cfc26e1321309c5..9425d55f9afe2252dd4049d56106947325272520 100644
--- a/Comparison/src/main/java/cz/fidentis/analyst/visitors/face/HausdorffDistancePrioritized.java
+++ b/Comparison/src/main/java/cz/fidentis/analyst/visitors/face/HausdorffDistancePrioritized.java
@@ -15,8 +15,6 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 import javax.vecmath.Point3d;
 
 /**
@@ -222,30 +220,11 @@ public class HausdorffDistancePrioritized extends HumanFaceVisitor  {
 
     @Override
     public void visitHumanFace(HumanFace humanFace) {
-        final FeaturePoint featurePoint = humanFace.getFeaturePoints().get(featurePointType.getType());
-        final List<MeshFacet> facets = humanFace.getMeshModel().getFacets();
-        
-        final ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
+        humanFace.getMeshModel().compute(distanceVisitor, inParallel());
         
+        final FeaturePoint featurePoint = humanFace.getFeaturePoints().get(featurePointType.getType());
         final PrioritySphere priorityVisitor = new PrioritySphere(featurePoint.getPosition(), 1 /*TODO TEMPORARY - sphere radius needs to be computed dynamically*/);
-        for (final MeshFacet comparedFacet: facets) {  // For each mesh facet of the visited human face
-            if (inParallel() && distanceVisitor.isThreadSafe()) {
-                executor.execute(() -> comparedFacet.accept(distanceVisitor)); // Fork and continue
-            } else {
-                comparedFacet.accept(distanceVisitor); // Process immediately
-            }
-            if (inParallel() && priorityVisitor.isThreadSafe()) {
-                executor.execute(() -> comparedFacet.accept(priorityVisitor)); // Fork and continue
-            } else {
-                comparedFacet.accept(priorityVisitor); // Proces immediately
-            }
-            // Visitors store results into their internal structure
-        }
-        
-        if (inParallel()) {
-            executor.shutdown();
-            while (!executor.isTerminated()){} // Wait until all computations are finished
-        }
+        humanFace.getMeshModel().compute(priorityVisitor, inParallel());
         
         synchronized(this) {
             // Retrieve results from the visitor's internal structure