Index: /cpp/f8-to-f1/conv_f8tof1.cpp
===================================================================
--- /cpp/f8-to-f1/conv_f8tof1.cpp	(revision 32)
+++ /cpp/f8-to-f1/conv_f8tof1.cpp	(revision 33)
@@ -172,5 +172,5 @@
 	}
 	if (neurons) {
-		for (vector<NeuronProduction*>::iterator iter = this->neuronProductions.begin(); 
+		for (vector<NeuronProduction*>::iterator iter = this->neuronProductions.begin();
 			 iter != this->neuronProductions.end(); iter++) {
 			actions.push_back(*iter);
@@ -283,5 +283,5 @@
 	string sname = sstringToString(name);
 	if (position == -1) {
-		this->parameters.push_back(sname); 
+		this->parameters.push_back(sname);
 		this->paramValues[sname] = value;
 	} else {
@@ -516,4 +516,37 @@
 }
 
+
+
+
+
+
+
+
+
+#define FIELDSTRUCT GenoConv_F8ToF1
+
+static ParamEntry GENOCONVf8param_tab[]=
+{
+{"Genetics: f8: limits",1,1,},
+{"f8conv_maxlen", 0, 0, "Maximal genotype length", "d 10 10000 500", FIELD(maxF1Length),"Maximal length of the resulting f1 genotype, in characters. If the f8 L-system produces longer f1 genotype, it will be considered incorrect.", },
+{0,},
+};
+
+#undef FIELDSTRUCT
+
+GenoConv_F8ToF1::GenoConv_F8ToF1()
+{
+	name = "f8 converter";
+	in_format = '8';
+	out_format = '1';
+	mapsupport = 0;
+	info = "Generative encoding";
+	maxF1Length = 500;
+        par.setParamTab(GENOCONVf8param_tab);
+       	par.select(this);
+        par.setDefault();
+}
+
+
 vector<SString> GenoConv_F8ToF1::readProductionNames(const SString &in) {
 	vector<SString> names;
@@ -764,2 +797,3 @@
 }
 #undef CONV_DEBUG
+
Index: /cpp/f8-to-f1/conv_f8tof1.h
===================================================================
--- /cpp/f8-to-f1/conv_f8tof1.h	(revision 32)
+++ /cpp/f8-to-f1/conv_f8tof1.h	(revision 33)
@@ -217,51 +217,38 @@
 	map<string, PrimitiveProduction*> primitiveProductions;
 	map<string, ParamProduction*> paramProductions;
-	
+
 	void removeEmptySubproductionsAndProductions();
 };
+
+
+
+
 
 /// Converter between f8 and f1 format
 class GenoConv_F8ToF1 : public GenoConverter {
 public:
-	/// Default constructor
-	GenoConv_F8ToF1() {
-		name = "f8 to f1 converter";
-		in_format = '8';
-		out_format = '1';
-		mapsupport = 0;
-		info = "ble";
-		maxF1Length = 500;
-	}
-	
-	/// Constructor with parameter
-	/// @param f1LengthLimit If resulting f1 genotype is longer than f1LengthLimit, converter aborts its job
-	GenoConv_F8ToF1(int f1LengthLimit) {
-		name = "f8 to f1 converter";
-		in_format = '8';
-		out_format = '1';
-		mapsupport = 0;
-		info = "ble";
-		maxF1Length = f1LengthLimit;
-	}
-	
+        Param par;
+
+	GenoConv_F8ToF1();
 	~GenoConv_F8ToF1() {}
-	
+
 	SString convert(SString &in, MultiMap *map);
-	
+
 	/// check syntax of given f8 genotype
 	/// @param geno f8 genotype to be checked
 	bool checkSyntax(const char *geno);
-	
+
 	/// returns names of productions in a given genotype
 	/// @param in f8 genotype
 	vector<SString> readProductionNames(const SString &in);
 	//Lsystem* createLsystem(const SString &in);
-	
+
 	/// creates Lsystem object based on input genotype
 	/// @param f8 genotype
 	Lsystem* createLsystem(SString in);
+
+	int maxF1Length;
 protected:
 	bool parseInput(const char* src, Lsystem* lsys);
-	int maxF1Length;
 };
 
Index: /cpp/f8-to-f1/geno_f8.cpp
===================================================================
--- /cpp/f8-to-f1/geno_f8.cpp	(revision 32)
+++ /cpp/f8-to-f1/geno_f8.cpp	(revision 33)
@@ -32,10 +32,10 @@
 {"f8_mut_chg_cond_sign", 0, 0, "Change condition sign", "f 0 100 7",FIELD(operation[F8_CHANGE_CONDITION_SIGN]),"mutation: probability of changing a condition sign", },
 {"f8_mut_add_param", 0, 0, "Add parameter", "f 0 100 8", FIELD(operation[F8_ADD_PARAMETER]),"mutation: probability of adding a parameter to the production", },
-{"f8_mut_add_cond", 0, 0, "Add condition", "f 0 100 8", FIELD(operation[F8_ADD_CONDITION]),"mutation: probability of ading a condition to the subproduction", },
+{"f8_mut_add_cond", 0, 0, "Add condition", "f 0 100 8", FIELD(operation[F8_ADD_CONDITION]),"mutation: probability of adding a condition to the subproduction", },
 {"f8_mut_add_subprod", 0, 0, "Add subproduction", "f 0 100 8", FIELD(operation[F8_ADD_SUBPRODUCTION]),"mutation: probability of adding a subproduction", },
-{"f8_mut_chg_iter_number", 0, 0, "Change iteration number", "f 0 100 7", FIELD(operation[F8_CHANGE_ITERATIONS_NUMBER]),"mutation: probability of changing an iterations number", },
+{"f8_mut_chg_iter_number", 0, 0, "Change iteration number", "f 0 100 7", FIELD(operation[F8_CHANGE_ITERATIONS_NUMBER]),"mutation: probability of changing a number of iterations", },
 {"f8_mut_del_param", 0, 0, "Delete parameter", "f 0 100 8", FIELD(operation[F8_DELETE_PARAMETER]),"mutation: probability of deleting a parameter", },
 {"f8_mut_del_cond", 0, 0, "Delete condition", "f 0 100 8", FIELD(operation[F8_DELETE_CONDITION]),"mutation: probability of deleting a condition", },
-{"f8_mut_add_loop", 0, 0, "Add loop", "f 0 100 0", FIELD(operation[F8_ADD_LOOP]),"mutation: probability of ading a loop", },
+{"f8_mut_add_loop", 0, 0, "Add loop", "f 0 100 0", FIELD(operation[F8_ADD_LOOP]),"mutation: probability of adding a loop", },
 {"f8_mut_del_loop", 0, 0, "Delete loop", "f 0 100 0", FIELD(operation[F8_DELETE_LOOP]),"mutation: probability of deleting a loop", },
 {"f8_mut_del_prod", 0, 0, "Delete production", "f 0 100 8", FIELD(operation[F8_DELETE_PRODUCTION]),"mutation: probability of deleting a production", },
@@ -63,10 +63,10 @@
 	this->simpleCommandLetters.push_back('^');
 	this->converter = new GenoConv_F8ToF1();
-	
+
 	par.setParamTab(GENO8param_tab);
 	par.select(this);
 	par.setDefault();
-	
-	/*mutation_method_names = new char*[F8_OPERATION_COUNT - 1];
+
+	/*mutation_method_names = new char*[F8_OPERATION_COUNT - 1]; //FIXME
 	int index = 0;
 	mutation_method_names[index++]="changed beginning argument";
@@ -511,5 +511,5 @@
 				newActions.push_back(subproduction->actions[i]);
 			}
-			for (i = firstActionIdx; i <= firstActionIdx + randomN(4) + 1 
+			for (i = firstActionIdx; i <= firstActionIdx + randomN(4) + 1
 				 && i < subproduction->actions.size(); i++) { //1..4 actions
 				newSubProd->actions.push_back(subproduction->actions[i]);
@@ -551,5 +551,5 @@
 	
 	delete lsystem;
-	
+
 	chg = (float) len / (float) in.len();
 	return mutated;
@@ -569,8 +569,8 @@
 		mutated += in;
 		chg = 0.0;
+                delete lsystem;
 		return mutated;
 	}
-	
-	int counter = 0;
+
 	vector<SString> productionNamesSS = this->converter->readProductionNames(in);
 	vector<string> productionNames;
@@ -601,7 +601,7 @@
 	//choose production to which we will append the contents of deleted production
 	string prodNameToAppendTo = productionNames[randomN(productionNames.size())];
-	
+
 	int len = 0;
-	
+
 	Production* deletedProd = lsystem->productions[prodNameToDelete];
 	Production* appendProd = lsystem->productions[prodNameToAppendTo];
@@ -613,5 +613,5 @@
 		}
 	}
-	
+
 	//copy subproductions
 	for (vector<SubProduction>::iterator subprodIter = deletedProd->subproductions.begin();
@@ -639,5 +639,5 @@
 	}
 	lsystem->productions.erase(string(prodNameToDelete));
-	
+
 	int paramCount = appendProd->parameters.size();
 	for (map<string, Production*>::iterator prodIter = lsystem->productions.begin();
@@ -647,5 +647,5 @@
 			for (vector<ActionStrP>::iterator actionIter = (*subprodIter).actions.begin();
 				 actionIter != (*subprodIter).actions.end(); actionIter++) {
-				if ((*actionIter).action != NULL && (*actionIter).action->name != NULL) { 
+				if ((*actionIter).action != NULL && (*actionIter).action->name != NULL) {
 					if ((*actionIter).action->name == stringToSString(prodNameToDelete)) {
 						(*actionIter).action = appendProd;
@@ -659,5 +659,5 @@
 						}
 					}
-					
+
 				}
 			}
@@ -665,10 +665,10 @@
 	}
 	delete deletedProd;
-		
-	
+
+
 	mutated = lsystem->toString();
-	
+
 	delete lsystem;
-	
+
 	chg = (float) len / (float) in.len();
 	return mutated;
@@ -677,5 +677,5 @@
 SString Geno_f8::mutateChangeConditionSign(SString &in, float& chg) {
 	SString mutated;
-	
+
 	Lsystem *newLsystem = this->converter->createLsystem(in);
 	if (newLsystem == NULL) {
@@ -684,8 +684,8 @@
 		return mutated;
 	}
-	
+
 	map<int, SubProduction*> interestingSubproductions;
 	int counter = 0;
-	
+
 	for (map<string, Production*>::iterator prodIter = newLsystem->productions.begin();
 		 prodIter != newLsystem->productions.end(); prodIter++) {
@@ -698,5 +698,5 @@
 		}
 	}
-	
+
 	if (interestingSubproductions.size() > 0) {
 		int random1 = randomN(interestingSubproductions.size());
@@ -707,9 +707,9 @@
 		chg = 2.0 / (float) in.len();
 	}
-	
+
 	mutated = newLsystem->toString();
-	
+
 	delete newLsystem;
-	
+
 	return mutated;
 }
@@ -717,5 +717,5 @@
 SString Geno_f8::mutateAddParameter(SString &in, float& chg) {
 	SString mutated;
-	
+
 	Lsystem *lsystem = this->converter->createLsystem(in);
 	if (lsystem == NULL || lsystem->productions.size() == 0) {
@@ -724,11 +724,11 @@
 		return mutated;
 	}
-	
+
 	//cout << "addParameter 1" << endl;
 	int rnd = randomN(lsystem->productions.size());
 	int chglen = 0;
-	
+
 	SString prodName = "";
-	
+
 	int counter = 0;
 	for (map<string, Production*>::iterator prodIter = lsystem->productions.begin();
@@ -746,5 +746,5 @@
 				}
 			}
-			
+
 			if (prodName == stringToSString(lsystem->firstProductionName)) {
 				lsystem->startParams[sstringToString(newParam)] = 0.0;
@@ -1083,5 +1083,5 @@
 	(method == 13) ? "F8_ADD_LOOP" :
 	(method == 14) ? "F8_DELETE_LOOP" :
-	(method == 15) ? "F8_OPERATION_COUNT" : "babol";
+	(method == 15) ? "F8_OPERATION_COUNT" : "*invalid*";
 	//cout << "-------------------- " << mutationName << " --------------------" << endl;
 #endif
Index: /cpp/f8-to-f1/geno_f8.h
===================================================================
--- /cpp/f8-to-f1/geno_f8.h	(revision 32)
+++ /cpp/f8-to-f1/geno_f8.h	(revision 33)
@@ -52,8 +52,8 @@
 	Geno_f8();
 	~Geno_f8();
-	
-	//probabilities of mutation operators
+
+   	//probabilities of mutation operators
 	double operation[F8_OPERATION_COUNT];
-	
+
 	int checkValidity(const char * geno);
 	int validate(char * &geno);
@@ -62,10 +62,8 @@
 	unsigned long style(const char *g, int pos);
 	char* getSimplest();
-	
+
 	SString testMutate(SString &in, int method);
 protected:
 	GenoConv_F8ToF1 *converter;
-	static const int maxTotalIterations = 200;
-	static const int maxNormalIterations = 100;
 	
 	vector<char> simpleCommandLetters;
