diff --git a/Comparison/src/main/java/cz/fidentis/analyst/EfficiencyTests.java b/Comparison/src/main/java/cz/fidentis/analyst/EfficiencyTests.java
index decf7d23b6f3341468e2bf0bd4243e1aaee16f6f..d4df83fd700c81482d57e6c180a88ec39eedb023 100644
--- a/Comparison/src/main/java/cz/fidentis/analyst/EfficiencyTests.java
+++ b/Comparison/src/main/java/cz/fidentis/analyst/EfficiencyTests.java
@@ -51,6 +51,7 @@ public class EfficiencyTests {
         printSymmetryPlane(face1, false, printDetails, false);
         printSymmetryPlane(face1, false, printDetails, true);
         
+        /*
         System.out.println();
         System.out.println(measureKdTreeCreation(face1) + "\tmsec:\tKd-tree creation of first face");
         System.out.println(measureKdTreeCreation(face2) + "\tmsec:\tKd-tree creation of second face");
@@ -66,6 +67,7 @@ public class EfficiencyTests {
         testAndPrint(face1, new HausdorffDistance(face2.getMeshModel(), Strategy.POINT_TO_POINT_ABSOLUTE, false, false, true), printDetails);
         testAndPrint(face1, new HausdorffDistance(face2.getMeshModel(), Strategy.POINT_TO_POINT, relativeDist, false, true), printDetails);
         testAndPrint(face1, new HausdorffDistance(face2.getMeshModel(), Strategy.POINT_TO_TRIANGLE_APPROXIMATE, relativeDist, false, true), printDetails);
+        */
     }
     
     protected static void testAndPrint(HumanFace face, HausdorffDistance vis, boolean printDetails) {
diff --git a/Comparison/src/main/java/cz/fidentis/analyst/symmetry/SymmetryEstimator.java b/Comparison/src/main/java/cz/fidentis/analyst/symmetry/SymmetryEstimator.java
index 2808c1153d1bc1781bbe056bf1435b055abeb7e3..def099586d33d21afe015d3fae37270c9acd4b67 100644
--- a/Comparison/src/main/java/cz/fidentis/analyst/symmetry/SymmetryEstimator.java
+++ b/Comparison/src/main/java/cz/fidentis/analyst/symmetry/SymmetryEstimator.java
@@ -37,7 +37,6 @@ public class SymmetryEstimator {
     
     private final MeshFacet facet;
     private final Config config;
-    private final boolean maxCurvatureAlg;
     
     // results:
     private List<Double> curvatures;
@@ -63,7 +62,30 @@ public class SymmetryEstimator {
         }
         this.facet = facet;
         this.config = config;
-        this.maxCurvatureAlg = maxCurvatureAlg;
+        this.curvatures = calculateCurvatures(facet, maxCurvatureAlg);
+    }
+    
+    /**
+     * Constructor.
+     * 
+     * @param facet Mesh facet for which the symmetry plane is calculated
+     * @param config Algorighm options
+     * @param curvatures Precomputed curvature values. Must not be null or empty.
+     * @throws IllegalArgumentException if some input paramter is missing
+     */
+    public SymmetryEstimator(MeshFacet facet, Config config, List<Double> curvatures) {
+        if (facet == null) {
+            throw new IllegalArgumentException("facet");
+        }
+        if (config == null) {
+            throw new IllegalArgumentException("config");
+        }
+        if (curvatures == null || curvatures.isEmpty()) {
+            throw new IllegalArgumentException("curvatures");
+        }
+        this.facet = facet;
+        this.config = config;
+        this.curvatures = curvatures;
     }
     
     /**
@@ -74,7 +96,6 @@ public class SymmetryEstimator {
     public void calculateSymmetryPlane(boolean concurrently) {
         List<Plane> planes = new ArrayList<>();
         
-        curvatures = calculateCurvatures(facet, maxCurvatureAlg);
         final SignificantPoints sigPoints = new SignificantPoints(curvatures, config.getSignificantPointCount());
         sigPoints.cacheData(facet);
         final double maxDistance = calculateMaxRelativeDistance(facet, config);