Index: cpp/frams/genetics/fB/fB_conv.cpp
===================================================================
--- cpp/frams/genetics/fB/fB_conv.cpp	(revision 809)
+++ cpp/frams/genetics/fB/fB_conv.cpp	(revision 821)
@@ -163,4 +163,5 @@
 				fHgenotype.getNextToken(fHpos, line, '\n');
 				map->add(ranges[t][q].begin, ranges[t][q].end, lastpos, fHpos - 1);
+				lastpos = fHpos;
 			}
 		}
Index: cpp/frams/genetics/fB/fB_oper.cpp
===================================================================
--- cpp/frams/genetics/fB/fB_oper.cpp	(revision 809)
+++ cpp/frams/genetics/fB/fB_oper.cpp	(revision 821)
@@ -39,5 +39,5 @@
 }
 
-bool Geno_fB::hasStick(SString genotype)
+bool Geno_fB::hasStick(const SString &genotype)
 {
 	for (int i = 0; i < fB_GenoHelpers::geneCount(genotype); i++)
@@ -194,8 +194,8 @@
 }
 
-SString Geno_fB::detokenizeSequence(std::list<SString> tokenlist)
+SString Geno_fB::detokenizeSequence(std::list<SString> *tokenlist)
 {
 	SString res = "";
-	for (std::list<SString>::iterator it = tokenlist.begin(); it != tokenlist.end(); it++)
+	for (std::list<SString>::iterator it = tokenlist->begin(); it != tokenlist->end(); it++)
 	{
 		res += (*it);
@@ -204,5 +204,5 @@
 }
 
-std::list<SString> Geno_fB::tokenizeSequence(SString genotype)
+std::list<SString> Geno_fB::tokenizeSequence(const SString &genotype)
 {
 	std::list<SString> res;
@@ -278,5 +278,5 @@
 			chg = (double)def.len() / line.len();
 		}
-		line = detokenizeSequence(tokenized);
+		line = detokenizeSequence(&tokenized);
 		break;
 	}
@@ -297,5 +297,5 @@
 			tokenized.insert(it, res);
 			chg = (double)classdef.len() / line.len();
-			line = detokenizeSequence(tokenized);
+			line = detokenizeSequence(&tokenized);
 			break;
 		}
@@ -312,5 +312,5 @@
 		letter.directWrite()[0] = 'a' + randomN(26);
 		tokenized.insert(it, letter);
-		line = detokenizeSequence(tokenized);
+		line = detokenizeSequence(&tokenized);
 		break;
 	}
@@ -323,5 +323,5 @@
 		std::advance(it, rndid);
 		tokenized.erase(it);
-		line = detokenizeSequence(tokenized);
+		line = detokenizeSequence(&tokenized);
 		break;
 	}
@@ -363,5 +363,5 @@
 //		SString result = line.substr(0, cuts[0]) + second +
 //			line.substr(cuts[1], cuts[2] - cuts[1]) + first + line.substr(cuts[3]);
-		line = detokenizeSequence(res);
+		line = detokenizeSequence(&res);
 		chg = (float)(cuts[3] - cuts[2] + cuts[1] - cuts[0]) / line.len();
 		break;
Index: cpp/frams/genetics/fB/fB_oper.h
===================================================================
--- cpp/frams/genetics/fB/fB_oper.h	(revision 809)
+++ cpp/frams/genetics/fB/fB_oper.h	(revision 821)
@@ -30,7 +30,7 @@
 {
 private:
-	bool hasStick(SString genotype);
-	SString detokenizeSequence(std::list<SString> tokenlist);
-	std::list<SString> tokenizeSequence(SString genotype);
+	bool hasStick(const SString &genotype);
+	SString detokenizeSequence(std::list<SString> *tokenlist);
+	std::list<SString> tokenizeSequence(const SString &genotype);
 
 public:
Index: cpp/frams/genetics/fH/fH_general.cpp
===================================================================
--- cpp/frams/genetics/fH/fH_general.cpp	(revision 809)
+++ cpp/frams/genetics/fH/fH_general.cpp	(revision 821)
@@ -344,5 +344,5 @@
 // Creature build functions
 
-Part * fH_StickHandle::createPart(ParamEntry *tab, std::vector<fH_StickHandle *> children, Model *model, bool createmapping)
+Part * fH_StickHandle::createPart(ParamEntry *tab, std::vector<fH_StickHandle *> *children, Model *model, bool createmapping)
 {
 	Param par(tab, obj);
@@ -353,10 +353,10 @@
 	}
 
-	unsigned int stickscount = children.size() + 1;
+	unsigned int stickscount = children->size() + 1;
 
 	MultiRange ranges;
 	ranges.add(begin, end);
 
-	for (fH_StickHandle *child : children)
+	for (fH_StickHandle *child : (*children))
 	{
 		par.select(child->obj);
@@ -753,5 +753,5 @@
 		{
 			vector<fH_StickHandle *> emptylist;
-			Part *firstpart = currstick->createPart(stickparamtab, emptylist, model, createmapping);
+			Part *firstpart = currstick->createPart(stickparamtab, &emptylist, model, createmapping);
 			firstpart->p = Pt3D(0);
 			currstick->firstpart = firstpart;
@@ -847,5 +847,5 @@
 		}
 		// create part from current stick and other sticks connected to this part
-		Part *secondpart = currstick->createPart(stickparamtab, children, model, createmapping);
+		Part *secondpart = currstick->createPart(stickparamtab, &children, model, createmapping);
 		secondpart->p = secondposition;
 		currstick->secondpart = secondpart;
Index: cpp/frams/genetics/fH/fH_general.h
===================================================================
--- cpp/frams/genetics/fH/fH_general.h	(revision 809)
+++ cpp/frams/genetics/fH/fH_general.h	(revision 821)
@@ -173,5 +173,5 @@
 	 * @return created part
 	 */
-	Part *createPart(ParamEntry *tab, std::vector<fH_StickHandle *> children, Model *model, bool createmapping);
+	Part *createPart(ParamEntry *tab, std::vector<fH_StickHandle *> *children, Model *model, bool createmapping);
 
 	/**
Index: cpp/frams/genetics/fL/fL_general.cpp
===================================================================
--- cpp/frams/genetics/fL/fL_general.cpp	(revision 809)
+++ cpp/frams/genetics/fL/fL_general.cpp	(revision 821)
@@ -488,5 +488,5 @@
 		std::string message = "Error in parsing parameters at line:  " + std::to_string(linenumber);
 		logMessage("fL_Builder", "processLine", LOG_ERROR, message.c_str());
-		delete obj;
+		if (obj != this) delete obj;
 		return begin + 1;
 	}
@@ -1339,8 +1339,8 @@
 }
 
-int fL_Builder::countSticksInSequence(std::list<fL_Word *> sequence)
+int fL_Builder::countSticksInSequence(std::list<fL_Word *> *sequence)
 {
 	int count = 0;
-	for (std::list<fL_Word *>::iterator it = sequence.begin(); it != sequence.end(); it++)
+	for (std::list<fL_Word *>::iterator it = sequence->begin(); it != sequence->end(); it++)
 	{
 		if ((*it)->builtin && (*it)->name == "S")
Index: cpp/frams/genetics/fL/fL_general.h
===================================================================
--- cpp/frams/genetics/fL/fL_general.h	(revision 809)
+++ cpp/frams/genetics/fL/fL_general.h	(revision 821)
@@ -482,5 +482,5 @@
 	 * @return number of sticks in sequence
 	 */
-	int countSticksInSequence(std::list<fL_Word *> sequence);
+	int countSticksInSequence(std::list<fL_Word *> *sequence);
 
 	/**
Index: cpp/frams/genetics/fL/fL_matheval.cpp
===================================================================
--- cpp/frams/genetics/fL/fL_matheval.cpp	(revision 809)
+++ cpp/frams/genetics/fL/fL_matheval.cpp	(revision 821)
@@ -116,5 +116,5 @@
 	registerOperator(meqless, 1, Associativity::LEFT, "<=");
 	registerOperator(mequal, 1, Associativity::RIGHT, "=");
-	registerOperator(mnotequal, 1, Associativity::RIGHT, "~");
+	registerOperator(mnotequal, 1, Associativity::RIGHT, "<>");
 	registerOperator(mand, 0, Associativity::LEFT, "&");
 	registerOperator(mor, 0, Associativity::LEFT, "|");
Index: cpp/frams/genetics/fL/fL_oper.cpp
===================================================================
--- cpp/frams/genetics/fL/fL_oper.cpp	(revision 809)
+++ cpp/frams/genetics/fL/fL_oper.cpp	(revision 821)
@@ -64,5 +64,5 @@
 	}
 
-	if (builder.countSticksInSequence(builder.genotype) == 0)
+	if (builder.countSticksInSequence(&builder.genotype) == 0)
 	{
 		return GENOPER_OPFAIL;
@@ -142,5 +142,4 @@
 			SString det;
 			NeuroClass *cls = getRandomNeuroClass();
-			//we do not check if this class
 			det = cls->getName();
 			Geno_fH::mutateNeuronProperties(det);
@@ -418,5 +417,5 @@
 			int ruleid = 0;
 			std::list<fL_Word *> *list = selectRandomSequence(creature, numpars, ruleid);
-			if (ruleid == -1 && creature->countSticksInSequence((*list)) == 1)
+			if (ruleid == -1 && creature->countSticksInSequence(list) == 1)
 			{
 				if (list->size() > 1)
@@ -540,5 +539,5 @@
 			}
 			int chgtype = roulette(chgoperations, FL_CHG_COUNT);
-			if (creature->countSticksInSequence((*list)) == 1 && tmp == -1) // if sequence is axiom
+			if (creature->countSticksInSequence(list) == 1 && tmp == -1) // if sequence is axiom
 			{
 				fL_Word *worddef = randomWordDefinition(creature, roulette(addtypes, FL_ADD_COUNT - 1));
