Index: cpp/frams/model/similarity/measure-distribution.cpp
===================================================================
--- cpp/frams/model/similarity/measure-distribution.cpp	(revision 1050)
+++ cpp/frams/model/similarity/measure-distribution.cpp	(revision 1052)
@@ -12,5 +12,5 @@
 
 static ParamEntry simil_distribution_paramtab[] = {
-		{ "Similarity: distribution", 1, 4, "SimilMeasureDistribution", "Evaluates morphological dissimilarity using distribution measure.", },
+		{ "Similarity: Descriptor distribution", 1, 4, "SimilMeasureDistribution", "Evaluates morphological dissimilarity using distribution measure.", },
 		{ "simil_density", 0, 0, "Density of surface sampling", "f 1 100 10", FIELD(density), "", },
 		{ "simil_bin_num", 0, 0, "Number of bins", "d 1 1000 128", FIELD(bin_num), "", },
Index: cpp/frams/model/similarity/measure-greedy.cpp
===================================================================
--- cpp/frams/model/similarity/measure-greedy.cpp	(revision 1050)
+++ cpp/frams/model/similarity/measure-greedy.cpp	(revision 1052)
@@ -14,5 +14,5 @@
 
 static ParamEntry simil_greedy_paramtab[] = {
-		{ "Similarity: greedy", 1, 7, "SimilMeasureGreedy", "Evaluates morphological dissimilarity using greedy measure. More information:\nhttp://www.framsticks.com/bib/Komosinski-et-al-2001\nhttp://www.framsticks.com/bib/Komosinski-and-Kubiak-2011\nhttp://www.framsticks.com/bib/Komosinski-2016\nhttps://doi.org/10.1007/978-3-030-16692-2_8", },
+		{ "Similarity: Graph greedy", 1, 7, "SimilMeasureGreedy", "Evaluates morphological dissimilarity using greedy measure. More information:\nhttp://www.framsticks.com/bib/Komosinski-et-al-2001\nhttp://www.framsticks.com/bib/Komosinski-and-Kubiak-2011\nhttp://www.framsticks.com/bib/Komosinski-2016\nhttps://doi.org/10.1007/978-3-030-16692-2_8", },
 		{ "simil_parts", 0, 0, "Weight of parts count", "f 0 100 0", FIELD(m_adFactors[0]), "Differing number of parts is also handled by the 'part degree' similarity component.", },
 		{ "simil_partdeg", 0, 0, "Weight of parts' degree", "f 0 100 1", FIELD(m_adFactors[1]), "", },
Index: cpp/frams/model/similarity/measure-hungarian.cpp
===================================================================
--- cpp/frams/model/similarity/measure-hungarian.cpp	(revision 1050)
+++ cpp/frams/model/similarity/measure-hungarian.cpp	(revision 1052)
@@ -10,5 +10,5 @@
 
 static ParamEntry simil_hungarian_paramtab[] = {
-		{ "Similarity: hungarian", 1, 7, "SimilMeasureHungarian", "Evaluates morphological dissimilarity using hungarian measure. More information:\nhttp://www.framsticks.com/bib/Komosinski-et-al-2001\nhttp://www.framsticks.com/bib/Komosinski-and-Kubiak-2011\nhttp://www.framsticks.com/bib/Komosinski-2016\nhttps://doi.org/10.1007/978-3-030-16692-2_8", },
+		{ "Similarity: Graph optimal", 1, 7, "SimilMeasureHungarian", "Evaluates morphological dissimilarity using hungarian measure. More information:\nhttp://www.framsticks.com/bib/Komosinski-et-al-2001\nhttp://www.framsticks.com/bib/Komosinski-and-Kubiak-2011\nhttp://www.framsticks.com/bib/Komosinski-2016\nhttps://doi.org/10.1007/978-3-030-16692-2_8", },
 		{ "simil_parts", 0, 0, "Weight of parts count", "f 0 100 0", FIELD(m_adFactors[0]), "Differing number of parts is also handled by the 'part degree' similarity component.", },
 		{ "simil_partdeg", 0, 0, "Weight of parts' degree", "f 0 100 1", FIELD(m_adFactors[1]), "", },
Index: cpp/frams/model/similarity/simil-measure.cpp
===================================================================
--- cpp/frams/model/similarity/simil-measure.cpp	(revision 1050)
+++ cpp/frams/model/similarity/simil-measure.cpp	(revision 1052)
@@ -12,5 +12,5 @@
 static ParamEntry simil_measure_paramtab[] = {
 	{ "Similarity", 1, 2, "SimilMeasure", "Evaluates morphological dissimilarity. More information:\nhttp://www.framsticks.com/bib/Komosinski-et-al-2001\nhttp://www.framsticks.com/bib/Komosinski-and-Kubiak-2011\nhttp://www.framsticks.com/bib/Komosinski-2016\nhttps://doi.org/10.1007/978-3-030-16692-2_8", },
-	{ "measure_type", 0, 0, "Type of similarity measure", "d 0 2 0 ~Greedy (flexible criteria order and optimal matching)~Hungarian (vertex degree order and greedy matching)~Distribution (EMD on a histogram of descriptor values)", FIELD(measure_type), "", },
+	{ "type", 0, 0, "Type of similarity measure", "d 0 2 1 ~Graph greedy (vertex degree order and greedy matching)~Graph optimal (flexible criteria order and optimal matching)~Descriptor distribution (EMD on a histogram of descriptor values)", FIELD(type), "", },
 	{ "evaluateDistance", 0, PARAM_DONTSAVE | PARAM_USERHIDDEN, "Evaluate model dissimilarity", "p f(oGeno,oGeno)", PROCEDURE(p_evaldistance), "Calculates dissimilarity between two models created from Geno objects.", },
 	{ 0, },
@@ -24,10 +24,18 @@
 }
 
+SimilMeasureBase *SimilMeasure::currentMeasure()
+{
+	SimilMeasureBase *measures[] = { &simil_measure_greedy,&simil_measure_hungarian,&simil_measure_distribution };
+	if (type >= 0 && type <= (int)std::size(measures))
+		return measures[type];
+	logPrintf("SimilarityMeasure", "currentMeasure", LOG_ERROR, "Measure type '%d' not supported", type);
+	return nullptr;
+}
+
 double SimilMeasure::evaluateDistance(const Geno* G0, const Geno* G1)
 {
-	SimilMeasureBase *measures[] = { &simil_measure_greedy,&simil_measure_hungarian,&simil_measure_distribution };
-	if (measure_type >= 0 && measure_type <= 2)
-		return measures[measure_type]->evaluateDistance(G0, G1);
-	logPrintf("SimilarityMeasure", "evaluateDistance", LOG_ERROR, "Measure type '%d' not supported", measure_type);
+	SimilMeasureBase *measure = currentMeasure();
+	if (measure)
+		return measure->evaluateDistance(G0, G1);
 	return -1;
 }
Index: cpp/frams/model/similarity/simil-measure.h
===================================================================
--- cpp/frams/model/similarity/simil-measure.h	(revision 1050)
+++ cpp/frams/model/similarity/simil-measure.h	(revision 1052)
@@ -13,5 +13,5 @@
 {
 public:
-	int measure_type;
+	int type;
 
 	SimilMeasureGreedy simil_measure_greedy;
@@ -24,4 +24,5 @@
 	SimilMeasure();
 	virtual ~SimilMeasure() {};
+	SimilMeasureBase *currentMeasure();
 	double evaluateDistance(const Geno *G0, const Geno *G1);
 
