Index: /java/FramclipsePlugin/src/main/resources/framscript.xml
===================================================================
--- /java/FramclipsePlugin/src/main/resources/framscript.xml	(revision 308)
+++ /java/FramclipsePlugin/src/main/resources/framscript.xml	(revision 309)
@@ -4,101 +4,101 @@
 <framscript>
 	<type name="expdef" context="expdef file">
+		<element name="name" type="string"/>
+		<element name="info" type="string"/>
 		<element name="code" type="string"/>
-		<element name="info" type="string"/>
-		<element name="name" type="string"/>
 		<element name="neurons" type="string"/>
 	</type>
 	<type name="prop" context="properties file">
-		<element name="flags" type="integer"/>
-		<element name="group" type="string"/>
-		<element name="help" type="string"/>
 		<element name="id" type="string"/>
 		<element name="name" type="string"/>
 		<element name="type" type="string"/>
+		<element name="flags" type="integer"/>
+		<element name="help" type="string"/>
+		<element name="group" type="string"/>
 	</type>
 	<type name="stat" context="state file">
-		<element name="flags" type="integer"/>
-		<element name="group" type="string"/>
-		<element name="help" type="string"/>
 		<element name="id" type="string"/>
 		<element name="name" type="string"/>
 		<element name="type" type="string"/>
+		<element name="flags" type="integer"/>
+		<element name="help" type="string"/>
+		<element name="group" type="string"/>
 	</type>
 	<type name="style" context="style file">
 <description><![CDATA[General visual style properties.]]></description>
+		<element name="style" type="string"/>
+		<element name="name" type="string"/>
+		<element name="info" type="string"/>
 		<element name="code" type="string"/>
-		<element name="info" type="string"/>
-		<element name="name" type="string"/>
+		<element name="streload" function="true"/>
+		<element name="rebuild" function="true"/>
+		<element name="tex" type="integer" min="0" max="2" default="1"/>
+		<element name="smooth" type="integer" min="0" max="1" default="1"/>
 		<element name="neurons" type="integer" min="0" max="1" default="1"/>
-		<element name="smooth" type="integer" min="0" max="1" default="1"/>
-		<element name="style" type="string"/>
-		<element name="tex" type="integer" min="0" max="2" default="1"/>
-		<element name="rebuild" function="true"/>
-		<element name="streload" function="true"/>
 	</type>
 	<type name="show" context="show file">
 <description><![CDATA[Properties of a show for the Framsticks Theater (from the *.show file).]]></description>
+		<element name="show" type="string"/>
+		<element name="name" type="string"/>
+		<element name="info" type="string"/>
+		<element name="dispinfo" type="integer" min="0" max="2"/>
+		<element name="userspeed" type="integer" min="0" max="5" default="3"/>
+		<element name="showlog" type="integer" min="0" max="1"/>
 		<element name="code" type="string"/>
-		<element name="dispinfo" type="integer" min="0" max="2"/>
+		<element name="expdef" type="string"/>
+		<element name="reload" function="true"/>
+		<element name="dummy" function="true">
+			<description><![CDATA[This is the empty item in the Theater's menu]]></description>
+		</element>
+		<element name="about" function="true"/>
+		<element name="regname" type="string"/>
+		<element name="prev_show" type="string"/>
+		<element name="mode" type="integer" min="0" max="2"/>
+		<element name="switchmode" type="integer" min="0" max="3"/>
+		<element name="switchtime" type="integer" min="0" max="9999">
+			<description><![CDATA[time between switching (seconds)]]></description>
+		</element>
+		<element name="switchshows" type="string">
+			<description><![CDATA[names of the shows participating in automatic switching (comma separated). Use * as a wildcard.]]></description>
+		</element>
+		<element name="includeshows" type="string">
+			<description><![CDATA[names of shows included in the show menu. Use * as a wildcard.]]></description>
+		</element>
 		<element name="excludeshows" type="string">
 			<description><![CDATA[names of shows excluded from the show menu. Use * as a wildcard.]]></description>
 		</element>
-		<element name="expdef" type="string"/>
-		<element name="includeshows" type="string">
-			<description><![CDATA[names of shows included in the show menu. Use * as a wildcard.]]></description>
-		</element>
-		<element name="info" type="string"/>
-		<element name="mode" type="integer" min="0" max="2"/>
+	</type>
+	<type name="class" context="neuro file">
 		<element name="name" type="string"/>
-		<element name="prev_show" type="string"/>
-		<element name="regname" type="string"/>
-		<element name="show" type="string"/>
-		<element name="showlog" type="integer" min="0" max="1"/>
-		<element name="switchmode" type="integer" min="0" max="3"/>
-		<element name="switchshows" type="string">
-			<description><![CDATA[names of the shows participating in automatic switching (comma separated). Use * as a wildcard.]]></description>
-		</element>
-		<element name="switchtime" type="integer" min="0" max="9999">
-			<description><![CDATA[time between switching (seconds)]]></description>
-		</element>
-		<element name="userspeed" type="integer" min="0" max="5" default="3"/>
-		<element name="about" function="true"/>
-		<element name="dummy" function="true">
-			<description><![CDATA[This is the empty item in the Theater's menu]]></description>
-		</element>
-		<element name="reload" function="true"/>
-	</type>
-	<type name="class" context="neuro file">
+		<element name="longname" type="string"/>
+		<element name="description" type="string"/>
 		<element name="code" type="string"/>
-		<element name="description" type="string"/>
+		<element name="prefinputs" type="integer"/>
+		<element name="prefoutput" type="integer" min="0" max="1"/>
+		<element name="preflocation" type="integer" min="0" max="2"/>
 		<element name="icon" type="string"/>
-		<element name="longname" type="string"/>
+		<element name="vhints" type="integer"/>
+	</type>
+	<type name="script" context="script file">
 		<element name="name" type="string"/>
-		<element name="prefinputs" type="integer"/>
-		<element name="preflocation" type="integer" min="0" max="2"/>
-		<element name="prefoutput" type="integer" min="0" max="1"/>
-		<element name="vhints" type="integer"/>
-	</type>
-	<type name="script" context="script file">
 		<element name="code" type="string"/>
+		<element name="help" type="string"/>
 		<element name="group" type="string"/>
-		<element name="help" type="string"/>
-		<element name="name" type="string"/>
 	</type>
 	<type name="CheckpointEvent" context="Global context">
 <description><![CDATA[CheckpointEvent]]></description>
-		<element name="data" type="untyped"/>
 		<element name="index" type="integer"/>
 		<element name="slave" type="Simulator"/>
 		<element name="ticks" type="integer"/>
+		<element name="data" type="untyped"/>
 	</type>
 	<type name="Collision" context="Global context">
 <description><![CDATA[Used in collision handlers (On___Collision). Contains the detailed information about the colliding parts (Part1,Part2 and their associated MechParts and Creatures). See the onFoodCollision() function in standard.expdef]]></description>
+		<element name="Part1" type="Object"/>
+		<element name="Part2" type="Object"/>
+		<element name="MechPart1" type="Object"/>
+		<element name="MechPart2" type="Object"/>
 		<element name="Creature1" type="Object"/>
 		<element name="Creature2" type="Object"/>
-		<element name="MechPart1" type="Object"/>
-		<element name="MechPart2" type="Object"/>
-		<element name="Part1" type="Object"/>
-		<element name="Part2" type="Object"/>
 	</type>
 	<type name="CrCollision" context="Global context">
@@ -112,4 +112,28 @@
 function onDied(cr) {Simulator.print("Creature "+cr.name+" has died");}
 See also: Population.]]></description>
+		<element name="name" type="string"/>
+		<element name="genotype" type="string"/>
+		<element name="info" type="string">
+			<description><![CDATA[Additional info or comments]]></description>
+		</element>
+		<element name="group" type="untyped" deprecated="true">
+			<description><![CDATA[Deprecated. Use population instead.]]></description>
+		</element>
+		<element name="population" type="untyped"/>
+		<element name="index" type="integer">
+			<description><![CDATA[Note that the index changes depending on the current creature position in the population. Use Creature.uid if you need a permanent identifier that persists through the entire object lifetime.]]></description>
+		</element>
+		<element name="gnum" type="integer"/>
+		<element name="buildproblems" type="integer"/>
+		<element name="energ0" type="float"/>
+		<element name="idleen" type="float"/>
+		<element name="energy" type="float"/>
+		<element name="energy_p" type="float"/>
+		<element name="energy_m" type="float"/>
+		<element name="energy_b" type="float"/>
+		<element name="perf" type="integer" min="0" max="2">
+			<description><![CDATA[Initial value of this property is taken from Population.enableperf]]></description>
+		</element>
+		<element name="nnenabled" type="integer" min="0" max="1"/>
 		<element name="bodysim" type="integer" min="0" max="1" default="1">
 			<description><![CDATA[(Physical) body simulation can be disabled for individual objects which makes them immovable. Disabled objects can still participate in collisions depending on their collisions masks.
@@ -117,8 +141,37 @@
 Bugs: the standard collision handler does not work for disabled objects when ODE simulation is used. It means that these objects won't physically interact with other objects. The custom (scripting) handlers work as expected.]]></description>
 		</element>
-		<element name="buildproblems" type="integer"/>
+		<element name="selfcol" type="integer" min="0" max="1">
+			<description><![CDATA[Enable/disable detection of self-collisions (within a creature body). They can only occur when using the ODE simulation engine. If enabled, the creature will have its sticks collide during lifespan.]]></description>
+		</element>
+		<element name="selfcolstate" function="true" type="integer">
+			<description><![CDATA[Current self-collision state. In old versions this was a field, not a function.]]></description>
+<arguments/></element>
+		<element name="lifespan" type="integer"/>
+		<element name="distance" type="float"/>
 		<element name="c_velocity" type="float"/>
+		<element name="c_vertvelocity" type="float"/>
 		<element name="c_vertpos" type="float"/>
-		<element name="c_vertvelocity" type="float"/>
+		<element name="velocity" type="float"/>
+		<element name="vertpos" type="float"/>
+		<element name="vertvel" type="float"/>
+		<element name="pos_x" type="float">
+			<description><![CDATA[(pos_x,pos_y,pos_z) is the point of minimal coordinates ("bottom left corner") of the creature, including imaginary Part sizes (Part.s, usually 1.0). See also: Creature.moveAbs]]></description>
+		</element>
+		<element name="pos_y" type="float">
+			<description><![CDATA[See Creature.pos_x]]></description>
+		</element>
+		<element name="pos_z" type="float">
+			<description><![CDATA[See Creature.pos_x]]></description>
+		</element>
+		<element name="size_x" type="float">
+			<description><![CDATA[(size_x,size_y,size_z) are dimensions of the axis-aligned bounding box of the creature, including the imaginary part sizes (Part.s, usually 1.0). A creature consisting of a single default Part has the size of (2.0,2.0,2.0) - twice the Part.s value (like a sphere diameter is twice its radius).
+See also: Creature.moveAbs]]></description>
+		</element>
+		<element name="size_y" type="float">
+			<description><![CDATA[See Creature.size_x]]></description>
+		</element>
+		<element name="size_z" type="float">
+			<description><![CDATA[See Creature.size_x]]></description>
+		</element>
 		<element name="center_x" type="float">
 			<description><![CDATA[Center of gravity]]></description>
@@ -130,31 +183,79 @@
 			<description><![CDATA[Center of gravity]]></description>
 		</element>
-		<element name="distance" type="float"/>
+		<element name="numparts" type="integer"/>
+		<element name="numjoints" type="integer"/>
+		<element name="numneurons" type="integer"/>
+		<element name="user1" type="untyped"/>
+		<element name="user2" type="untyped"/>
+		<element name="user3" type="untyped"/>
+		<element name="move" function="true" type="void">
+			<description><![CDATA[Shift the creature by a given vector.]]></description>
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
+		<element name="moveAbs" function="true" type="void">
+			<description><![CDATA[Moves the creature so that its origin (pos_x,pos_y,pos_z) is placed at the given location. The origin is the point of minimal coordinates ("bottom left corner"), including imaginary part sizes (Part.s, usually 1.0).
+Assuming a simple single-stick creature "X" having parts at (0,0,0) and (1,0,0),
+
+origin (pos_x,pos_y,pos_z) = (-1,-1,-1)
+size (size_x,size_y,size_z) = (3,2,2)
+
+The following example places the bottom of a creature at a given location (x,y,z):
+Creature.moveAbs(x-(Creature.size_x/2),y-(Creature.size_y/2),z-1.0)
+(assuming that the part size is 1.0)]]></description>
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
+		<element name="moveLocal" function="true" type="void">
+			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
+		<element name="localToWorld" function="true" type="XYZ">
+			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
+		<element name="worldToLocal" function="true" type="XYZ">
+			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
+		<element name="orient" type="Orient">
+			<description><![CDATA[By convention, the orientation of the creature is equal to the orientation of its first Part]]></description>
+		</element>
+		<element name="rotate" function="true" type="void">
+			<description><![CDATA[Rotate the creature around X, Y and Z axes. Should only be used immediately after creating a new creature (before the first simulation step is performed for this creature), otherwise further simulation can be disturbed.]]></description>
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
+		<element name="rotateLocal" function="true" type="void">
+			<description><![CDATA[Rotate the creature around (local) X, Y and Z axes. Should only be used immediately after creating a new creature (before the first simulation step is performed for this creature), otherwise further simulation can be disturbed.]]></description>
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
 		<element name="drive" type="XYZ">
 			<description><![CDATA[Measured in global coordinates]]></description>
-		</element>
-		<element name="energ0" type="float"/>
-		<element name="energy" type="float"/>
-		<element name="energy_b" type="float"/>
-		<element name="energy_m" type="float"/>
-		<element name="energy_p" type="float"/>
-		<element name="geno" type="Geno">
-			<description><![CDATA[Source genotype for this creature]]></description>
-		</element>
-		<element name="genotype" type="string"/>
-		<element name="gnum" type="integer"/>
-		<element name="group" type="untyped" deprecated="true">
-			<description><![CDATA[Deprecated. Use population instead.]]></description>
-		</element>
-		<element name="idleen" type="float"/>
-		<element name="index" type="integer">
-			<description><![CDATA[Note that the index changes depending on the current creature position in the population. Use Creature.uid if you need a permanent identifier that persists through the entire object lifetime.]]></description>
-		</element>
-		<element name="info" type="string">
-			<description><![CDATA[Additional info or comments]]></description>
-		</element>
-		<element name="lifespan" type="integer"/>
-		<element name="liveModel" type="Model">
-			<description><![CDATA[A Model object that is a copy of the current (temporary) geometry of this creature]]></description>
 		</element>
 		<element name="localDrive" type="XYZ">
@@ -162,51 +263,48 @@
 See also: Creature.orient]]></description>
 		</element>
+		<element name="getPart" function="true" type="Part">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getJoint" function="true" type="Joint">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getNeuroDef" function="true" type="NeuroDef">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getMechPart" function="true" type="MechPart">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getMechJoint" function="true" type="MechJoint">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getNeuro" function="true" type="Neuro">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="selfmask" type="integer" min="0" max="2147483647" default="0"/>
+		<element name="othermask" type="integer" min="0" max="2147483647" default="0"/>
+		<element name="currentGeometryAsF0" function="true" type="string"><arguments/></element>
+		<element name="geno" type="Geno">
+			<description><![CDATA[Source genotype for this creature]]></description>
+		</element>
 		<element name="model" type="Model">
 			<description><![CDATA[Source Model for this creature]]></description>
 		</element>
-		<element name="name" type="string"/>
-		<element name="nnenabled" type="integer" min="0" max="1"/>
-		<element name="numjoints" type="integer"/>
-		<element name="numneurons" type="integer"/>
-		<element name="numparts" type="integer"/>
-		<element name="orient" type="Orient">
-			<description><![CDATA[By convention, the orientation of the creature is equal to the orientation of its first Part]]></description>
-		</element>
-		<element name="othermask" type="integer" min="0" max="2147483647" default="0"/>
-		<element name="perf" type="integer" min="0" max="2">
-			<description><![CDATA[Initial value of this property is taken from Population.enableperf]]></description>
-		</element>
-		<element name="population" type="untyped"/>
-		<element name="pos_x" type="float">
-			<description><![CDATA[(pos_x,pos_y,pos_z) is the point of minimal coordinates ("bottom left corner") of the creature, including imaginary Part sizes (Part.s, usually 1.0). See also: Creature.moveAbs]]></description>
-		</element>
-		<element name="pos_y" type="float">
-			<description><![CDATA[See Creature.pos_x]]></description>
-		</element>
-		<element name="pos_z" type="float">
-			<description><![CDATA[See Creature.pos_x]]></description>
-		</element>
-		<element name="selfcol" type="integer" min="0" max="1">
-			<description><![CDATA[Enable/disable detection of self-collisions (within a creature body). They can only occur when using the ODE simulation engine. If enabled, the creature will have its sticks collide during lifespan.]]></description>
-		</element>
-		<element name="selfmask" type="integer" min="0" max="2147483647" default="0"/>
+		<element name="liveModel" type="Model">
+			<description><![CDATA[A Model object that is a copy of the current (temporary) geometry of this creature]]></description>
+		</element>
+		<element name="uid" type="string"/>
 		<element name="signals" type="CreatureSignals"/>
-		<element name="size_x" type="float">
-			<description><![CDATA[(size_x,size_y,size_z) are dimensions of the axis-aligned bounding box of the creature, including the imaginary part sizes (Part.s, usually 1.0). A creature consisting of a single default Part has the size of (2.0,2.0,2.0) - twice the Part.s value (like a sphere diameter is twice its radius).
-See also: Creature.moveAbs]]></description>
-		</element>
-		<element name="size_y" type="float">
-			<description><![CDATA[See Creature.size_x]]></description>
-		</element>
-		<element name="size_z" type="float">
-			<description><![CDATA[See Creature.size_x]]></description>
-		</element>
-		<element name="uid" type="string"/>
-		<element name="user1" type="untyped"/>
-		<element name="user2" type="untyped"/>
-		<element name="user3" type="untyped"/>
-		<element name="velocity" type="float"/>
-		<element name="vertpos" type="float"/>
-		<element name="vertvel" type="float"/>
 		<element name="boundingBoxCollisions" function="true" type="integer">
 			<description><![CDATA[Checks approximate collisions for the selected creature.
@@ -217,105 +315,16 @@
 			</arguments>
 		</element>
-		<element name="currentGeometryAsF0" function="true" type="string"><arguments/></element>
-		<element name="getJoint" function="true" type="Joint">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getMechJoint" function="true" type="MechJoint">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getMechPart" function="true" type="MechPart">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getNeuro" function="true" type="Neuro">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getNeuroDef" function="true" type="NeuroDef">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getPart" function="true" type="Part">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="localToWorld" function="true" type="XYZ">
-			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
-			<arguments>
-				<argument name="x" type="float"/>
-				<argument name="y" type="float"/>
-				<argument name="z" type="float"/>
-			</arguments>
-		</element>
-		<element name="move" function="true" type="void">
-			<description><![CDATA[Shift the creature by a given vector.]]></description>
-			<arguments>
-				<argument name="x" type="float"/>
-				<argument name="y" type="float"/>
-				<argument name="z" type="float"/>
-			</arguments>
-		</element>
-		<element name="moveAbs" function="true" type="void">
-			<description><![CDATA[Moves the creature so that its origin (pos_x,pos_y,pos_z) is placed at the given location. The origin is the point of minimal coordinates ("bottom left corner"), including imaginary part sizes (Part.s, usually 1.0).
-Assuming a simple single-stick creature "X" having parts at (0,0,0) and (1,0,0),
-
-origin (pos_x,pos_y,pos_z) = (-1,-1,-1)
-size (size_x,size_y,size_z) = (3,2,2)
-
-The following example places the bottom of a creature at a given location (x,y,z):
-Creature.moveAbs(x-(Creature.size_x/2),y-(Creature.size_y/2),z-1.0)
-(assuming that the part size is 1.0)]]></description>
-			<arguments>
-				<argument name="x" type="float"/>
-				<argument name="y" type="float"/>
-				<argument name="z" type="float"/>
-			</arguments>
-		</element>
-		<element name="moveLocal" function="true" type="void">
-			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
-			<arguments>
-				<argument name="x" type="float"/>
-				<argument name="y" type="float"/>
-				<argument name="z" type="float"/>
-			</arguments>
-		</element>
-		<element name="rotate" function="true" type="void">
-			<description><![CDATA[Rotate the creature around X, Y and Z axes. Should only be used immediately after creating a new creature (before the first simulation step is performed for this creature), otherwise further simulation can be disturbed.]]></description>
-			<arguments>
-				<argument name="x" type="float"/>
-				<argument name="y" type="float"/>
-				<argument name="z" type="float"/>
-			</arguments>
-		</element>
-		<element name="rotateLocal" function="true" type="void">
-			<description><![CDATA[Rotate the creature around (local) X, Y and Z axes. Should only be used immediately after creating a new creature (before the first simulation step is performed for this creature), otherwise further simulation can be disturbed.]]></description>
-			<arguments>
-				<argument name="x" type="float"/>
-				<argument name="y" type="float"/>
-				<argument name="z" type="float"/>
-			</arguments>
-		</element>
-		<element name="selfcolstate" function="true" type="integer">
-			<description><![CDATA[Current self-collision state. In old versions this was a field, not a function.]]></description>
-<arguments/></element>
-		<element name="worldToLocal" function="true" type="XYZ">
-			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
-			<arguments>
-				<argument name="x" type="float"/>
-				<argument name="y" type="float"/>
-				<argument name="z" type="float"/>
-			</arguments>
-		</element>
 	</type>
 	<type name="CreatureSettings" context="Global context">
 <description><![CDATA[Creature building parameters]]></description>
+		<element name="minjoint" type="float" min="0" max="100" default="0.0"/>
+		<element name="maxjoint" type="float" min="0" max="100" default="2.0"/>
+		<element name="randinit" type="float" min="0" max="10" default="0.01">
+			<description><![CDATA[Allowed range for initializing all neuron states with uniform distribution random numbers and zero mean. Set to 0 for deterministic initialization.]]></description>
+		</element>
+		<element name="nnoise" type="float" min="0" max="1" default="0.0">
+			<description><![CDATA[Gaussian neural noise: a random value is added to each neural output in each simulation step. Set standard deviation here to add random noise, or 0 for deterministic simulation.]]></description>
+		</element>
+		<element name="touchrange" type="float" min="0" max="100" default="1.0"/>
 		<element name="bnoise_struct" type="float" min="0" max="10" default="0.0">
 			<description><![CDATA[When >0, body constructs of creatures (position of Parts) will be randomly disturbed when they are created.]]></description>
@@ -324,17 +333,7 @@
 			<description><![CDATA[Random velocities will be applied to all body Parts (in MechaStick) or rigid segments (in ODE) of newly created creatures.]]></description>
 		</element>
-		<element name="maxjoint" type="float" min="0" max="100" default="2.0"/>
-		<element name="minjoint" type="float" min="0" max="100" default="0.0"/>
-		<element name="nnoise" type="float" min="0" max="1" default="0.0">
-			<description><![CDATA[Gaussian neural noise: a random value is added to each neural output in each simulation step. Set standard deviation here to add random noise, or 0 for deterministic simulation.]]></description>
-		</element>
-		<element name="randinit" type="float" min="0" max="10" default="0.01">
-			<description><![CDATA[Allowed range for initializing all neuron states with uniform distribution random numbers and zero mean. Set to 0 for deterministic initialization.]]></description>
-		</element>
-		<element name="touchrange" type="float" min="0" max="100" default="1.0"/>
 	</type>
 	<type name="CreatureSignals" context="Global context">
 <description><![CDATA[Signal sources associated with a creature. See also: Signal, WorldSignals, NeuroSignals.]]></description>
-		<element name="size" type="integer"/>
 		<element name="add" function="true" type="Signal">
 			<arguments>
@@ -351,14 +350,15 @@
 			</arguments>
 		</element>
-		<element name="clear" function="true" type="void"><arguments/></element>
-		<element name="get" function="true" type="Signal">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
 		<element name="receive" function="true" type="float">
 			<description><![CDATA[Receive the aggregated signal power in a given channel.]]></description>
 			<arguments>
 				<argument name="channel" type="string"/>
+			</arguments>
+		</element>
+		<element name="receiveSet" function="true" type="Vector">
+			<description><![CDATA[Get all signals in the specified range. Returns a read-only vector object containing Signal objects - individual signals can be accessed as result[0], .., result[result.size-1].]]></description>
+			<arguments>
+				<argument name="channel" type="string"/>
+				<argument name="max distance" type="float"/>
 			</arguments>
 		</element>
@@ -376,6 +376,6 @@
 			</arguments>
 		</element>
-		<element name="receiveSet" function="true" type="Vector">
-			<description><![CDATA[Get all signals in the specified range. Returns a read-only vector object containing Signal objects - individual signals can be accessed as result[0], .., result[result.size-1].]]></description>
+		<element name="receiveSingle" function="true" type="Signal">
+			<description><![CDATA[Find the signal source that has the highest signal power (taking into account distance).]]></description>
 			<arguments>
 				<argument name="channel" type="string"/>
@@ -383,11 +383,64 @@
 			</arguments>
 		</element>
-		<element name="receiveSingle" function="true" type="Signal">
-			<description><![CDATA[Find the signal source that has the highest signal power (taking into account distance).]]></description>
-			<arguments>
-				<argument name="channel" type="string"/>
-				<argument name="max distance" type="float"/>
-			</arguments>
-		</element>
+		<element name="get" function="true" type="Signal">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="size" type="integer"/>
+		<element name="clear" function="true" type="void"><arguments/></element>
+	</type>
+	<type name="CreatureSnapshot" context="Global context">
+<description><![CDATA[A data object consisting of the same fields as the serialized Creature. Typically used for reading a Creature back from a file, then Population.add(snapshot_object) creates the Creature object from the snapshot.]]></description>
+		<element name="name" type="string"/>
+		<element name="genotype" type="string"/>
+		<element name="info" type="string">
+			<description><![CDATA[Additional info or comments]]></description>
+		</element>
+		<element name="gnum" type="integer"/>
+		<element name="energ0" type="float"/>
+		<element name="idleen" type="float"/>
+		<element name="energy" type="float"/>
+		<element name="energy_p" type="float"/>
+		<element name="energy_m" type="float"/>
+		<element name="energy_b" type="float"/>
+		<element name="perf" type="integer" min="0" max="2">
+			<description><![CDATA[Initial value of this property is taken from Population.enableperf]]></description>
+		</element>
+		<element name="nnenabled" type="integer" min="0" max="1"/>
+		<element name="bodysim" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[(Physical) body simulation can be disabled for individual objects which makes them immovable. Disabled objects can still participate in collisions depending on their collisions masks.
+
+Bugs: the standard collision handler does not work for disabled objects when ODE simulation is used. It means that these objects won't physically interact with other objects. The custom (scripting) handlers work as expected.]]></description>
+		</element>
+		<element name="selfcol" type="integer" min="0" max="1">
+			<description><![CDATA[Enable/disable detection of self-collisions (within a creature body). They can only occur when using the ODE simulation engine. If enabled, the creature will have its sticks collide during lifespan.]]></description>
+		</element>
+		<element name="lifespan" type="integer"/>
+		<element name="distance" type="float"/>
+		<element name="c_velocity" type="float"/>
+		<element name="c_vertvelocity" type="float"/>
+		<element name="c_vertpos" type="float"/>
+		<element name="velocity" type="float"/>
+		<element name="vertpos" type="float"/>
+		<element name="vertvel" type="float"/>
+		<element name="center_x" type="float">
+			<description><![CDATA[Center of gravity]]></description>
+		</element>
+		<element name="center_y" type="float">
+			<description><![CDATA[Center of gravity]]></description>
+		</element>
+		<element name="center_z" type="float">
+			<description><![CDATA[Center of gravity]]></description>
+		</element>
+		<element name="user1" type="untyped"/>
+		<element name="user2" type="untyped"/>
+		<element name="user3" type="untyped"/>
+		<element name="orient" type="Orient">
+			<description><![CDATA[By convention, the orientation of the creature is equal to the orientation of its first Part]]></description>
+		</element>
+		<element name="selfmask" type="integer" min="0" max="2147483647" default="0"/>
+		<element name="othermask" type="integer" min="0" max="2147483647" default="0"/>
+		<element name="uid" type="string"/>
 	</type>
 	<type name="Dictionary" context="Global context">
@@ -397,7 +450,27 @@
 var i;
 for(i=0;i<d.size;i++) Simulator.print(d.getKey(i)+" is "+d.get(i));]]></description>
+		<element name="clear" function="true" type="void"><arguments/></element>
 		<element name="size" type="integer"/>
-		<element name="toString" type="string"/>
-		<element name="clear" function="true" type="void"><arguments/></element>
+		<element name="remove" function="true" type="void">
+			<arguments>
+				<argument name="key" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="get" function="true" type="untyped">
+			<arguments>
+				<argument name="key" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="getKey" function="true" type="string">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="set" function="true" type="void">
+			<arguments>
+				<argument name="key" type="untyped"/>
+				<argument name="value" type="untyped"/>
+			</arguments>
+		</element>
 		<element name="find" function="true" type="string">
 			<description><![CDATA[returns the element key or null if not found]]></description>
@@ -406,35 +479,76 @@
 			</arguments>
 		</element>
-		<element name="get" function="true" type="untyped">
-			<arguments>
-				<argument name="key" type="untyped"/>
-			</arguments>
-		</element>
-		<element name="getKey" function="true" type="string">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
 		<element name="new" function="true" type="Dictionary"><arguments/></element>
-		<element name="remove" function="true" type="void">
-			<arguments>
-				<argument name="key" type="untyped"/>
-			</arguments>
-		</element>
-		<element name="set" function="true" type="void">
-			<arguments>
-				<argument name="key" type="untyped"/>
-				<argument name="value" type="untyped"/>
-			</arguments>
-		</element>
+		<element name="toString" type="string"/>
 	</type>
 	<type name="File" context="Global context">
-<description><![CDATA[Provides read/write access to the filesystem. Can be used in the experiment definition to save the experiment state (onExpSave). Files are created in the "scripts_output" subdirectory of the directory where the Framsticks executable is located.]]></description>
-		<element name="EOF" type="integer" min="0" max="1"/>
-		<element name="info" type="string"/>
+<description><![CDATA[Provides read/write access to the filesystem. Can be used in the experiment definition to save the experiment state (onExpSave) or any other information. Files are created in the "data/scripts_output" subdirectory, which is either near the Framsticks executable (if this subdirectory is writable) or in your user Documents directory.]]></description>
 		<element name="name" type="string"/>
 		<element name="path" type="string"/>
-		<element name="pathseparator" type="string"/>
-		<element name="append" function="true" type="File ">
+		<element name="info" type="string"/>
+		<element name="writeNameObject" function="true" type="void">
+			<arguments>
+				<argument name="name" type="string"/>
+				<argument type="Object"/>
+			</arguments>
+		</element>
+		<element name="writeObject" function="true" type="void">
+			<arguments>
+				<argument type="Object"/>
+			</arguments>
+		</element>
+		<element name="writeObjectBegin" function="true" type="void">
+			<arguments>
+				<argument type="Object"/>
+			</arguments>
+		</element>
+		<element name="writeObjectField" function="true" type="void">
+			<arguments>
+				<argument type="Object"/>
+				<argument name="field index or name" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="writeObjectFields" function="true" type="void">
+			<arguments>
+				<argument type="Object"/>
+			</arguments>
+		</element>
+		<element name="writeObjectFieldForce" function="true" type="void">
+			<arguments>
+				<argument type="Object"/>
+				<argument name="field index or name" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="writeObjectFieldsForce" function="true" type="void">
+			<arguments>
+				<argument type="Object"/>
+			</arguments>
+		</element>
+		<element name="writeObjectEnd" function="true" type="void"><arguments/></element>
+		<element name="writeString" function="true" type="void">
+			<arguments>
+				<argument name="anything" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="writeComment" function="true" type="void">
+			<arguments>
+				<argument name="anything" type="string"/>
+			</arguments>
+		</element>
+		<element name="readLine" function="true" type="string"><arguments/></element>
+		<element name="readObject" function="true" type="void">
+			<arguments>
+				<argument type="Object"/>
+			</arguments>
+		</element>
+		<element name="EOF" type="integer" min="0" max="1"/>
+		<element name="readUntilEOF" function="true" type="string"><arguments/></element>
+		<element name="getContents" function="true" type="string">
+			<description><![CDATA[Shortcut to: var f=File.open(filename); c=f.readUntilEOF(); f.close(); return c;]]></description>
+			<arguments>
+				<argument name="filename" type="string"/>
+			</arguments>
+		</element>
+		<element name="create" function="true" type="File">
 			<arguments>
 				<argument name="filename" type="string"/>
@@ -442,8 +556,34 @@
 			</arguments>
 		</element>
-		<element name="appendDirect" function="true" type="File ">
+		<element name="createDirect" function="true" type="File">
 			<arguments>
 				<argument name="filename" type="string"/>
 				<argument name="description" type="string"/>
+			</arguments>
+		</element>
+		<element name="append" function="true" type="File ">
+			<arguments>
+				<argument name="filename" type="string"/>
+				<argument name="description" type="string"/>
+			</arguments>
+		</element>
+		<element name="appendDirect" function="true" type="File ">
+			<arguments>
+				<argument name="filename" type="string"/>
+				<argument name="description" type="string"/>
+			</arguments>
+		</element>
+		<element name="flush" function="true" type="void">
+			<description><![CDATA[Useful for unbuffered disk files only (openDirect, appendDirect)]]></description>
+<arguments/></element>
+		<element name="open" function="true" type="File ">
+			<arguments>
+				<argument name="filename" type="string"/>
+			</arguments>
+		</element>
+		<element name="new" function="true" type="File "><arguments/></element>
+		<element name="newFromString" function="true" type="File ">
+			<arguments>
+				<argument name="text" type="string"/>
 			</arguments>
 		</element>
@@ -451,47 +591,9 @@
 			<description><![CDATA[returns file contents if it has been buffered]]></description>
 <arguments/></element>
-		<element name="create" function="true" type="File">
-			<arguments>
-				<argument name="filename" type="string"/>
-				<argument name="description" type="string"/>
-			</arguments>
-		</element>
-		<element name="createDirect" function="true" type="File">
-			<arguments>
-				<argument name="filename" type="string"/>
-				<argument name="description" type="string"/>
-			</arguments>
-		</element>
 		<element name="exists" function="true" type="integer" min="0" max="1">
 			<description><![CDATA[Sample:
 File.exists("default.sim") -> return 0 or 1]]></description>
 <arguments/></element>
-		<element name="flush" function="true" type="void">
-			<description><![CDATA[Useful for unbuffered disk files only (openDirect, appendDirect)]]></description>
-<arguments/></element>
-		<element name="getContents" function="true" type="string">
-			<description><![CDATA[Shortcut to: var f=File.open(filename); c=f.readUntilEOF(); f.close(); return c;]]></description>
-			<arguments>
-				<argument name="filename" type="string"/>
-			</arguments>
-		</element>
-		<element name="new" function="true" type="File "><arguments/></element>
-		<element name="newFromString" function="true" type="File ">
-			<arguments>
-				<argument name="text" type="string"/>
-			</arguments>
-		</element>
-		<element name="open" function="true" type="File ">
-			<arguments>
-				<argument name="filename" type="string"/>
-			</arguments>
-		</element>
-		<element name="readLine" function="true" type="string"><arguments/></element>
-		<element name="readObject" function="true" type="void">
-			<arguments>
-				<argument type="Object"/>
-			</arguments>
-		</element>
-		<element name="readUntilEOF" function="true" type="string"><arguments/></element>
+		<element name="pathseparator" type="string"/>
 		<element name="system" function="true" type="integer">
 			<description><![CDATA[Invokes a system command and returns its exit code (0 usually means the command was completed successfully).
@@ -504,56 +606,18 @@
 			</arguments>
 		</element>
-		<element name="writeComment" function="true" type="void">
-			<arguments>
-				<argument name="anything" type="string"/>
-			</arguments>
-		</element>
-		<element name="writeNameObject" function="true" type="void">
-			<arguments>
-				<argument name="name" type="string"/>
-				<argument type="Object"/>
-			</arguments>
-		</element>
-		<element name="writeObject" function="true" type="void">
-			<arguments>
-				<argument type="Object"/>
-			</arguments>
-		</element>
-		<element name="writeObjectBegin" function="true" type="void">
-			<arguments>
-				<argument type="Object"/>
-			</arguments>
-		</element>
-		<element name="writeObjectEnd" function="true" type="void"><arguments/></element>
-		<element name="writeObjectField" function="true" type="void">
-			<arguments>
-				<argument type="Object"/>
-				<argument name="field index or name" type="untyped"/>
-			</arguments>
-		</element>
-		<element name="writeObjectFieldForce" function="true" type="void">
-			<arguments>
-				<argument type="Object"/>
-				<argument name="field index or name" type="untyped"/>
-			</arguments>
-		</element>
-		<element name="writeObjectFields" function="true" type="void">
-			<arguments>
-				<argument type="Object"/>
-			</arguments>
-		</element>
-		<element name="writeObjectFieldsForce" function="true" type="void">
-			<arguments>
-				<argument type="Object"/>
-			</arguments>
-		</element>
-		<element name="writeString" function="true" type="void">
-			<arguments>
-				<argument name="anything" type="untyped"/>
-			</arguments>
-		</element>
 	</type>
 	<type name="GenePool" context="Global context">
 <description><![CDATA[GenePool objects are accessed by GenePools[index], or Genotype.genepool and created by GenePools.addGroup(). Usage of the static GenePool object is no longer recommended. See also: GenePools]]></description>
+		<element name="name" type="string"/>
+		<element name="index" type="integer"/>
+		<element name="size" type="integer">
+			<description><![CDATA[In standard.expdef, this is equivalent to the number of unique genotypes. Standard experiment definition uses the Genotype.instances field to indicate that some genotypes exist in multiple instances despite having only one item in the group. Other experiment definitions may create multiple copies of the same genotype.]]></description>
+		</element>
+		<element name="totalpop" type="integer">
+			<description><![CDATA[Takes into account the Genotype.instances field (which may give the total number of instances depending on the experiment definition).]]></description>
+		</element>
+		<element name="fitness" type="string">
+			<description><![CDATA[(intended for advanced users)]]></description>
+		</element>
 		<element name="fitfun" type="integer" min="0" max="1" default="0">
 			<description><![CDATA[Enables fitness scaling.]]></description>
@@ -567,21 +631,27 @@
 better than the average one.]]></description>
 		</element>
-		<element name="fitness" type="string">
-			<description><![CDATA[(intended for advanced users)]]></description>
-		</element>
-		<element name="index" type="integer"/>
-		<element name="iterator" type="Object"/>
-		<element name="name" type="string"/>
-		<element name="size" type="integer">
-			<description><![CDATA[In standard.expdef, this is equivalent to the number of unique genotypes. Standard experiment definition uses the Genotype.instances field to indicate that some genotypes exist in multiple instances despite having only one item in the group. Other experiment definitions may create multiple copies of the same genotype.]]></description>
-		</element>
-		<element name="totalpop" type="integer">
-			<description><![CDATA[Takes into account the Genotype.instances field (which may give the total number of instances depending on the experiment definition).]]></description>
-		</element>
-		<element name="add" function="true" type="Genotype">
-			<description><![CDATA[Creates a new Genotype from the supplied Genotype, Geno or string.
-Returns the created Genotype.]]></description>
+		<element name="get" function="true" type="Genotype">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="findGeno" function="true" type="integer" deprecated="true">
+			<description><![CDATA[Finds the Genotype matching the supplied Geno object.
+returns genotype index or -1 if not found.
+Deprecated. Use the more versatile find() instead of this function.]]></description>
+			<arguments>
+				<argument type="Geno"/>
+			</arguments>
+		</element>
+		<element name="findGenotype" function="true" type="Genotype">
+			<description><![CDATA[Finds the Genotype matching the supplied Genotype object, Geno object, or genotype string.
+returns genotype object or null if not found.]]></description>
 			<arguments>
 				<argument name="genotype object or geno object or string genotype" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="findUID" function="true" type="integer">
+			<arguments>
+				<argument name="uid" type="string"/>
 			</arguments>
 		</element>
@@ -594,10 +664,4 @@
 			</arguments>
 		</element>
-		<element name="best" function="true" type="Genotype">
-			<description><![CDATA[Returns the genotype object having the highest fitness. Unrated genotypes (instances==0) are ranked lower than those having at least one instance.]]></description>
-<arguments/></element>
-		<element name="clear" function="true" type="void">
-			<description><![CDATA[Delete all genotypes. GenePools[group].clear() is equivalent to GenePools.clearGroup(group)]]></description>
-<arguments/></element>
 		<element name="createFromGeno" function="true" type="Genotype" deprecated="true">
 			<description><![CDATA[same as addGeno (to comply with createFrom... convention)
@@ -614,80 +678,36 @@
 			</arguments>
 		</element>
-		<element name="delete" function="true" type="void">
-			<description><![CDATA[Deletes a genotype.]]></description>
-			<arguments>
-				<argument name="genotype object or index" type="untyped"/>
-			</arguments>
-		</element>
-		<element name="deleteOne" function="true" type="void">
-			<description><![CDATA[Deletes one individual, i.e. decreases its 'instances' and deletes the genotype if the 'instances' goes to 0.]]></description>
-			<arguments>
-				<argument name="genotype object or index" type="untyped"/>
-			</arguments>
-		</element>
-		<element name="findGeno" function="true" type="integer" deprecated="true">
-			<description><![CDATA[Finds the Genotype matching the supplied Geno object.
-returns genotype index or -1 if not found.
-Deprecated. Use the more versatile find() instead of this function.]]></description>
-			<arguments>
-				<argument type="Geno"/>
-			</arguments>
-		</element>
-		<element name="findGenotype" function="true" type="Genotype">
-			<description><![CDATA[Finds the Genotype matching the supplied Genotype object, Geno object, or genotype string.
-returns genotype object or null if not found.]]></description>
+		<element name="add" function="true" type="Genotype">
+			<description><![CDATA[Creates a new Genotype from the supplied Genotype, Geno or string.
+Returns the created Genotype.]]></description>
 			<arguments>
 				<argument name="genotype object or geno object or string genotype" type="untyped"/>
 			</arguments>
 		</element>
-		<element name="findUID" function="true" type="integer">
-			<arguments>
-				<argument name="uid" type="string"/>
-			</arguments>
-		</element>
-		<element name="get" function="true" type="Genotype">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getStatsAvg" function="true" type="float">
-			<description><![CDATA[Retrieves data from stats.* object. Can only be used for fields covered by stats.* (subset of Genotype fields).]]></description>
-			<arguments>
-				<argument name="field name" type="string"/>
-			</arguments>
-		</element>
-		<element name="getStatsMax" function="true" type="float">
-			<description><![CDATA[Retrieves data from stats.* object. Can only be used for fields covered by stats.* (subset of Genotype fields).]]></description>
-			<arguments>
-				<argument name="field name" type="string"/>
-			</arguments>
-		</element>
-		<element name="getStatsMin" function="true" type="float">
-			<description><![CDATA[Retrieves data from stats.* object. Can only be used for fields covered by stats.* (subset of Genotype fields).]]></description>
-			<arguments>
-				<argument name="field name" type="string"/>
-			</arguments>
-		</element>
-		<element name="mergeInstances" function="true" type="void">
-			<description><![CDATA[Merge instances of the same genotype]]></description>
+		<element name="worst" function="true" type="Genotype">
+			<description><![CDATA[Returns the genotype object having the lowest fitness. Unrated genotypes (instances==0) are ranked lower than those having at least one instance.]]></description>
+<arguments/></element>
+		<element name="best" function="true" type="Genotype">
+			<description><![CDATA[Returns the genotype object having the highest fitness. Unrated genotypes (instances==0) are ranked lower than those having at least one instance.]]></description>
 <arguments/></element>
 		<element name="random" function="true" type="Genotype">
 			<description><![CDATA[Returns a random genotype object]]></description>
 <arguments/></element>
-		<element name="randomLikeGeno" function="true" type="Genotype">
-			<description><![CDATA[Returns a random genotype index similar to the target genotype.]]></description>
-			<arguments>
-				<argument name="minimum similarity" type="float"/>
-				<argument name="target geno" type="Geno"/>
-			</arguments>
-		</element>
+		<element name="roulette" function="true" type="Genotype">
+			<description><![CDATA[Returns a fitness-proportional genotype object]]></description>
+<arguments/></element>
 		<element name="revroulette" function="true" type="Genotype">
 			<description><![CDATA[Returns a reverse fitness-proportional genotype object]]></description>
 <arguments/></element>
-		<element name="roulette" function="true" type="Genotype">
-			<description><![CDATA[Returns a fitness-proportional genotype object]]></description>
-<arguments/></element>
-		<element name="rouletteLikeGeno" function="true" type="Genotype">
-			<description><![CDATA[Returns a random genotype similar to the target genotype, fitness-proportional.]]></description>
+		<element name="tournament" function="true" type="Genotype">
+			<description><![CDATA[Returns a tournament winner genotype object]]></description>
+			<arguments>
+				<argument name="genotypes in tournament" type="integer"/>
+			</arguments>
+		</element>
+		<element name="randomLikeGeno" function="true" type="Genotype">
+			<description><![CDATA[Returns a random genotype index similar to the target genotype. Read about details:
+http://www.framsticks.com/node/795
+http://www.framsticks.com/node/890]]></description>
 			<arguments>
 				<argument name="minimum similarity" type="float"/>
@@ -695,16 +715,53 @@
 			</arguments>
 		</element>
+		<element name="rouletteLikeGeno" function="true" type="Genotype">
+			<description><![CDATA[Returns a random genotype similar to the target genotype, fitness-proportional. Read about details:
+http://www.framsticks.com/node/795
+http://www.framsticks.com/node/890]]></description>
+			<arguments>
+				<argument name="minimum similarity" type="float"/>
+				<argument name="target geno" type="Geno"/>
+			</arguments>
+		</element>
+		<element name="delete" function="true" type="void">
+			<description><![CDATA[Deletes a genotype.]]></description>
+			<arguments>
+				<argument name="genotype object or index" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="deleteOne" function="true" type="void">
+			<description><![CDATA[Deletes one individual, i.e. decreases its 'instances' and deletes the genotype if the 'instances' goes to 0.]]></description>
+			<arguments>
+				<argument name="genotype object or index" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="clear" function="true" type="void">
+			<description><![CDATA[Delete all genotypes. GenePools[group].clear() is equivalent to GenePools.clearGroup(group)]]></description>
+<arguments/></element>
+		<element name="mergeInstances" function="true" type="void">
+			<description><![CDATA[Merge instances of the same genotype]]></description>
+<arguments/></element>
 		<element name="splitInstances" function="true" type="void">
 			<description><![CDATA[Split genotype instances]]></description>
 <arguments/></element>
-		<element name="tournament" function="true" type="Genotype">
-			<description><![CDATA[Returns a tournament winner genotype object]]></description>
-			<arguments>
-				<argument name="genotypes in tournament" type="integer"/>
-			</arguments>
-		</element>
-		<element name="worst" function="true" type="Genotype">
-			<description><![CDATA[Returns the genotype object having the lowest fitness. Unrated genotypes (instances==0) are ranked lower than those having at least one instance.]]></description>
-<arguments/></element>
+		<element name="iterator" type="Object"/>
+		<element name="getStatsMin" function="true" type="float">
+			<description><![CDATA[Retrieves data from stats.* object. Can only be used for fields covered by stats.* (subset of Genotype fields).]]></description>
+			<arguments>
+				<argument name="field name" type="string"/>
+			</arguments>
+		</element>
+		<element name="getStatsAvg" function="true" type="float">
+			<description><![CDATA[Retrieves data from stats.* object. Can only be used for fields covered by stats.* (subset of Genotype fields).]]></description>
+			<arguments>
+				<argument name="field name" type="string"/>
+			</arguments>
+		</element>
+		<element name="getStatsMax" function="true" type="float">
+			<description><![CDATA[Retrieves data from stats.* object. Can only be used for fields covered by stats.* (subset of Genotype fields).]]></description>
+			<arguments>
+				<argument name="field name" type="string"/>
+			</arguments>
+		</element>
 	</type>
 	<type name="GenePools" context="Global context">
@@ -722,16 +779,39 @@
 g.info="my favorite genotype";
 g.moveTo(GenePools[0]);]]></description>
+		<element name="group" type="integer" deprecated="true">
+			<description><![CDATA[Index of the currently selected group (GenePool).]]></description>
+		</element>
+		<element name="size" type="integer"/>
 		<element name="genotype" type="integer" deprecated="true">
 			<description><![CDATA[Index of the currently selected genotype or -1 if no genotype is selected.]]></description>
 		</element>
-		<element name="group" type="integer" deprecated="true">
-			<description><![CDATA[Index of the currently selected group (GenePool).]]></description>
-		</element>
-		<element name="iterator" type="Object"/>
-		<element name="size" type="integer"/>
-		<element name="addGroup" function="true" type="GenePool">
-			<description><![CDATA[Adds a new gene pool.]]></description>
-			<arguments>
-				<argument name="name" type="string"/>
+		<element name="newGenotype" function="true" type="void" deprecated="true">
+			<description><![CDATA[Makes a new genotype from the supplied string and select the genotype. The resulting genotype is stored in the static Genotype object detached from the genotype group. After calling this function GenePools.genotype is -1 indicating that no genotype from the group is selected. (call "copySelected" if you want to add this gentype to the genotype group).]]></description>
+			<arguments>
+				<argument name="genotype" type="string"/>
+			</arguments>
+		</element>
+		<element name="deleteSelected" function="true" type="void" deprecated="true">
+			<description><![CDATA[Deletes selected genotype from the gene pool (uses the selected genotype object).]]></description>
+<arguments/></element>
+		<element name="deleteOne" function="true" type="void" deprecated="true">
+			<description><![CDATA[Deletes one individual from the gene pool = decreases 'instances' and deletes the genotype if the 'instances' goes to 0.]]></description>
+			<arguments>
+				<argument name="genotype index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="copySelected" function="true" type="void" deprecated="true">
+			<description><![CDATA[Copies the selected genotype to another group.]]></description>
+			<arguments>
+				<argument name="groupindex" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getFromCreature" function="true" type="void" deprecated="true">
+			<description><![CDATA[Copies a genotype from the selected creature. The resulting genotype is stored in the static Genotype object detached from the genotype group.]]></description>
+<arguments/></element>
+		<element name="getFromCreatureObject" function="true" type="void" deprecated="true">
+			<description><![CDATA[Copies a genotype from the creature object passed in argument. The resulting genotype is stored in the static Genotype object detached from the genotype group.]]></description>
+			<arguments>
+				<argument type="Creature"/>
 			</arguments>
 		</element>
@@ -739,19 +819,7 @@
 			<description><![CDATA[Updates the current Genotype's performance values merging them with the current Creture's performance. It assumes the Genotype.instances has a reasonable value and performs the proper weighting. Use your own function instead if these conditions are not met in your experiment.]]></description>
 <arguments/></element>
-		<element name="clear" function="true" type="void">
-			<description><![CDATA[Removes all gene pools except the first one.]]></description>
+		<element name="mutateSelected" function="true" type="void" deprecated="true">
+			<description><![CDATA[Mutates the selected genotype. The resulting genotype is stored in the static Genotype object detached from the genotype group. After calling this function GenePools.genotype is -1 indicating that no genotype from the group is selected.]]></description>
 <arguments/></element>
-		<element name="clearGroup" function="true" type="void" deprecated="true">
-			<description><![CDATA[GenePools[group].clear() is more "object oriented" than GenePools.clearGroup(group)]]></description>
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="copySelected" function="true" type="void" deprecated="true">
-			<description><![CDATA[Copies the selected genotype to another group.]]></description>
-			<arguments>
-				<argument name="groupindex" type="integer"/>
-			</arguments>
-		</element>
 		<element name="crossoverSelected" function="true" type="void" deprecated="true">
 			<description><![CDATA[Crossovers the selected genotype with another one (from the genotype group). The resulting genotype is stored in the static Genotype object detached from the genotype group. After calling this function GenePools.genotype is -1 indicating that no genotype from the group is selected.]]></description>
@@ -760,19 +828,34 @@
 			</arguments>
 		</element>
-		<element name="deleteGroup" function="true" type="void">
-			<description><![CDATA[Removes a gene pool.]]></description>
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="deleteOne" function="true" type="void" deprecated="true">
-			<description><![CDATA[Deletes one individual from the gene pool = decreases 'instances' and deletes the genotype if the 'instances' goes to 0.]]></description>
-			<arguments>
-				<argument name="genotype index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="deleteSelected" function="true" type="void" deprecated="true">
-			<description><![CDATA[Deletes selected genotype from the gene pool (uses the selected genotype object).]]></description>
+		<element name="worst" function="true" type="integer" deprecated="true">
+			<description><![CDATA[Gets worst genotype index.]]></description>
 <arguments/></element>
+		<element name="random" function="true" type="integer" deprecated="true">
+			<description><![CDATA[Gets random genotype index.]]></description>
+<arguments/></element>
+		<element name="roulette" function="true" type="integer" deprecated="true">
+			<description><![CDATA[Gets fitness-proportional genotype index.]]></description>
+<arguments/></element>
+		<element name="revroulette" function="true" type="integer" deprecated="true">
+			<description><![CDATA[Get reverse fitness-proportional genotype index.]]></description>
+<arguments/></element>
+		<element name="tournament" function="true" type="integer" deprecated="true">
+			<description><![CDATA[Gets tournament winner genotype.]]></description>
+			<arguments>
+				<argument name="genotypes in tournament" type="integer"/>
+			</arguments>
+		</element>
+		<element name="randomLikeThis" function="true" type="integer" deprecated="true">
+			<description><![CDATA[Gets a random genotype index similar to the selected one.]]></description>
+			<arguments>
+				<argument name="minimum similarity" type="float"/>
+			</arguments>
+		</element>
+		<element name="likeThisRoulette" function="true" type="integer" deprecated="true">
+			<description><![CDATA[Gets a random genotype similar to the selected one, fitness-proportional.]]></description>
+			<arguments>
+				<argument name="minimum similarity" type="float"/>
+			</arguments>
+		</element>
 		<element name="findGenotype" function="true" type="integer" deprecated="true">
 			<description><![CDATA[Finds a genotype matching the current genotype. It only makes sense when the current genotype is a result of the genetic operator.]]></description>
@@ -781,4 +864,25 @@
 			<description><![CDATA[Finds a genotype matching the selected creature.]]></description>
 <arguments/></element>
+		<element name="addGroup" function="true" type="GenePool">
+			<description><![CDATA[Adds a new gene pool.]]></description>
+			<arguments>
+				<argument name="name" type="string"/>
+			</arguments>
+		</element>
+		<element name="deleteGroup" function="true" type="void">
+			<description><![CDATA[Removes a gene pool.]]></description>
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="clear" function="true" type="void">
+			<description><![CDATA[Removes all gene pools except the first one.]]></description>
+<arguments/></element>
+		<element name="clearGroup" function="true" type="void" deprecated="true">
+			<description><![CDATA[GenePools[group].clear() is more "object oriented" than GenePools.clearGroup(group)]]></description>
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
 		<element name="get" function="true" type="GenePool">
 			<arguments>
@@ -786,246 +890,10 @@
 			</arguments>
 		</element>
-		<element name="getFromCreature" function="true" type="void" deprecated="true">
-			<description><![CDATA[Copies a genotype from the selected creature. The resulting genotype is stored in the static Genotype object detached from the genotype group.]]></description>
-<arguments/></element>
-		<element name="getFromCreatureObject" function="true" type="void" deprecated="true">
-			<description><![CDATA[Copies a genotype from the creature object passed in argument. The resulting genotype is stored in the static Genotype object detached from the genotype group.]]></description>
-			<arguments>
-				<argument type="Creature"/>
-			</arguments>
-		</element>
-		<element name="likeThisRoulette" function="true" type="integer" deprecated="true">
-			<description><![CDATA[Gets a random genotype similar to the selected one, fitness-proportional.]]></description>
-			<arguments>
-				<argument name="minimum similarity" type="float"/>
-			</arguments>
-		</element>
-		<element name="mutateSelected" function="true" type="void" deprecated="true">
-			<description><![CDATA[Mutates the selected genotype. The resulting genotype is stored in the static Genotype object detached from the genotype group. After calling this function GenePools.genotype is -1 indicating that no genotype from the group is selected.]]></description>
-<arguments/></element>
-		<element name="newGenotype" function="true" type="void" deprecated="true">
-			<description><![CDATA[Makes a new genotype from the supplied string and select the genotype. The resulting genotype is stored in the static Genotype object detached from the genotype group. After calling this function GenePools.genotype is -1 indicating that no genotype from the group is selected. (call "copySelected" if you want to add this gentype to the genotype group).]]></description>
-			<arguments>
-				<argument name="genotype" type="string"/>
-			</arguments>
-		</element>
-		<element name="random" function="true" type="integer" deprecated="true">
-			<description><![CDATA[Gets random genotype index.]]></description>
-<arguments/></element>
-		<element name="randomLikeThis" function="true" type="integer" deprecated="true">
-			<description><![CDATA[Gets a random genotype index similar to the selected one.]]></description>
-			<arguments>
-				<argument name="minimum similarity" type="float"/>
-			</arguments>
-		</element>
-		<element name="revroulette" function="true" type="integer" deprecated="true">
-			<description><![CDATA[Get reverse fitness-proportional genotype index.]]></description>
-<arguments/></element>
-		<element name="roulette" function="true" type="integer" deprecated="true">
-			<description><![CDATA[Gets fitness-proportional genotype index.]]></description>
-<arguments/></element>
-		<element name="tournament" function="true" type="integer" deprecated="true">
-			<description><![CDATA[Gets tournament winner genotype.]]></description>
-			<arguments>
-				<argument name="genotypes in tournament" type="integer"/>
-			</arguments>
-		</element>
-		<element name="worst" function="true" type="integer" deprecated="true">
-			<description><![CDATA[Gets worst genotype index.]]></description>
-<arguments/></element>
+		<element name="iterator" type="Object"/>
 	</type>
 	<type name="GenMan" context="Global context">
 <description><![CDATA[Manages various genetic operations, using appropriate operators for the argument genotype format.]]></description>
-		<element name="changedProperty" type="integer"/>
-		<element name="changedPropertyId" type="string"/>
-		<element name="f0_c_del" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_c_new" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_c_wei" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_j_del" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_j_new" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_j_rsf" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_j_stf" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_j_stm" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_j_vblu" type="float" min="0" max="100" default="0.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_j_vgrn" type="float" min="0" max="100" default="0.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_j_vred" type="float" min="0" max="100" default="0.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_n_del" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_n_new" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_n_prp" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_nodel_tag" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[You can tag elements using their 'i' field and the i="mi=d" tag.
-Mutations will not delete such elements.
-The i="mi=dm" combination is allowed.]]></description>
-		</element>
-		<element name="f0_nomod_tag" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[You can tag elements using their 'i' field and the i="mi=m" tag.
-Mutations will not modify properties of such elements.
-The i="mi=md" combination is allowed.]]></description>
-		</element>
-		<element name="f0_p_asm" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_p_del" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_p_frc" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_p_ing" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_p_mas" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_p_new" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_p_pos" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_p_swp" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_p_vsiz" type="float" min="0" max="100" default="0.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f1_mut_exmod" type="string">
-			<description><![CDATA[Modifiers that will not be added nor deleted during mutation
-(all: LlRrCcQqFfMmIiWwEeAaSsDdGgBbHh)]]></description>
-		</element>
-		<element name="f1_nmConn" type="float" min="0" max="100" default="0.1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f1_nmNeu" type="float" min="0" max="100" default="0.05">
-			<description><![CDATA[Adds a (connected) neuron or removes a neuron]]></description>
-		</element>
-		<element name="f1_nmProp" type="float" min="0" max="100" default="0.1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f1_nmVal" type="float" min="0" max="100" default="0.05"/>
-		<element name="f1_nmWei" type="float" min="0" max="100" default="1.0"/>
-		<element name="f1_smComma" type="float" min="0" max="100" default="0.02"/>
-		<element name="f1_smJunct" type="float" min="0" max="100" default="0.02"/>
-		<element name="f1_smModif" type="float" min="0" max="100" default="0.1">
-			<description><![CDATA[Modifiers: LlRrCcQqFfMmIiWwEeAaSsDdGgBbHh]]></description>
-		</element>
-		<element name="f1_smX" type="float" min="0" max="100" default="0.05"/>
-		<element name="f1_xo_propor" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[Cross over (exchange) corresponding segments of the two parent genotypes?
-
-f1 uses a two-point crossing over.
-If this option is turned on, cut points will be selected proportionally to neural genes.
-Thus, if both parents have the same number of neurons, then this will be preserved in their children.]]></description>
-		</element>
-		<element name="f2_mutAddOper" type="float" min="0" max="1" default="0.4">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f2_mutConnElem" type="float" min="0" max="1" default="0.33">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f2_mutDelOper" type="float" min="0" max="1" default="0.1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f2_mutHandleOper" type="float" min="0" max="1" default="0.3">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f2_mutJointElem" type="float" min="0" max="1" default="0.33">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f2_mutNeuroElem" type="float" min="0" max="1" default="0.33">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f2_mutPropOper" type="float" min="0" max="1" default="0.2">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_mutDelIns" type="float" min="0" max="1" default="0.1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_mutDelInsLength" type="integer" min="1" max="100" default="5">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_mutDelInsPerChar" type="float" min="0" max="1" default="0.05">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_mutDuplication" type="float" min="0" max="1" default="0.05">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_mutSubstitution" type="float" min="0" max="1" default="0.6">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_mutSubstPerChar" type="float" min="0" max="1" default="0.1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_mutTranslocation" type="float" min="0" max="1" default="0.15">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_xovCrossingOver" type="float" min="0" max="1" default="0.2">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_xovGeneTransfer" type="float" min="0" max="1" default="0.8">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f4_mut_add" type="float" min="0" max="100" default="50.0">
-			<description><![CDATA[mutation: probability of adding a node]]></description>
-		</element>
-		<element name="f4_mut_add_conn" type="float" min="0" max="100" default="15.0">
-			<description><![CDATA[add node mutation: probability of adding a neural connection]]></description>
-		</element>
-		<element name="f4_mut_add_div" type="float" min="0" max="100" default="20.0">
-			<description><![CDATA[add node mutation: probability of adding a division]]></description>
-		</element>
-		<element name="f4_mut_add_neupar" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[add node mutation: probability of adding a neuron property/modifier]]></description>
-		</element>
-		<element name="f4_mut_add_rep" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[add node mutation: probability of adding a repetition]]></description>
-		</element>
-		<element name="f4_mut_add_simp" type="float" min="0" max="100" default="50.0">
-			<description><![CDATA[add node mutation: probability of adding a random, simple gene]]></description>
-		</element>
-		<element name="f4_mut_del" type="float" min="0" max="100" default="20.0">
-			<description><![CDATA[mutation: probability of deleting a node]]></description>
-		</element>
-		<element name="f4_mut_mod" type="float" min="0" max="100" default="30.0">
-			<description><![CDATA[mutation: probability of changing a node]]></description>
-		</element>
-		<element name="f9_mut" type="float" min="0" max="1" default="0.1">
-			<description><![CDATA[How many genes should be mutated during single mutation (1=all genes, 0.1=ten percent)]]></description>
-		</element>
-		<element name="fF_xover" type="float" min="0" max="0.5" default="0.5">
-			<description><![CDATA[0.5 => children are averaged parents.
-0.2 => children are only 20% different from parents.
-0 => each child is identical to one parent (no crossover).]]></description>
-		</element>
-		<element name="gen_extmutinfo" type="integer" min="0" max="2" default="0">
-			<description><![CDATA[If active, information about employed mutation method will be stored in the 'info' field of each mutated genotype.]]></description>
+		<element name="gen_hist" type="integer" min="0" max="1" default="0">
+			<description><![CDATA[Required for phylogenetic analysis]]></description>
 		</element>
 		<element name="gen_hilite" type="integer" min="0" max="1" default="1">
@@ -1033,7 +901,54 @@
 (slows down viewing/editing of huge genotypes)]]></description>
 		</element>
-		<element name="gen_hist" type="integer" min="0" max="1" default="0">
-			<description><![CDATA[Required for phylogenetic analysis]]></description>
-		</element>
+		<element name="gen_extmutinfo" type="integer" min="0" max="2" default="0">
+			<description><![CDATA[If active, information about employed mutation method will be stored in the 'info' field of each mutated genotype.]]></description>
+		</element>
+		<element name="operReport" function="true" type="void">
+			<description><![CDATA[Show available genetic operators]]></description>
+<arguments/></element>
+		<element name="toHTML" function="true" type="string">
+			<description><![CDATA[returns genotype expressed as colored HTML]]></description>
+			<arguments>
+				<argument type="string"/>
+			</arguments>
+		</element>
+		<element name="toHTMLshort" function="true" type="string">
+			<description><![CDATA[returns genotype (abbreviated if needed) expressed as colored HTML]]></description>
+			<arguments>
+				<argument type="string"/>
+			</arguments>
+		</element>
+		<element name="validate" function="true" type="Geno">
+			<description><![CDATA[returns validated (if possible) Geno object from supplied Geno]]></description>
+			<arguments>
+				<argument type="Geno"/>
+			</arguments>
+		</element>
+		<element name="mutate" function="true" type="Geno">
+			<description><![CDATA[returns mutated Geno object from supplied Geno]]></description>
+			<arguments>
+				<argument type="Geno"/>
+			</arguments>
+		</element>
+		<element name="crossOver" function="true" type="Geno">
+			<description><![CDATA[returns crossed over genotype]]></description>
+			<arguments>
+				<argument type="Geno"/>
+				<argument type="Geno"/>
+			</arguments>
+		</element>
+		<element name="getSimplest" function="true" type="Geno">
+			<description><![CDATA[returns the simplest genotype for a given encoding (format). 0 means f0, 4 means f4, etc.]]></description>
+			<arguments>
+				<argument name="format" type="integer"/>
+			</arguments>
+		</element>
+		<element name="clear" function="true"/>
+		<element name="add" function="true"/>
+		<element name="remove" function="true"/>
+		<element name="addGroup" function="true"/>
+		<element name="removeGroup" function="true"/>
+		<element name="changedProperty" type="integer"/>
+		<element name="changedPropertyId" type="string"/>
 		<element name="genoper_f0" type="integer" min="0" max="0">
 			<description><![CDATA[]]></description>
@@ -1303,48 +1218,190 @@
    time (t) float 0..6.28319]]></description>
 		</element>
-		<element name="add" function="true"/>
-		<element name="addGroup" function="true"/>
-		<element name="clear" function="true"/>
-		<element name="crossOver" function="true" type="Geno">
-			<description><![CDATA[returns crossed over genotype]]></description>
-			<arguments>
-				<argument type="Geno"/>
-				<argument type="Geno"/>
-			</arguments>
-		</element>
-		<element name="getSimplest" function="true" type="Geno">
-			<description><![CDATA[returns the simplest genotype for a given encoding (format). 0 means f0, 4 means f4, etc.]]></description>
-			<arguments>
-				<argument name="format" type="integer"/>
-			</arguments>
-		</element>
-		<element name="mutate" function="true" type="Geno">
-			<description><![CDATA[returns mutated Geno object from supplied Geno]]></description>
-			<arguments>
-				<argument type="Geno"/>
-			</arguments>
-		</element>
-		<element name="operReport" function="true" type="void">
-			<description><![CDATA[Show available genetic operators]]></description>
-<arguments/></element>
-		<element name="remove" function="true"/>
-		<element name="removeGroup" function="true"/>
-		<element name="toHTML" function="true" type="string">
-			<description><![CDATA[returns genotype expressed as colored HTML]]></description>
-			<arguments>
-				<argument type="string"/>
-			</arguments>
-		</element>
-		<element name="toHTMLshort" function="true" type="string">
-			<description><![CDATA[returns genotype (abbreviated if needed) expressed as colored HTML]]></description>
-			<arguments>
-				<argument type="string"/>
-			</arguments>
-		</element>
-		<element name="validate" function="true" type="Geno">
-			<description><![CDATA[returns validated (if possible) Geno object from supplied Geno]]></description>
-			<arguments>
-				<argument type="Geno"/>
-			</arguments>
+		<element name="f0_nodel_tag" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[You can tag elements using their 'i' field and the i="mi=d" tag.
+Mutations will not delete such elements.
+The i="mi=dm" combination is allowed.]]></description>
+		</element>
+		<element name="f0_nomod_tag" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[You can tag elements using their 'i' field and the i="mi=m" tag.
+Mutations will not modify properties of such elements.
+The i="mi=md" combination is allowed.]]></description>
+		</element>
+		<element name="f0_p_new" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_p_del" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_p_swp" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_p_pos" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_p_mas" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_p_frc" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_p_ing" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_p_asm" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_p_vsiz" type="float" min="0" max="100" default="0.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_j_new" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_j_del" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_j_stm" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_j_stf" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_j_rsf" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_j_vred" type="float" min="0" max="100" default="0.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_j_vgrn" type="float" min="0" max="100" default="0.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_j_vblu" type="float" min="0" max="100" default="0.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_n_new" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_n_del" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_n_prp" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_c_new" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_c_del" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_c_wei" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f1_xo_propor" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[Cross over (exchange) corresponding segments of the two parent genotypes?
+
+f1 uses a two-point crossing over.
+If this option is turned on, cut points will be selected proportionally to neural genes.
+Thus, if both parents have the same number of neurons, then this will be preserved in their children.]]></description>
+		</element>
+		<element name="f1_smX" type="float" min="0" max="100" default="0.05"/>
+		<element name="f1_smJunct" type="float" min="0" max="100" default="0.02"/>
+		<element name="f1_smComma" type="float" min="0" max="100" default="0.02"/>
+		<element name="f1_smModif" type="float" min="0" max="100" default="0.1">
+			<description><![CDATA[Modifiers: LlRrCcQqFfMmIiWwEeAaSsDdGgBbHh]]></description>
+		</element>
+		<element name="f1_mut_exmod" type="string">
+			<description><![CDATA[Modifiers that will not be added nor deleted during mutation
+(all: LlRrCcQqFfMmIiWwEeAaSsDdGgBbHh)]]></description>
+		</element>
+		<element name="f1_nmNeu" type="float" min="0" max="100" default="0.05">
+			<description><![CDATA[Adds a (connected) neuron or removes a neuron]]></description>
+		</element>
+		<element name="f1_nmConn" type="float" min="0" max="100" default="0.1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f1_nmProp" type="float" min="0" max="100" default="0.1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f1_nmWei" type="float" min="0" max="100" default="1.0"/>
+		<element name="f1_nmVal" type="float" min="0" max="100" default="0.05"/>
+		<element name="f2_mutAddOper" type="float" min="0" max="1" default="0.4">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f2_mutJointElem" type="float" min="0" max="1" default="0.33">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f2_mutNeuroElem" type="float" min="0" max="1" default="0.33">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f2_mutConnElem" type="float" min="0" max="1" default="0.33">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f2_mutDelOper" type="float" min="0" max="1" default="0.1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f2_mutHandleOper" type="float" min="0" max="1" default="0.3">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f2_mutPropOper" type="float" min="0" max="1" default="0.2">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_mutSubstitution" type="float" min="0" max="1" default="0.6">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_mutSubstPerChar" type="float" min="0" max="1" default="0.1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_mutDelIns" type="float" min="0" max="1" default="0.1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_mutDelInsPerChar" type="float" min="0" max="1" default="0.05">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_mutDelInsLength" type="integer" min="1" max="100" default="5">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_mutDuplication" type="float" min="0" max="1" default="0.05">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_mutTranslocation" type="float" min="0" max="1" default="0.15">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_xovGeneTransfer" type="float" min="0" max="1" default="0.8">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_xovCrossingOver" type="float" min="0" max="1" default="0.2">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f4_mut_add" type="float" min="0" max="100" default="50.0">
+			<description><![CDATA[mutation: probability of adding a node]]></description>
+		</element>
+		<element name="f4_mut_add_div" type="float" min="0" max="100" default="20.0">
+			<description><![CDATA[add node mutation: probability of adding a division]]></description>
+		</element>
+		<element name="f4_mut_add_conn" type="float" min="0" max="100" default="15.0">
+			<description><![CDATA[add node mutation: probability of adding a neural connection]]></description>
+		</element>
+		<element name="f4_mut_add_neupar" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[add node mutation: probability of adding a neuron property/modifier]]></description>
+		</element>
+		<element name="f4_mut_add_rep" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[add node mutation: probability of adding a repetition]]></description>
+		</element>
+		<element name="f4_mut_add_simp" type="float" min="0" max="100" default="50.0">
+			<description><![CDATA[add node mutation: probability of adding a random, simple gene]]></description>
+		</element>
+		<element name="f4_mut_del" type="float" min="0" max="100" default="20.0">
+			<description><![CDATA[mutation: probability of deleting a node]]></description>
+		</element>
+		<element name="f4_mut_mod" type="float" min="0" max="100" default="30.0">
+			<description><![CDATA[mutation: probability of changing a node]]></description>
+		</element>
+		<element name="f9_mut" type="float" min="0" max="1" default="0.1">
+			<description><![CDATA[How many genes should be mutated during single mutation (1=all genes, 0.1=ten percent)]]></description>
+		</element>
+		<element name="fF_xover" type="float" min="0" max="0.5" default="0.5">
+			<description><![CDATA[0.5 => children are averaged parents.
+0.2 => children are only 20% different from parents.
+0 => each child is identical to one parent (no crossover).]]></description>
 		</element>
 	</type>
@@ -1354,33 +1411,33 @@
 			<description><![CDATA[]]></description>
 		</element>
+		<element name="gen_mvalid" type="integer">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="gen_mvalidated" type="integer">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="gen_minvalid" type="integer">
+			<description><![CDATA[couldn't be repaired]]></description>
+		</element>
 		<element name="gen_mfailed" type="integer">
 			<description><![CDATA[couldn't be performed]]></description>
 		</element>
-		<element name="gen_minvalid" type="integer">
+		<element name="gen_xovalid" type="integer">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="gen_xovalidated" type="integer">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="gen_xoinvalid" type="integer">
 			<description><![CDATA[couldn't be repaired]]></description>
+		</element>
+		<element name="gen_xofailed" type="integer">
+			<description><![CDATA[couldn't be performed]]></description>
 		</element>
 		<element name="gen_mutimpr" type="float">
 			<description><![CDATA[total cumulative mutation change]]></description>
 		</element>
-		<element name="gen_mvalid" type="integer">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="gen_mvalidated" type="integer">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="gen_xofailed" type="integer">
-			<description><![CDATA[couldn't be performed]]></description>
-		</element>
 		<element name="gen_xoimpr" type="float">
 			<description><![CDATA[total cumulative crossover change]]></description>
-		</element>
-		<element name="gen_xoinvalid" type="integer">
-			<description><![CDATA[couldn't be repaired]]></description>
-		</element>
-		<element name="gen_xovalid" type="integer">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="gen_xovalidated" type="integer">
-			<description><![CDATA[]]></description>
 		</element>
 		<element name="clrstats" function="true" type="void">
@@ -1391,21 +1448,16 @@
 <description><![CDATA[All information about a single genotype.
 This is a genetics-only object which does not contain any performance data. See also: Genotype class]]></description>
-		<element name="autoname" type="string"/>
-		<element name="f0genotype" type="string">
-			<description><![CDATA[converted to f0 genotype]]></description>
-		</element>
-		<element name="format" type="integer">
-			<description><![CDATA[Genotype format]]></description>
-		</element>
-		<element name="genotype" type="string"/>
-		<element name="info" type="string">
-			<description><![CDATA[Additional information or comments]]></description>
-		</element>
-		<element name="isValid" type="integer" min="0" max="1"/>
 		<element name="name" type="string"/>
 		<element name="rawgenotype" type="string">
 			<description><![CDATA[Genotype, excluding the format specifier]]></description>
 		</element>
-		<element name="toVector" type="Vector"/>
+		<element name="info" type="string">
+			<description><![CDATA[Additional information or comments]]></description>
+		</element>
+		<element name="format" type="integer">
+			<description><![CDATA[Genotype format]]></description>
+		</element>
+		<element name="genotype" type="string"/>
+		<element name="isValid" type="integer" min="0" max="1"/>
 		<element name="getConverted" function="true" type="Geno">
 			<arguments>
@@ -1413,5 +1465,13 @@
 			</arguments>
 		</element>
+		<element name="f0genotype" type="string">
+			<description><![CDATA[converted to f0 genotype]]></description>
+		</element>
 		<element name="new" function="true" type="Geno"><arguments/></element>
+		<element name="newFromString" function="true" type="Geno">
+			<arguments>
+				<argument name="genotype" type="string"/>
+			</arguments>
+		</element>
 		<element name="newFrom" function="true" type="Geno">
 			<arguments>
@@ -1422,9 +1482,6 @@
 			</arguments>
 		</element>
-		<element name="newFromString" function="true" type="Geno">
-			<arguments>
-				<argument name="genotype" type="string"/>
-			</arguments>
-		</element>
+		<element name="autoname" type="string"/>
+		<element name="toVector" type="Vector"/>
 		<element name="newFromVector" function="true" type="Geno">
 			<arguments>
@@ -1436,117 +1493,161 @@
 <description><![CDATA[A Genotype with the associated performance information. Adding genotypes to GenePool makes them accessible in Framsticks GUI and enables the use of GenePool selection methods.
 Before version 4.0rc4 the static Genotype object was used in functions operating on the "selected" genotype. This is now deprecated as all operations can be performed using the more convenient direct access (see GenePools).]]></description>
-		<element name="convtrace1" type="string"/>
+		<element name="name" type="string"/>
+		<element name="genotype" type="string"/>
+		<element name="info" type="string">
+			<description><![CDATA[Additional information or comments]]></description>
+		</element>
+		<element name="simi" type="float">
+			<description><![CDATA[Read about details:
+http://www.framsticks.com/node/795
+http://www.framsticks.com/node/890]]></description>
+		</element>
+		<element name="energ0" type="float"/>
+		<element name="strsiz" type="float"/>
+		<element name="strjoints" type="float"/>
+		<element name="nnsiz" type="float"/>
+		<element name="nncon" type="float"/>
+		<element name="numparts" type="float"/>
+		<element name="numjoints" type="float"/>
+		<element name="numneurons" type="float"/>
+		<element name="numconnections" type="float"/>
+		<element name="num" type="integer"/>
+		<element name="gnum" type="integer"/>
+		<element name="popsiz" type="integer"/>
+		<element name="instances" type="integer">
+			<description><![CDATA[Copies of this genotype]]></description>
+		</element>
+		<element name="lifespan" type="float">
+			<description><![CDATA[Average life span]]></description>
+		</element>
+		<element name="velocity" type="float">
+			<description><![CDATA[Average velocity]]></description>
+		</element>
 		<element name="distance" type="float"/>
-		<element name="energ0" type="float"/>
-		<element name="f0genotype" type="string">
-			<description><![CDATA[converted to f0 genotype]]></description>
-		</element>
+		<element name="vertvel" type="float"/>
+		<element name="vertpos" type="float"/>
 		<element name="fit" type="float"/>
 		<element name="fit2" type="float">
 			<description><![CDATA[Fitness shifted by (avg-n*stddev)]]></description>
 		</element>
+		<element name="f0genotype" type="string">
+			<description><![CDATA[converted to f0 genotype]]></description>
+		</element>
+		<element name="convtrace1" type="string"/>
+		<element name="user1" type="untyped"/>
+		<element name="user2" type="untyped"/>
+		<element name="user3" type="untyped"/>
+		<element name="mutate" function="true" type="void"><arguments/></element>
+		<element name="isValid" type="integer" min="0" max="1"/>
+		<element name="getNormalized" function="true" type="float">
+			<arguments>
+				<argument name="property name or index" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="geno" type="Geno">
+			<description><![CDATA[Geno object for this Genotype]]></description>
+		</element>
+		<element name="uid" type="string">
+			<description><![CDATA[Unique identifier]]></description>
+		</element>
+		<element name="getModel" function="true" type="Model"><arguments/></element>
+		<element name="splitInstances" function="true" type="void"><arguments/></element>
+		<element name="newFromString" function="true" type="Genotype">
+			<arguments>
+				<argument name="genotype" type="string"/>
+			</arguments>
+		</element>
+		<element name="newFromGeno" function="true" type="Genotype">
+			<arguments>
+				<argument name="geno" type="Geno"/>
+			</arguments>
+		</element>
+		<element name="newFromCreature" function="true" type="Genotype">
+			<arguments>
+				<argument name="creature" type="Creature"/>
+			</arguments>
+		</element>
+		<element name="addPerformanceFromCreature" function="true" type="void">
+			<description><![CDATA[Updates the Genotype's performance values merging them with the supplied Creture's performance. It assumes the Genotype.instances has a reasonable value and performs the proper weighting. Use your own function instead if these conditions are not met in your experiment.]]></description>
+			<arguments>
+				<argument type="Creature"/>
+			</arguments>
+		</element>
+		<element name="moveTo" function="true" type="void">
+			<description><![CDATA[the genotype is removed from its current pool when pool=null]]></description>
+			<arguments>
+				<argument name="pool" type="GenePool"/>
+			</arguments>
+		</element>
+		<element name="copyTo" function="true" type="Genotype">
+			<description><![CDATA[returns the duplicate genotype, created in the target pool]]></description>
+			<arguments>
+				<argument name="pool" type="GenePool"/>
+			</arguments>
+		</element>
+		<element name="delete" function="true" type="void"><arguments/></element>
+		<element name="deleteOne" function="true" type="void">
+			<description><![CDATA[]]></description>
+<arguments/></element>
 		<element name="genepool" type="untyped">
 			<description><![CDATA[GenePool object or null when not in pool]]></description>
 		</element>
-		<element name="geno" type="Geno">
-			<description><![CDATA[Geno object for this Genotype]]></description>
-		</element>
-		<element name="genotype" type="string"/>
-		<element name="gnum" type="integer"/>
 		<element name="index" type="integer">
 			<description><![CDATA[-1 when not in pool.
 Note that the index changes depending on the current genotype position in the pool. Use Genotype.uid if you need a permanent identifier that persists through the entire object lifetime.]]></description>
 		</element>
-		<element name="info" type="string">
-			<description><![CDATA[Additional information or comments]]></description>
-		</element>
-		<element name="instances" type="integer">
-			<description><![CDATA[Copies of this genotype]]></description>
-		</element>
-		<element name="isValid" type="integer" min="0" max="1"/>
-		<element name="lifespan" type="float">
-			<description><![CDATA[Average life span]]></description>
-		</element>
-		<element name="name" type="string"/>
-		<element name="nncon" type="float"/>
-		<element name="nnsiz" type="float"/>
-		<element name="num" type="integer"/>
-		<element name="numconnections" type="float"/>
-		<element name="numjoints" type="float"/>
-		<element name="numneurons" type="float"/>
-		<element name="numparts" type="float"/>
-		<element name="popsiz" type="integer"/>
-		<element name="simi" type="float"/>
-		<element name="strjoints" type="float"/>
-		<element name="strsiz" type="float"/>
-		<element name="uid" type="string">
-			<description><![CDATA[Unique identifier]]></description>
-		</element>
-		<element name="user1" type="untyped"/>
-		<element name="user2" type="untyped"/>
-		<element name="user3" type="untyped"/>
-		<element name="velocity" type="float">
-			<description><![CDATA[Average velocity]]></description>
-		</element>
-		<element name="vertpos" type="float"/>
-		<element name="vertvel" type="float"/>
-		<element name="addPerformanceFromCreature" function="true" type="void">
-			<description><![CDATA[Updates the Genotype's performance values merging them with the supplied Creture's performance. It assumes the Genotype.instances has a reasonable value and performs the proper weighting. Use your own function instead if these conditions are not met in your experiment.]]></description>
-			<arguments>
-				<argument type="Creature"/>
-			</arguments>
-		</element>
-		<element name="copyTo" function="true" type="Genotype">
-			<description><![CDATA[returns the duplicate genotype, created in the target pool]]></description>
-			<arguments>
-				<argument name="pool" type="GenePool"/>
-			</arguments>
-		</element>
-		<element name="delete" function="true" type="void"><arguments/></element>
-		<element name="deleteOne" function="true" type="void">
-			<description><![CDATA[]]></description>
-<arguments/></element>
-		<element name="getModel" function="true" type="Model"><arguments/></element>
-		<element name="getNormalized" function="true" type="float">
-			<arguments>
-				<argument name="property name or index" type="untyped"/>
-			</arguments>
-		</element>
-		<element name="moveTo" function="true" type="void">
-			<description><![CDATA[the genotype is removed from its current pool when pool=null]]></description>
-			<arguments>
-				<argument name="pool" type="GenePool"/>
-			</arguments>
-		</element>
-		<element name="mutate" function="true" type="void"><arguments/></element>
-		<element name="newFromCreature" function="true" type="Genotype">
-			<arguments>
-				<argument name="creature" type="Creature"/>
-			</arguments>
-		</element>
-		<element name="newFromGeno" function="true" type="Genotype">
-			<arguments>
-				<argument name="geno" type="Geno"/>
-			</arguments>
-		</element>
-		<element name="newFromString" function="true" type="Genotype">
-			<arguments>
-				<argument name="genotype" type="string"/>
-			</arguments>
-		</element>
-		<element name="splitInstances" function="true" type="void"><arguments/></element>
 	</type>
 	<type name="Interface" context="Global context">
 <description><![CDATA[Used to query for object member descriptions. Example:
 var iface=Interface.makeFrom(someobject); var description="this object has "+iface.properties+" properties, first property is "+iface.getId(0);]]></description>
-		<element name="groups" type="integer"/>
 		<element name="name" type="string"/>
 		<element name="properties" type="integer"/>
+		<element name="groups" type="integer"/>
+		<element name="get" function="true" type="untyped">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getId" function="true" type="string">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getName" function="true" type="string">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getGroup" function="true" type="integer">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getGroupName" function="true" type="string">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getType" function="true" type="string">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getFlags" function="true" type="integer">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getHelp" function="true" type="string">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="findId" function="true" type="integer">
+			<arguments>
+				<argument name="name" type="string"/>
+			</arguments>
+		</element>
 		<element name="findGroupId" function="true" type="integer">
-			<arguments>
-				<argument name="name" type="string"/>
-			</arguments>
-		</element>
-		<element name="findId" function="true" type="integer">
 			<arguments>
 				<argument name="name" type="string"/>
@@ -1559,44 +1660,21 @@
 			</arguments>
 		</element>
-		<element name="get" function="true" type="untyped">
+		<element name="makeFrom" function="true" type="Interface">
+			<arguments>
+				<argument type="Object"/>
+			</arguments>
+		</element>
+		<element name="set" function="true" type="void">
 			<arguments>
 				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getFlags" function="true" type="integer">
+				<argument name="value" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="setDefault" function="true" type="void">
 			<arguments>
 				<argument name="index" type="integer"/>
 			</arguments>
 		</element>
-		<element name="getGroup" function="true" type="integer">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getGroupName" function="true" type="string">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getHelp" function="true" type="string">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getId" function="true" type="string">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getName" function="true" type="string">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getType" function="true" type="string">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
+		<element name="setAllDefault" function="true" type="void"><arguments/></element>
 		<element name="invoke" function="true" type="void">
 			<arguments>
@@ -1605,88 +1683,98 @@
 			</arguments>
 		</element>
-		<element name="makeFrom" function="true" type="Interface">
-			<arguments>
-				<argument type="Object"/>
-			</arguments>
-		</element>
-		<element name="set" function="true" type="void">
-			<arguments>
-				<argument name="index" type="integer"/>
-				<argument name="value" type="untyped"/>
-			</arguments>
-		</element>
-		<element name="setAllDefault" function="true" type="void"><arguments/></element>
-		<element name="setDefault" function="true" type="void">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
 	</type>
 	<type name="Joint" context="Global context">
+		<element name="p1" type="integer" min="-1" max="999999" default="-1"/>
+		<element name="p2" type="integer" min="-1" max="999999" default="-1"/>
+		<element name="rx" type="float"/>
+		<element name="ry" type="float"/>
+		<element name="rz" type="float"/>
 		<element name="dx" type="float" min="-2" max="2" default="0.0"/>
 		<element name="dy" type="float" min="-2" max="2" default="0.0"/>
 		<element name="dz" type="float" min="-2" max="2" default="0.0"/>
+		<element name="sh" type="integer" min="0" max="1" default="0"/>
+		<element name="stif" type="float" min="0" max="1" default="1.0"/>
+		<element name="rotstif" type="float" min="0" max="1" default="1.0"/>
+		<element name="stam" type="float" min="0" max="1" default="0.25"/>
 		<element name="i" type="string"/>
-		<element name="p1" type="integer" min="-1" max="999999" default="-1"/>
-		<element name="p2" type="integer" min="-1" max="999999" default="-1"/>
-		<element name="rotstif" type="float" min="0" max="1" default="1.0"/>
-		<element name="rx" type="float"/>
-		<element name="ry" type="float"/>
-		<element name="rz" type="float"/>
-		<element name="sh" type="integer" min="0" max="1" default="0"/>
-		<element name="stam" type="float" min="0" max="1" default="0.25"/>
-		<element name="stif" type="float" min="0" max="1" default="1.0"/>
+		<element name="Vstyle" type="string"/>
+		<element name="vr" type="float" min="0" max="1" default="0.5"/>
+		<element name="vg" type="float" min="0" max="1" default="0.5"/>
 		<element name="vb" type="float" min="0" max="1" default="0.5"/>
-		<element name="vg" type="float" min="0" max="1" default="0.5"/>
-		<element name="vr" type="float" min="0" max="1" default="0.5"/>
-		<element name="Vstyle" type="string"/>
 	</type>
 	<type name="Loader" context="Global context">
 <description><![CDATA[Support for loading files in the Framsticks format. Used in the experiment definition to retrieve experiment state (see OnExpLoad function in standard.expdef). Registered objects (addClass) are handled automaticaly. Loader can call user functions defined by setBreakLabel.]]></description>
+		<element name="addClass" function="true" type="void">
+			<arguments>
+				<argument type="Object"/>
+			</arguments>
+		</element>
+		<element name="removeClass" function="true" type="void">
+			<arguments>
+				<argument type="Object"/>
+			</arguments>
+		</element>
+		<element name="clearClasses" function="true" type="void"><arguments/></element>
+		<element name="go" function="true" type="integer"><arguments/></element>
+		<element name="run" function="true" type="integer"><arguments/></element>
+		<element name="status" type="integer"/>
+		<element name="comment" type="string"/>
+		<element name="setBreak" function="true" type="void">
+			<arguments>
+				<argument name="break conditions" type="integer"/>
+			</arguments>
+		</element>
+		<element name="setBreakLabel" function="true" type="void">
+			<arguments>
+				<argument name="break condition" type="integer"/>
+				<argument name="label" type="string"/>
+			</arguments>
+		</element>
+		<element name="abort" function="true" type="void"><arguments/></element>
+		<element name="currentObject" type="Object"/>
+		<element name="objectName" type="string"/>
+		<element name="loadObject" function="true" type="void"><arguments/></element>
+		<element name="skipObject" function="true" type="void"><arguments/></element>
+		<element name="firstComment" type="integer" min="0" max="1"/>
+		<element name="BeforeObject" type="integer"/>
 		<element name="AfterObject" type="integer"/>
-		<element name="BeforeObject" type="integer"/>
 		<element name="BeforeUnknown" type="integer"/>
-		<element name="comment" type="string"/>
-		<element name="currentObject" type="Object"/>
-		<element name="firstComment" type="integer" min="0" max="1"/>
-		<element name="objectName" type="string"/>
 		<element name="OnComment" type="integer"/>
 		<element name="OnError" type="integer"/>
-		<element name="status" type="integer"/>
-		<element name="abort" function="true" type="void"><arguments/></element>
-		<element name="addClass" function="true" type="void">
-			<arguments>
-				<argument type="Object"/>
-			</arguments>
-		</element>
-		<element name="clearClasses" function="true" type="void"><arguments/></element>
-		<element name="go" function="true" type="integer"><arguments/></element>
-		<element name="loadObject" function="true" type="void"><arguments/></element>
-		<element name="removeClass" function="true" type="void">
-			<arguments>
-				<argument type="Object"/>
-			</arguments>
-		</element>
-		<element name="run" function="true" type="integer"><arguments/></element>
-		<element name="setBreak" function="true" type="void">
-			<arguments>
-				<argument name="break conditions" type="integer"/>
-			</arguments>
-		</element>
-		<element name="setBreakLabel" function="true" type="void">
-			<arguments>
-				<argument name="break condition" type="integer"/>
-				<argument name="label" type="string"/>
-			</arguments>
-		</element>
-		<element name="skipObject" function="true" type="void"><arguments/></element>
 	</type>
 	<type name="Math" context="Global context">
 <description><![CDATA[Mathematical functions library.]]></description>
 		<element name="pi" type="float"/>
+		<element name="twopi" type="float"/>
 		<element name="pi2" type="float"/>
 		<element name="pi4" type="float"/>
+		<element name="random" function="true" type="integer">
+			<description><![CDATA[0..num-1]]></description>
+			<arguments>
+				<argument name="num" type="integer"/>
+			</arguments>
+		</element>
 		<element name="rnd01" type="float"/>
+		<element name="rndUni" function="true" type="float">
+			<description><![CDATA[[begin..end)]]></description>
+			<arguments>
+				<argument name="begin" type="float"/>
+				<argument name="end" type="float"/>
+			</arguments>
+		</element>
 		<element name="rndGaussStd" type="float"/>
+		<element name="rndGauss" function="true" type="float">
+			<description><![CDATA[rndGaussStd is rndGauss(0,1)]]></description>
+			<arguments>
+				<argument name="mean" type="float"/>
+				<argument name="standard deviation" type="float"/>
+			</arguments>
+		</element>
+		<element name="rndCustom" function="true" type="float">
+			<description><![CDATA[the parameter describes the desired random distribution, being a sum of uniform distributions, eg. rndCustom([-10,-1, -1,1, 1,10]) defines 3 uniform distribution intervals [-1,10) [-1,1), [1,10)]]></description>
+			<arguments>
+				<argument type="Vector"/>
+			</arguments>
+		</element>
 		<element name="seed" type="integer">
 			<description><![CDATA[Random number generator seed.
@@ -1694,8 +1782,10 @@
 Note #2: When read, the value behaves just like a regular variable that stores the previously assigned value. It does NOT reflect the internal random generator seed that changes every time a random number has been generated.]]></description>
 		</element>
+		<element name="randomize" function="true">
+			<description><![CDATA[Set random seed for the random number generator.]]></description>
+		</element>
 		<element name="time" type="float">
 			<description><![CDATA[Number of seconds since the Epoch (00:00:00 UTC/GMT, January 1, 1970)]]></description>
 		</element>
-		<element name="twopi" type="float"/>
 		<element name="abs" function="true" type="float">
 			<arguments>
@@ -1703,10 +1793,25 @@
 			</arguments>
 		</element>
+		<element name="sign" function="true" type="integer">
+			<arguments>
+				<argument type="float"/>
+			</arguments>
+		</element>
+		<element name="sin" function="true" type="float">
+			<arguments>
+				<argument type="float"/>
+			</arguments>
+		</element>
+		<element name="cos" function="true" type="float">
+			<arguments>
+				<argument type="float"/>
+			</arguments>
+		</element>
+		<element name="asin" function="true" type="float">
+			<arguments>
+				<argument type="float"/>
+			</arguments>
+		</element>
 		<element name="acos" function="true" type="float">
-			<arguments>
-				<argument type="float"/>
-			</arguments>
-		</element>
-		<element name="asin" function="true" type="float">
 			<arguments>
 				<argument type="float"/>
@@ -1724,20 +1829,31 @@
 			</arguments>
 		</element>
-		<element name="cos" function="true" type="float">
+		<element name="pow" function="true" type="float">
+			<arguments>
+				<argument name="a" type="float"/>
+				<argument name="b" type="float"/>
+			</arguments>
+		</element>
+		<element name="exp" function="true" type="float">
 			<arguments>
 				<argument type="float"/>
 			</arguments>
 		</element>
-		<element name="exp" function="true" type="float">
+		<element name="log" function="true" type="float">
 			<arguments>
 				<argument type="float"/>
 			</arguments>
 		</element>
-		<element name="log" function="true" type="float">
+		<element name="sqrt" function="true" type="float">
 			<arguments>
 				<argument type="float"/>
 			</arguments>
 		</element>
-		<element name="max" function="true" type="untyped">
+		<element name="sigmoid" function="true" type="float">
+			<arguments>
+				<argument type="float"/>
+			</arguments>
+		</element>
+		<element name="min" function="true" type="untyped">
 			<arguments>
 				<argument type="untyped"/>
@@ -1745,5 +1861,5 @@
 			</arguments>
 		</element>
-		<element name="min" function="true" type="untyped">
+		<element name="max" function="true" type="untyped">
 			<arguments>
 				<argument type="untyped"/>
@@ -1751,77 +1867,32 @@
 			</arguments>
 		</element>
-		<element name="pow" function="true" type="float">
-			<arguments>
-				<argument name="a" type="float"/>
-				<argument name="b" type="float"/>
-			</arguments>
-		</element>
-		<element name="random" function="true" type="integer">
-			<description><![CDATA[0..num-1]]></description>
-			<arguments>
-				<argument name="num" type="integer"/>
-			</arguments>
-		</element>
-		<element name="randomize" function="true">
-			<description><![CDATA[Set random seed for the random number generator.]]></description>
-		</element>
-		<element name="rndCustom" function="true" type="float">
-			<description><![CDATA[the parameter describes the desired random distribution, being a sum of uniform distributions, eg. rndCustom([-10,-1, -1,1, 1,10]) defines 3 uniform distribution intervals [-1,10) [-1,1), [1,10)]]></description>
-			<arguments>
-				<argument type="Vector"/>
-			</arguments>
-		</element>
-		<element name="rndGauss" function="true" type="float">
-			<description><![CDATA[rndGaussStd is rndGauss(0,1)]]></description>
-			<arguments>
-				<argument name="mean" type="float"/>
-				<argument name="standard deviation" type="float"/>
-			</arguments>
-		</element>
-		<element name="rndUni" function="true" type="float">
-			<description><![CDATA[[begin..end)]]></description>
-			<arguments>
-				<argument name="begin" type="float"/>
-				<argument name="end" type="float"/>
-			</arguments>
-		</element>
-		<element name="sigmoid" function="true" type="float">
-			<arguments>
-				<argument type="float"/>
-			</arguments>
-		</element>
-		<element name="sign" function="true" type="integer">
-			<arguments>
-				<argument type="float"/>
-			</arguments>
-		</element>
-		<element name="sin" function="true" type="float">
-			<arguments>
-				<argument type="float"/>
-			</arguments>
-		</element>
-		<element name="sqrt" function="true" type="float">
-			<arguments>
-				<argument type="float"/>
-			</arguments>
-		</element>
 	</type>
 	<type name="MechJoint" context="Global context">
+		<element name="rx" type="float"/>
+		<element name="ry" type="float"/>
+		<element name="rz" type="float"/>
 		<element name="dx" type="float"/>
 		<element name="dy" type="float"/>
 		<element name="dz" type="float"/>
+		<element name="stif" type="float"/>
+		<element name="rotstif" type="float"/>
 		<element name="part1" type="MechPart"/>
 		<element name="part2" type="MechPart"/>
-		<element name="rotstif" type="float"/>
+		<element name="stress" type="float"/>
 		<element name="rotstress" type="float"/>
-		<element name="rx" type="float"/>
-		<element name="ry" type="float"/>
-		<element name="rz" type="float"/>
-		<element name="stif" type="float"/>
-		<element name="stress" type="float"/>
 	</type>
 	<type name="MechPart" context="Global context">
+		<element name="x" type="float"/>
+		<element name="y" type="float"/>
+		<element name="z" type="float"/>
+		<element name="pos" type="XYZ"/>
+		<element name="m" type="float"/>
+		<element name="s" type="float"/>
+		<element name="vol" type="float"/>
 		<element name="fr" type="float"/>
-		<element name="m" type="float"/>
+		<element name="vx" type="float"/>
+		<element name="vy" type="float"/>
+		<element name="vz" type="float"/>
+		<element name="v" type="XYZ"/>
 		<element name="orient" type="Orient"/>
 		<element name="oxx" type="float"/>
@@ -1834,14 +1905,4 @@
 		<element name="ozy" type="float"/>
 		<element name="ozz" type="float"/>
-		<element name="pos" type="XYZ"/>
-		<element name="s" type="float"/>
-		<element name="v" type="XYZ"/>
-		<element name="vol" type="float"/>
-		<element name="vx" type="float"/>
-		<element name="vy" type="float"/>
-		<element name="vz" type="float"/>
-		<element name="x" type="float"/>
-		<element name="y" type="float"/>
-		<element name="z" type="float"/>
 		<element name="applyForce" function="true" type="void">
 			<arguments>
@@ -1853,10 +1914,36 @@
 	</type>
 	<type name="Model" context="Global context">
+		<element name="se" type="float"/>
+		<element name="Vstyle" type="string"/>
 		<element name="geno" type="Geno"/>
-		<element name="numconnections" type="integer"/>
+		<element name="newFromString" function="true" type="Model">
+			<arguments>
+				<argument name="genotype" type="string"/>
+			</arguments>
+		</element>
+		<element name="newFromGeno" function="true" type="Model">
+			<arguments>
+				<argument type="Geno"/>
+			</arguments>
+		</element>
+		<element name="numparts" type="integer"/>
 		<element name="numjoints" type="integer"/>
 		<element name="numneurons" type="integer"/>
-		<element name="numparts" type="integer"/>
-		<element name="se" type="float"/>
+		<element name="numconnections" type="integer"/>
+		<element name="getPart" function="true" type="Part">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getJoint" function="true" type="Joint">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getNeuroDef" function="true" type="NeuroDef">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
 		<element name="size_x" type="float">
 			<description><![CDATA[(size_x,size_y,size_z) are dimensions of the axis-aligned bounding box of the creature, including imaginary Part sizes (Part.s, usually 1.0). A creature consisting of a single default part has the size of (2.0,2.0,2.0) - twice the Part.s value (like a sphere diameter is twice its radius).
@@ -1868,30 +1955,4 @@
 		<element name="size_z" type="float">
 			<description><![CDATA[See Model.size_x]]></description>
-		</element>
-		<element name="Vstyle" type="string"/>
-		<element name="getJoint" function="true" type="Joint">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getNeuroDef" function="true" type="NeuroDef">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getPart" function="true" type="Part">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="newFromGeno" function="true" type="Model">
-			<arguments>
-				<argument type="Geno"/>
-			</arguments>
-		</element>
-		<element name="newFromString" function="true" type="Model">
-			<arguments>
-				<argument name="genotype" type="string"/>
-			</arguments>
 		</element>
 	</type>
@@ -1907,5 +1968,4 @@
 			<description><![CDATA[Affects the geometry calculation precision]]></description>
 		</element>
-		<element name="area" function="true" type="float"><arguments/></element>
 		<element name="forModel" function="true" type="ModelGeometry">
 			<description><![CDATA[The returned ModelGeometry object can be used to calculate geometric properties (volume, area, sizes) of the associated model. The density is copied from the current global ModelGeometry.geom_density on object creation.]]></description>
@@ -1914,14 +1974,78 @@
 			</arguments>
 		</element>
+		<element name="volume" function="true" type="float"><arguments/></element>
+		<element name="area" function="true" type="float"><arguments/></element>
 		<element name="sizesAndAxes" function="true" type="Vector">
 			<description><![CDATA[The returned vector contains XYZ (sizes) and Orient (axes) objects.]]></description>
 <arguments/></element>
-		<element name="volume" function="true" type="float"><arguments/></element>
 	</type>
 	<type name="Neuro" context="Global context">
 <description><![CDATA[Live Neuron object.]]></description>
+		<element name="getInputState" function="true" type="float">
+			<arguments>
+				<argument name="input" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getInputWeight" function="true" type="float">
+			<arguments>
+				<argument name="input" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getWeightedInputState" function="true" type="float">
+			<arguments>
+				<argument name="input" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getInputSum" function="true" type="float">
+			<arguments>
+				<argument name="input" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getWeightedInputSum" function="true" type="float">
+			<description><![CDATA[Uses any number of inputs starting with the specified input. getWeightedInputSum(0)=weightedInputSum]]></description>
+			<arguments>
+				<argument name="input" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getInputCount" type="integer"/>
+		<element name="inputSum" type="float"/>
+		<element name="weightedInputSum" type="float"/>
+		<element name="getInputChannelCount" function="true" type="integer">
+			<arguments>
+				<argument name="input" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getInputStateChannel" function="true" type="float">
+			<arguments>
+				<argument name="input" type="integer"/>
+				<argument name="channel" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getWeightedInputStateChannel" function="true" type="float">
+			<arguments>
+				<argument name="input" type="integer"/>
+				<argument name="channel" type="integer"/>
+			</arguments>
+		</element>
+		<element name="state" type="float">
+			<description><![CDATA[When read, returns the current neuron state.
+When written, sets the 'internal' neuron state that will become current in the next step.
+Typically you should use this field, and not currState.]]></description>
+		</element>
 		<element name="channelCount" type="integer"/>
-		<element name="classObject" type="NeuroClass"/>
-		<element name="creature" type="Creature"/>
+		<element name="getStateChannel" function="true" type="float">
+			<arguments>
+				<argument name="channel" type="integer"/>
+			</arguments>
+		</element>
+		<element name="setStateChannel" function="true" type="void">
+			<arguments>
+				<argument name="channel" type="integer"/>
+				<argument name="value" type="float"/>
+			</arguments>
+		</element>
+		<element name="hold" type="integer" min="0" max="1">
+			<description><![CDATA["Holding" means keeping the neuron state as is, blocking the regular neuron operation. This is useful when your script needs to inject some control signals into the NN. Without "holding", live neurons would be constantly overwriting your changes, and the rest of the NN could see inconsistent states, depending on the connections. Setting hold=1 ensures the neuron state will be only set by you, and not by the neuron. The enforced signal value can be set using Neuro.currState before or after setting hold=1. Set hold=0 to resume normal operation.]]></description>
+		</element>
 		<element name="currState" type="float">
 			<description><![CDATA[When read, it behaves just like the 'state' field.
@@ -1929,5 +2053,17 @@
 This feature should only be used while controlling the neuron 'from outside' (like a neuro probe) and not in the neuron definition. See also: Neuro.hold]]></description>
 		</element>
-		<element name="def" type="NeuroDef"/>
+		<element name="setCurrStateChannel" function="true" type="void">
+			<description><![CDATA[Analogous to "currState".]]></description>
+			<arguments>
+				<argument name="channel" type="integer"/>
+				<argument name="value" type="float"/>
+			</arguments>
+		</element>
+		<element name="position_x" type="float"/>
+		<element name="position_y" type="float"/>
+		<element name="position_z" type="float"/>
+		<element name="creature" type="Creature"/>
+		<element name="part" type="MechPart"/>
+		<element name="joint" type="MechJoint"/>
 		<element name="fields" type="Fields">
 			<description><![CDATA[Neurons can have different fields depending on their class. Script neurons have their fields defined using the "prop:" syntax. If you develop a custom neuron script you should use the Fields object for accessing your own neuron fields. The Neuro.fields property is meant for accessing the neuron fields from the outside script.
@@ -1945,86 +2081,34 @@
  Simulator.print(iobj.getId(i)+" ("+iobj.getName(i)+")");]]></description>
 		</element>
-		<element name="getInputCount" type="integer"/>
-		<element name="hold" type="integer" min="0" max="1">
-			<description><![CDATA["Holding" means keeping the neuron state as is, blocking the regular neuron operation. This is useful when your script needs to inject some control signals into the NN. Without "holding", live neurons would be constantly overwriting your changes, and the rest of the NN could see inconsistent states, depending on the connections. Setting hold=1 ensures the neuron state will be only set by you, and not by the neuron. The enforced signal value can be set using Neuro.currState before or after setting hold=1. Set hold=0 to resume normal operation.]]></description>
-		</element>
-		<element name="inputSum" type="float"/>
-		<element name="joint" type="MechJoint"/>
-		<element name="part" type="MechPart"/>
-		<element name="position_x" type="float"/>
-		<element name="position_y" type="float"/>
-		<element name="position_z" type="float"/>
+		<element name="def" type="NeuroDef"/>
+		<element name="classObject" type="NeuroClass"/>
 		<element name="signals" type="NeuroSignals"/>
-		<element name="state" type="float">
-			<description><![CDATA[When read, returns the current neuron state.
-When written, sets the 'internal' neuron state that will become current in the next step.
-Typically you should use this field, and not currState.]]></description>
-		</element>
-		<element name="weightedInputSum" type="float"/>
-		<element name="getInputChannelCount" function="true" type="integer">
-			<arguments>
-				<argument name="input" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getInputState" function="true" type="float">
-			<arguments>
-				<argument name="input" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getInputStateChannel" function="true" type="float">
-			<arguments>
-				<argument name="input" type="integer"/>
-				<argument name="channel" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getInputSum" function="true" type="float">
-			<arguments>
-				<argument name="input" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getInputWeight" function="true" type="float">
-			<arguments>
-				<argument name="input" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getStateChannel" function="true" type="float">
-			<arguments>
-				<argument name="channel" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getWeightedInputState" function="true" type="float">
-			<arguments>
-				<argument name="input" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getWeightedInputStateChannel" function="true" type="float">
-			<arguments>
-				<argument name="input" type="integer"/>
-				<argument name="channel" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getWeightedInputSum" function="true" type="float">
-			<description><![CDATA[Uses any number of inputs starting with the specified input. getWeightedInputSum(0)=weightedInputSum]]></description>
-			<arguments>
-				<argument name="input" type="integer"/>
-			</arguments>
-		</element>
-		<element name="setCurrStateChannel" function="true" type="void">
-			<description><![CDATA[Analogous to "currState".]]></description>
-			<arguments>
-				<argument name="channel" type="integer"/>
-				<argument name="value" type="float"/>
-			</arguments>
-		</element>
-		<element name="setStateChannel" function="true" type="void">
-			<arguments>
-				<argument name="channel" type="integer"/>
-				<argument name="value" type="float"/>
-			</arguments>
-		</element>
 	</type>
 	<type name="NeuroClass" context="Global context">
 <description><![CDATA[The static NeuroClass object refers to the class selected in the NeuroClassLibrary. Most, but not all, properties have direct counterparts in *.neuro files that define custom neuron classes.]]></description>
+		<element name="name" type="string">
+			<description><![CDATA[Used in genotypes]]></description>
+		</element>
+		<element name="longname" type="string">
+			<description><![CDATA[Used in hints]]></description>
+		</element>
 		<element name="description" type="string"/>
+		<element name="prefinputs" type="integer">
+			<description><![CDATA[-1 means "any number of inputs is OK"]]></description>
+		</element>
+		<element name="prefoutput" type="integer" min="0" max="1">
+			<description><![CDATA[Should be 1 if the neuron provides meaningful output value, 0 otherwise]]></description>
+		</element>
+		<element name="preflocation" type="integer" min="0" max="2"/>
+		<element name="visualhints" type="integer">
+			<description><![CDATA[This is a bitfield. Compute the value by adding the following bits:
+1 = Invisible - don't draw neurons of this class
+2 = No label - don't draw classname label (below the neuron symbol) for this neuron class
+4 = First Part - draw the neuron at the first part when attached to a joint (default is in the middle)
+8 = Second Part - draw the neuron at the second part when attached to a joint (default is in the middle)
+16 = Effector - use muscle color when drawing this neuron
+32 = Sensor - use receptor color when drawing this neuron
+Compatiblity: visualhints is called "vhints" in *.neuro files.]]></description>
+		</element>
 		<element name="glyph" type="string">
 			<description><![CDATA[<html>The neuron icon for use in NN diagrams, encoded as a coma-separated sequence of integer numbers.<ul>
@@ -2045,17 +2129,4 @@
 Compatibility: this field is called "icon" in *.neuro files.]]></description>
 		</element>
-		<element name="longname" type="string">
-			<description><![CDATA[Used in hints]]></description>
-		</element>
-		<element name="name" type="string">
-			<description><![CDATA[Used in genotypes]]></description>
-		</element>
-		<element name="prefinputs" type="integer">
-			<description><![CDATA[-1 means "any number of inputs is OK"]]></description>
-		</element>
-		<element name="preflocation" type="integer" min="0" max="2"/>
-		<element name="prefoutput" type="integer" min="0" max="1">
-			<description><![CDATA[Should be 1 if the neuron provides meaningful output value, 0 otherwise]]></description>
-		</element>
 		<element name="properties" type="Interface">
 			<description><![CDATA[Compatibility: not preset in *.neuro files.]]></description>
@@ -2065,21 +2136,11 @@
 Compatibility: not preset in *.neuro files.]]></description>
 		</element>
-		<element name="visualhints" type="integer">
-			<description><![CDATA[This is a bitfield. Compute the value by adding the following bits:
-1 = Invisible - don't draw neurons of this class
-2 = No label - don't draw classname label (below the neuron symbol) for this neuron class
-4 = First Part - draw the neuron at the first part when attached to a joint (default is in the middle)
-8 = Second Part - draw the neuron at the second part when attached to a joint (default is in the middle)
-16 = Effector - use muscle color when drawing this neuron
-32 = Sensor - use receptor color when drawing this neuron
-Compatiblity: visualhints is called "vhints" in *.neuro files.]]></description>
-		</element>
 	</type>
 	<type name="NeuroClassLibrary" context="Global context">
 <description><![CDATA[Set of Neuron classes. You can access the selected class in the static NeuroClass object.]]></description>
+		<element name="count" type="integer"/>
 		<element name="class" type="integer">
 			<description><![CDATA[0 ... count-1]]></description>
 		</element>
-		<element name="count" type="integer"/>
 		<element name="findClass" function="true" type="void">
 			<arguments>
@@ -2094,26 +2155,26 @@
 	</type>
 	<type name="NeuroDef" context="Global context">
+		<element name="p" type="integer" min="-1" max="999999" default="-1"/>
+		<element name="j" type="integer" min="-1" max="999999" default="-1"/>
+		<element name="d" type="string"/>
+		<element name="i" type="string"/>
+		<element name="Vstyle" type="string"/>
+		<element name="getInputCount" type="integer"/>
+		<element name="getInputNeuroDef" function="true" type="NeuroDef">
+			<arguments>
+				<argument type="integer"/>
+			</arguments>
+		</element>
+		<element name="getInputNeuroIndex" function="true" type="integer">
+			<arguments>
+				<argument type="integer"/>
+			</arguments>
+		</element>
+		<element name="getInputWeight" function="true" type="float">
+			<arguments>
+				<argument type="integer"/>
+			</arguments>
+		</element>
 		<element name="classObject" type="NeuroClass"/>
-		<element name="d" type="string"/>
-		<element name="getInputCount" type="integer"/>
-		<element name="i" type="string"/>
-		<element name="j" type="integer" min="-1" max="999999" default="-1"/>
-		<element name="p" type="integer" min="-1" max="999999" default="-1"/>
-		<element name="Vstyle" type="string"/>
-		<element name="getInputNeuroDef" function="true" type="NeuroDef">
-			<arguments>
-				<argument type="integer"/>
-			</arguments>
-		</element>
-		<element name="getInputNeuroIndex" function="true" type="integer">
-			<arguments>
-				<argument type="integer"/>
-			</arguments>
-		</element>
-		<element name="getInputWeight" function="true" type="float">
-			<arguments>
-				<argument type="integer"/>
-			</arguments>
-		</element>
 	</type>
 	<type name="NeuronsSimEnabled" context="Global context">
@@ -2369,14 +2430,7 @@
 See also: Signal, WorldSignals, CreatureSignals.
 scripts/light.neuro and scripts/seelight.neuro are simple custom neuron examples demonstrating how to send/receive signals between creatures.]]></description>
-		<element name="size" type="integer"/>
 		<element name="add" function="true" type="Signal">
 			<arguments>
 				<argument name="channel" type="string"/>
-			</arguments>
-		</element>
-		<element name="clear" function="true" type="void"><arguments/></element>
-		<element name="get" function="true" type="Signal">
-			<arguments>
-				<argument name="index" type="integer"/>
 			</arguments>
 		</element>
@@ -2385,4 +2439,11 @@
 			<arguments>
 				<argument name="channel" type="string"/>
+			</arguments>
+		</element>
+		<element name="receiveSet" function="true" type="Vector">
+			<description><![CDATA[Get all signals in the specified range. Returns a read-only vector object containing Signal objects - individual signals can be accessed as result[0], .., result[result.size-1].]]></description>
+			<arguments>
+				<argument name="channel" type="string"/>
+				<argument name="max distance" type="float"/>
 			</arguments>
 		</element>
@@ -2400,6 +2461,6 @@
 			</arguments>
 		</element>
-		<element name="receiveSet" function="true" type="Vector">
-			<description><![CDATA[Get all signals in the specified range. Returns a read-only vector object containing Signal objects - individual signals can be accessed as result[0], .., result[result.size-1].]]></description>
+		<element name="receiveSingle" function="true" type="Signal">
+			<description><![CDATA[Find the signal source that has the highest signal power (taking into account distance).]]></description>
 			<arguments>
 				<argument name="channel" type="string"/>
@@ -2407,46 +2468,30 @@
 			</arguments>
 		</element>
-		<element name="receiveSingle" function="true" type="Signal">
-			<description><![CDATA[Find the signal source that has the highest signal power (taking into account distance).]]></description>
-			<arguments>
-				<argument name="channel" type="string"/>
-				<argument name="max distance" type="float"/>
-			</arguments>
-		</element>
+		<element name="get" function="true" type="Signal">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="size" type="integer"/>
+		<element name="clear" function="true" type="void"><arguments/></element>
 	</type>
 	<type name="ODE" context="Global context">
 <description><![CDATA[ODE Parameters.]]></description>
+		<element name="odeshape" type="integer" min="0" max="1"/>
+		<element name="odestep" type="float" min="0.001" max="1" default="0.05"/>
+		<element name="odemusclemin" type="float" min="0" max="100" default="0.0">
+			<description><![CDATA[i.e. "mmmmm" in f1]]></description>
+		</element>
+		<element name="odemusclemax" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[i.e. "MMMMM" if f1]]></description>
+		</element>
+		<element name="odemusclespeed" type="float" min="0" max="10" default="1.0">
+			<description><![CDATA[Muscle state cannot change faster than the supplied value]]></description>
+		</element>
 		<element name="odeairdrag" type="float" min="0" max="0.5" default="0.01">
 			<description><![CDATA[A drag force ("air drag") proportional to the velocity of mass centers of moving parts]]></description>
 		</element>
-		<element name="odecol2bounce" type="float" min="0" max="1" default="0.1"/>
-		<element name="odecol2bouncevel" type="float" min="0" max="1" default="0.01"/>
-		<element name="odecol2mumax" type="float" min="0" max="10" default="1.0">
-			<description><![CDATA[Mu coefficient for Parts with maximal friction (i.e. "FFFFF" in f1)]]></description>
-		</element>
-		<element name="odecol2mumin" type="float" min="0" max="10" default="0.1">
-			<description><![CDATA[Mu coefficient for Parts with minimal friction (i.e. "fffff" in f1)]]></description>
-		</element>
-		<element name="odecol2softcfm" type="float" min="0" max="1" default="0.0"/>
-		<element name="odecol2softerp" type="float" min="0" max="1" default="0.0"/>
-		<element name="odecolbounce" type="float" min="0" max="1" default="0.1"/>
-		<element name="odecolbouncevel" type="float" min="0" max="1" default="0.01"/>
-		<element name="odecolmumax" type="float" min="0" max="10" default="5.0">
-			<description><![CDATA[Mu coefficient for Parts with maximal friction (i.e. "FFFFF" in f1)]]></description>
-		</element>
-		<element name="odecolmumin" type="float" min="0" max="10" default="0.1">
-			<description><![CDATA[Mu coefficient for Parts with minimal friction (i.e. "fffff" in f1)]]></description>
-		</element>
-		<element name="odecolsoftcfm" type="float" min="0" max="1" default="0.0"/>
-		<element name="odecolsofterp" type="float" min="0" max="1" default="0.0"/>
-		<element name="odemusclemax" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[i.e. "MMMMM" if f1]]></description>
-		</element>
-		<element name="odemusclemin" type="float" min="0" max="100" default="0.0">
-			<description><![CDATA[i.e. "mmmmm" in f1]]></description>
-		</element>
-		<element name="odemusclespeed" type="float" min="0" max="10" default="1.0">
-			<description><![CDATA[Muscle state cannot change faster than the supplied value]]></description>
-		</element>
+		<element name="odewaterdrag" type="float" min="0.001" max="1" default="0.5"/>
+		<element name="odewaterbuoy" type="float" min="0" max="2" default="1.0"/>
 		<element name="odeseed" type="integer" min="0" max="2">
 			<description><![CDATA[Affects collisions.
@@ -2459,14 +2504,30 @@
 			<description><![CDATA[Each stick gets a separate ODE body (like in MechaStick)]]></description>
 		</element>
-		<element name="odeshape" type="integer" min="0" max="1"/>
-		<element name="odestep" type="float" min="0.001" max="1" default="0.05"/>
-		<element name="odewaterbuoy" type="float" min="0" max="2" default="1.0"/>
-		<element name="odewaterdrag" type="float" min="0.001" max="1" default="0.5"/>
+		<element name="odeworlderp" type="float" min="0" max="1" default="0.2">
+			<description><![CDATA[World ERP (error reduction parameter)]]></description>
+		</element>
 		<element name="odeworldcfm" type="float" min="0" max="1" default="1e-05">
 			<description><![CDATA[World CFM (constraint force mixing)]]></description>
 		</element>
-		<element name="odeworlderp" type="float" min="0" max="1" default="0.2">
-			<description><![CDATA[World ERP (error reduction parameter)]]></description>
-		</element>
+		<element name="odecolmumin" type="float" min="0" max="10" default="0.1">
+			<description><![CDATA[Mu coefficient for Parts with minimal friction (i.e. "fffff" in f1)]]></description>
+		</element>
+		<element name="odecolmumax" type="float" min="0" max="10" default="5.0">
+			<description><![CDATA[Mu coefficient for Parts with maximal friction (i.e. "FFFFF" in f1)]]></description>
+		</element>
+		<element name="odecolbounce" type="float" min="0" max="1" default="0.1"/>
+		<element name="odecolbouncevel" type="float" min="0" max="1" default="0.01"/>
+		<element name="odecolsoftcfm" type="float" min="0" max="1" default="0.0"/>
+		<element name="odecolsofterp" type="float" min="0" max="1" default="0.0"/>
+		<element name="odecol2mumin" type="float" min="0" max="10" default="0.1">
+			<description><![CDATA[Mu coefficient for Parts with minimal friction (i.e. "fffff" in f1)]]></description>
+		</element>
+		<element name="odecol2mumax" type="float" min="0" max="10" default="1.0">
+			<description><![CDATA[Mu coefficient for Parts with maximal friction (i.e. "FFFFF" in f1)]]></description>
+		</element>
+		<element name="odecol2bounce" type="float" min="0" max="1" default="0.1"/>
+		<element name="odecol2bouncevel" type="float" min="0" max="1" default="0.01"/>
+		<element name="odecol2softcfm" type="float" min="0" max="1" default="0.0"/>
+		<element name="odecol2softerp" type="float" min="0" max="1" default="0.0"/>
 		<element name="rayIntersection" function="true" type="float">
 			<arguments>
@@ -2483,21 +2544,56 @@
 	<type name="Orient" context="Global context">
 <description><![CDATA[3D orientation, stored as 3x3 matrix.]]></description>
-		<element name="angles" type="XYZ"/>
-		<element name="toString" type="string"/>
-		<element name="toVector" type="Vector">
-			<description><![CDATA[for serialization]]></description>
-		</element>
-		<element name="x" type="XYZ"/>
 		<element name="xx" type="float"/>
 		<element name="xy" type="float"/>
 		<element name="xz" type="float"/>
-		<element name="y" type="XYZ"/>
 		<element name="yx" type="float"/>
 		<element name="yy" type="float"/>
 		<element name="yz" type="float"/>
-		<element name="z" type="XYZ"/>
 		<element name="zx" type="float"/>
 		<element name="zy" type="float"/>
 		<element name="zz" type="float"/>
+		<element name="x" type="XYZ"/>
+		<element name="y" type="XYZ"/>
+		<element name="z" type="XYZ"/>
+		<element name="new" function="true" type="Orient"><arguments/></element>
+		<element name="newFromVector" function="true" type="Orient">
+			<arguments>
+				<argument type="Vector"/>
+			</arguments>
+		</element>
+		<element name="toVector" type="Vector">
+			<description><![CDATA[for serialization]]></description>
+		</element>
+		<element name="clone" function="true" type="Orient"><arguments/></element>
+		<element name="set" function="true" type="void">
+			<arguments>
+				<argument type="Orient"/>
+			</arguments>
+		</element>
+		<element name="reset" function="true" type="void"><arguments/></element>
+		<element name="rotate3" function="true" type="void">
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
+		<element name="rotate" function="true" type="void">
+			<arguments>
+				<argument type="Orient"/>
+			</arguments>
+		</element>
+		<element name="revRotate" function="true" type="void">
+			<arguments>
+				<argument type="Orient"/>
+			</arguments>
+		</element>
+		<element name="lookAt" function="true" type="void">
+			<arguments>
+				<argument name="direction" type="XYZ"/>
+				<argument name="up" type="XYZ"/>
+			</arguments>
+		</element>
+		<element name="normalize" function="true" type="void"><arguments/></element>
 		<element name="between2" function="true" type="void">
 			<description><![CDATA[The calling Orient receives the orientation interpolated from 2 input orientations.
@@ -2529,5 +2625,4 @@
 			</arguments>
 		</element>
-		<element name="clone" function="true" type="Orient"><arguments/></element>
 		<element name="localToWorld" function="true" type="XYZ">
 			<arguments>
@@ -2536,40 +2631,4 @@
 			</arguments>
 		</element>
-		<element name="lookAt" function="true" type="void">
-			<arguments>
-				<argument name="direction" type="XYZ"/>
-				<argument name="up" type="XYZ"/>
-			</arguments>
-		</element>
-		<element name="new" function="true" type="Orient"><arguments/></element>
-		<element name="newFromVector" function="true" type="Orient">
-			<arguments>
-				<argument type="Vector"/>
-			</arguments>
-		</element>
-		<element name="normalize" function="true" type="void"><arguments/></element>
-		<element name="reset" function="true" type="void"><arguments/></element>
-		<element name="revRotate" function="true" type="void">
-			<arguments>
-				<argument type="Orient"/>
-			</arguments>
-		</element>
-		<element name="rotate" function="true" type="void">
-			<arguments>
-				<argument type="Orient"/>
-			</arguments>
-		</element>
-		<element name="rotate3" function="true" type="void">
-			<arguments>
-				<argument name="x" type="float"/>
-				<argument name="y" type="float"/>
-				<argument name="z" type="float"/>
-			</arguments>
-		</element>
-		<element name="set" function="true" type="void">
-			<arguments>
-				<argument type="Orient"/>
-			</arguments>
-		</element>
 		<element name="worldToLocal" function="true" type="XYZ">
 			<arguments>
@@ -2578,76 +2637,63 @@
 			</arguments>
 		</element>
+		<element name="angles" type="XYZ"/>
+		<element name="toString" type="string"/>
 	</type>
 	<type name="Part" context="Global context">
-		<element name="as" type="float" min="0" max="1" default="0.25"/>
+		<element name="x" type="float"/>
+		<element name="y" type="float"/>
+		<element name="z" type="float"/>
+		<element name="m" type="float" min="0.1" max="999" default="1.0"/>
+		<element name="sh" type="integer" min="0" max="3" default="0"/>
+		<element name="s" type="float" min="0.1" max="10" default="1.0"/>
+		<element name="sx" type="float" min="0.001" max="1000" default="1.0"/>
+		<element name="sy" type="float" min="0.001" max="1000" default="1.0"/>
+		<element name="sz" type="float" min="0.001" max="1000" default="1.0"/>
+		<element name="h" type="float" min="0" max="1" default="0.0"/>
 		<element name="dn" type="float" min="0.2" max="5" default="1.0"/>
 		<element name="fr" type="float" min="0" max="4" default="0.4"/>
-		<element name="h" type="float" min="0" max="1" default="0.0"/>
-		<element name="i" type="string"/>
 		<element name="ing" type="float" min="0" max="1" default="0.25"/>
-		<element name="m" type="float" min="0.1" max="999" default="1.0"/>
+		<element name="as" type="float" min="0" max="1" default="0.25"/>
 		<element name="rx" type="float"/>
 		<element name="ry" type="float"/>
 		<element name="rz" type="float"/>
-		<element name="s" type="float" min="0.1" max="10" default="1.0"/>
-		<element name="sh" type="integer" min="0" max="3" default="0"/>
-		<element name="sx" type="float" min="0.001" max="1000" default="1.0"/>
-		<element name="sy" type="float" min="0.001" max="1000" default="1.0"/>
-		<element name="sz" type="float" min="0.001" max="1000" default="1.0"/>
+		<element name="i" type="string"/>
+		<element name="Vstyle" type="string"/>
+		<element name="vs" type="float" min="0.05" max="0.7" default="0.2"/>
+		<element name="vr" type="float" min="0" max="1" default="0.5"/>
+		<element name="vg" type="float" min="0" max="1" default="0.5"/>
 		<element name="vb" type="float" min="0" max="1" default="0.5"/>
-		<element name="vg" type="float" min="0" max="1" default="0.5"/>
-		<element name="vr" type="float" min="0" max="1" default="0.5"/>
-		<element name="vs" type="float" min="0.05" max="0.7" default="0.2"/>
-		<element name="Vstyle" type="string"/>
-		<element name="x" type="float"/>
-		<element name="y" type="float"/>
-		<element name="z" type="float"/>
 	</type>
 	<type name="Population" context="Global context">
 <description><![CDATA[A set of Creature objects, sharing some high level simulation properties (performance calculation, NN simulation, collision detection, event handling). The groups usually have different roles in the experiment (Creatures groups and Food group in standard.expdef).]]></description>
-		<element name="bodysim" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[Enable/disable physical body simulation. This is the initial value of Creature.bodysim for all objects created in this group. For details, see the documentation of Creature.bodysim.]]></description>
+		<element name="index" type="integer"/>
+		<element name="name" type="string"/>
+		<element name="size" type="integer"/>
+		<element name="energy" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[If turned off, creature's energy will be constant.]]></description>
+		</element>
+		<element name="death" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[Do creatures die when no energy?]]></description>
+		</element>
+		<element name="nnsim" type="integer" min="0" max="2" default="1">
+			<description><![CDATA[Stabilization means no significant movement during a specified period of time.]]></description>
+		</element>
+		<element name="perfperiod" type="integer" min="0" max="1000000" default="100">
+			<description><![CDATA[Defines how often onUpdate() events are called. Also used to compute partial performance of creatures (distance, speed, etc.) and to determine stabilization.]]></description>
+		</element>
+		<element name="stabilperiod" type="integer" min="0" max="1000000" default="100">
+			<description><![CDATA["Performance sampling period" for the stabilization phase.]]></description>
+		</element>
+		<element name="killnostable" type="integer" min="0" max="10000000" default="1000000">
+			<description><![CDATA[Creatures that fail to stabilize after the specified waiting period (e.g. because they are continuously rolling) will be killed. 0 disables this feature.]]></description>
+		</element>
+		<element name="stabledist" type="float" min="0" max="1" default="0.01">
+			<description><![CDATA[A creature is considered stabilized when its center of gravity stays within the specified distance after the "Sampling period while waiting" has elapsed.]]></description>
+		</element>
+		<element name="enableperf" type="integer" min="0" max="2" default="1">
+			<description><![CDATA[Stabilization means no significant movement during a specified period of time.]]></description>
 		</element>
 		<element name="colmask" type="integer" min="0" max="65535" default="0">
 			<description><![CDATA[DEPRECATED. You should use selfmask and othermask (these masks are also much easier to understand than the old colmask field).]]></description>
-		</element>
-		<element name="death" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[Do creatures die when no energy?]]></description>
-		</element>
-		<element name="em_dyn" type="float" min="0" max="1" default="0.0">
-			<description><![CDATA[Energy requirements for a muscle
-moving a stick]]></description>
-		</element>
-		<element name="em_stat" type="float" min="0" max="1" default="0.0">
-			<description><![CDATA[Energy requirements for a muscle
-resisting an external force]]></description>
-		</element>
-		<element name="en_assim" type="float" min="0" max="1" default="0.0">
-			<description><![CDATA[Maximal energy gain produced by a vertical specialized stick.
-Horizontal specialized sticks get half of this value.]]></description>
-		</element>
-		<element name="enableperf" type="integer" min="0" max="2" default="1">
-			<description><![CDATA[Stabilization means no significant movement during a specified period of time.]]></description>
-		</element>
-		<element name="energy" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[If turned off, creature's energy will be constant.]]></description>
-		</element>
-		<element name="index" type="integer"/>
-		<element name="iterator" type="Object"/>
-		<element name="killnostable" type="integer" min="0" max="10000000" default="1000000">
-			<description><![CDATA[Creatures that fail to stabilize after the specified waiting period (e.g. because they are continuously rolling) will be killed. 0 disables this feature.]]></description>
-		</element>
-		<element name="name" type="string"/>
-		<element name="nnsim" type="integer" min="0" max="2" default="1">
-			<description><![CDATA[Stabilization means no significant movement during a specified period of time.]]></description>
-		</element>
-		<element name="othermask" type="integer" min="0" max="2147483647" default="0">
-			<description><![CDATA[See selfmask.]]></description>
-		</element>
-		<element name="perfperiod" type="integer" min="0" max="1000000" default="100">
-			<description><![CDATA[Defines how often onUpdate() events are called. Also used to compute partial performance of creatures (distance, speed, etc.) and to determine stabilization.]]></description>
-		</element>
-		<element name="selfcol" type="integer" min="0" max="1" default="0">
-			<description><![CDATA[Detect collisions within creature bodies (only applicable for the ODE simulation engine). This is the initial value of Creature.selfcol for all objects created in this group. If enabled, creatures with self-colliding genotypes are not born, and others will have their sticks collide during lifespan.]]></description>
 		</element>
 		<element name="selfmask" type="integer" min="0" max="2147483647" default="0">
@@ -2681,25 +2727,24 @@
 ]]></description>
 		</element>
-		<element name="size" type="integer"/>
-		<element name="stabilperiod" type="integer" min="0" max="1000000" default="100">
-			<description><![CDATA["Performance sampling period" for the stabilization phase.]]></description>
-		</element>
-		<element name="stabledist" type="float" min="0" max="1" default="0.01">
-			<description><![CDATA[A creature is considered stabilized when its center of gravity stays within the specified distance after the "Sampling period while waiting" has elapsed.]]></description>
-		</element>
-		<element name="add" function="true" type="Creature">
-			<arguments>
-				<argument name="genotype object or geno object or string genotype" type="untyped"/>
-			</arguments>
-		</element>
-		<element name="clear" function="true" type="void">
-			<description><![CDATA[Delete all creatures]]></description>
-<arguments/></element>
-		<element name="createFromGeno" function="true" type="Creature" deprecated="true">
-			<description><![CDATA[Uses the supplied Geno object.
-Deprecated. Use the more universal add() function.]]></description>
-			<arguments>
-				<argument type="Geno"/>
-			</arguments>
+		<element name="othermask" type="integer" min="0" max="2147483647" default="0">
+			<description><![CDATA[See selfmask.]]></description>
+		</element>
+		<element name="bodysim" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[Enable/disable physical body simulation. This is the initial value of Creature.bodysim for all objects created in this group. For details, see the documentation of Creature.bodysim.]]></description>
+		</element>
+		<element name="selfcol" type="integer" min="0" max="1" default="0">
+			<description><![CDATA[Detect collisions within creature bodies (only applicable for the ODE simulation engine). This is the initial value of Creature.selfcol for all objects created in this group. If enabled, creatures with self-colliding genotypes are not born, and others will have their sticks collide during lifespan.]]></description>
+		</element>
+		<element name="em_stat" type="float" min="0" max="1" default="0.0">
+			<description><![CDATA[Energy requirements for a muscle
+resisting an external force]]></description>
+		</element>
+		<element name="em_dyn" type="float" min="0" max="1" default="0.0">
+			<description><![CDATA[Energy requirements for a muscle
+moving a stick]]></description>
+		</element>
+		<element name="en_assim" type="float" min="0" max="1" default="0.0">
+			<description><![CDATA[Maximal energy gain produced by a vertical specialized stick.
+Horizontal specialized sticks get half of this value.]]></description>
 		</element>
 		<element name="createFromGenotype" function="true" type="Creature" deprecated="true">
@@ -2714,14 +2759,14 @@
 			</arguments>
 		</element>
-		<element name="delete" function="true" type="void">
-			<description><![CDATA[Delete the creature (remove it without executing the onKill event). Removing creatures inside some event handlers (e.g. onCollision) might be unsafe.]]></description>
-			<arguments>
-				<argument name="creature object or index" type="untyped"/>
-			</arguments>
-		</element>
-		<element name="findCreatureAt" function="true" type="Creature">
-			<arguments>
-				<argument name="point" type="Vector"/>
-				<argument name="vector" type="Vector"/>
+		<element name="createFromGeno" function="true" type="Creature" deprecated="true">
+			<description><![CDATA[Uses the supplied Geno object.
+Deprecated. Use the more universal add() function.]]></description>
+			<arguments>
+				<argument type="Geno"/>
+			</arguments>
+		</element>
+		<element name="add" function="true" type="Creature">
+			<arguments>
+				<argument name="genotype object or geno object or string genotype" type="untyped"/>
 			</arguments>
 		</element>
@@ -2734,28 +2779,4 @@
 			<arguments>
 				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getStatsAvg" function="true" type="float">
-			<description><![CDATA[Retrieves data from stats.* object. Can only be used for fields covered by stats.* (subset of Creature fields).]]></description>
-			<arguments>
-				<argument name="field name" type="string"/>
-			</arguments>
-		</element>
-		<element name="getStatsMax" function="true" type="float">
-			<description><![CDATA[Retrieves data from stats.* object. Can only be used for fields covered by stats.* (subset of Creature fields).]]></description>
-			<arguments>
-				<argument name="field name" type="string"/>
-			</arguments>
-		</element>
-		<element name="getStatsMin" function="true" type="float">
-			<description><![CDATA[Retrieves data from stats.* object. Can only be used for fields covered by stats.* (subset of Creature fields).]]></description>
-			<arguments>
-				<argument name="field name" type="string"/>
-			</arguments>
-		</element>
-		<element name="kill" function="true" type="void">
-			<description><![CDATA[Kill the creature (remove it and execute its onKill handler). Killing creatures inside some event handlers (e.g. onCollision) might be unsafe. The recommended and safe way of killing a creature is by setting its energy to 0.]]></description>
-			<arguments>
-				<argument name="creature object or index" type="integer"/>
 			</arguments>
 		</element>
@@ -2781,4 +2802,44 @@
 			</arguments>
 		</element>
+		<element name="findCreatureAt" function="true" type="Creature">
+			<arguments>
+				<argument name="point" type="Vector"/>
+				<argument name="vector" type="Vector"/>
+			</arguments>
+		</element>
+		<element name="delete" function="true" type="void">
+			<description><![CDATA[Delete the creature (remove it without executing the onKill event). Removing creatures inside some event handlers (e.g. onCollision) might be unsafe.]]></description>
+			<arguments>
+				<argument name="creature object or index" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="kill" function="true" type="void">
+			<description><![CDATA[Kill the creature (remove it and execute its onKill handler). Killing creatures inside some event handlers (e.g. onCollision) might be unsafe. The recommended and safe way of killing a creature is by setting its energy to 0.]]></description>
+			<arguments>
+				<argument name="creature object or index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="clear" function="true" type="void">
+			<description><![CDATA[Delete all creatures]]></description>
+<arguments/></element>
+		<element name="iterator" type="Object"/>
+		<element name="getStatsMin" function="true" type="float">
+			<description><![CDATA[Retrieves data from stats.* object. Can only be used for fields covered by stats.* (subset of Creature fields).]]></description>
+			<arguments>
+				<argument name="field name" type="string"/>
+			</arguments>
+		</element>
+		<element name="getStatsAvg" function="true" type="float">
+			<description><![CDATA[Retrieves data from stats.* object. Can only be used for fields covered by stats.* (subset of Creature fields).]]></description>
+			<arguments>
+				<argument name="field name" type="string"/>
+			</arguments>
+		</element>
+		<element name="getStatsMax" function="true" type="float">
+			<description><![CDATA[Retrieves data from stats.* object. Can only be used for fields covered by stats.* (subset of Creature fields).]]></description>
+			<arguments>
+				<argument name="field name" type="string"/>
+			</arguments>
+		</element>
 	</type>
 	<type name="Populations" context="Global context">
@@ -2796,17 +2857,37 @@
 
 See also: Creature, Population.]]></description>
-		<element name="creature" type="integer" deprecated="true">
-			<description><![CDATA[Deprecated. Pass creature object to functions needing it, instead of the old "first select, then call" approach.]]></description>
-		</element>
 		<element name="group" type="integer" deprecated="true">
 			<description><![CDATA[Index of the currently selected group (Population).
 Deprecated. Pass creature object to functions needing it, instead of the old "first select, then call" approach.]]></description>
 		</element>
-		<element name="iterator" type="Object"/>
 		<element name="size" type="integer"/>
+		<element name="creature" type="integer" deprecated="true">
+			<description><![CDATA[Deprecated. Pass creature object to functions needing it, instead of the old "first select, then call" approach.]]></description>
+		</element>
+		<element name="createFromGenotype" function="true" type="Creature" deprecated="true">
+			<description><![CDATA[Uses the selected Genotype object.]]></description>
+<arguments/></element>
+		<element name="createFromString" function="true" type="Creature" deprecated="true">
+			<description><![CDATA[Uses the supplied string argument.]]></description>
+			<arguments>
+				<argument name="genotype" type="string"/>
+			</arguments>
+		</element>
+		<element name="killSelected" function="true" type="void" deprecated="true">
+			<description><![CDATA[Applies to the selected Creature.]]></description>
+<arguments/></element>
+		<element name="deleteSelected" function="true" type="void" deprecated="true">
+			<description><![CDATA[Applies to the selected Creature.]]></description>
+<arguments/></element>
 		<element name="addGroup" function="true" type="Population">
 			<description><![CDATA[Adds a new population.]]></description>
 			<arguments>
 				<argument name="name" type="string"/>
+			</arguments>
+		</element>
+		<element name="deleteGroup" function="true" type="void">
+			<description><![CDATA[Removes a population.]]></description>
+			<arguments>
+				<argument name="index" type="integer"/>
 			</arguments>
 		</element>
@@ -2831,22 +2912,9 @@
 			</arguments>
 		</element>
-		<element name="createFromGenotype" function="true" type="Creature" deprecated="true">
-			<description><![CDATA[Uses the selected Genotype object.]]></description>
-<arguments/></element>
-		<element name="createFromString" function="true" type="Creature" deprecated="true">
-			<description><![CDATA[Uses the supplied string argument.]]></description>
-			<arguments>
-				<argument name="genotype" type="string"/>
-			</arguments>
-		</element>
-		<element name="deleteGroup" function="true" type="void">
-			<description><![CDATA[Removes a population.]]></description>
+		<element name="get" function="true" type="Population">
 			<arguments>
 				<argument name="index" type="integer"/>
 			</arguments>
 		</element>
-		<element name="deleteSelected" function="true" type="void" deprecated="true">
-			<description><![CDATA[Applies to the selected Creature.]]></description>
-<arguments/></element>
 		<element name="findCreatureAt" function="true" type="Creature">
 			<arguments>
@@ -2855,12 +2923,5 @@
 			</arguments>
 		</element>
-		<element name="get" function="true" type="Population">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="killSelected" function="true" type="void" deprecated="true">
-			<description><![CDATA[Applies to the selected Creature.]]></description>
-<arguments/></element>
+		<element name="iterator" type="Object"/>
 	</type>
 	<type name="Ref" context="Global context">
@@ -2874,7 +2935,9 @@
 function square(r)
 {r.value=r.value*r.value;}
-//square receives the Reference objects and changes its 'value' field]]></description>
-		<element name="toString" type="string"/>
+//square receives the Reference object and changes its 'value' field]]></description>
 		<element name="value" type="untyped"/>
+		<element name="newO" function="true">
+			<description><![CDATA[(for internal use only) use &variablename to create Ref objects.]]></description>
+		</element>
 		<element name="copyFrom" function="true" type="void">
 			<description><![CDATA[make the reference point to the same target,]]></description>
@@ -2883,11 +2946,8 @@
 			</arguments>
 		</element>
-		<element name="newO" function="true">
-			<description><![CDATA[(for internal use only) use &variablename to create Ref objects.]]></description>
-		</element>
+		<element name="toString" type="string"/>
 	</type>
 	<type name="Shapes" context="Global context">
 <description><![CDATA[This object defines appearance of the elements of creatures (applies to the 'wireframe' display mode). Default shape definitions make food's "p:" look like a sphere, and manipulator's "p:" look like a robot hand. The model's Vstyle property is the name of the shape. Developers of experiment definitions can introduce new Vstyle(s) for their expdef and provide appropriate shape definitions by calling Shapes.set(...) in the onExpDefLoad() function.]]></description>
-		<element name="clear" function="true" type="void"><arguments/></element>
 		<element name="set" function="true" type="void">
 			<description><![CDATA[Arguments:
@@ -2913,4 +2973,5 @@
 			</arguments>
 		</element>
+		<element name="clear" function="true" type="void"><arguments/></element>
 	</type>
 	<type name="Signal" context="Global context">
@@ -2923,19 +2984,19 @@
 
 Creating: Use "add" in Creature.signals, Neuro.signals, or World.signals.]]></description>
+		<element name="value" type="untyped">
+			<description><![CDATA[Signal value can be any type. On the receiver side it is only available by accessing the individual Signal objects, i.e. after calling receiveSet() or receiveSingle(). The aggregating functions receive() and receiveFilter() ignore this attribute.]]></description>
+		</element>
+		<element name="power" type="float">
+			<description><![CDATA[Signal power affects the aggregated signal value returned from receive() and receiveFilter().]]></description>
+		</element>
+		<element name="flavor" type="float">
+			<description><![CDATA[Signal flavor can be used to differentiate between signals in a single channel.]]></description>
+		</element>
 		<element name="channel" type="string">
 			<description><![CDATA[Channel name, read-only.]]></description>
 		</element>
-		<element name="flavor" type="float">
-			<description><![CDATA[Signal flavor can be used to differentiate between signals in a single channel.]]></description>
-		</element>
 		<element name="pos" type="XYZ">
 			<description><![CDATA[Signal position, read-only.]]></description>
 		</element>
-		<element name="power" type="float">
-			<description><![CDATA[Signal power affects the aggregated signal value returned from receive() and receiveFilter().]]></description>
-		</element>
-		<element name="value" type="untyped">
-			<description><![CDATA[Signal value can be any type. On the receiver side it is only available by accessing the individual Signal objects, i.e. after calling receiveSet() or receiveSingle(). The aggregating functions receive() and receiveFilter() ignore this attribute.]]></description>
-		</element>
 		<element name="remove" function="true">
 			<description><![CDATA[Deletes the signal.]]></description>
@@ -2943,4 +3004,10 @@
 	</type>
 	<type name="SignalView" context="Global context">
+		<element name="clear" function="true">
+			<description><![CDATA[Removes custom display settings that might have been defined by various scripts (expdef or show).]]></description>
+		</element>
+		<element name="mode" type="integer" min="0" max="2">
+			<description><![CDATA["Automatic" labels all signal sources in all channels and shows the intensity map of the first channel. This is sufficient for many simple setups, but as the number of signals and channels grows, the display becomes cluttered. In such cases, the experiment definition can define "Custom" signal visualization tailored for the particular experiment.]]></description>
+		</element>
 		<element name="labels" type="string">
 			<description><![CDATA[The label formula should return text to be displayed over the signal source, presumably by reading some values from the supplied Signal object. It is especially useful for more sophisticated signal usage scenarios, when Signal.value keeps a reference to an object (the default signal label only shows <XXX Object at xxxxx> in such cases).
@@ -2951,7 +3018,4 @@
 return "val="+Signal.value;
 return "power="+Signal.power;]]></description>
-		</element>
-		<element name="mode" type="integer" min="0" max="2">
-			<description><![CDATA["Automatic" labels all signal sources in all channels and shows the intensity map of the first channel. This is sufficient for many simple setups, but as the number of signals and channels grows, the display becomes cluttered. In such cases, the experiment definition can define "Custom" signal visualization tailored for the particular experiment.]]></description>
 		</element>
 		<element name="addMap" function="true" type="void">
@@ -2981,970 +3045,39 @@
 			</arguments>
 		</element>
-		<element name="clear" function="true">
-			<description><![CDATA[Removes custom display settings that might have been defined by various scripts (expdef or show).]]></description>
-		</element>
 	</type>
 	<type name="sim_params" context="Global context">
 <description><![CDATA[This object groups all simulator parameters so they can be loaded or saved with a single call (see scripts/standard_loadsave.inc). For other purposes please use specific objects, like Simulator, World, Populations, etc.]]></description>
-		<element name="autosaveperiod" type="integer" min="0" max="100000">
-			<description><![CDATA[Save simulation state once every n-th event
-(events are defined by the script. For 'standard.expdef' it is after each death).
-Save EXPT file first to initialize name for autosave files.
-Slave simulators (in multithreaded experiments) ignore this setting and never create autosave files.]]></description>
-		</element>
-		<element name="bnoise_struct" type="float" min="0" max="10" default="0.0">
-			<description><![CDATA[When >0, body constructs of creatures (position of Parts) will be randomly disturbed when they are created.]]></description>
-		</element>
-		<element name="bnoise_vel" type="float" min="0" max="10" default="0.0">
-			<description><![CDATA[Random velocities will be applied to all body Parts (in MechaStick) or rigid segments (in ODE) of newly created creatures.]]></description>
-		</element>
-		<element name="changedProperty" type="integer"/>
-		<element name="changedPropertyId" type="string"/>
-		<element name="cpus" type="integer"/>
-		<element name="createrr" type="integer" min="0" max="2" default="1"/>
-		<element name="creatwarnfail" type="integer" min="0" max="1">
-			<description><![CDATA[Creatures grown with warnings will not be simulated.]]></description>
-		</element>
-		<element name="expdef" type="string">
-			<description><![CDATA[Choose the experiment framework
-(in Windows GUI, confirm by pressing 'Apply')
-
-Stop the simulation before selecting another experiment definition.
-It is a good practice to initialize the experiment before running the simulation.]]></description>
-		</element>
-		<element name="expdef_info" type="string"/>
-		<element name="expdef_title" type="string"/>
-		<element name="expparams" type="ExpParams"/>
-		<element name="expstate" type="ExpState"/>
-		<element name="f0_c_del" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_c_new" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_c_wei" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_j_del" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_j_new" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_j_rsf" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_j_stf" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_j_stm" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_j_vblu" type="float" min="0" max="100" default="0.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_j_vgrn" type="float" min="0" max="100" default="0.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_j_vred" type="float" min="0" max="100" default="0.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_n_del" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_n_new" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_n_prp" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_nodel_tag" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[You can tag elements using their 'i' field and the i="mi=d" tag.
-Mutations will not delete such elements.
-The i="mi=dm" combination is allowed.]]></description>
-		</element>
-		<element name="f0_nomod_tag" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[You can tag elements using their 'i' field and the i="mi=m" tag.
-Mutations will not modify properties of such elements.
-The i="mi=md" combination is allowed.]]></description>
-		</element>
-		<element name="f0_p_asm" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_p_del" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_p_frc" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_p_ing" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_p_mas" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_p_new" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_p_pos" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_p_swp" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f0_p_vsiz" type="float" min="0" max="100" default="0.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f1_mut_exmod" type="string">
-			<description><![CDATA[Modifiers that will not be added nor deleted during mutation
-(all: LlRrCcQqFfMmIiWwEeAaSsDdGgBbHh)]]></description>
-		</element>
-		<element name="f1_nmConn" type="float" min="0" max="100" default="0.1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f1_nmNeu" type="float" min="0" max="100" default="0.05">
-			<description><![CDATA[Adds a (connected) neuron or removes a neuron]]></description>
-		</element>
-		<element name="f1_nmProp" type="float" min="0" max="100" default="0.1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f1_nmVal" type="float" min="0" max="100" default="0.05"/>
-		<element name="f1_nmWei" type="float" min="0" max="100" default="1.0"/>
-		<element name="f1_smComma" type="float" min="0" max="100" default="0.02"/>
-		<element name="f1_smJunct" type="float" min="0" max="100" default="0.02"/>
-		<element name="f1_smModif" type="float" min="0" max="100" default="0.1">
-			<description><![CDATA[Modifiers: LlRrCcQqFfMmIiWwEeAaSsDdGgBbHh]]></description>
-		</element>
-		<element name="f1_smX" type="float" min="0" max="100" default="0.05"/>
-		<element name="f1_xo_propor" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[Cross over (exchange) corresponding segments of the two parent genotypes?
-
-f1 uses a two-point crossing over.
-If this option is turned on, cut points will be selected proportionally to neural genes.
-Thus, if both parents have the same number of neurons, then this will be preserved in their children.]]></description>
-		</element>
-		<element name="f2_mutAddOper" type="float" min="0" max="1" default="0.4">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f2_mutConnElem" type="float" min="0" max="1" default="0.33">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f2_mutDelOper" type="float" min="0" max="1" default="0.1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f2_mutHandleOper" type="float" min="0" max="1" default="0.3">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f2_mutJointElem" type="float" min="0" max="1" default="0.33">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f2_mutNeuroElem" type="float" min="0" max="1" default="0.33">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f2_mutPropOper" type="float" min="0" max="1" default="0.2">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_mutDelIns" type="float" min="0" max="1" default="0.1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_mutDelInsLength" type="integer" min="1" max="100" default="5">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_mutDelInsPerChar" type="float" min="0" max="1" default="0.05">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_mutDuplication" type="float" min="0" max="1" default="0.05">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_mutSubstitution" type="float" min="0" max="1" default="0.6">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_mutSubstPerChar" type="float" min="0" max="1" default="0.1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_mutTranslocation" type="float" min="0" max="1" default="0.15">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_xovCrossingOver" type="float" min="0" max="1" default="0.2">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f3_xovGeneTransfer" type="float" min="0" max="1" default="0.8">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="f4_mut_add" type="float" min="0" max="100" default="50.0">
-			<description><![CDATA[mutation: probability of adding a node]]></description>
-		</element>
-		<element name="f4_mut_add_conn" type="float" min="0" max="100" default="15.0">
-			<description><![CDATA[add node mutation: probability of adding a neural connection]]></description>
-		</element>
-		<element name="f4_mut_add_div" type="float" min="0" max="100" default="20.0">
-			<description><![CDATA[add node mutation: probability of adding a division]]></description>
-		</element>
-		<element name="f4_mut_add_neupar" type="float" min="0" max="100" default="5.0">
-			<description><![CDATA[add node mutation: probability of adding a neuron property/modifier]]></description>
-		</element>
-		<element name="f4_mut_add_rep" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[add node mutation: probability of adding a repetition]]></description>
-		</element>
-		<element name="f4_mut_add_simp" type="float" min="0" max="100" default="50.0">
-			<description><![CDATA[add node mutation: probability of adding a random, simple gene]]></description>
-		</element>
-		<element name="f4_mut_del" type="float" min="0" max="100" default="20.0">
-			<description><![CDATA[mutation: probability of deleting a node]]></description>
-		</element>
-		<element name="f4_mut_mod" type="float" min="0" max="100" default="30.0">
-			<description><![CDATA[mutation: probability of changing a node]]></description>
-		</element>
-		<element name="f9_mut" type="float" min="0" max="1" default="0.1">
-			<description><![CDATA[How many genes should be mutated during single mutation (1=all genes, 0.1=ten percent)]]></description>
-		</element>
-		<element name="fF_xover" type="float" min="0" max="0.5" default="0.5">
-			<description><![CDATA[0.5 => children are averaged parents.
-0.2 => children are only 20% different from parents.
-0 => each child is identical to one parent (no crossover).]]></description>
-		</element>
-		<element name="filecomm" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[Display comments encountered in opened files]]></description>
-		</element>
-		<element name="gen_extmutinfo" type="integer" min="0" max="2" default="0">
-			<description><![CDATA[If active, information about employed mutation method will be stored in the 'info' field of each mutated genotype.]]></description>
-		</element>
-		<element name="gen_hilite" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[Use colors for genes?
-(slows down viewing/editing of huge genotypes)]]></description>
-		</element>
-		<element name="gen_hist" type="integer" min="0" max="1" default="0">
-			<description><![CDATA[Required for phylogenetic analysis]]></description>
-		</element>
-		<element name="genepools" type="GenePools"/>
-		<element name="genkonw0" type="integer" min="0" max="1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="genkonw1" type="integer" min="0" max="1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="genkonw2" type="integer" min="0" max="1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="genkonw3" type="integer" min="0" max="1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="genkonw4" type="integer" min="0" max="1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="genkonw5" type="integer" min="0" max="1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="genoper_f0" type="integer" min="0" max="0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="genoper_f1" type="integer" min="0" max="0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="genoper_f2" type="integer" min="0" max="0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="genoper_f3" type="integer" min="0" max="0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="genoper_f4" type="integer" min="0" max="0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="genoper_f9" type="integer" min="0" max="0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="genoper_fF" type="integer" min="0" max="0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="geom_density" type="float" min="0.01" max="100" default="1.0">
-			<description><![CDATA[Affects the geometry calculation precision]]></description>
-		</element>
-		<element name="groupchk" type="integer" min="0" max="1"/>
-		<element name="identity" type="integer">
-			<description><![CDATA[-1 for master simulator, 0...count-1 for slaves]]></description>
-		</element>
-		<element name="importchk" type="integer" min="0" max="1"/>
-		<element name="lastCheckpoint" type="untyped">
-			<description><![CDATA[Most recently reported by the experiment definition script.]]></description>
-		</element>
-		<element name="loadchk" type="integer" min="0" max="1"/>
-		<element name="maxjoint" type="float" min="0" max="100" default="2.0"/>
-		<element name="minjoint" type="float" min="0" max="100" default="0.0"/>
-		<element name="neuadd_N" type="integer" min="0" max="1">
-			<description><![CDATA[Standard neuron
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Inertia (in) float 0..1
-   Force (fo) float 0..999
-   Sigmoid (si) float -99999..99999
-   State (s) float -1..1]]></description>
-		</element>
-		<element name="neuadd_Nu" type="integer" min="0" max="1">
-			<description><![CDATA[Works like standard neuron (N) but the output value is scaled to 0...+1 instead of -1...+1.
-Having 0 as one of the saturation states should help in "gate circuits", where input signal is passed through or blocked depending on the other singal.
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Inertia (in) float 0..1
-   Force (fo) float 0..999
-   Sigmoid (si) float -99999..99999
-   State (s) float -1..1]]></description>
-		</element>
-		<element name="neuadd_G" type="integer" min="0" max="1">
-			<description><![CDATA[Equilibrium sensor.
-0=the stick is horizontal
-+1/-1=the stick is vertical
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Joint
-]]></description>
-		</element>
-		<element name="neuadd_T" type="integer" min="0" max="1">
-			<description><![CDATA[Touch sensor.
--1=no contact
-0=just touching
->0=pressing, value depends on the force applied
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-
-
-Properties:
-   Range (r) float 0..1]]></description>
-		</element>
-		<element name="neuadd_S" type="integer" min="0" max="1">
-			<description><![CDATA[Smell sensor. Aggregated "smell of energy" experienced from all energy objects (creatures and food pieces).
-Close objects have bigger influence than the distant ones: for each energy source, its partial feeling is proportional to its energy/(distance^2)
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-]]></description>
-		</element>
-		<element name="neuadd_Constant" type="integer" min="0" max="1">
-			<description><![CDATA[Constant value
-
-Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="neuadd_Bend_muscle" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   does not provide output value
-   should be located on a Joint
-
-
-Properties:
-   power (p) float 0.01..1
-   bending range (r) float 0..1]]></description>
-		</element>
-		<element name="neuadd_Rotation_muscle" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   does not provide output value
-   should be located on a Joint
-
-
-Properties:
-   power (p) float 0.01..1]]></description>
-		</element>
-		<element name="neuadd_D" type="integer" min="0" max="1">
-			<description><![CDATA[Calculate the difference between the current and previous input value. Multiple inputs are aggregated with respect to their weights
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="neuadd_Fuzzy" type="integer" min="0" max="1">
-			<description><![CDATA[Refer to publications to learn more about this neuron.
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   number of fuzzy sets (ns) integer
-   number of rules (nr) integer
-   fuzzy sets (fs) string
-   fuzzy rules (fr) string]]></description>
-		</element>
-		<element name="neuadd_VEye" type="integer" min="0" max="1">
-			<description><![CDATA[Refer to publications to learn more about this neuron.
-
-Characteristics:
-   uses single input
-   provides output value
-   should be located on a Part
-
-
-Properties:
-   target.x (tx) float
-   target.y (ty) float
-   target.z (tz) float
-   target shape (ts) string
-   perspective (p) float 0.1..10
-   scale (s) float 0.1..100
-   show hidden lines (h) integer 0..1
-   output lines count (each line needs four channels) (o) integer 0..99
-   debug (d) integer 0..1]]></description>
-		</element>
-		<element name="neuadd_VMotor" type="integer" min="0" max="1">
-			<description><![CDATA[Must be connected to the VEye and properly set up. Refer to publications to learn more about this neuron.
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   number of basic features (noIF) integer
-   number of degrees of freedom (noDim) integer
-   parameters (params) string]]></description>
-		</element>
-		<element name="neuadd_Sti" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   does not provide output value
-   should be located on a Part
-]]></description>
-		</element>
-		<element name="neuadd_LMu" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   does not provide output value
-   should be located on a Joint
-
-
-Properties:
-   power (p) float 0.01..1]]></description>
-		</element>
-		<element name="neuadd_Water" type="integer" min="0" max="1">
-			<description><![CDATA[Output signal:
-0=on or above water surface
-1=under water (deeper than 1)
-0..1=in the transient area just below water surface
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-]]></description>
-		</element>
-		<element name="neuadd_Energy" type="integer" min="0" max="1">
-			<description><![CDATA[The current energy level divided by the initial energy level.
-Usually falls from initial 1.0 down to 0.0 and then the creature dies. It can rise above 1.0 if enough food is ingested
-
-Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="neuadd_Ch" type="integer" min="0" max="1">
-			<description><![CDATA[Combines all input signals into a single multichannel output; Note: ChSel and ChMux are the only neurons which support multiple channels. Other neurons discard everything except the first channel.
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="neuadd_ChMux" type="integer" min="0" max="1">
-			<description><![CDATA[Outputs the selected channel from the second (multichannel) input. The first input is used as the selector value (-1=select first channel, .., 1=last channel)
-
-Characteristics:
-   uses 2 inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="neuadd_ChSel" type="integer" min="0" max="1">
-			<description><![CDATA[Outputs a single channel (selected by the "ch" parameter) from multichannel input
-
-Characteristics:
-   uses single input
-   provides output value
-   does not require location in body
-
-
-Properties:
-   channel (ch) integer]]></description>
-		</element>
-		<element name="neuadd_Rnd" type="integer" min="0" max="1">
-			<description><![CDATA[Generates random noise (subsequent random values in the range of -1..+1)
-
-Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="neuadd_Sin" type="integer" min="0" max="1">
-			<description><![CDATA[Output frequency = f0+input
-
-Characteristics:
-   uses single input
-   provides output value
-   does not require location in body
-
-
-Properties:
-   base frequency (f0) float -1..1
-   time (t) float 0..6.28319]]></description>
-		</element>
-		<element name="ncl_N" type="integer" min="0" max="1">
-			<description><![CDATA[Standard neuron
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Inertia (in) float 0..1
-   Force (fo) float 0..999
-   Sigmoid (si) float -99999..99999
-   State (s) float -1..1]]></description>
-		</element>
-		<element name="ncl_Nu" type="integer" min="0" max="1">
-			<description><![CDATA[Works like standard neuron (N) but the output value is scaled to 0...+1 instead of -1...+1.
-Having 0 as one of the saturation states should help in "gate circuits", where input signal is passed through or blocked depending on the other singal.
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Inertia (in) float 0..1
-   Force (fo) float 0..999
-   Sigmoid (si) float -99999..99999
-   State (s) float -1..1]]></description>
-		</element>
-		<element name="ncl_G" type="integer" min="0" max="1">
-			<description><![CDATA[Equilibrium sensor.
-0=the stick is horizontal
-+1/-1=the stick is vertical
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Joint
-]]></description>
-		</element>
-		<element name="ncl_T" type="integer" min="0" max="1">
-			<description><![CDATA[Touch sensor.
--1=no contact
-0=just touching
->0=pressing, value depends on the force applied
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-
-
-Properties:
-   Range (r) float 0..1]]></description>
-		</element>
-		<element name="ncl_S" type="integer" min="0" max="1">
-			<description><![CDATA[Smell sensor. Aggregated "smell of energy" experienced from all energy objects (creatures and food pieces).
-Close objects have bigger influence than the distant ones: for each energy source, its partial feeling is proportional to its energy/(distance^2)
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-]]></description>
-		</element>
-		<element name="ncl_Constant" type="integer" min="0" max="1">
-			<description><![CDATA[Constant value
-
-Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="ncl_Bend_muscle" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   does not provide output value
-   should be located on a Joint
-
-
-Properties:
-   power (p) float 0.01..1
-   bending range (r) float 0..1]]></description>
-		</element>
-		<element name="ncl_Rotation_muscle" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   does not provide output value
-   should be located on a Joint
-
-
-Properties:
-   power (p) float 0.01..1]]></description>
-		</element>
-		<element name="ncl_D" type="integer" min="0" max="1">
-			<description><![CDATA[Calculate the difference between the current and previous input value. Multiple inputs are aggregated with respect to their weights
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="ncl_Fuzzy" type="integer" min="0" max="1">
-			<description><![CDATA[Refer to publications to learn more about this neuron.
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   number of fuzzy sets (ns) integer
-   number of rules (nr) integer
-   fuzzy sets (fs) string
-   fuzzy rules (fr) string]]></description>
-		</element>
-		<element name="ncl_VEye" type="integer" min="0" max="1">
-			<description><![CDATA[Refer to publications to learn more about this neuron.
-
-Characteristics:
-   uses single input
-   provides output value
-   should be located on a Part
-
-
-Properties:
-   target.x (tx) float
-   target.y (ty) float
-   target.z (tz) float
-   target shape (ts) string
-   perspective (p) float 0.1..10
-   scale (s) float 0.1..100
-   show hidden lines (h) integer 0..1
-   output lines count (each line needs four channels) (o) integer 0..99
-   debug (d) integer 0..1]]></description>
-		</element>
-		<element name="ncl_VMotor" type="integer" min="0" max="1">
-			<description><![CDATA[Must be connected to the VEye and properly set up. Refer to publications to learn more about this neuron.
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   number of basic features (noIF) integer
-   number of degrees of freedom (noDim) integer
-   parameters (params) string]]></description>
-		</element>
-		<element name="ncl_Sti" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   does not provide output value
-   should be located on a Part
-]]></description>
-		</element>
-		<element name="ncl_LMu" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   does not provide output value
-   should be located on a Joint
-
-
-Properties:
-   power (p) float 0.01..1]]></description>
-		</element>
-		<element name="ncl_Water" type="integer" min="0" max="1">
-			<description><![CDATA[Output signal:
-0=on or above water surface
-1=under water (deeper than 1)
-0..1=in the transient area just below water surface
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-]]></description>
-		</element>
-		<element name="ncl_Energy" type="integer" min="0" max="1">
-			<description><![CDATA[The current energy level divided by the initial energy level.
-Usually falls from initial 1.0 down to 0.0 and then the creature dies. It can rise above 1.0 if enough food is ingested
-
-Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="ncl_Ch" type="integer" min="0" max="1">
-			<description><![CDATA[Combines all input signals into a single multichannel output; Note: ChSel and ChMux are the only neurons which support multiple channels. Other neurons discard everything except the first channel.
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="ncl_ChMux" type="integer" min="0" max="1">
-			<description><![CDATA[Outputs the selected channel from the second (multichannel) input. The first input is used as the selector value (-1=select first channel, .., 1=last channel)
-
-Characteristics:
-   uses 2 inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="ncl_ChSel" type="integer" min="0" max="1">
-			<description><![CDATA[Outputs a single channel (selected by the "ch" parameter) from multichannel input
-
-Characteristics:
-   uses single input
-   provides output value
-   does not require location in body
-
-
-Properties:
-   channel (ch) integer]]></description>
-		</element>
-		<element name="ncl_Rnd" type="integer" min="0" max="1">
-			<description><![CDATA[Generates random noise (subsequent random values in the range of -1..+1)
-
-Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="ncl_Sin" type="integer" min="0" max="1">
-			<description><![CDATA[Output frequency = f0+input
-
-Characteristics:
-   uses single input
-   provides output value
-   does not require location in body
-
-
-Properties:
-   base frequency (f0) float -1..1
-   time (t) float 0..6.28319]]></description>
-		</element>
-		<element name="nnoise" type="float" min="0" max="1" default="0.0">
-			<description><![CDATA[Gaussian neural noise: a random value is added to each neural output in each simulation step. Set standard deviation here to add random noise, or 0 for deterministic simulation.]]></description>
-		</element>
-		<element name="nnspeed" type="float" min="0" max="1000" default="1.0">
-			<description><![CDATA[Number of neural network simulation steps in each physics simulation step]]></description>
-		</element>
-		<element name="odeairdrag" type="float" min="0" max="0.5" default="0.01">
-			<description><![CDATA[A drag force ("air drag") proportional to the velocity of mass centers of moving parts]]></description>
-		</element>
-		<element name="odecol2bounce" type="float" min="0" max="1" default="0.1"/>
-		<element name="odecol2bouncevel" type="float" min="0" max="1" default="0.01"/>
-		<element name="odecol2mumax" type="float" min="0" max="10" default="1.0">
-			<description><![CDATA[Mu coefficient for Parts with maximal friction (i.e. "FFFFF" in f1)]]></description>
-		</element>
-		<element name="odecol2mumin" type="float" min="0" max="10" default="0.1">
-			<description><![CDATA[Mu coefficient for Parts with minimal friction (i.e. "fffff" in f1)]]></description>
-		</element>
-		<element name="odecol2softcfm" type="float" min="0" max="1" default="0.0"/>
-		<element name="odecol2softerp" type="float" min="0" max="1" default="0.0"/>
-		<element name="odecolbounce" type="float" min="0" max="1" default="0.1"/>
-		<element name="odecolbouncevel" type="float" min="0" max="1" default="0.01"/>
-		<element name="odecolmumax" type="float" min="0" max="10" default="5.0">
-			<description><![CDATA[Mu coefficient for Parts with maximal friction (i.e. "FFFFF" in f1)]]></description>
-		</element>
-		<element name="odecolmumin" type="float" min="0" max="10" default="0.1">
-			<description><![CDATA[Mu coefficient for Parts with minimal friction (i.e. "fffff" in f1)]]></description>
-		</element>
-		<element name="odecolsoftcfm" type="float" min="0" max="1" default="0.0"/>
-		<element name="odecolsofterp" type="float" min="0" max="1" default="0.0"/>
-		<element name="odemusclemax" type="float" min="0" max="100" default="10.0">
-			<description><![CDATA[i.e. "MMMMM" if f1]]></description>
-		</element>
-		<element name="odemusclemin" type="float" min="0" max="100" default="0.0">
-			<description><![CDATA[i.e. "mmmmm" in f1]]></description>
-		</element>
-		<element name="odemusclespeed" type="float" min="0" max="10" default="1.0">
-			<description><![CDATA[Muscle state cannot change faster than the supplied value]]></description>
-		</element>
-		<element name="odeseed" type="integer" min="0" max="2">
-			<description><![CDATA[Affects collisions.
-- 'Truly random' is closest to the standard ODE operation. Use Math.seed to influence randomness in ODE collisions.
-- 'Deterministic' automatically calculates random seed in each step based on the current simulation (world) state, which makes the simulation repeatable but more random than 'Fixed'.
-- 'Fixed' is completely deterministic and does not depend on Math.seed - the same seed value is set before each step. This might negatively affect ODE accuracy.
-]]></description>
-		</element>
-		<element name="odesepsticks" type="integer" min="0" max="1" default="0">
-			<description><![CDATA[Each stick gets a separate ODE body (like in MechaStick)]]></description>
-		</element>
-		<element name="odeshape" type="integer" min="0" max="1"/>
-		<element name="odestep" type="float" min="0.001" max="1" default="0.05"/>
-		<element name="odewaterbuoy" type="float" min="0" max="2" default="1.0"/>
-		<element name="odewaterdrag" type="float" min="0.001" max="1" default="0.5"/>
-		<element name="odeworldcfm" type="float" min="0" max="1" default="1e-05">
-			<description><![CDATA[World CFM (constraint force mixing)]]></description>
-		</element>
-		<element name="odeworlderp" type="float" min="0" max="1" default="0.2">
-			<description><![CDATA[World ERP (error reduction parameter)]]></description>
-		</element>
-		<element name="overwrite" type="integer" min="0" max="1">
-			<description><![CDATA[Overwite existing files or create their backups]]></description>
-		</element>
-		<element name="populations" type="Populations"/>
-		<element name="randinit" type="float" min="0" max="10" default="0.01">
-			<description><![CDATA[Allowed range for initializing all neuron states with uniform distribution random numbers and zero mean. Set to 0 for deterministic initialization.]]></description>
-		</element>
-		<element name="resetonexpdef" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[If turned on: when a new experiment definition is selected, default values are loaded for most of the simulator parameters, and gene pools and populations are cleared.
-If turned off: parameters from previous experiment definition will remain (dangerous).]]></description>
-		</element>
-		<element name="running" type="integer" min="0" max="1">
-			<description><![CDATA[useful for synchronizing the user interface state]]></description>
-		</element>
-		<element name="signals" type="WorldSignals"/>
-		<element name="simil_method" type="integer" min="0" max="1" default="0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="simil_neuro" type="float" min="0" max="100" default="0.5">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="simil_partdeg" type="float" min="0" max="100" default="1.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="simil_parts" type="float" min="0" max="100" default="0.0">
-			<description><![CDATA[Differing number of parts is also handled by the 'part degree' similarity component.]]></description>
-		</element>
-		<element name="simspeed" type="integer">
-			<description><![CDATA[steps/second]]></description>
-		</element>
-		<element name="simtype" type="integer" min="0" max="1" default="0">
-			<description><![CDATA[MechaStick is a fast and simple primary Framsticks simulation engine.
-ODE is Open Dynamics Engine by Russel Smith et al.
-
-NOTE: switching between simulation engines causes removal of all objects in the world (e.g. creatures).]]></description>
-		</element>
-		<element name="slaves" type="SlaveSimulators"/>
-		<element name="symAlphaSteps" type="integer" min="2" max="50" default="20">
-			<description><![CDATA[Default number of samples per full angle (#1)]]></description>
-		</element>
-		<element name="symBetaSteps" type="integer" min="2" max="50" default="20">
-			<description><![CDATA[Default number of samples per full angle (#2)]]></description>
-		</element>
-		<element name="symPosSteps" type="integer" min="2" max="50" default="10">
-			<description><![CDATA[Default number of samples per stick length]]></description>
-		</element>
-		<element name="symResultA" type="float"/>
-		<element name="symResultB" type="float"/>
-		<element name="symResultC" type="float"/>
-		<element name="symResultD" type="float"/>
-		<element name="time" type="integer"/>
-		<element name="touchrange" type="float" min="0" max="100" default="1.0"/>
-		<element name="user" type="untyped"/>
-		<element name="usercode" type="string">
-			<description><![CDATA[This script overrides the experiment definition]]></description>
-		</element>
-		<element name="vmdebug" type="integer" min="0" max="1"/>
-		<element name="world" type="World"/>
-		<element name="wrldbnd" type="integer" min="0" max="2" default="1"/>
-		<element name="wrldg" type="float" min="0" max="10" default="1.0">
-			<description><![CDATA[You can adjust gravity for your experiments.
-The "official" setting used to evaluate and compare creatures is 1.]]></description>
-		</element>
-		<element name="wrldmap" type="string">
-			<description><![CDATA[Description of the world (Type: Blocks or Heighfield). Enter
-   r <sizex> <sizey> [seed]
-to generate a random landscape, or
-   m <sizex> <sizey> digits
-   M <sizex> <sizey> numbers
-to provide height values.
-
-See also the WorldMap object.]]></description>
-		</element>
-		<element name="wrldsiz" type="float" min="10" max="1000" default="20.0">
-			<description><![CDATA[Side length of the world]]></description>
-		</element>
-		<element name="wrldtyp" type="integer" min="0" max="2" default="0"/>
-		<element name="wrldwat" type="float" min="-20" max="200" default="-1.0"/>
-		<element name="add" function="true"/>
-		<element name="addGroup" function="true"/>
-		<element name="area" function="true" type="float"><arguments/></element>
+		<element name="print" function="true" type="void">
+			<description><![CDATA[One argument: message to be printed]]></description>
+			<arguments>
+				<argument name="text" type="string"/>
+			</arguments>
+		</element>
+		<element name="message" function="true" type="void">
+			<description><![CDATA[The second argument can be:
+ -1 = debugging message
+ 0 = information
+ 1 = warning
+ 2 = error
+ 3 = critical error]]></description>
+			<arguments>
+				<argument name="text" type="string"/>
+				<argument name="level" type="integer"/>
+			</arguments>
+		</element>
+		<element name="sleep" function="true" type="void">
+			<description><![CDATA[Suspends the execution for a specified interval]]></description>
+			<arguments>
+				<argument name="milliseconds" type="integer"/>
+			</arguments>
+		</element>
 		<element name="beep" function="true" type="void">
 			<description><![CDATA[Plays a default system sound]]></description>
 <arguments/></element>
-		<element name="calculateSymmetry" function="true" type="float">
-			<description><![CDATA[Returns bilateral symmetry (0.0 .. 1.0) for a given Model using default precision parameters (symPosSteps,symAlphaSteps,symBetaSteps). Returns the symmetry plane, too (sets symResultA,B,C,D).
-Note: may take a long time for large creatures.]]></description>
-			<arguments>
-				<argument name="model" type="Model"/>
-			</arguments>
-		</element>
-		<element name="calculateSymmetry2" function="true" type="float">
-			<description><![CDATA[Returns bilateral symmetry (0.0 .. 1.0) for a given Model using specified precision parameters. Returns the symmetry plane, too (sets symResultA,B,C,D).
-Note: may take a long time for large creatures.]]></description>
-			<arguments>
-				<argument name="model" type="Model"/>
-				<argument name="posSteps" type="integer"/>
-				<argument name="alphaSteps" type="integer"/>
-				<argument name="betaSteps" type="integer"/>
-			</arguments>
-		</element>
-		<element name="calculateSymmetryForPlane" function="true" type="float">
-			<description><![CDATA[Returns bilateral symmetry (0.0 .. 1.0) for a given Model and given a specific plane defined by coefficients A, B, C, D.]]></description>
-			<arguments>
-				<argument name="model" type="Model"/>
-				<argument name="A" type="float"/>
-				<argument name="B" type="float"/>
-				<argument name="C" type="float"/>
-				<argument name="D" type="float"/>
-			</arguments>
-		</element>
-		<element name="checkpoint" function="true" type="void">
-			<description><![CDATA[This function was previously called "autosave".]]></description>
-<arguments/></element>
-		<element name="checkpointData" function="true" type="void">
-			<description><![CDATA[In the distributed/paralellized scenario the data passed as argument can be received by the controlling entity (onSlaveCheckpoint in multithreaded master experiment, /simulator/expevent in distributed network simulator)]]></description>
-			<arguments>
-				<argument name="any_data" type="untyped"/>
-			</arguments>
-		</element>
-		<element name="clear" function="true"/>
-		<element name="crossOver" function="true" type="Geno">
-			<description><![CDATA[returns crossed over genotype]]></description>
-			<arguments>
-				<argument type="Geno"/>
-				<argument type="Geno"/>
+		<element name="sound" function="true" type="void">
+			<description><![CDATA[Generates a simple tone on the speaker]]></description>
+			<arguments>
+				<argument name="freqency in Hz" type="integer"/>
+				<argument name="length in milliseconds" type="integer"/>
 			</arguments>
 		</element>
@@ -3962,9 +3095,36 @@
 			</arguments>
 		</element>
-		<element name="evaluateDistance" function="true" type="float">
-			<description><![CDATA[Calculates dissimilarity between two models created from Geno objects. There are papers available that describe details of the computation method.]]></description>
-			<arguments>
-				<argument type="Geno"/>
-				<argument type="Geno"/>
+		<element name="load" function="true" type="void">
+			<description><![CDATA[Load experiment file (calls onExpLoad() in the current experiment definition). This function is intended to replace the simulator state; the old state is cleared by automatically calling "resetToDefaults()" (only if "resetonexpdef" is enabled). Use "import" if you don't want to loose the old simulator state.]]></description>
+			<arguments>
+				<argument name="filename" type="string"/>
+			</arguments>
+		</element>
+		<element name="import" function="true" type="void">
+			<description><![CDATA[Load some data from file. The second optional argument selects what section(s) will be imported:
+ 1 - experiment (works like "load" and can reset the simulator state!)
+ 2 - genotypes
+ 4 - simulator parameters
+ 8 - genepool settings
+ 16 - population settings
+ 32 - new groups will be created for imported genepools and populations
+64 - allow switching to a different expdef while importing parameters (4)
+
+The standard behavior (without the second argument) is to import genotypes, parameters, and genepool and population settings (2+4+8+16). Note that "64" is not included by default, because the expdef change resets all simulator parameters, which contradicts the usual meaning of "import" in Framsticks ("add data", as opposed to "load" meaning "replace data"). Moreover, using the "64" option in scripts can be dengerous, especially all expdef and show scripts should always declare the proper expdef name in their header rather than change the expdef directly. Without the "64" option, it is always safe to "import" any file in a script regardless of the current simulator state.]]></description>
+			<arguments>
+				<argument name="filename" type="string"/>
+				<argument name="options" type="integer"/>
+			</arguments>
+		</element>
+		<element name="import" function="true" type="void">
+			<description><![CDATA[Equivalent to import(filename,2+4+8+16) - imports genotypes, parameters, genepool and population settings]]></description>
+			<arguments>
+				<argument name="filename" type="string"/>
+			</arguments>
+		</element>
+		<element name="save" function="true" type="untyped">
+			<description><![CDATA[Save experiment file (calls onExpSave() in the current experiment definition)]]></description>
+			<arguments>
+				<argument name="filename" type="string"/>
 			</arguments>
 		</element>
@@ -3989,4 +3149,1036 @@
 			</arguments>
 		</element>
+		<element name="start" function="true" type="void">
+			<description><![CDATA[called by the user interface]]></description>
+<arguments/></element>
+		<element name="stop" function="true" type="void">
+			<description><![CDATA[the expdef script calls this to stop simulation]]></description>
+<arguments/></element>
+		<element name="running" type="integer" min="0" max="1">
+			<description><![CDATA[useful for synchronizing the user interface state]]></description>
+		</element>
+		<element name="step" function="true" type="void"><arguments/></element>
+		<element name="time" type="integer"/>
+		<element name="simspeed" type="integer">
+			<description><![CDATA[steps/second]]></description>
+		</element>
+		<element name="expdef" type="string">
+			<description><![CDATA[Choose the experiment framework
+(in Windows GUI, confirm by pressing 'Apply')
+
+Stop the simulation before selecting another experiment definition.
+It is a good practice to initialize the experiment before running the simulation.]]></description>
+		</element>
+		<element name="expdef_title" type="string"/>
+		<element name="expdef_info" type="string"/>
+		<element name="init" function="true" type="void">
+			<description><![CDATA[Performs initialization procedures, like resetting counters, states, gene pools, etc.]]></description>
+<arguments/></element>
+		<element name="loadexpdef" function="true" type="void"><arguments/></element>
+		<element name="usercode" type="string">
+			<description><![CDATA[This script overrides the experiment definition]]></description>
+		</element>
+		<element name="autosaveperiod" type="integer" min="0" max="100000">
+			<description><![CDATA[Save simulation state once every n-th event
+(events are defined by the script. For 'standard.expdef' it is after each death).
+Save EXPT file first to initialize name for autosave files.
+Slave simulators (in multithreaded experiments) ignore this setting and never create autosave files.]]></description>
+		</element>
+		<element name="overwrite" type="integer" min="0" max="1">
+			<description><![CDATA[Overwite existing files or create their backups]]></description>
+		</element>
+		<element name="filecomm" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[Display comments encountered in opened files]]></description>
+		</element>
+		<element name="checkpoint" function="true" type="void">
+			<description><![CDATA[This function was previously called "autosave".]]></description>
+<arguments/></element>
+		<element name="checkpointData" function="true" type="void">
+			<description><![CDATA[In the distributed/paralellized scenario the data passed as argument can be received by the controlling entity (onSlaveCheckpoint in multithreaded master experiment, /simulator/expevent in distributed network simulator)]]></description>
+			<arguments>
+				<argument name="any_data" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="lastCheckpoint" type="untyped">
+			<description><![CDATA[Most recently reported by the experiment definition script.]]></description>
+		</element>
+		<element name="createrr" type="integer" min="0" max="2" default="1"/>
+		<element name="creatwarnfail" type="integer" min="0" max="1">
+			<description><![CDATA[Creatures grown with warnings will not be simulated.]]></description>
+		</element>
+		<element name="importchk" type="integer" min="0" max="1"/>
+		<element name="loadchk" type="integer" min="0" max="1"/>
+		<element name="groupchk" type="integer" min="0" max="1"/>
+		<element name="vmdebug" type="integer" min="0" max="1"/>
+		<element name="resetToDefaults" function="true" type="void">
+			<description><![CDATA[Clears groups and loads default values for simulator parameters, then calls onExpDefLoad() of the current experiment definition.]]></description>
+<arguments/></element>
+		<element name="resetonexpdef" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[If turned on: when a new experiment definition is selected, default values are loaded for most of the simulator parameters, and gene pools and populations are cleared.
+If turned off: parameters from previous experiment definition will remain (dangerous).]]></description>
+		</element>
+		<element name="new" function="true" type="Simulator"><arguments/></element>
+		<element name="slaves" type="SlaveSimulators"/>
+		<element name="cpus" type="integer"/>
+		<element name="world" type="World"/>
+		<element name="populations" type="Populations"/>
+		<element name="genepools" type="GenePools"/>
+		<element name="expparams" type="ExpParams"/>
+		<element name="expstate" type="ExpState"/>
+		<element name="loadNeurons" function="true" type="void">
+			<arguments>
+				<argument name="directory path" type="string"/>
+			</arguments>
+		</element>
+		<element name="user" type="untyped"/>
+		<element name="identity" type="integer">
+			<description><![CDATA[-1 for master simulator, 0...count-1 for slaves]]></description>
+		</element>
+		<element name="clear" function="true"/>
+		<element name="add" function="true"/>
+		<element name="remove" function="true"/>
+		<element name="addGroup" function="true"/>
+		<element name="removeGroup" function="true"/>
+		<element name="changedProperty" type="integer"/>
+		<element name="changedPropertyId" type="string"/>
+		<element name="wrldtyp" type="integer" min="0" max="2" default="0"/>
+		<element name="wrldsiz" type="float" min="10" max="1000" default="20.0">
+			<description><![CDATA[Side length of the world]]></description>
+		</element>
+		<element name="wrldmap" type="string">
+			<description><![CDATA[Description of the world (Type: Blocks or Heighfield). Enter
+   r <sizex> <sizey> [seed]
+to generate a random landscape, or
+   m <sizex> <sizey> digits
+   M <sizex> <sizey> numbers
+to provide height values.
+
+See also the WorldMap object.]]></description>
+		</element>
+		<element name="wrldwat" type="float" min="-20" max="200" default="-1.0"/>
+		<element name="wrldbnd" type="integer" min="0" max="2" default="1">
+			<description><![CDATA[Teleporting a creature that is outside of the world area is attempted every 'performance sampling period' steps. Teleport succeeds only when the target location in the world is empty (there is no collision).]]></description>
+		</element>
+		<element name="wrldg" type="float" min="0" max="10" default="1.0">
+			<description><![CDATA[You can adjust gravity for your experiments.
+The "official" setting used to evaluate and compare creatures is 1.]]></description>
+		</element>
+		<element name="wrldchg" function="true" type="void"><arguments/></element>
+		<element name="simtype" type="integer" min="0" max="1" default="0">
+			<description><![CDATA[MechaStick is a fast and simple primary Framsticks simulation engine.
+ODE is Open Dynamics Engine by Russel Smith et al.
+
+NOTE: switching between simulation engines causes removal of all objects in the world (e.g. creatures).]]></description>
+		</element>
+		<element name="nnspeed" type="float" min="0" max="1000" default="1.0">
+			<description><![CDATA[Number of neural network simulation steps in each physics simulation step]]></description>
+		</element>
+		<element name="signals" type="WorldSignals"/>
+		<element name="odeshape" type="integer" min="0" max="1"/>
+		<element name="odestep" type="float" min="0.001" max="1" default="0.05"/>
+		<element name="odemusclemin" type="float" min="0" max="100" default="0.0">
+			<description><![CDATA[i.e. "mmmmm" in f1]]></description>
+		</element>
+		<element name="odemusclemax" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[i.e. "MMMMM" if f1]]></description>
+		</element>
+		<element name="odemusclespeed" type="float" min="0" max="10" default="1.0">
+			<description><![CDATA[Muscle state cannot change faster than the supplied value]]></description>
+		</element>
+		<element name="odeairdrag" type="float" min="0" max="0.5" default="0.01">
+			<description><![CDATA[A drag force ("air drag") proportional to the velocity of mass centers of moving parts]]></description>
+		</element>
+		<element name="odewaterdrag" type="float" min="0.001" max="1" default="0.5"/>
+		<element name="odewaterbuoy" type="float" min="0" max="2" default="1.0"/>
+		<element name="odeseed" type="integer" min="0" max="2">
+			<description><![CDATA[Affects collisions.
+- 'Truly random' is closest to the standard ODE operation. Use Math.seed to influence randomness in ODE collisions.
+- 'Deterministic' automatically calculates random seed in each step based on the current simulation (world) state, which makes the simulation repeatable but more random than 'Fixed'.
+- 'Fixed' is completely deterministic and does not depend on Math.seed - the same seed value is set before each step. This might negatively affect ODE accuracy.
+]]></description>
+		</element>
+		<element name="odesepsticks" type="integer" min="0" max="1" default="0">
+			<description><![CDATA[Each stick gets a separate ODE body (like in MechaStick)]]></description>
+		</element>
+		<element name="odeworlderp" type="float" min="0" max="1" default="0.2">
+			<description><![CDATA[World ERP (error reduction parameter)]]></description>
+		</element>
+		<element name="odeworldcfm" type="float" min="0" max="1" default="1e-05">
+			<description><![CDATA[World CFM (constraint force mixing)]]></description>
+		</element>
+		<element name="odecolmumin" type="float" min="0" max="10" default="0.1">
+			<description><![CDATA[Mu coefficient for Parts with minimal friction (i.e. "fffff" in f1)]]></description>
+		</element>
+		<element name="odecolmumax" type="float" min="0" max="10" default="5.0">
+			<description><![CDATA[Mu coefficient for Parts with maximal friction (i.e. "FFFFF" in f1)]]></description>
+		</element>
+		<element name="odecolbounce" type="float" min="0" max="1" default="0.1"/>
+		<element name="odecolbouncevel" type="float" min="0" max="1" default="0.01"/>
+		<element name="odecolsoftcfm" type="float" min="0" max="1" default="0.0"/>
+		<element name="odecolsofterp" type="float" min="0" max="1" default="0.0"/>
+		<element name="odecol2mumin" type="float" min="0" max="10" default="0.1">
+			<description><![CDATA[Mu coefficient for Parts with minimal friction (i.e. "fffff" in f1)]]></description>
+		</element>
+		<element name="odecol2mumax" type="float" min="0" max="10" default="1.0">
+			<description><![CDATA[Mu coefficient for Parts with maximal friction (i.e. "FFFFF" in f1)]]></description>
+		</element>
+		<element name="odecol2bounce" type="float" min="0" max="1" default="0.1"/>
+		<element name="odecol2bouncevel" type="float" min="0" max="1" default="0.01"/>
+		<element name="odecol2softcfm" type="float" min="0" max="1" default="0.0"/>
+		<element name="odecol2softerp" type="float" min="0" max="1" default="0.0"/>
+		<element name="rayIntersection" function="true" type="float">
+			<arguments>
+				<argument name="position x" type="float"/>
+				<argument name="position y" type="float"/>
+				<argument name="position z" type="float"/>
+				<argument name="direction x" type="float"/>
+				<argument name="direction y" type="float"/>
+				<argument name="direction z" type="float"/>
+				<argument name="max distance" type="float"/>
+			</arguments>
+		</element>
+		<element name="gen_hist" type="integer" min="0" max="1" default="0">
+			<description><![CDATA[Required for phylogenetic analysis]]></description>
+		</element>
+		<element name="gen_hilite" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[Use colors for genes?
+(slows down viewing/editing of huge genotypes)]]></description>
+		</element>
+		<element name="gen_extmutinfo" type="integer" min="0" max="2" default="0">
+			<description><![CDATA[If active, information about employed mutation method will be stored in the 'info' field of each mutated genotype.]]></description>
+		</element>
+		<element name="operReport" function="true" type="void">
+			<description><![CDATA[Show available genetic operators]]></description>
+<arguments/></element>
+		<element name="toHTML" function="true" type="string">
+			<description><![CDATA[returns genotype expressed as colored HTML]]></description>
+			<arguments>
+				<argument type="string"/>
+			</arguments>
+		</element>
+		<element name="toHTMLshort" function="true" type="string">
+			<description><![CDATA[returns genotype (abbreviated if needed) expressed as colored HTML]]></description>
+			<arguments>
+				<argument type="string"/>
+			</arguments>
+		</element>
+		<element name="validate" function="true" type="Geno">
+			<description><![CDATA[returns validated (if possible) Geno object from supplied Geno]]></description>
+			<arguments>
+				<argument type="Geno"/>
+			</arguments>
+		</element>
+		<element name="mutate" function="true" type="Geno">
+			<description><![CDATA[returns mutated Geno object from supplied Geno]]></description>
+			<arguments>
+				<argument type="Geno"/>
+			</arguments>
+		</element>
+		<element name="crossOver" function="true" type="Geno">
+			<description><![CDATA[returns crossed over genotype]]></description>
+			<arguments>
+				<argument type="Geno"/>
+				<argument type="Geno"/>
+			</arguments>
+		</element>
+		<element name="getSimplest" function="true" type="Geno">
+			<description><![CDATA[returns the simplest genotype for a given encoding (format). 0 means f0, 4 means f4, etc.]]></description>
+			<arguments>
+				<argument name="format" type="integer"/>
+			</arguments>
+		</element>
+		<element name="genoper_f0" type="integer" min="0" max="0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="genoper_f1" type="integer" min="0" max="0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="genoper_f2" type="integer" min="0" max="0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="genoper_f3" type="integer" min="0" max="0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="genoper_f4" type="integer" min="0" max="0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="genoper_f9" type="integer" min="0" max="0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="genoper_fF" type="integer" min="0" max="0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="neuadd_N" type="integer" min="0" max="1">
+			<description><![CDATA[Standard neuron
+
+Characteristics:
+   supports any number of inputs
+   provides output value
+   does not require location in body
+
+
+Properties:
+   Inertia (in) float 0..1
+   Force (fo) float 0..999
+   Sigmoid (si) float -99999..99999
+   State (s) float -1..1]]></description>
+		</element>
+		<element name="neuadd_Nu" type="integer" min="0" max="1">
+			<description><![CDATA[Works like standard neuron (N) but the output value is scaled to 0...+1 instead of -1...+1.
+Having 0 as one of the saturation states should help in "gate circuits", where input signal is passed through or blocked depending on the other singal.
+
+Characteristics:
+   supports any number of inputs
+   provides output value
+   does not require location in body
+
+
+Properties:
+   Inertia (in) float 0..1
+   Force (fo) float 0..999
+   Sigmoid (si) float -99999..99999
+   State (s) float -1..1]]></description>
+		</element>
+		<element name="neuadd_G" type="integer" min="0" max="1">
+			<description><![CDATA[Equilibrium sensor.
+0=the stick is horizontal
++1/-1=the stick is vertical
+
+Characteristics:
+   does not use inputs
+   provides output value
+   should be located on a Joint
+]]></description>
+		</element>
+		<element name="neuadd_T" type="integer" min="0" max="1">
+			<description><![CDATA[Touch sensor.
+-1=no contact
+0=just touching
+>0=pressing, value depends on the force applied
+
+Characteristics:
+   does not use inputs
+   provides output value
+   should be located on a Part
+
+
+Properties:
+   Range (r) float 0..1]]></description>
+		</element>
+		<element name="neuadd_S" type="integer" min="0" max="1">
+			<description><![CDATA[Smell sensor. Aggregated "smell of energy" experienced from all energy objects (creatures and food pieces).
+Close objects have bigger influence than the distant ones: for each energy source, its partial feeling is proportional to its energy/(distance^2)
+
+Characteristics:
+   does not use inputs
+   provides output value
+   should be located on a Part
+]]></description>
+		</element>
+		<element name="neuadd_Constant" type="integer" min="0" max="1">
+			<description><![CDATA[Constant value
+
+Characteristics:
+   does not use inputs
+   provides output value
+   does not require location in body
+]]></description>
+		</element>
+		<element name="neuadd_Bend_muscle" type="integer" min="0" max="1">
+			<description><![CDATA[Characteristics:
+   uses single input
+   does not provide output value
+   should be located on a Joint
+
+
+Properties:
+   power (p) float 0.01..1
+   bending range (r) float 0..1]]></description>
+		</element>
+		<element name="neuadd_Rotation_muscle" type="integer" min="0" max="1">
+			<description><![CDATA[Characteristics:
+   uses single input
+   does not provide output value
+   should be located on a Joint
+
+
+Properties:
+   power (p) float 0.01..1]]></description>
+		</element>
+		<element name="neuadd_D" type="integer" min="0" max="1">
+			<description><![CDATA[Calculate the difference between the current and previous input value. Multiple inputs are aggregated with respect to their weights
+
+Characteristics:
+   supports any number of inputs
+   provides output value
+   does not require location in body
+]]></description>
+		</element>
+		<element name="neuadd_Fuzzy" type="integer" min="0" max="1">
+			<description><![CDATA[Refer to publications to learn more about this neuron.
+
+Characteristics:
+   supports any number of inputs
+   provides output value
+   does not require location in body
+
+
+Properties:
+   number of fuzzy sets (ns) integer
+   number of rules (nr) integer
+   fuzzy sets (fs) string
+   fuzzy rules (fr) string]]></description>
+		</element>
+		<element name="neuadd_VEye" type="integer" min="0" max="1">
+			<description><![CDATA[Refer to publications to learn more about this neuron.
+
+Characteristics:
+   uses single input
+   provides output value
+   should be located on a Part
+
+
+Properties:
+   target.x (tx) float
+   target.y (ty) float
+   target.z (tz) float
+   target shape (ts) string
+   perspective (p) float 0.1..10
+   scale (s) float 0.1..100
+   show hidden lines (h) integer 0..1
+   output lines count (each line needs four channels) (o) integer 0..99
+   debug (d) integer 0..1]]></description>
+		</element>
+		<element name="neuadd_VMotor" type="integer" min="0" max="1">
+			<description><![CDATA[Must be connected to the VEye and properly set up. Refer to publications to learn more about this neuron.
+
+Characteristics:
+   supports any number of inputs
+   provides output value
+   does not require location in body
+
+
+Properties:
+   number of basic features (noIF) integer
+   number of degrees of freedom (noDim) integer
+   parameters (params) string]]></description>
+		</element>
+		<element name="neuadd_Sti" type="integer" min="0" max="1">
+			<description><![CDATA[Characteristics:
+   uses single input
+   does not provide output value
+   should be located on a Part
+]]></description>
+		</element>
+		<element name="neuadd_LMu" type="integer" min="0" max="1">
+			<description><![CDATA[Characteristics:
+   uses single input
+   does not provide output value
+   should be located on a Joint
+
+
+Properties:
+   power (p) float 0.01..1]]></description>
+		</element>
+		<element name="neuadd_Water" type="integer" min="0" max="1">
+			<description><![CDATA[Output signal:
+0=on or above water surface
+1=under water (deeper than 1)
+0..1=in the transient area just below water surface
+
+Characteristics:
+   does not use inputs
+   provides output value
+   should be located on a Part
+]]></description>
+		</element>
+		<element name="neuadd_Energy" type="integer" min="0" max="1">
+			<description><![CDATA[The current energy level divided by the initial energy level.
+Usually falls from initial 1.0 down to 0.0 and then the creature dies. It can rise above 1.0 if enough food is ingested
+
+Characteristics:
+   does not use inputs
+   provides output value
+   does not require location in body
+]]></description>
+		</element>
+		<element name="neuadd_Ch" type="integer" min="0" max="1">
+			<description><![CDATA[Combines all input signals into a single multichannel output; Note: ChSel and ChMux are the only neurons which support multiple channels. Other neurons discard everything except the first channel.
+
+Characteristics:
+   supports any number of inputs
+   provides output value
+   does not require location in body
+]]></description>
+		</element>
+		<element name="neuadd_ChMux" type="integer" min="0" max="1">
+			<description><![CDATA[Outputs the selected channel from the second (multichannel) input. The first input is used as the selector value (-1=select first channel, .., 1=last channel)
+
+Characteristics:
+   uses 2 inputs
+   provides output value
+   does not require location in body
+]]></description>
+		</element>
+		<element name="neuadd_ChSel" type="integer" min="0" max="1">
+			<description><![CDATA[Outputs a single channel (selected by the "ch" parameter) from multichannel input
+
+Characteristics:
+   uses single input
+   provides output value
+   does not require location in body
+
+
+Properties:
+   channel (ch) integer]]></description>
+		</element>
+		<element name="neuadd_Rnd" type="integer" min="0" max="1">
+			<description><![CDATA[Generates random noise (subsequent random values in the range of -1..+1)
+
+Characteristics:
+   does not use inputs
+   provides output value
+   does not require location in body
+]]></description>
+		</element>
+		<element name="neuadd_Sin" type="integer" min="0" max="1">
+			<description><![CDATA[Output frequency = f0+input
+
+Characteristics:
+   uses single input
+   provides output value
+   does not require location in body
+
+
+Properties:
+   base frequency (f0) float -1..1
+   time (t) float 0..6.28319]]></description>
+		</element>
+		<element name="f0_nodel_tag" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[You can tag elements using their 'i' field and the i="mi=d" tag.
+Mutations will not delete such elements.
+The i="mi=dm" combination is allowed.]]></description>
+		</element>
+		<element name="f0_nomod_tag" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[You can tag elements using their 'i' field and the i="mi=m" tag.
+Mutations will not modify properties of such elements.
+The i="mi=md" combination is allowed.]]></description>
+		</element>
+		<element name="f0_p_new" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_p_del" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_p_swp" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_p_pos" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_p_mas" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_p_frc" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_p_ing" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_p_asm" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_p_vsiz" type="float" min="0" max="100" default="0.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_j_new" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_j_del" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_j_stm" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_j_stf" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_j_rsf" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_j_vred" type="float" min="0" max="100" default="0.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_j_vgrn" type="float" min="0" max="100" default="0.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_j_vblu" type="float" min="0" max="100" default="0.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_n_new" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_n_del" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_n_prp" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_c_new" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_c_del" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f0_c_wei" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f1_xo_propor" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[Cross over (exchange) corresponding segments of the two parent genotypes?
+
+f1 uses a two-point crossing over.
+If this option is turned on, cut points will be selected proportionally to neural genes.
+Thus, if both parents have the same number of neurons, then this will be preserved in their children.]]></description>
+		</element>
+		<element name="f1_smX" type="float" min="0" max="100" default="0.05"/>
+		<element name="f1_smJunct" type="float" min="0" max="100" default="0.02"/>
+		<element name="f1_smComma" type="float" min="0" max="100" default="0.02"/>
+		<element name="f1_smModif" type="float" min="0" max="100" default="0.1">
+			<description><![CDATA[Modifiers: LlRrCcQqFfMmIiWwEeAaSsDdGgBbHh]]></description>
+		</element>
+		<element name="f1_mut_exmod" type="string">
+			<description><![CDATA[Modifiers that will not be added nor deleted during mutation
+(all: LlRrCcQqFfMmIiWwEeAaSsDdGgBbHh)]]></description>
+		</element>
+		<element name="f1_nmNeu" type="float" min="0" max="100" default="0.05">
+			<description><![CDATA[Adds a (connected) neuron or removes a neuron]]></description>
+		</element>
+		<element name="f1_nmConn" type="float" min="0" max="100" default="0.1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f1_nmProp" type="float" min="0" max="100" default="0.1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f1_nmWei" type="float" min="0" max="100" default="1.0"/>
+		<element name="f1_nmVal" type="float" min="0" max="100" default="0.05"/>
+		<element name="f2_mutAddOper" type="float" min="0" max="1" default="0.4">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f2_mutJointElem" type="float" min="0" max="1" default="0.33">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f2_mutNeuroElem" type="float" min="0" max="1" default="0.33">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f2_mutConnElem" type="float" min="0" max="1" default="0.33">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f2_mutDelOper" type="float" min="0" max="1" default="0.1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f2_mutHandleOper" type="float" min="0" max="1" default="0.3">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f2_mutPropOper" type="float" min="0" max="1" default="0.2">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_mutSubstitution" type="float" min="0" max="1" default="0.6">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_mutSubstPerChar" type="float" min="0" max="1" default="0.1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_mutDelIns" type="float" min="0" max="1" default="0.1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_mutDelInsPerChar" type="float" min="0" max="1" default="0.05">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_mutDelInsLength" type="integer" min="1" max="100" default="5">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_mutDuplication" type="float" min="0" max="1" default="0.05">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_mutTranslocation" type="float" min="0" max="1" default="0.15">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_xovGeneTransfer" type="float" min="0" max="1" default="0.8">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f3_xovCrossingOver" type="float" min="0" max="1" default="0.2">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="f4_mut_add" type="float" min="0" max="100" default="50.0">
+			<description><![CDATA[mutation: probability of adding a node]]></description>
+		</element>
+		<element name="f4_mut_add_div" type="float" min="0" max="100" default="20.0">
+			<description><![CDATA[add node mutation: probability of adding a division]]></description>
+		</element>
+		<element name="f4_mut_add_conn" type="float" min="0" max="100" default="15.0">
+			<description><![CDATA[add node mutation: probability of adding a neural connection]]></description>
+		</element>
+		<element name="f4_mut_add_neupar" type="float" min="0" max="100" default="5.0">
+			<description><![CDATA[add node mutation: probability of adding a neuron property/modifier]]></description>
+		</element>
+		<element name="f4_mut_add_rep" type="float" min="0" max="100" default="10.0">
+			<description><![CDATA[add node mutation: probability of adding a repetition]]></description>
+		</element>
+		<element name="f4_mut_add_simp" type="float" min="0" max="100" default="50.0">
+			<description><![CDATA[add node mutation: probability of adding a random, simple gene]]></description>
+		</element>
+		<element name="f4_mut_del" type="float" min="0" max="100" default="20.0">
+			<description><![CDATA[mutation: probability of deleting a node]]></description>
+		</element>
+		<element name="f4_mut_mod" type="float" min="0" max="100" default="30.0">
+			<description><![CDATA[mutation: probability of changing a node]]></description>
+		</element>
+		<element name="f9_mut" type="float" min="0" max="1" default="0.1">
+			<description><![CDATA[How many genes should be mutated during single mutation (1=all genes, 0.1=ten percent)]]></description>
+		</element>
+		<element name="fF_xover" type="float" min="0" max="0.5" default="0.5">
+			<description><![CDATA[0.5 => children are averaged parents.
+0.2 => children are only 20% different from parents.
+0 => each child is identical to one parent (no crossover).]]></description>
+		</element>
+		<element name="genkonw0" type="integer" min="0" max="1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="genkonw1" type="integer" min="0" max="1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="genkonw2" type="integer" min="0" max="1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="genkonw3" type="integer" min="0" max="1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="genkonw4" type="integer" min="0" max="1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="genkonw5" type="integer" min="0" max="1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="randinit" type="float" min="0" max="10" default="0.01">
+			<description><![CDATA[Allowed range for initializing all neuron states with uniform distribution random numbers and zero mean. Set to 0 for deterministic initialization.]]></description>
+		</element>
+		<element name="nnoise" type="float" min="0" max="1" default="0.0">
+			<description><![CDATA[Gaussian neural noise: a random value is added to each neural output in each simulation step. Set standard deviation here to add random noise, or 0 for deterministic simulation.]]></description>
+		</element>
+		<element name="touchrange" type="float" min="0" max="100" default="1.0"/>
+		<element name="bnoise_struct" type="float" min="0" max="10" default="0.0">
+			<description><![CDATA[When >0, body constructs of creatures (position of Parts) will be randomly disturbed when they are created.]]></description>
+		</element>
+		<element name="bnoise_vel" type="float" min="0" max="10" default="0.0">
+			<description><![CDATA[Random velocities will be applied to all body Parts (in MechaStick) or rigid segments (in ODE) of newly created creatures.]]></description>
+		</element>
+		<element name="ncl_N" type="integer" min="0" max="1">
+			<description><![CDATA[Standard neuron
+
+Characteristics:
+   supports any number of inputs
+   provides output value
+   does not require location in body
+
+
+Properties:
+   Inertia (in) float 0..1
+   Force (fo) float 0..999
+   Sigmoid (si) float -99999..99999
+   State (s) float -1..1]]></description>
+		</element>
+		<element name="ncl_Nu" type="integer" min="0" max="1">
+			<description><![CDATA[Works like standard neuron (N) but the output value is scaled to 0...+1 instead of -1...+1.
+Having 0 as one of the saturation states should help in "gate circuits", where input signal is passed through or blocked depending on the other singal.
+
+Characteristics:
+   supports any number of inputs
+   provides output value
+   does not require location in body
+
+
+Properties:
+   Inertia (in) float 0..1
+   Force (fo) float 0..999
+   Sigmoid (si) float -99999..99999
+   State (s) float -1..1]]></description>
+		</element>
+		<element name="ncl_G" type="integer" min="0" max="1">
+			<description><![CDATA[Equilibrium sensor.
+0=the stick is horizontal
++1/-1=the stick is vertical
+
+Characteristics:
+   does not use inputs
+   provides output value
+   should be located on a Joint
+]]></description>
+		</element>
+		<element name="ncl_T" type="integer" min="0" max="1">
+			<description><![CDATA[Touch sensor.
+-1=no contact
+0=just touching
+>0=pressing, value depends on the force applied
+
+Characteristics:
+   does not use inputs
+   provides output value
+   should be located on a Part
+
+
+Properties:
+   Range (r) float 0..1]]></description>
+		</element>
+		<element name="ncl_S" type="integer" min="0" max="1">
+			<description><![CDATA[Smell sensor. Aggregated "smell of energy" experienced from all energy objects (creatures and food pieces).
+Close objects have bigger influence than the distant ones: for each energy source, its partial feeling is proportional to its energy/(distance^2)
+
+Characteristics:
+   does not use inputs
+   provides output value
+   should be located on a Part
+]]></description>
+		</element>
+		<element name="ncl_Constant" type="integer" min="0" max="1">
+			<description><![CDATA[Constant value
+
+Characteristics:
+   does not use inputs
+   provides output value
+   does not require location in body
+]]></description>
+		</element>
+		<element name="ncl_Bend_muscle" type="integer" min="0" max="1">
+			<description><![CDATA[Characteristics:
+   uses single input
+   does not provide output value
+   should be located on a Joint
+
+
+Properties:
+   power (p) float 0.01..1
+   bending range (r) float 0..1]]></description>
+		</element>
+		<element name="ncl_Rotation_muscle" type="integer" min="0" max="1">
+			<description><![CDATA[Characteristics:
+   uses single input
+   does not provide output value
+   should be located on a Joint
+
+
+Properties:
+   power (p) float 0.01..1]]></description>
+		</element>
+		<element name="ncl_D" type="integer" min="0" max="1">
+			<description><![CDATA[Calculate the difference between the current and previous input value. Multiple inputs are aggregated with respect to their weights
+
+Characteristics:
+   supports any number of inputs
+   provides output value
+   does not require location in body
+]]></description>
+		</element>
+		<element name="ncl_Fuzzy" type="integer" min="0" max="1">
+			<description><![CDATA[Refer to publications to learn more about this neuron.
+
+Characteristics:
+   supports any number of inputs
+   provides output value
+   does not require location in body
+
+
+Properties:
+   number of fuzzy sets (ns) integer
+   number of rules (nr) integer
+   fuzzy sets (fs) string
+   fuzzy rules (fr) string]]></description>
+		</element>
+		<element name="ncl_VEye" type="integer" min="0" max="1">
+			<description><![CDATA[Refer to publications to learn more about this neuron.
+
+Characteristics:
+   uses single input
+   provides output value
+   should be located on a Part
+
+
+Properties:
+   target.x (tx) float
+   target.y (ty) float
+   target.z (tz) float
+   target shape (ts) string
+   perspective (p) float 0.1..10
+   scale (s) float 0.1..100
+   show hidden lines (h) integer 0..1
+   output lines count (each line needs four channels) (o) integer 0..99
+   debug (d) integer 0..1]]></description>
+		</element>
+		<element name="ncl_VMotor" type="integer" min="0" max="1">
+			<description><![CDATA[Must be connected to the VEye and properly set up. Refer to publications to learn more about this neuron.
+
+Characteristics:
+   supports any number of inputs
+   provides output value
+   does not require location in body
+
+
+Properties:
+   number of basic features (noIF) integer
+   number of degrees of freedom (noDim) integer
+   parameters (params) string]]></description>
+		</element>
+		<element name="ncl_Sti" type="integer" min="0" max="1">
+			<description><![CDATA[Characteristics:
+   uses single input
+   does not provide output value
+   should be located on a Part
+]]></description>
+		</element>
+		<element name="ncl_LMu" type="integer" min="0" max="1">
+			<description><![CDATA[Characteristics:
+   uses single input
+   does not provide output value
+   should be located on a Joint
+
+
+Properties:
+   power (p) float 0.01..1]]></description>
+		</element>
+		<element name="ncl_Water" type="integer" min="0" max="1">
+			<description><![CDATA[Output signal:
+0=on or above water surface
+1=under water (deeper than 1)
+0..1=in the transient area just below water surface
+
+Characteristics:
+   does not use inputs
+   provides output value
+   should be located on a Part
+]]></description>
+		</element>
+		<element name="ncl_Energy" type="integer" min="0" max="1">
+			<description><![CDATA[The current energy level divided by the initial energy level.
+Usually falls from initial 1.0 down to 0.0 and then the creature dies. It can rise above 1.0 if enough food is ingested
+
+Characteristics:
+   does not use inputs
+   provides output value
+   does not require location in body
+]]></description>
+		</element>
+		<element name="ncl_Ch" type="integer" min="0" max="1">
+			<description><![CDATA[Combines all input signals into a single multichannel output; Note: ChSel and ChMux are the only neurons which support multiple channels. Other neurons discard everything except the first channel.
+
+Characteristics:
+   supports any number of inputs
+   provides output value
+   does not require location in body
+]]></description>
+		</element>
+		<element name="ncl_ChMux" type="integer" min="0" max="1">
+			<description><![CDATA[Outputs the selected channel from the second (multichannel) input. The first input is used as the selector value (-1=select first channel, .., 1=last channel)
+
+Characteristics:
+   uses 2 inputs
+   provides output value
+   does not require location in body
+]]></description>
+		</element>
+		<element name="ncl_ChSel" type="integer" min="0" max="1">
+			<description><![CDATA[Outputs a single channel (selected by the "ch" parameter) from multichannel input
+
+Characteristics:
+   uses single input
+   provides output value
+   does not require location in body
+
+
+Properties:
+   channel (ch) integer]]></description>
+		</element>
+		<element name="ncl_Rnd" type="integer" min="0" max="1">
+			<description><![CDATA[Generates random noise (subsequent random values in the range of -1..+1)
+
+Characteristics:
+   does not use inputs
+   provides output value
+   does not require location in body
+]]></description>
+		</element>
+		<element name="ncl_Sin" type="integer" min="0" max="1">
+			<description><![CDATA[Output frequency = f0+input
+
+Characteristics:
+   uses single input
+   provides output value
+   does not require location in body
+
+
+Properties:
+   base frequency (f0) float -1..1
+   time (t) float 0..6.28319]]></description>
+		</element>
+		<element name="simil_method" type="integer" min="0" max="1" default="0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="simil_parts" type="float" min="0" max="100" default="0.0">
+			<description><![CDATA[Differing number of parts is also handled by the 'part degree' similarity component.]]></description>
+		</element>
+		<element name="simil_partdeg" type="float" min="0" max="100" default="1.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="simil_neuro" type="float" min="0" max="100" default="0.5">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="evaluateDistance" function="true" type="float">
+			<description><![CDATA[Calculates dissimilarity between two models created from Geno objects.]]></description>
+			<arguments>
+				<argument type="Geno"/>
+				<argument type="Geno"/>
+			</arguments>
+		</element>
+		<element name="calculateSymmetry" function="true" type="float">
+			<description><![CDATA[Returns bilateral symmetry (0.0 .. 1.0) for a given Model using default precision parameters (symPosSteps,symAlphaSteps,symBetaSteps). Returns the symmetry plane, too (sets symResultA,B,C,D).
+Note: may take a long time for large creatures.]]></description>
+			<arguments>
+				<argument name="model" type="Model"/>
+			</arguments>
+		</element>
+		<element name="calculateSymmetry2" function="true" type="float">
+			<description><![CDATA[Returns bilateral symmetry (0.0 .. 1.0) for a given Model using specified precision parameters. Returns the symmetry plane, too (sets symResultA,B,C,D).
+Note: may take a long time for large creatures.]]></description>
+			<arguments>
+				<argument name="model" type="Model"/>
+				<argument name="posSteps" type="integer"/>
+				<argument name="alphaSteps" type="integer"/>
+				<argument name="betaSteps" type="integer"/>
+			</arguments>
+		</element>
+		<element name="calculateSymmetryForPlane" function="true" type="float">
+			<description><![CDATA[Returns bilateral symmetry (0.0 .. 1.0) for a given Model and given a specific plane defined by coefficients A, B, C, D.]]></description>
+			<arguments>
+				<argument name="model" type="Model"/>
+				<argument name="A" type="float"/>
+				<argument name="B" type="float"/>
+				<argument name="C" type="float"/>
+				<argument name="D" type="float"/>
+			</arguments>
+		</element>
+		<element name="symPosSteps" type="integer" min="2" max="50" default="10">
+			<description><![CDATA[Default number of samples per stick length]]></description>
+		</element>
+		<element name="symAlphaSteps" type="integer" min="2" max="50" default="20">
+			<description><![CDATA[Default number of samples per full angle (#1)]]></description>
+		</element>
+		<element name="symBetaSteps" type="integer" min="2" max="50" default="20">
+			<description><![CDATA[Default number of samples per full angle (#2)]]></description>
+		</element>
+		<element name="symResultA" type="float"/>
+		<element name="symResultB" type="float"/>
+		<element name="symResultC" type="float"/>
+		<element name="symResultD" type="float"/>
+		<element name="geom_density" type="float" min="0.01" max="100" default="1.0">
+			<description><![CDATA[Affects the geometry calculation precision]]></description>
+		</element>
 		<element name="forModel" function="true" type="ModelGeometry">
 			<description><![CDATA[The returned ModelGeometry object can be used to calculate geometric properties (volume, area, sizes) of the associated model. The density is copied from the current global ModelGeometry.geom_density on object creation.]]></description>
@@ -3995,8 +4187,89 @@
 			</arguments>
 		</element>
-		<element name="getSimplest" function="true" type="Geno">
-			<description><![CDATA[returns the simplest genotype for a given encoding (format). 0 means f0, 4 means f4, etc.]]></description>
-			<arguments>
-				<argument name="format" type="integer"/>
+		<element name="volume" function="true" type="float"><arguments/></element>
+		<element name="area" function="true" type="float"><arguments/></element>
+		<element name="sizesAndAxes" function="true" type="Vector">
+			<description><![CDATA[The returned vector contains XYZ (sizes) and Orient (axes) objects.]]></description>
+<arguments/></element>
+		<element name="minjoint" type="float" min="0" max="100" default="0.0"/>
+		<element name="maxjoint" type="float" min="0" max="100" default="2.0"/>
+	</type>
+	<type name="Similarity" context="Global context">
+<description><![CDATA[Evaluates morphological dissimilarity. Read about details:
+http://www.framsticks.com/node/795
+http://www.framsticks.com/node/890]]></description>
+		<element name="simil_method" type="integer" min="0" max="1" default="0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="simil_parts" type="float" min="0" max="100" default="0.0">
+			<description><![CDATA[Differing number of parts is also handled by the 'part degree' similarity component.]]></description>
+		</element>
+		<element name="simil_partdeg" type="float" min="0" max="100" default="1.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="simil_neuro" type="float" min="0" max="100" default="0.5">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="evaluateDistance" function="true" type="float">
+			<description><![CDATA[Calculates dissimilarity between two models created from Geno objects.]]></description>
+			<arguments>
+				<argument type="Geno"/>
+				<argument type="Geno"/>
+			</arguments>
+		</element>
+	</type>
+	<type name="Simulator" context="Global context">
+<description><![CDATA[The Framsticks simulator.]]></description>
+		<element name="print" function="true" type="void">
+			<description><![CDATA[One argument: message to be printed]]></description>
+			<arguments>
+				<argument name="text" type="string"/>
+			</arguments>
+		</element>
+		<element name="message" function="true" type="void">
+			<description><![CDATA[The second argument can be:
+ -1 = debugging message
+ 0 = information
+ 1 = warning
+ 2 = error
+ 3 = critical error]]></description>
+			<arguments>
+				<argument name="text" type="string"/>
+				<argument name="level" type="integer"/>
+			</arguments>
+		</element>
+		<element name="sleep" function="true" type="void">
+			<description><![CDATA[Suspends the execution for a specified interval]]></description>
+			<arguments>
+				<argument name="milliseconds" type="integer"/>
+			</arguments>
+		</element>
+		<element name="beep" function="true" type="void">
+			<description><![CDATA[Plays a default system sound]]></description>
+<arguments/></element>
+		<element name="sound" function="true" type="void">
+			<description><![CDATA[Generates a simple tone on the speaker]]></description>
+			<arguments>
+				<argument name="freqency in Hz" type="integer"/>
+				<argument name="length in milliseconds" type="integer"/>
+			</arguments>
+		</element>
+		<element name="eval" function="true" type="void">
+			<description><![CDATA[The argument must be a complete statement, e.g. "return 2+2;" is valid, while "2+2" is not. The EvalError object is returned for invalid statements.
+Example:
+var statement="function fun(a) {return a*a;} return fun(Math.pi);";
+var result=Simulator.eval(statement);
+if (typeof result=="EvalError")
+   Simulator.print("Error:"+result.message);
+else
+   Simulator.print("Result:"+result);]]></description>
+			<arguments>
+				<argument name="script statement" type="string"/>
+			</arguments>
+		</element>
+		<element name="load" function="true" type="void">
+			<description><![CDATA[Load experiment file (calls onExpLoad() in the current experiment definition). This function is intended to replace the simulator state; the old state is cleared by automatically calling "resetToDefaults()" (only if "resetonexpdef" is enabled). Use "import" if you don't want to loose the old simulator state.]]></description>
+			<arguments>
+				<argument name="filename" type="string"/>
 			</arguments>
 		</element>
@@ -4023,216 +4296,8 @@
 			</arguments>
 		</element>
-		<element name="init" function="true" type="void">
-			<description><![CDATA[Performs initialization procedures, like resetting counters, states, gene pools, etc.]]></description>
-<arguments/></element>
-		<element name="load" function="true" type="void">
-			<description><![CDATA[Load experiment file (calls onExpLoad() in the current experiment definition). This function is intended to replace the simulator state; the old state is cleared by automatically calling "resetToDefaults()" (only if "resetonexpdef" is enabled). Use "import" if you don't want to loose the old simulator state.]]></description>
-			<arguments>
-				<argument name="filename" type="string"/>
-			</arguments>
-		</element>
-		<element name="loadexpdef" function="true" type="void"><arguments/></element>
-		<element name="loadNeurons" function="true" type="void">
-			<arguments>
-				<argument name="directory path" type="string"/>
-			</arguments>
-		</element>
-		<element name="message" function="true" type="void">
-			<description><![CDATA[The second argument can be:
- -1 = debugging message
- 0 = information
- 1 = warning
- 2 = error
- 3 = critical error]]></description>
-			<arguments>
-				<argument name="text" type="string"/>
-				<argument name="level" type="integer"/>
-			</arguments>
-		</element>
-		<element name="mutate" function="true" type="Geno">
-			<description><![CDATA[returns mutated Geno object from supplied Geno]]></description>
-			<arguments>
-				<argument type="Geno"/>
-			</arguments>
-		</element>
-		<element name="new" function="true" type="Simulator"><arguments/></element>
-		<element name="operReport" function="true" type="void">
-			<description><![CDATA[Show available genetic operators]]></description>
-<arguments/></element>
-		<element name="print" function="true" type="void">
-			<description><![CDATA[One argument: message to be printed]]></description>
-			<arguments>
-				<argument name="text" type="string"/>
-			</arguments>
-		</element>
-		<element name="rayIntersection" function="true" type="float">
-			<arguments>
-				<argument name="position x" type="float"/>
-				<argument name="position y" type="float"/>
-				<argument name="position z" type="float"/>
-				<argument name="direction x" type="float"/>
-				<argument name="direction y" type="float"/>
-				<argument name="direction z" type="float"/>
-				<argument name="max distance" type="float"/>
-			</arguments>
-		</element>
-		<element name="remove" function="true"/>
-		<element name="removeGroup" function="true"/>
-		<element name="resetToDefaults" function="true" type="void">
-			<description><![CDATA[Clears groups and loads default values for simulator parameters, then calls onExpDefLoad() of the current experiment definition.]]></description>
-<arguments/></element>
 		<element name="save" function="true" type="untyped">
 			<description><![CDATA[Save experiment file (calls onExpSave() in the current experiment definition)]]></description>
 			<arguments>
 				<argument name="filename" type="string"/>
-			</arguments>
-		</element>
-		<element name="sizesAndAxes" function="true" type="Vector">
-			<description><![CDATA[The returned vector contains XYZ (sizes) and Orient (axes) objects.]]></description>
-<arguments/></element>
-		<element name="sleep" function="true" type="void">
-			<description><![CDATA[Suspends the execution for a specified interval]]></description>
-			<arguments>
-				<argument name="milliseconds" type="integer"/>
-			</arguments>
-		</element>
-		<element name="sound" function="true" type="void">
-			<description><![CDATA[Generates a simple tone on the speaker]]></description>
-			<arguments>
-				<argument name="freqency in Hz" type="integer"/>
-				<argument name="length in milliseconds" type="integer"/>
-			</arguments>
-		</element>
-		<element name="start" function="true" type="void">
-			<description><![CDATA[called by the user interface]]></description>
-<arguments/></element>
-		<element name="step" function="true" type="void"><arguments/></element>
-		<element name="stop" function="true" type="void">
-			<description><![CDATA[the expdef script calls this to stop simulation]]></description>
-<arguments/></element>
-		<element name="toHTML" function="true" type="string">
-			<description><![CDATA[returns genotype expressed as colored HTML]]></description>
-			<arguments>
-				<argument type="string"/>
-			</arguments>
-		</element>
-		<element name="toHTMLshort" function="true" type="string">
-			<description><![CDATA[returns genotype (abbreviated if needed) expressed as colored HTML]]></description>
-			<arguments>
-				<argument type="string"/>
-			</arguments>
-		</element>
-		<element name="validate" function="true" type="Geno">
-			<description><![CDATA[returns validated (if possible) Geno object from supplied Geno]]></description>
-			<arguments>
-				<argument type="Geno"/>
-			</arguments>
-		</element>
-		<element name="volume" function="true" type="float"><arguments/></element>
-		<element name="wrldchg" function="true" type="void"><arguments/></element>
-	</type>
-	<type name="Similarity" context="Global context">
-		<element name="simil_method" type="integer" min="0" max="1" default="0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="simil_neuro" type="float" min="0" max="100" default="0.5">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="simil_partdeg" type="float" min="0" max="100" default="1.0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="simil_parts" type="float" min="0" max="100" default="0.0">
-			<description><![CDATA[Differing number of parts is also handled by the 'part degree' similarity component.]]></description>
-		</element>
-		<element name="evaluateDistance" function="true" type="float">
-			<description><![CDATA[Calculates dissimilarity between two models created from Geno objects. There are papers available that describe details of the computation method.]]></description>
-			<arguments>
-				<argument type="Geno"/>
-				<argument type="Geno"/>
-			</arguments>
-		</element>
-	</type>
-	<type name="Simulator" context="Global context">
-<description><![CDATA[The Framsticks simulator.]]></description>
-		<element name="autosaveperiod" type="integer" min="0" max="100000">
-			<description><![CDATA[Save simulation state once every n-th event
-(events are defined by the script. For 'standard.expdef' it is after each death).
-Save EXPT file first to initialize name for autosave files.
-Slave simulators (in multithreaded experiments) ignore this setting and never create autosave files.]]></description>
-		</element>
-		<element name="cpus" type="integer"/>
-		<element name="createrr" type="integer" min="0" max="2" default="1"/>
-		<element name="creatwarnfail" type="integer" min="0" max="1">
-			<description><![CDATA[Creatures grown with warnings will not be simulated.]]></description>
-		</element>
-		<element name="expdef" type="string">
-			<description><![CDATA[Choose the experiment framework
-(in Windows GUI, confirm by pressing 'Apply')
-
-Stop the simulation before selecting another experiment definition.
-It is a good practice to initialize the experiment before running the simulation.]]></description>
-		</element>
-		<element name="expdef_info" type="string"/>
-		<element name="expdef_title" type="string"/>
-		<element name="expparams" type="ExpParams"/>
-		<element name="expstate" type="ExpState"/>
-		<element name="filecomm" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[Display comments encountered in opened files]]></description>
-		</element>
-		<element name="genepools" type="GenePools"/>
-		<element name="groupchk" type="integer" min="0" max="1"/>
-		<element name="identity" type="integer">
-			<description><![CDATA[-1 for master simulator, 0...count-1 for slaves]]></description>
-		</element>
-		<element name="importchk" type="integer" min="0" max="1"/>
-		<element name="lastCheckpoint" type="untyped">
-			<description><![CDATA[Most recently reported by the experiment definition script.]]></description>
-		</element>
-		<element name="loadchk" type="integer" min="0" max="1"/>
-		<element name="overwrite" type="integer" min="0" max="1">
-			<description><![CDATA[Overwite existing files or create their backups]]></description>
-		</element>
-		<element name="populations" type="Populations"/>
-		<element name="resetonexpdef" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[If turned on: when a new experiment definition is selected, default values are loaded for most of the simulator parameters, and gene pools and populations are cleared.
-If turned off: parameters from previous experiment definition will remain (dangerous).]]></description>
-		</element>
-		<element name="running" type="integer" min="0" max="1">
-			<description><![CDATA[useful for synchronizing the user interface state]]></description>
-		</element>
-		<element name="simspeed" type="integer">
-			<description><![CDATA[steps/second]]></description>
-		</element>
-		<element name="slaves" type="SlaveSimulators"/>
-		<element name="time" type="integer"/>
-		<element name="user" type="untyped"/>
-		<element name="usercode" type="string">
-			<description><![CDATA[This script overrides the experiment definition]]></description>
-		</element>
-		<element name="vmdebug" type="integer" min="0" max="1"/>
-		<element name="world" type="World"/>
-		<element name="beep" function="true" type="void">
-			<description><![CDATA[Plays a default system sound]]></description>
-<arguments/></element>
-		<element name="checkpoint" function="true" type="void">
-			<description><![CDATA[This function was previously called "autosave".]]></description>
-<arguments/></element>
-		<element name="checkpointData" function="true" type="void">
-			<description><![CDATA[In the distributed/paralellized scenario the data passed as argument can be received by the controlling entity (onSlaveCheckpoint in multithreaded master experiment, /simulator/expevent in distributed network simulator)]]></description>
-			<arguments>
-				<argument name="any_data" type="untyped"/>
-			</arguments>
-		</element>
-		<element name="eval" function="true" type="void">
-			<description><![CDATA[The argument must be a complete statement, e.g. "return 2+2;" is valid, while "2+2" is not. The EvalError object is returned for invalid statements.
-Example:
-var statement="function fun(a) {return a*a;} return fun(Math.pi);";
-var result=Simulator.eval(statement);
-if (typeof result=="EvalError")
-   Simulator.print("Error:"+result.message);
-else
-   Simulator.print("Result:"+result);]]></description>
-			<arguments>
-				<argument name="script statement" type="string"/>
 			</arguments>
 		</element>
@@ -4257,91 +4322,128 @@
 			</arguments>
 		</element>
-		<element name="import" function="true" type="void">
-			<description><![CDATA[Load some data from file. The second optional argument selects what section(s) will be imported:
- 1 - experiment (works like "load" and can reset the simulator state!)
- 2 - genotypes
- 4 - simulator parameters
- 8 - genepool settings
- 16 - population settings
- 32 - new groups will be created for imported genepools and populations
-64 - allow switching to a different expdef while importing parameters (4)
-
-The standard behavior (without the second argument) is to import genotypes, parameters, and genepool and population settings (2+4+8+16). Note that "64" is not included by default, because the expdef change resets all simulator parameters, which contradicts the usual meaning of "import" in Framsticks ("add data", as opposed to "load" meaning "replace data"). Moreover, using the "64" option in scripts can be dengerous, especially all expdef and show scripts should always declare the proper expdef name in their header rather than change the expdef directly. Without the "64" option, it is always safe to "import" any file in a script regardless of the current simulator state.]]></description>
-			<arguments>
-				<argument name="filename" type="string"/>
-				<argument name="options" type="integer"/>
-			</arguments>
-		</element>
-		<element name="import" function="true" type="void">
-			<description><![CDATA[Equivalent to import(filename,2+4+8+16) - imports genotypes, parameters, genepool and population settings]]></description>
-			<arguments>
-				<argument name="filename" type="string"/>
-			</arguments>
-		</element>
+		<element name="start" function="true" type="void">
+			<description><![CDATA[called by the user interface]]></description>
+<arguments/></element>
+		<element name="stop" function="true" type="void">
+			<description><![CDATA[the expdef script calls this to stop simulation]]></description>
+<arguments/></element>
+		<element name="running" type="integer" min="0" max="1">
+			<description><![CDATA[useful for synchronizing the user interface state]]></description>
+		</element>
+		<element name="step" function="true" type="void"><arguments/></element>
+		<element name="time" type="integer"/>
+		<element name="simspeed" type="integer">
+			<description><![CDATA[steps/second]]></description>
+		</element>
+		<element name="expdef" type="string">
+			<description><![CDATA[Choose the experiment framework
+(in Windows GUI, confirm by pressing 'Apply')
+
+Stop the simulation before selecting another experiment definition.
+It is a good practice to initialize the experiment before running the simulation.]]></description>
+		</element>
+		<element name="expdef_title" type="string"/>
+		<element name="expdef_info" type="string"/>
 		<element name="init" function="true" type="void">
 			<description><![CDATA[Performs initialization procedures, like resetting counters, states, gene pools, etc.]]></description>
 <arguments/></element>
-		<element name="load" function="true" type="void">
-			<description><![CDATA[Load experiment file (calls onExpLoad() in the current experiment definition). This function is intended to replace the simulator state; the old state is cleared by automatically calling "resetToDefaults()" (only if "resetonexpdef" is enabled). Use "import" if you don't want to loose the old simulator state.]]></description>
-			<arguments>
-				<argument name="filename" type="string"/>
-			</arguments>
-		</element>
 		<element name="loadexpdef" function="true" type="void"><arguments/></element>
-		<element name="loadNeurons" function="true" type="void">
-			<arguments>
-				<argument name="directory path" type="string"/>
-			</arguments>
-		</element>
-		<element name="message" function="true" type="void">
-			<description><![CDATA[The second argument can be:
- -1 = debugging message
- 0 = information
- 1 = warning
- 2 = error
- 3 = critical error]]></description>
-			<arguments>
-				<argument name="text" type="string"/>
-				<argument name="level" type="integer"/>
-			</arguments>
-		</element>
-		<element name="new" function="true" type="Simulator"><arguments/></element>
-		<element name="print" function="true" type="void">
-			<description><![CDATA[One argument: message to be printed]]></description>
-			<arguments>
-				<argument name="text" type="string"/>
-			</arguments>
-		</element>
+		<element name="usercode" type="string">
+			<description><![CDATA[This script overrides the experiment definition]]></description>
+		</element>
+		<element name="autosaveperiod" type="integer" min="0" max="100000">
+			<description><![CDATA[Save simulation state once every n-th event
+(events are defined by the script. For 'standard.expdef' it is after each death).
+Save EXPT file first to initialize name for autosave files.
+Slave simulators (in multithreaded experiments) ignore this setting and never create autosave files.]]></description>
+		</element>
+		<element name="overwrite" type="integer" min="0" max="1">
+			<description><![CDATA[Overwite existing files or create their backups]]></description>
+		</element>
+		<element name="filecomm" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[Display comments encountered in opened files]]></description>
+		</element>
+		<element name="checkpoint" function="true" type="void">
+			<description><![CDATA[This function was previously called "autosave".]]></description>
+<arguments/></element>
+		<element name="checkpointData" function="true" type="void">
+			<description><![CDATA[In the distributed/paralellized scenario the data passed as argument can be received by the controlling entity (onSlaveCheckpoint in multithreaded master experiment, /simulator/expevent in distributed network simulator)]]></description>
+			<arguments>
+				<argument name="any_data" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="lastCheckpoint" type="untyped">
+			<description><![CDATA[Most recently reported by the experiment definition script.]]></description>
+		</element>
+		<element name="createrr" type="integer" min="0" max="2" default="1"/>
+		<element name="creatwarnfail" type="integer" min="0" max="1">
+			<description><![CDATA[Creatures grown with warnings will not be simulated.]]></description>
+		</element>
+		<element name="importchk" type="integer" min="0" max="1"/>
+		<element name="loadchk" type="integer" min="0" max="1"/>
+		<element name="groupchk" type="integer" min="0" max="1"/>
+		<element name="vmdebug" type="integer" min="0" max="1"/>
 		<element name="resetToDefaults" function="true" type="void">
 			<description><![CDATA[Clears groups and loads default values for simulator parameters, then calls onExpDefLoad() of the current experiment definition.]]></description>
 <arguments/></element>
-		<element name="save" function="true" type="untyped">
-			<description><![CDATA[Save experiment file (calls onExpSave() in the current experiment definition)]]></description>
-			<arguments>
-				<argument name="filename" type="string"/>
-			</arguments>
-		</element>
-		<element name="sleep" function="true" type="void">
-			<description><![CDATA[Suspends the execution for a specified interval]]></description>
-			<arguments>
-				<argument name="milliseconds" type="integer"/>
-			</arguments>
-		</element>
-		<element name="sound" function="true" type="void">
-			<description><![CDATA[Generates a simple tone on the speaker]]></description>
-			<arguments>
-				<argument name="freqency in Hz" type="integer"/>
-				<argument name="length in milliseconds" type="integer"/>
-			</arguments>
-		</element>
-		<element name="start" function="true" type="void">
-			<description><![CDATA[called by the user interface]]></description>
+		<element name="resetonexpdef" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[If turned on: when a new experiment definition is selected, default values are loaded for most of the simulator parameters, and gene pools and populations are cleared.
+If turned off: parameters from previous experiment definition will remain (dangerous).]]></description>
+		</element>
+		<element name="new" function="true" type="Simulator"><arguments/></element>
+		<element name="slaves" type="SlaveSimulators"/>
+		<element name="cpus" type="integer"/>
+		<element name="world" type="World"/>
+		<element name="populations" type="Populations"/>
+		<element name="genepools" type="GenePools"/>
+		<element name="expparams" type="ExpParams"/>
+		<element name="expstate" type="ExpState"/>
+		<element name="loadNeurons" function="true" type="void">
+			<arguments>
+				<argument name="directory path" type="string"/>
+			</arguments>
+		</element>
+		<element name="user" type="untyped"/>
+		<element name="identity" type="integer">
+			<description><![CDATA[-1 for master simulator, 0...count-1 for slaves]]></description>
+		</element>
+	</type>
+	<type name="SlaveSimulators" context="Global context">
+		<element name="size" type="integer" min="0" max="50">
+			<description><![CDATA[Changing this value will create/remove slave simulator objects as needed.]]></description>
+		</element>
+		<element name="get" function="true" type="Simulator">
+			<description><![CDATA[Access the slave simulator object (Simulator.slaves[index] works, too).
+Important: Do not operate on a simulator that is currently running, always stop() it first.]]></description>
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="running" type="integer">
+			<description><![CDATA[Note that if running>0 then the number of running simulations can be outdated in the very moment you read this field, because the expdef can stop itself anytime. If running==0, then it is guaranteed to stay 0 until someone calls start() on some of the slave simulator objects.]]></description>
+		</element>
+		<element name="create" function="true" type="Simulator">
+			<description><![CDATA[If you need to create AND store the reference to a newly created simulator object, then this function may be more readable than var s=Simulator.slaves[Simulator.slaves.size++];]]></description>
 <arguments/></element>
-		<element name="step" function="true" type="void"><arguments/></element>
-		<element name="stop" function="true" type="void">
-			<description><![CDATA[the expdef script calls this to stop simulation]]></description>
-<arguments/></element>
-	</type>
-	<type name="SlaveSimulators" context="Global context">
+		<element name="remove" function="true" type="void">
+			<description><![CDATA[Also calls stop() if the simulator is running. Events assocated with the simulator being deleted are cancelled, so the expdef will not see the usual onSlaveStop.]]></description>
+			<arguments>
+				<argument name="index_or_object" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="removeAll" function="true">
+			<description><![CDATA[Same as Simulator.slaves=0;]]></description>
+		</element>
+		<element name="startAll" function="true"/>
+		<element name="stopAll" function="true"/>
+		<element name="cancelEventsFromSlave" function="true" type="void">
+			<description><![CDATA[If the onSlaveStop() event is used to schedule work to a simulator, then you might want to cancel pending events when the experiment is aborted - otherwise it may be difficult to distinguish between self-stop events (called internally from the slave simulator to signal the job was completed) from abort-stop events (requested by the supervising simulator). Calling Simulator.slaves.stopAll(); Simulator.slaves.cancelAllEvents(); makes sure that no old events will be detected after that time point. Without cancelling, the old onSlaveStop() notification (the consequence of the abort-stop) might arrive after the next start() which may confuse the expdef code (slave events are asynchronous).]]></description>
+			<arguments>
+				<argument type="Simulator"/>
+			</arguments>
+		</element>
+		<element name="cancelAllEvents" function="true">
+			<description><![CDATA[see cancelEventsFromSlave()]]></description>
+		</element>
 		<element name="isolation" type="integer" min="0" max="1" default="1">
 			<description><![CDATA[Slave simulator access is filtered to exclude object references across simulator boundaries and ensure a safe multithreaded operation.
@@ -4357,164 +4459,128 @@
 var g=Simulator.slaves[0].genepools[0][0].genotype; - but the slave's GenePool can be accessed from master (if the slave is not running at the moment)]]></description>
 		</element>
-		<element name="running" type="integer">
-			<description><![CDATA[Note that if running>0 then the number of running simulations can be outdated in the very moment you read this field, because the expdef can stop itself anytime. If running==0, then it is guaranteed to stay 0 until someone calls start() on some of the slave simulator objects.]]></description>
-		</element>
-		<element name="size" type="integer" min="0" max="50">
-			<description><![CDATA[Changing this value will create/remove slave simulator objects as needed.]]></description>
-		</element>
-		<element name="cancelAllEvents" function="true">
-			<description><![CDATA[see cancelEventsFromSlave()]]></description>
-		</element>
-		<element name="cancelEventsFromSlave" function="true" type="void">
-			<description><![CDATA[If the onSlaveStop() event is used to schedule work to a simulator, then you might want to cancel pending events when the experiment is aborted - otherwise it may be difficult to distinguish between self-stop events (called internally from the slave simulator to signal the job was completed) from abort-stop events (requested by the supervising simulator). Calling Simulator.slaves.stopAll(); Simulator.slaves.cancelAllEvents(); makes sure that no old events will be detected after that time point. Without cancelling, the old onSlaveStop() notification (the consequence of the abort-stop) might arrive after the next start() which may confuse the expdef code (slave events are asynchronous).]]></description>
-			<arguments>
-				<argument type="Simulator"/>
-			</arguments>
-		</element>
-		<element name="create" function="true" type="Simulator">
-			<description><![CDATA[If you need to create AND store the reference to a newly created simulator object, then this function may be more readable than var s=Simulator.slaves[Simulator.slaves.size++];]]></description>
+	</type>
+	<type name="stats" context="Global context">
+		<element name="gen_count" type="integer">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="gen_mvalid" type="integer">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="gen_mvalidated" type="integer">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="gen_minvalid" type="integer">
+			<description><![CDATA[couldn't be repaired]]></description>
+		</element>
+		<element name="gen_mfailed" type="integer">
+			<description><![CDATA[couldn't be performed]]></description>
+		</element>
+		<element name="gen_xovalid" type="integer">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="gen_xovalidated" type="integer">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="gen_xoinvalid" type="integer">
+			<description><![CDATA[couldn't be repaired]]></description>
+		</element>
+		<element name="gen_xofailed" type="integer">
+			<description><![CDATA[couldn't be performed]]></description>
+		</element>
+		<element name="gen_mutimpr" type="float">
+			<description><![CDATA[total cumulative mutation change]]></description>
+		</element>
+		<element name="gen_xoimpr" type="float">
+			<description><![CDATA[total cumulative crossover change]]></description>
+		</element>
+		<element name="clrstats" function="true" type="void">
+			<description><![CDATA[]]></description>
 <arguments/></element>
-		<element name="get" function="true" type="Simulator">
-			<description><![CDATA[Access the slave simulator object (Simulator.slaves[index] works, too).
-Important: Do not operate on a simulator that is currently running, always stop() it first.]]></description>
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="remove" function="true" type="void">
-			<description><![CDATA[Also calls stop() if the simulator is running. Events assocated with the simulator being deleted are cancelled, so the expdef will not see the usual onSlaveStop.]]></description>
-			<arguments>
-				<argument name="index_or_object" type="untyped"/>
-			</arguments>
-		</element>
-		<element name="removeAll" function="true">
-			<description><![CDATA[Same as Simulator.slaves=0;]]></description>
-		</element>
-		<element name="startAll" function="true"/>
-		<element name="stopAll" function="true"/>
-	</type>
-	<type name="stats" context="Global context">
+		<element name="clear" function="true"/>
+		<element name="add" function="true"/>
+		<element name="remove" function="true"/>
+		<element name="addGroup" function="true"/>
+		<element name="removeGroup" function="true"/>
 		<element name="changedProperty" type="integer"/>
 		<element name="changedPropertyId" type="string"/>
-		<element name="gen_count" type="integer">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="gen_mfailed" type="integer">
-			<description><![CDATA[couldn't be performed]]></description>
-		</element>
-		<element name="gen_minvalid" type="integer">
-			<description><![CDATA[couldn't be repaired]]></description>
-		</element>
-		<element name="gen_mutimpr" type="float">
-			<description><![CDATA[total cumulative mutation change]]></description>
-		</element>
-		<element name="gen_mvalid" type="integer">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="gen_mvalidated" type="integer">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="gen_xofailed" type="integer">
-			<description><![CDATA[couldn't be performed]]></description>
-		</element>
-		<element name="gen_xoimpr" type="float">
-			<description><![CDATA[total cumulative crossover change]]></description>
-		</element>
-		<element name="gen_xoinvalid" type="integer">
-			<description><![CDATA[couldn't be repaired]]></description>
-		</element>
-		<element name="gen_xovalid" type="integer">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="gen_xovalidated" type="integer">
-			<description><![CDATA[]]></description>
-		</element>
+		<element name="st_count" type="integer"/>
+		<element name="st_min_numparts" type="float"/>
+		<element name="st_avg_numparts" type="float"/>
+		<element name="st_max_numparts" type="float"/>
+		<element name="st_min_numjoints" type="float"/>
+		<element name="st_avg_numjoints" type="float"/>
+		<element name="st_max_numjoints" type="float"/>
+		<element name="st_min_numneurons" type="float"/>
+		<element name="st_avg_numneurons" type="float"/>
+		<element name="st_max_numneurons" type="float"/>
+		<element name="st_min_numconnections" type="float"/>
+		<element name="st_avg_numconnections" type="float"/>
+		<element name="st_max_numconnections" type="float"/>
+		<element name="st_min_num" type="float"/>
+		<element name="st_avg_num" type="float"/>
+		<element name="st_max_num" type="float"/>
+		<element name="st_min_gnum" type="float"/>
+		<element name="st_avg_gnum" type="float"/>
+		<element name="st_max_gnum" type="float"/>
+		<element name="st_min_instances" type="float"/>
+		<element name="st_avg_instances" type="float"/>
+		<element name="st_max_instances" type="float"/>
+		<element name="st_min_lifespan" type="float"/>
+		<element name="st_avg_lifespan" type="float"/>
+		<element name="st_max_lifespan" type="float"/>
+		<element name="st_min_velocity" type="float"/>
+		<element name="st_avg_velocity" type="float"/>
+		<element name="st_max_velocity" type="float"/>
+		<element name="st_min_distance" type="float"/>
+		<element name="st_avg_distance" type="float"/>
+		<element name="st_max_distance" type="float"/>
+		<element name="st_min_vertvel" type="float"/>
+		<element name="st_avg_vertvel" type="float"/>
+		<element name="st_max_vertvel" type="float"/>
+		<element name="st_min_vertpos" type="float"/>
+		<element name="st_avg_vertpos" type="float"/>
+		<element name="st_max_vertpos" type="float"/>
+		<element name="st_min_fit" type="float"/>
+		<element name="st_avg_fit" type="float"/>
+		<element name="st_max_fit" type="float"/>
+		<element name="st_min_fit2" type="float"/>
+		<element name="st_avg_fit2" type="float"/>
+		<element name="st_max_fit2" type="float"/>
+		<element name="st_min_c_velocity" type="float"/>
 		<element name="st_avg_c_velocity" type="float"/>
+		<element name="st_max_c_velocity" type="float"/>
+		<element name="st_min_c_vertvelocity" type="float"/>
+		<element name="st_avg_c_vertvelocity" type="float"/>
+		<element name="st_max_c_vertvelocity" type="float"/>
+		<element name="st_min_c_vertpos" type="float"/>
 		<element name="st_avg_c_vertpos" type="float"/>
-		<element name="st_avg_c_vertvelocity" type="float"/>
+		<element name="st_max_c_vertpos" type="float"/>
+		<element name="st_min_pos_x" type="float"/>
+		<element name="st_avg_pos_x" type="float"/>
+		<element name="st_max_pos_x" type="float"/>
+		<element name="st_min_pos_y" type="float"/>
+		<element name="st_avg_pos_y" type="float"/>
+		<element name="st_max_pos_y" type="float"/>
+		<element name="st_min_pos_z" type="float"/>
+		<element name="st_avg_pos_z" type="float"/>
+		<element name="st_max_pos_z" type="float"/>
+		<element name="st_min_size_x" type="float"/>
+		<element name="st_avg_size_x" type="float"/>
+		<element name="st_max_size_x" type="float"/>
+		<element name="st_min_size_y" type="float"/>
+		<element name="st_avg_size_y" type="float"/>
+		<element name="st_max_size_y" type="float"/>
+		<element name="st_min_size_z" type="float"/>
+		<element name="st_avg_size_z" type="float"/>
+		<element name="st_max_size_z" type="float"/>
+		<element name="st_min_center_x" type="float"/>
 		<element name="st_avg_center_x" type="float"/>
+		<element name="st_max_center_x" type="float"/>
+		<element name="st_min_center_y" type="float"/>
 		<element name="st_avg_center_y" type="float"/>
+		<element name="st_max_center_y" type="float"/>
+		<element name="st_min_center_z" type="float"/>
 		<element name="st_avg_center_z" type="float"/>
-		<element name="st_avg_distance" type="float"/>
-		<element name="st_avg_fit" type="float"/>
-		<element name="st_avg_fit2" type="float"/>
-		<element name="st_avg_gnum" type="float"/>
-		<element name="st_avg_instances" type="float"/>
-		<element name="st_avg_lifespan" type="float"/>
-		<element name="st_avg_num" type="float"/>
-		<element name="st_avg_numconnections" type="float"/>
-		<element name="st_avg_numjoints" type="float"/>
-		<element name="st_avg_numneurons" type="float"/>
-		<element name="st_avg_numparts" type="float"/>
-		<element name="st_avg_pos_x" type="float"/>
-		<element name="st_avg_pos_y" type="float"/>
-		<element name="st_avg_pos_z" type="float"/>
-		<element name="st_avg_size_x" type="float"/>
-		<element name="st_avg_size_y" type="float"/>
-		<element name="st_avg_size_z" type="float"/>
-		<element name="st_avg_velocity" type="float"/>
-		<element name="st_avg_vertpos" type="float"/>
-		<element name="st_avg_vertvel" type="float"/>
-		<element name="st_count" type="integer"/>
-		<element name="st_max_c_velocity" type="float"/>
-		<element name="st_max_c_vertpos" type="float"/>
-		<element name="st_max_c_vertvelocity" type="float"/>
-		<element name="st_max_center_x" type="float"/>
-		<element name="st_max_center_y" type="float"/>
 		<element name="st_max_center_z" type="float"/>
-		<element name="st_max_distance" type="float"/>
-		<element name="st_max_fit" type="float"/>
-		<element name="st_max_fit2" type="float"/>
-		<element name="st_max_gnum" type="float"/>
-		<element name="st_max_instances" type="float"/>
-		<element name="st_max_lifespan" type="float"/>
-		<element name="st_max_num" type="float"/>
-		<element name="st_max_numconnections" type="float"/>
-		<element name="st_max_numjoints" type="float"/>
-		<element name="st_max_numneurons" type="float"/>
-		<element name="st_max_numparts" type="float"/>
-		<element name="st_max_pos_x" type="float"/>
-		<element name="st_max_pos_y" type="float"/>
-		<element name="st_max_pos_z" type="float"/>
-		<element name="st_max_size_x" type="float"/>
-		<element name="st_max_size_y" type="float"/>
-		<element name="st_max_size_z" type="float"/>
-		<element name="st_max_velocity" type="float"/>
-		<element name="st_max_vertpos" type="float"/>
-		<element name="st_max_vertvel" type="float"/>
-		<element name="st_min_c_velocity" type="float"/>
-		<element name="st_min_c_vertpos" type="float"/>
-		<element name="st_min_c_vertvelocity" type="float"/>
-		<element name="st_min_center_x" type="float"/>
-		<element name="st_min_center_y" type="float"/>
-		<element name="st_min_center_z" type="float"/>
-		<element name="st_min_distance" type="float"/>
-		<element name="st_min_fit" type="float"/>
-		<element name="st_min_fit2" type="float"/>
-		<element name="st_min_gnum" type="float"/>
-		<element name="st_min_instances" type="float"/>
-		<element name="st_min_lifespan" type="float"/>
-		<element name="st_min_num" type="float"/>
-		<element name="st_min_numconnections" type="float"/>
-		<element name="st_min_numjoints" type="float"/>
-		<element name="st_min_numneurons" type="float"/>
-		<element name="st_min_numparts" type="float"/>
-		<element name="st_min_pos_x" type="float"/>
-		<element name="st_min_pos_y" type="float"/>
-		<element name="st_min_pos_z" type="float"/>
-		<element name="st_min_size_x" type="float"/>
-		<element name="st_min_size_y" type="float"/>
-		<element name="st_min_size_z" type="float"/>
-		<element name="st_min_velocity" type="float"/>
-		<element name="st_min_vertpos" type="float"/>
-		<element name="st_min_vertvel" type="float"/>
-		<element name="add" function="true"/>
-		<element name="addGroup" function="true"/>
-		<element name="clear" function="true"/>
-		<element name="clrstats" function="true" type="void">
-			<description><![CDATA[]]></description>
-<arguments/></element>
-		<element name="remove" function="true"/>
-		<element name="removeGroup" function="true"/>
 	</type>
 	<type name="StopEvent" context="Global context">
@@ -4525,29 +4591,86 @@
 	<type name="String" context="Global context">
 <description><![CDATA[String functions library.]]></description>
-		<element name="char" function="true" type="string">
-			<arguments>
-				<argument type="integer"/>
-			</arguments>
-		</element>
-		<element name="code" function="true" type="integer">
+		<element name="len" function="true" type="integer">
+			<description><![CDATA[String.len("abcdef") -> 6]]></description>
 			<arguments>
 				<argument type="string"/>
 			</arguments>
 		</element>
-		<element name="deserialize" function="true" type="untyped">
-			<description><![CDATA[extract objects from textual representation]]></description>
+		<element name="replace" function="true" type="string">
+			<description><![CDATA[String.replace("abcdef","cd","X") -> "abXef"]]></description>
+			<arguments>
+				<argument name="input_string" type="string"/>
+				<argument name="search" type="string"/>
+				<argument name="substitute" type="string"/>
+			</arguments>
+		</element>
+		<element name="split" function="true" type="Vector">
+			<description><![CDATA[return the vector of substrings, cut at separator positions.
+subsequent separators give empty words: split("word1---word2-word3","-") -> ["word1","","","word2","word3"]]]></description>
 			<arguments>
 				<argument type="string"/>
-			</arguments>
-		</element>
-		<element name="diff" function="true" type="Vector">
-			<description><![CDATA[Returns the vector of minimal differences between two strings. The vector contains either 2-element subvectors with differing substrings ["text-1","text-2"] or strings "same".
-
-For example, String.diff("thisisatest", "testing123testing") returns [t,[hi,e],s,[,t],i,[sa,ng123],test,[,ing]].
-
-Use this function for short strings, as it requires 4*length(string1)*length(string2) bytes of memory.]]></description>
+				<argument name="word separator" type="string"/>
+			</arguments>
+		</element>
+		<element name="split2" function="true" type="Vector">
+			<description><![CDATA[return the vector of substrings, cut at separator positions.
+subsequent separators are treated as one: split2("word1---word2-word3","-") -> ["word1","word2","word3"]]]></description>
 			<arguments>
 				<argument type="string"/>
+				<argument name="word separator" type="string"/>
+			</arguments>
+		</element>
+		<element name="indexOf" function="true" type="integer">
+			<description><![CDATA[String.indexOf("abcdef","cd") -> 2
+String.indexOf("abcdef","dc") -> -1
+]]></description>
+			<arguments>
 				<argument type="string"/>
+				<argument name="substring" type="string"/>
+			</arguments>
+		</element>
+		<element name="indexOfStart" function="true" type="integer">
+			<description><![CDATA[String.indexOfStart("abcdef","cd",1) -> 2
+String.indexOfStart("abcdef","cd",3) -> -1
+]]></description>
+			<arguments>
+				<argument type="string"/>
+				<argument name="substring" type="string"/>
+				<argument name="start index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="substr" function="true" type="string">
+			<description><![CDATA[String.substr("abcdef",3,2) -> ="de"]]></description>
+			<arguments>
+				<argument type="string"/>
+				<argument name="first character" type="integer"/>
+				<argument name="number of characters" type="integer"/>
+			</arguments>
+		</element>
+		<element name="substr" function="true" type="string">
+			<description><![CDATA[String.substr("abcdef",3) -> ="def"]]></description>
+			<arguments>
+				<argument type="string"/>
+				<argument name="first character" type="integer"/>
+			</arguments>
+		</element>
+		<element name="left" function="true" type="string">
+			<description><![CDATA[String.left("abcdef",3) -> ="abc"]]></description>
+			<arguments>
+				<argument type="string"/>
+				<argument name="number of characters" type="integer"/>
+			</arguments>
+		</element>
+		<element name="right" function="true" type="string">
+			<description><![CDATA[String.right("abcdef",3) -> ="def"]]></description>
+			<arguments>
+				<argument type="string"/>
+				<argument name="number of characters" type="integer"/>
+			</arguments>
+		</element>
+		<element name="startsWith" function="true" type="integer">
+			<arguments>
+				<argument name="string" type="string"/>
+				<argument name="substring" type="string"/>
 			</arguments>
 		</element>
@@ -4592,64 +4715,32 @@
 			</arguments>
 		</element>
-		<element name="hash" function="true" type="integer">
+		<element name="parseInt" function="true" type="integer">
 			<arguments>
 				<argument type="string"/>
 			</arguments>
 		</element>
-		<element name="indexOf" function="true" type="integer">
-			<description><![CDATA[String.indexOf("abcdef","cd") -> 2
-String.indexOf("abcdef","dc") -> -1
-]]></description>
+		<element name="parseFloat" function="true" type="float">
 			<arguments>
 				<argument type="string"/>
-				<argument name="substring" type="string"/>
-			</arguments>
-		</element>
-		<element name="indexOfStart" function="true" type="integer">
-			<description><![CDATA[String.indexOfStart("abcdef","cd",1) -> 2
-String.indexOfStart("abcdef","cd",3) -> -1
-]]></description>
+			</arguments>
+		</element>
+		<element name="code" function="true" type="integer">
 			<arguments>
 				<argument type="string"/>
-				<argument name="substring" type="string"/>
-				<argument name="start index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="left" function="true" type="string">
-			<description><![CDATA[String.left("abcdef",3) -> ="abc"]]></description>
+			</arguments>
+		</element>
+		<element name="char" function="true" type="string">
+			<arguments>
+				<argument type="integer"/>
+			</arguments>
+		</element>
+		<element name="toUpper" function="true" type="string">
 			<arguments>
 				<argument type="string"/>
-				<argument name="number of characters" type="integer"/>
-			</arguments>
-		</element>
-		<element name="len" function="true" type="integer">
-			<description><![CDATA[String.len("abcdef") -> 6]]></description>
+			</arguments>
+		</element>
+		<element name="toLower" function="true" type="string">
 			<arguments>
 				<argument type="string"/>
-			</arguments>
-		</element>
-		<element name="parseFloat" function="true" type="float">
-			<arguments>
-				<argument type="string"/>
-			</arguments>
-		</element>
-		<element name="parseInt" function="true" type="integer">
-			<arguments>
-				<argument type="string"/>
-			</arguments>
-		</element>
-		<element name="replace" function="true" type="string">
-			<description><![CDATA[String.replace("abcdef","cd","X") -> "abXef"]]></description>
-			<arguments>
-				<argument name="input_string" type="string"/>
-				<argument name="search" type="string"/>
-				<argument name="substitute" type="string"/>
-			</arguments>
-		</element>
-		<element name="right" function="true" type="string">
-			<description><![CDATA[String.right("abcdef",3) -> ="def"]]></description>
-			<arguments>
-				<argument type="string"/>
-				<argument name="number of characters" type="integer"/>
 			</arguments>
 		</element>
@@ -4660,66 +4751,29 @@
 			</arguments>
 		</element>
-		<element name="split" function="true" type="Vector">
-			<description><![CDATA[return the vector of substrings, cut at separator positions.
-subsequent separators give empty words: split("word1---word2-word3","-") -> ["word1","","","word2","word3"]]]></description>
+		<element name="deserialize" function="true" type="untyped">
+			<description><![CDATA[extract objects from textual representation]]></description>
 			<arguments>
 				<argument type="string"/>
-				<argument name="word separator" type="string"/>
-			</arguments>
-		</element>
-		<element name="split2" function="true" type="Vector">
-			<description><![CDATA[return the vector of substrings, cut at separator positions.
-subsequent separators are treated as one: split2("word1---word2-word3","-") -> ["word1","word2","word3"]]]></description>
+			</arguments>
+		</element>
+		<element name="hash" function="true" type="integer">
 			<arguments>
 				<argument type="string"/>
-				<argument name="word separator" type="string"/>
-			</arguments>
-		</element>
-		<element name="startsWith" function="true" type="integer">
-			<arguments>
-				<argument name="string" type="string"/>
-				<argument name="substring" type="string"/>
-			</arguments>
-		</element>
-		<element name="substr" function="true" type="string">
-			<description><![CDATA[String.substr("abcdef",3,2) -> ="de"]]></description>
+			</arguments>
+		</element>
+		<element name="diff" function="true" type="Vector">
+			<description><![CDATA[Returns the vector of minimal differences between two strings. The vector contains either 2-element subvectors with differing substrings ["text-1","text-2"] or strings "same".
+
+For example, String.diff("thisisatest", "testing123testing") returns [t,[hi,e],s,[,t],i,[sa,ng123],test,[,ing]].
+
+Use this function for short strings, as it requires 4*length(string1)*length(string2) bytes of memory.]]></description>
 			<arguments>
 				<argument type="string"/>
-				<argument name="first character" type="integer"/>
-				<argument name="number of characters" type="integer"/>
-			</arguments>
-		</element>
-		<element name="substr" function="true" type="string">
-			<description><![CDATA[String.substr("abcdef",3) -> ="def"]]></description>
-			<arguments>
 				<argument type="string"/>
-				<argument name="first character" type="integer"/>
-			</arguments>
-		</element>
-		<element name="toLower" function="true" type="string">
-			<arguments>
-				<argument type="string"/>
-			</arguments>
-		</element>
-		<element name="toUpper" function="true" type="string">
-			<arguments>
-				<argument type="string"/>
 			</arguments>
 		</element>
 	</type>
 	<type name="Symmetry" context="Global context">
-		<element name="symAlphaSteps" type="integer" min="2" max="50" default="20">
-			<description><![CDATA[Default number of samples per full angle (#1)]]></description>
-		</element>
-		<element name="symBetaSteps" type="integer" min="2" max="50" default="20">
-			<description><![CDATA[Default number of samples per full angle (#2)]]></description>
-		</element>
-		<element name="symPosSteps" type="integer" min="2" max="50" default="10">
-			<description><![CDATA[Default number of samples per stick length]]></description>
-		</element>
-		<element name="symResultA" type="float"/>
-		<element name="symResultB" type="float"/>
-		<element name="symResultC" type="float"/>
-		<element name="symResultD" type="float"/>
+<description><![CDATA[Calculates bilateral symmetry. Details are described in http://www.framsticks.com/node/808]]></description>
 		<element name="calculateSymmetry" function="true" type="float">
 			<description><![CDATA[Returns bilateral symmetry (0.0 .. 1.0) for a given Model using default precision parameters (symPosSteps,symAlphaSteps,symBetaSteps). Returns the symmetry plane, too (sets symResultA,B,C,D).
@@ -4749,13 +4803,26 @@
 			</arguments>
 		</element>
+		<element name="symPosSteps" type="integer" min="2" max="50" default="10">
+			<description><![CDATA[Default number of samples per stick length]]></description>
+		</element>
+		<element name="symAlphaSteps" type="integer" min="2" max="50" default="20">
+			<description><![CDATA[Default number of samples per full angle (#1)]]></description>
+		</element>
+		<element name="symBetaSteps" type="integer" min="2" max="50" default="20">
+			<description><![CDATA[Default number of samples per full angle (#2)]]></description>
+		</element>
+		<element name="symResultA" type="float"/>
+		<element name="symResultB" type="float"/>
+		<element name="symResultC" type="float"/>
+		<element name="symResultD" type="float"/>
 	</type>
 	<type name="UserScripts" context="Global context">
+		<element name="clear" function="true"/>
+		<element name="add" function="true"/>
+		<element name="remove" function="true"/>
+		<element name="addGroup" function="true"/>
+		<element name="removeGroup" function="true"/>
 		<element name="changedProperty" type="integer"/>
 		<element name="changedPropertyId" type="string"/>
-		<element name="add" function="true"/>
-		<element name="addGroup" function="true"/>
-		<element name="clear" function="true"/>
-		<element name="remove" function="true"/>
-		<element name="removeGroup" function="true"/>
 	</type>
 	<type name="Vector" context="Global context">
@@ -4764,40 +4831,39 @@
 var v=Vector.new();
 v.add(123); v.add("string");]]></description>
+		<element name="clear" function="true" type="void"><arguments/></element>
+		<element name="size" type="integer"/>
+		<element name="remove" function="true" type="void">
+			<arguments>
+				<argument name="position" type="integer"/>
+			</arguments>
+		</element>
+		<element name="get" function="true" type="untyped">
+			<arguments>
+				<argument name="position" type="integer"/>
+			</arguments>
+		</element>
+		<element name="set" function="true" type="void">
+			<arguments>
+				<argument name="position" type="integer"/>
+				<argument name="value" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="add" function="true" type="void">
+			<arguments>
+				<argument name="value" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="find" function="true" type="integer">
+			<description><![CDATA[returns the element index or -1 if not found]]></description>
+			<arguments>
+				<argument name="value" type="untyped"/>
+			</arguments>
+		</element>
 		<element name="avg" type="float"/>
-		<element name="iterator" type="Object"/>
-		<element name="size" type="integer"/>
 		<element name="stdev" type="float">
 			<description><![CDATA[=sqrt(sum((element[i]-avg)^2)/(size-1)) which is estimated population std.dev. from sample std.dev.]]></description>
 		</element>
 		<element name="toString" type="string"/>
-		<element name="add" function="true" type="void">
-			<arguments>
-				<argument name="value" type="untyped"/>
-			</arguments>
-		</element>
-		<element name="clear" function="true" type="void"><arguments/></element>
-		<element name="find" function="true" type="integer">
-			<description><![CDATA[returns the element index or -1 if not found]]></description>
-			<arguments>
-				<argument name="value" type="untyped"/>
-			</arguments>
-		</element>
-		<element name="get" function="true" type="untyped">
-			<arguments>
-				<argument name="position" type="integer"/>
-			</arguments>
-		</element>
 		<element name="new" function="true" type="Vector"><arguments/></element>
-		<element name="remove" function="true" type="void">
-			<arguments>
-				<argument name="position" type="integer"/>
-			</arguments>
-		</element>
-		<element name="set" function="true" type="void">
-			<arguments>
-				<argument name="position" type="integer"/>
-				<argument name="value" type="untyped"/>
-			</arguments>
-		</element>
 		<element name="sort" function="true" type="void">
 			<description><![CDATA[comparator can be null, giving the "natural" sorting order (depending on element type), otherwise it must be a function reference obtained by the "function FUNCTIONNAME" operator.
@@ -4811,21 +4877,11 @@
 			</arguments>
 		</element>
+		<element name="iterator" type="Object"/>
 	</type>
 	<type name="World" context="Global context">
 <description><![CDATA[Environment properties.]]></description>
-		<element name="nnspeed" type="float" min="0" max="1000" default="1.0">
-			<description><![CDATA[Number of neural network simulation steps in each physics simulation step]]></description>
-		</element>
-		<element name="signals" type="WorldSignals"/>
-		<element name="simtype" type="integer" min="0" max="1" default="0">
-			<description><![CDATA[MechaStick is a fast and simple primary Framsticks simulation engine.
-ODE is Open Dynamics Engine by Russel Smith et al.
-
-NOTE: switching between simulation engines causes removal of all objects in the world (e.g. creatures).]]></description>
-		</element>
-		<element name="wrldbnd" type="integer" min="0" max="2" default="1"/>
-		<element name="wrldg" type="float" min="0" max="10" default="1.0">
-			<description><![CDATA[You can adjust gravity for your experiments.
-The "official" setting used to evaluate and compare creatures is 1.]]></description>
+		<element name="wrldtyp" type="integer" min="0" max="2" default="0"/>
+		<element name="wrldsiz" type="float" min="10" max="1000" default="20.0">
+			<description><![CDATA[Side length of the world]]></description>
 		</element>
 		<element name="wrldmap" type="string">
@@ -4839,10 +4895,23 @@
 See also the WorldMap object.]]></description>
 		</element>
-		<element name="wrldsiz" type="float" min="10" max="1000" default="20.0">
-			<description><![CDATA[Side length of the world]]></description>
-		</element>
-		<element name="wrldtyp" type="integer" min="0" max="2" default="0"/>
 		<element name="wrldwat" type="float" min="-20" max="200" default="-1.0"/>
+		<element name="wrldbnd" type="integer" min="0" max="2" default="1">
+			<description><![CDATA[Teleporting a creature that is outside of the world area is attempted every 'performance sampling period' steps. Teleport succeeds only when the target location in the world is empty (there is no collision).]]></description>
+		</element>
+		<element name="wrldg" type="float" min="0" max="10" default="1.0">
+			<description><![CDATA[You can adjust gravity for your experiments.
+The "official" setting used to evaluate and compare creatures is 1.]]></description>
+		</element>
 		<element name="wrldchg" function="true" type="void"><arguments/></element>
+		<element name="simtype" type="integer" min="0" max="1" default="0">
+			<description><![CDATA[MechaStick is a fast and simple primary Framsticks simulation engine.
+ODE is Open Dynamics Engine by Russel Smith et al.
+
+NOTE: switching between simulation engines causes removal of all objects in the world (e.g. creatures).]]></description>
+		</element>
+		<element name="nnspeed" type="float" min="0" max="1000" default="1.0">
+			<description><![CDATA[Number of neural network simulation steps in each physics simulation step]]></description>
+		</element>
+		<element name="signals" type="WorldSignals"/>
 	</type>
 	<type name="WorldMap" context="Global context">
@@ -4892,5 +4961,4 @@
 
 See also: Signal, CreatureSignals, NeuroSignals.]]></description>
-		<element name="size" type="integer"/>
 		<element name="add" function="true" type="Signal">
 			<arguments>
@@ -4899,10 +4967,4 @@
 			</arguments>
 		</element>
-		<element name="clear" function="true" type="void"><arguments/></element>
-		<element name="get" function="true" type="Signal">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
 		<element name="receive" function="true" type="float">
 			<description><![CDATA[Receive the aggregated signal power in a given channel.]]></description>
@@ -4910,4 +4972,12 @@
 				<argument name="position" type="XYZ"/>
 				<argument name="channel" type="string"/>
+			</arguments>
+		</element>
+		<element name="receiveSet" function="true" type="Vector">
+			<description><![CDATA[Get all signals in the specified range. Returns a read-only vector object containing Signal objects - individual signals can be accessed as result[0], .., result[result.size-1].]]></description>
+			<arguments>
+				<argument name="position" type="XYZ"/>
+				<argument name="channel" type="string"/>
+				<argument name="max distance" type="float"/>
 			</arguments>
 		</element>
@@ -4926,6 +4996,6 @@
 			</arguments>
 		</element>
-		<element name="receiveSet" function="true" type="Vector">
-			<description><![CDATA[Get all signals in the specified range. Returns a read-only vector object containing Signal objects - individual signals can be accessed as result[0], .., result[result.size-1].]]></description>
+		<element name="receiveSingle" function="true" type="Signal">
+			<description><![CDATA[Find the signal source that has the highest signal power (taking into account distance).]]></description>
 			<arguments>
 				<argument name="position" type="XYZ"/>
@@ -4934,25 +5004,29 @@
 			</arguments>
 		</element>
-		<element name="receiveSingle" function="true" type="Signal">
-			<description><![CDATA[Find the signal source that has the highest signal power (taking into account distance).]]></description>
-			<arguments>
-				<argument name="position" type="XYZ"/>
-				<argument name="channel" type="string"/>
-				<argument name="max distance" type="float"/>
-			</arguments>
-		</element>
+		<element name="get" function="true" type="Signal">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="size" type="integer"/>
+		<element name="clear" function="true" type="void"><arguments/></element>
 	</type>
 	<type name="XYZ" context="Global context">
 <description><![CDATA[3D vector]]></description>
-		<element name="length" type="float"/>
-		<element name="toString" type="string"/>
-		<element name="toVector" type="Vector"/>
 		<element name="x" type="float"/>
 		<element name="y" type="float"/>
 		<element name="z" type="float"/>
-		<element name="add" function="true" type="void">
-			<description><![CDATA[Note: it does not return a new object, just modifies the existing one]]></description>
-			<arguments>
-				<argument type="XYZ"/>
+		<element name="new" function="true" type="XYZ">
+			<description><![CDATA[3D vectors objects can be also created using the (x,y,z) notation, i.e. var v=(1,2,3) is the same as var v=XYZ.new(1,2,3);]]></description>
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
+		<element name="newFromVector" function="true" type="XYZ">
+			<description><![CDATA[used for deserialization]]></description>
+			<arguments>
+				<argument type="Vector"/>
 			</arguments>
 		</element>
@@ -4965,12 +5039,10 @@
 //o2 is now (1,9999,3) but o3 is still (1,2,3)]]></description>
 <arguments/></element>
-		<element name="get" function="true" type="float">
-			<description><![CDATA[this function makes the XYZ objects "indexable" (so you can use [] for accessing subsequent fields, like in Vector)]]></description>
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="new" function="true" type="XYZ">
-			<description><![CDATA[3D vectors objects can be also created using the (x,y,z) notation, i.e. var v=(1,2,3) is the same as var v=XYZ.new(1,2,3);]]></description>
+		<element name="set" function="true" type="void">
+			<arguments>
+				<argument type="XYZ"/>
+			</arguments>
+		</element>
+		<element name="set3" function="true" type="void">
 			<arguments>
 				<argument name="x" type="float"/>
@@ -4979,13 +5051,32 @@
 			</arguments>
 		</element>
-		<element name="newFromVector" function="true" type="XYZ">
-			<description><![CDATA[used for deserialization]]></description>
-			<arguments>
-				<argument type="Vector"/>
-			</arguments>
-		</element>
+		<element name="add" function="true" type="void">
+			<description><![CDATA[Note: it does not return a new object, just modifies the existing one]]></description>
+			<arguments>
+				<argument type="XYZ"/>
+			</arguments>
+		</element>
+		<element name="sub" function="true" type="void">
+			<description><![CDATA[Note: it does not return a new object, just modifies the existing one]]></description>
+			<arguments>
+				<argument type="XYZ"/>
+			</arguments>
+		</element>
+		<element name="scale" function="true" type="void">
+			<arguments>
+				<argument type="float"/>
+			</arguments>
+		</element>
+		<element name="length" type="float"/>
 		<element name="normalize" function="true" type="void">
 			<description><![CDATA[scales the vector length to 1.0]]></description>
 <arguments/></element>
+		<element name="toString" type="string"/>
+		<element name="toVector" type="Vector"/>
+		<element name="rotate" function="true" type="void">
+			<arguments>
+				<argument type="Orient"/>
+			</arguments>
+		</element>
 		<element name="revRotate" function="true" type="void">
 			<arguments>
@@ -4993,80 +5084,121 @@
 			</arguments>
 		</element>
-		<element name="rotate" function="true" type="void">
-			<arguments>
-				<argument type="Orient"/>
-			</arguments>
-		</element>
-		<element name="scale" function="true" type="void">
-			<arguments>
-				<argument type="float"/>
-			</arguments>
-		</element>
-		<element name="set" function="true" type="void">
-			<arguments>
-				<argument type="XYZ"/>
-			</arguments>
-		</element>
-		<element name="set3" function="true" type="void">
-			<arguments>
-				<argument name="x" type="float"/>
-				<argument name="y" type="float"/>
-				<argument name="z" type="float"/>
-			</arguments>
-		</element>
-		<element name="sub" function="true" type="void">
-			<description><![CDATA[Note: it does not return a new object, just modifies the existing one]]></description>
-			<arguments>
-				<argument type="XYZ"/>
+		<element name="get" function="true" type="float">
+			<description><![CDATA[this function makes the XYZ objects "indexable" (so you can use [] for accessing subsequent fields, like in Vector)]]></description>
+			<arguments>
+				<argument name="index" type="integer"/>
 			</arguments>
 		</element>
 	</type>
 	<type name="ExpParams" context="Experiment definition">
+		<element name="clear" function="true"/>
+		<element name="add" function="true"/>
+		<element name="remove" function="true"/>
+		<element name="addGroup" function="true"/>
+		<element name="removeGroup" function="true"/>
 		<element name="changedProperty" type="integer"/>
 		<element name="changedPropertyId" type="string"/>
+	</type>
+	<type name="ExpState" context="Experiment definition">
+		<element name="clear" function="true"/>
 		<element name="add" function="true"/>
+		<element name="remove" function="true"/>
 		<element name="addGroup" function="true"/>
-		<element name="clear" function="true"/>
-		<element name="remove" function="true"/>
 		<element name="removeGroup" function="true"/>
-	</type>
-	<type name="ExpState" context="Experiment definition">
 		<element name="changedProperty" type="integer"/>
 		<element name="changedPropertyId" type="string"/>
-		<element name="add" function="true"/>
-		<element name="addGroup" function="true"/>
-		<element name="clear" function="true"/>
-		<element name="remove" function="true"/>
-		<element name="removeGroup" function="true"/>
 	</type>
 	<type name="n" context="Neuron definitions">
+		<element name="p" type="integer" min="-1" max="999999" default="-1"/>
+		<element name="j" type="integer" min="-1" max="999999" default="-1"/>
+		<element name="d" type="string"/>
+		<element name="i" type="string"/>
+		<element name="Vstyle" type="string"/>
+		<element name="getInputCount" type="integer"/>
+		<element name="getInputNeuroDef" function="true" type="NeuroDef">
+			<arguments>
+				<argument type="integer"/>
+			</arguments>
+		</element>
+		<element name="getInputNeuroIndex" function="true" type="integer">
+			<arguments>
+				<argument type="integer"/>
+			</arguments>
+		</element>
+		<element name="getInputWeight" function="true" type="float">
+			<arguments>
+				<argument type="integer"/>
+			</arguments>
+		</element>
 		<element name="classObject" type="NeuroClass"/>
-		<element name="d" type="string"/>
-		<element name="getInputCount" type="integer"/>
-		<element name="i" type="string"/>
-		<element name="j" type="integer" min="-1" max="999999" default="-1"/>
-		<element name="p" type="integer" min="-1" max="999999" default="-1"/>
-		<element name="Vstyle" type="string"/>
-		<element name="getInputNeuroDef" function="true" type="NeuroDef">
-			<arguments>
-				<argument type="integer"/>
-			</arguments>
-		</element>
-		<element name="getInputNeuroIndex" function="true" type="integer">
-			<arguments>
-				<argument type="integer"/>
-			</arguments>
-		</element>
-		<element name="getInputWeight" function="true" type="float">
-			<arguments>
-				<argument type="integer"/>
-			</arguments>
-		</element>
 	</type>
 	<type name="Neuro" context="Neuron definitions">
 <description><![CDATA[Live Neuron object.]]></description>
+		<element name="getInputState" function="true" type="float">
+			<arguments>
+				<argument name="input" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getInputWeight" function="true" type="float">
+			<arguments>
+				<argument name="input" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getWeightedInputState" function="true" type="float">
+			<arguments>
+				<argument name="input" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getInputSum" function="true" type="float">
+			<arguments>
+				<argument name="input" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getWeightedInputSum" function="true" type="float">
+			<description><![CDATA[Uses any number of inputs starting with the specified input. getWeightedInputSum(0)=weightedInputSum]]></description>
+			<arguments>
+				<argument name="input" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getInputCount" type="integer"/>
+		<element name="inputSum" type="float"/>
+		<element name="weightedInputSum" type="float"/>
+		<element name="getInputChannelCount" function="true" type="integer">
+			<arguments>
+				<argument name="input" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getInputStateChannel" function="true" type="float">
+			<arguments>
+				<argument name="input" type="integer"/>
+				<argument name="channel" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getWeightedInputStateChannel" function="true" type="float">
+			<arguments>
+				<argument name="input" type="integer"/>
+				<argument name="channel" type="integer"/>
+			</arguments>
+		</element>
+		<element name="state" type="float">
+			<description><![CDATA[When read, returns the current neuron state.
+When written, sets the 'internal' neuron state that will become current in the next step.
+Typically you should use this field, and not currState.]]></description>
+		</element>
 		<element name="channelCount" type="integer"/>
-		<element name="classObject" type="NeuroClass"/>
-		<element name="creature" type="Creature"/>
+		<element name="getStateChannel" function="true" type="float">
+			<arguments>
+				<argument name="channel" type="integer"/>
+			</arguments>
+		</element>
+		<element name="setStateChannel" function="true" type="void">
+			<arguments>
+				<argument name="channel" type="integer"/>
+				<argument name="value" type="float"/>
+			</arguments>
+		</element>
+		<element name="hold" type="integer" min="0" max="1">
+			<description><![CDATA["Holding" means keeping the neuron state as is, blocking the regular neuron operation. This is useful when your script needs to inject some control signals into the NN. Without "holding", live neurons would be constantly overwriting your changes, and the rest of the NN could see inconsistent states, depending on the connections. Setting hold=1 ensures the neuron state will be only set by you, and not by the neuron. The enforced signal value can be set using Neuro.currState before or after setting hold=1. Set hold=0 to resume normal operation.]]></description>
+		</element>
 		<element name="currState" type="float">
 			<description><![CDATA[When read, it behaves just like the 'state' field.
@@ -5074,5 +5206,17 @@
 This feature should only be used while controlling the neuron 'from outside' (like a neuro probe) and not in the neuron definition. See also: Neuro.hold]]></description>
 		</element>
-		<element name="def" type="NeuroDef"/>
+		<element name="setCurrStateChannel" function="true" type="void">
+			<description><![CDATA[Analogous to "currState".]]></description>
+			<arguments>
+				<argument name="channel" type="integer"/>
+				<argument name="value" type="float"/>
+			</arguments>
+		</element>
+		<element name="position_x" type="float"/>
+		<element name="position_y" type="float"/>
+		<element name="position_z" type="float"/>
+		<element name="creature" type="Creature"/>
+		<element name="part" type="MechPart"/>
+		<element name="joint" type="MechJoint"/>
 		<element name="fields" type="Fields">
 			<description><![CDATA[Neurons can have different fields depending on their class. Script neurons have their fields defined using the "prop:" syntax. If you develop a custom neuron script you should use the Fields object for accessing your own neuron fields. The Neuro.fields property is meant for accessing the neuron fields from the outside script.
@@ -5090,186 +5234,115 @@
  Simulator.print(iobj.getId(i)+" ("+iobj.getName(i)+")");]]></description>
 		</element>
-		<element name="getInputCount" type="integer"/>
-		<element name="hold" type="integer" min="0" max="1">
-			<description><![CDATA["Holding" means keeping the neuron state as is, blocking the regular neuron operation. This is useful when your script needs to inject some control signals into the NN. Without "holding", live neurons would be constantly overwriting your changes, and the rest of the NN could see inconsistent states, depending on the connections. Setting hold=1 ensures the neuron state will be only set by you, and not by the neuron. The enforced signal value can be set using Neuro.currState before or after setting hold=1. Set hold=0 to resume normal operation.]]></description>
-		</element>
-		<element name="inputSum" type="float"/>
-		<element name="joint" type="MechJoint"/>
-		<element name="part" type="MechPart"/>
-		<element name="position_x" type="float"/>
-		<element name="position_y" type="float"/>
-		<element name="position_z" type="float"/>
+		<element name="def" type="NeuroDef"/>
+		<element name="classObject" type="NeuroClass"/>
 		<element name="signals" type="NeuroSignals"/>
-		<element name="state" type="float">
-			<description><![CDATA[When read, returns the current neuron state.
-When written, sets the 'internal' neuron state that will become current in the next step.
-Typically you should use this field, and not currState.]]></description>
-		</element>
-		<element name="weightedInputSum" type="float"/>
-		<element name="getInputChannelCount" function="true" type="integer">
-			<arguments>
-				<argument name="input" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getInputState" function="true" type="float">
-			<arguments>
-				<argument name="input" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getInputStateChannel" function="true" type="float">
-			<arguments>
-				<argument name="input" type="integer"/>
-				<argument name="channel" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getInputSum" function="true" type="float">
-			<arguments>
-				<argument name="input" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getInputWeight" function="true" type="float">
-			<arguments>
-				<argument name="input" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getStateChannel" function="true" type="float">
-			<arguments>
-				<argument name="channel" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getWeightedInputState" function="true" type="float">
-			<arguments>
-				<argument name="input" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getWeightedInputStateChannel" function="true" type="float">
-			<arguments>
-				<argument name="input" type="integer"/>
-				<argument name="channel" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getWeightedInputSum" function="true" type="float">
-			<description><![CDATA[Uses any number of inputs starting with the specified input. getWeightedInputSum(0)=weightedInputSum]]></description>
-			<arguments>
-				<argument name="input" type="integer"/>
-			</arguments>
-		</element>
-		<element name="setCurrStateChannel" function="true" type="void">
-			<description><![CDATA[Analogous to "currState".]]></description>
-			<arguments>
-				<argument name="channel" type="integer"/>
-				<argument name="value" type="float"/>
-			</arguments>
-		</element>
-		<element name="setStateChannel" function="true" type="void">
-			<arguments>
-				<argument name="channel" type="integer"/>
-				<argument name="value" type="float"/>
-			</arguments>
-		</element>
 	</type>
 	<type name="this" context="Fitness formula">
 <description><![CDATA[A Genotype with the associated performance information. Adding genotypes to GenePool makes them accessible in Framsticks GUI and enables the use of GenePool selection methods.
 Before version 4.0rc4 the static Genotype object was used in functions operating on the "selected" genotype. This is now deprecated as all operations can be performed using the more convenient direct access (see GenePools).]]></description>
-		<element name="convtrace1" type="string"/>
+		<element name="name" type="string"/>
+		<element name="genotype" type="string"/>
+		<element name="info" type="string">
+			<description><![CDATA[Additional information or comments]]></description>
+		</element>
+		<element name="simi" type="float">
+			<description><![CDATA[Read about details:
+http://www.framsticks.com/node/795
+http://www.framsticks.com/node/890]]></description>
+		</element>
+		<element name="energ0" type="float"/>
+		<element name="strsiz" type="float"/>
+		<element name="strjoints" type="float"/>
+		<element name="nnsiz" type="float"/>
+		<element name="nncon" type="float"/>
+		<element name="numparts" type="float"/>
+		<element name="numjoints" type="float"/>
+		<element name="numneurons" type="float"/>
+		<element name="numconnections" type="float"/>
+		<element name="num" type="integer"/>
+		<element name="gnum" type="integer"/>
+		<element name="popsiz" type="integer"/>
+		<element name="instances" type="integer">
+			<description><![CDATA[Copies of this genotype]]></description>
+		</element>
+		<element name="lifespan" type="float">
+			<description><![CDATA[Average life span]]></description>
+		</element>
+		<element name="velocity" type="float">
+			<description><![CDATA[Average velocity]]></description>
+		</element>
 		<element name="distance" type="float"/>
-		<element name="energ0" type="float"/>
-		<element name="f0genotype" type="string">
-			<description><![CDATA[converted to f0 genotype]]></description>
-		</element>
+		<element name="vertvel" type="float"/>
+		<element name="vertpos" type="float"/>
 		<element name="fit" type="float"/>
 		<element name="fit2" type="float">
 			<description><![CDATA[Fitness shifted by (avg-n*stddev)]]></description>
 		</element>
+		<element name="f0genotype" type="string">
+			<description><![CDATA[converted to f0 genotype]]></description>
+		</element>
+		<element name="convtrace1" type="string"/>
+		<element name="user1" type="untyped"/>
+		<element name="user2" type="untyped"/>
+		<element name="user3" type="untyped"/>
+		<element name="mutate" function="true" type="void"><arguments/></element>
+		<element name="isValid" type="integer" min="0" max="1"/>
+		<element name="getNormalized" function="true" type="float">
+			<arguments>
+				<argument name="property name or index" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="geno" type="Geno">
+			<description><![CDATA[Geno object for this Genotype]]></description>
+		</element>
+		<element name="uid" type="string">
+			<description><![CDATA[Unique identifier]]></description>
+		</element>
+		<element name="getModel" function="true" type="Model"><arguments/></element>
+		<element name="splitInstances" function="true" type="void"><arguments/></element>
+		<element name="newFromString" function="true" type="Genotype">
+			<arguments>
+				<argument name="genotype" type="string"/>
+			</arguments>
+		</element>
+		<element name="newFromGeno" function="true" type="Genotype">
+			<arguments>
+				<argument name="geno" type="Geno"/>
+			</arguments>
+		</element>
+		<element name="newFromCreature" function="true" type="Genotype">
+			<arguments>
+				<argument name="creature" type="Creature"/>
+			</arguments>
+		</element>
+		<element name="addPerformanceFromCreature" function="true" type="void">
+			<description><![CDATA[Updates the Genotype's performance values merging them with the supplied Creture's performance. It assumes the Genotype.instances has a reasonable value and performs the proper weighting. Use your own function instead if these conditions are not met in your experiment.]]></description>
+			<arguments>
+				<argument type="Creature"/>
+			</arguments>
+		</element>
+		<element name="moveTo" function="true" type="void">
+			<description><![CDATA[the genotype is removed from its current pool when pool=null]]></description>
+			<arguments>
+				<argument name="pool" type="GenePool"/>
+			</arguments>
+		</element>
+		<element name="copyTo" function="true" type="Genotype">
+			<description><![CDATA[returns the duplicate genotype, created in the target pool]]></description>
+			<arguments>
+				<argument name="pool" type="GenePool"/>
+			</arguments>
+		</element>
+		<element name="delete" function="true" type="void"><arguments/></element>
+		<element name="deleteOne" function="true" type="void">
+			<description><![CDATA[]]></description>
+<arguments/></element>
 		<element name="genepool" type="untyped">
 			<description><![CDATA[GenePool object or null when not in pool]]></description>
 		</element>
-		<element name="geno" type="Geno">
-			<description><![CDATA[Geno object for this Genotype]]></description>
-		</element>
-		<element name="genotype" type="string"/>
-		<element name="gnum" type="integer"/>
 		<element name="index" type="integer">
 			<description><![CDATA[-1 when not in pool.
 Note that the index changes depending on the current genotype position in the pool. Use Genotype.uid if you need a permanent identifier that persists through the entire object lifetime.]]></description>
 		</element>
-		<element name="info" type="string">
-			<description><![CDATA[Additional information or comments]]></description>
-		</element>
-		<element name="instances" type="integer">
-			<description><![CDATA[Copies of this genotype]]></description>
-		</element>
-		<element name="isValid" type="integer" min="0" max="1"/>
-		<element name="lifespan" type="float">
-			<description><![CDATA[Average life span]]></description>
-		</element>
-		<element name="name" type="string"/>
-		<element name="nncon" type="float"/>
-		<element name="nnsiz" type="float"/>
-		<element name="num" type="integer"/>
-		<element name="numconnections" type="float"/>
-		<element name="numjoints" type="float"/>
-		<element name="numneurons" type="float"/>
-		<element name="numparts" type="float"/>
-		<element name="popsiz" type="integer"/>
-		<element name="simi" type="float"/>
-		<element name="strjoints" type="float"/>
-		<element name="strsiz" type="float"/>
-		<element name="uid" type="string">
-			<description><![CDATA[Unique identifier]]></description>
-		</element>
-		<element name="user1" type="untyped"/>
-		<element name="user2" type="untyped"/>
-		<element name="user3" type="untyped"/>
-		<element name="velocity" type="float">
-			<description><![CDATA[Average velocity]]></description>
-		</element>
-		<element name="vertpos" type="float"/>
-		<element name="vertvel" type="float"/>
-		<element name="addPerformanceFromCreature" function="true" type="void">
-			<description><![CDATA[Updates the Genotype's performance values merging them with the supplied Creture's performance. It assumes the Genotype.instances has a reasonable value and performs the proper weighting. Use your own function instead if these conditions are not met in your experiment.]]></description>
-			<arguments>
-				<argument type="Creature"/>
-			</arguments>
-		</element>
-		<element name="copyTo" function="true" type="Genotype">
-			<description><![CDATA[returns the duplicate genotype, created in the target pool]]></description>
-			<arguments>
-				<argument name="pool" type="GenePool"/>
-			</arguments>
-		</element>
-		<element name="delete" function="true" type="void"><arguments/></element>
-		<element name="deleteOne" function="true" type="void">
-			<description><![CDATA[]]></description>
-<arguments/></element>
-		<element name="getModel" function="true" type="Model"><arguments/></element>
-		<element name="getNormalized" function="true" type="float">
-			<arguments>
-				<argument name="property name or index" type="untyped"/>
-			</arguments>
-		</element>
-		<element name="moveTo" function="true" type="void">
-			<description><![CDATA[the genotype is removed from its current pool when pool=null]]></description>
-			<arguments>
-				<argument name="pool" type="GenePool"/>
-			</arguments>
-		</element>
-		<element name="mutate" function="true" type="void"><arguments/></element>
-		<element name="newFromCreature" function="true" type="Genotype">
-			<arguments>
-				<argument name="creature" type="Creature"/>
-			</arguments>
-		</element>
-		<element name="newFromGeno" function="true" type="Genotype">
-			<arguments>
-				<argument name="geno" type="Geno"/>
-			</arguments>
-		</element>
-		<element name="newFromString" function="true" type="Genotype">
-			<arguments>
-				<argument name="genotype" type="string"/>
-			</arguments>
-		</element>
-		<element name="splitInstances" function="true" type="void"><arguments/></element>
 	</type>
 	<type name="Creature" context="Visual style definition">
@@ -5278,4 +5351,28 @@
 function onDied(cr) {Simulator.print("Creature "+cr.name+" has died");}
 See also: Population.]]></description>
+		<element name="name" type="string"/>
+		<element name="genotype" type="string"/>
+		<element name="info" type="string">
+			<description><![CDATA[Additional info or comments]]></description>
+		</element>
+		<element name="group" type="untyped" deprecated="true">
+			<description><![CDATA[Deprecated. Use population instead.]]></description>
+		</element>
+		<element name="population" type="untyped"/>
+		<element name="index" type="integer">
+			<description><![CDATA[Note that the index changes depending on the current creature position in the population. Use Creature.uid if you need a permanent identifier that persists through the entire object lifetime.]]></description>
+		</element>
+		<element name="gnum" type="integer"/>
+		<element name="buildproblems" type="integer"/>
+		<element name="energ0" type="float"/>
+		<element name="idleen" type="float"/>
+		<element name="energy" type="float"/>
+		<element name="energy_p" type="float"/>
+		<element name="energy_m" type="float"/>
+		<element name="energy_b" type="float"/>
+		<element name="perf" type="integer" min="0" max="2">
+			<description><![CDATA[Initial value of this property is taken from Population.enableperf]]></description>
+		</element>
+		<element name="nnenabled" type="integer" min="0" max="1"/>
 		<element name="bodysim" type="integer" min="0" max="1" default="1">
 			<description><![CDATA[(Physical) body simulation can be disabled for individual objects which makes them immovable. Disabled objects can still participate in collisions depending on their collisions masks.
@@ -5283,8 +5380,37 @@
 Bugs: the standard collision handler does not work for disabled objects when ODE simulation is used. It means that these objects won't physically interact with other objects. The custom (scripting) handlers work as expected.]]></description>
 		</element>
-		<element name="buildproblems" type="integer"/>
+		<element name="selfcol" type="integer" min="0" max="1">
+			<description><![CDATA[Enable/disable detection of self-collisions (within a creature body). They can only occur when using the ODE simulation engine. If enabled, the creature will have its sticks collide during lifespan.]]></description>
+		</element>
+		<element name="selfcolstate" function="true" type="integer">
+			<description><![CDATA[Current self-collision state. In old versions this was a field, not a function.]]></description>
+<arguments/></element>
+		<element name="lifespan" type="integer"/>
+		<element name="distance" type="float"/>
 		<element name="c_velocity" type="float"/>
+		<element name="c_vertvelocity" type="float"/>
 		<element name="c_vertpos" type="float"/>
-		<element name="c_vertvelocity" type="float"/>
+		<element name="velocity" type="float"/>
+		<element name="vertpos" type="float"/>
+		<element name="vertvel" type="float"/>
+		<element name="pos_x" type="float">
+			<description><![CDATA[(pos_x,pos_y,pos_z) is the point of minimal coordinates ("bottom left corner") of the creature, including imaginary Part sizes (Part.s, usually 1.0). See also: Creature.moveAbs]]></description>
+		</element>
+		<element name="pos_y" type="float">
+			<description><![CDATA[See Creature.pos_x]]></description>
+		</element>
+		<element name="pos_z" type="float">
+			<description><![CDATA[See Creature.pos_x]]></description>
+		</element>
+		<element name="size_x" type="float">
+			<description><![CDATA[(size_x,size_y,size_z) are dimensions of the axis-aligned bounding box of the creature, including the imaginary part sizes (Part.s, usually 1.0). A creature consisting of a single default Part has the size of (2.0,2.0,2.0) - twice the Part.s value (like a sphere diameter is twice its radius).
+See also: Creature.moveAbs]]></description>
+		</element>
+		<element name="size_y" type="float">
+			<description><![CDATA[See Creature.size_x]]></description>
+		</element>
+		<element name="size_z" type="float">
+			<description><![CDATA[See Creature.size_x]]></description>
+		</element>
 		<element name="center_x" type="float">
 			<description><![CDATA[Center of gravity]]></description>
@@ -5296,31 +5422,79 @@
 			<description><![CDATA[Center of gravity]]></description>
 		</element>
-		<element name="distance" type="float"/>
+		<element name="numparts" type="integer"/>
+		<element name="numjoints" type="integer"/>
+		<element name="numneurons" type="integer"/>
+		<element name="user1" type="untyped"/>
+		<element name="user2" type="untyped"/>
+		<element name="user3" type="untyped"/>
+		<element name="move" function="true" type="void">
+			<description><![CDATA[Shift the creature by a given vector.]]></description>
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
+		<element name="moveAbs" function="true" type="void">
+			<description><![CDATA[Moves the creature so that its origin (pos_x,pos_y,pos_z) is placed at the given location. The origin is the point of minimal coordinates ("bottom left corner"), including imaginary part sizes (Part.s, usually 1.0).
+Assuming a simple single-stick creature "X" having parts at (0,0,0) and (1,0,0),
+
+origin (pos_x,pos_y,pos_z) = (-1,-1,-1)
+size (size_x,size_y,size_z) = (3,2,2)
+
+The following example places the bottom of a creature at a given location (x,y,z):
+Creature.moveAbs(x-(Creature.size_x/2),y-(Creature.size_y/2),z-1.0)
+(assuming that the part size is 1.0)]]></description>
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
+		<element name="moveLocal" function="true" type="void">
+			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
+		<element name="localToWorld" function="true" type="XYZ">
+			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
+		<element name="worldToLocal" function="true" type="XYZ">
+			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
+		<element name="orient" type="Orient">
+			<description><![CDATA[By convention, the orientation of the creature is equal to the orientation of its first Part]]></description>
+		</element>
+		<element name="rotate" function="true" type="void">
+			<description><![CDATA[Rotate the creature around X, Y and Z axes. Should only be used immediately after creating a new creature (before the first simulation step is performed for this creature), otherwise further simulation can be disturbed.]]></description>
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
+		<element name="rotateLocal" function="true" type="void">
+			<description><![CDATA[Rotate the creature around (local) X, Y and Z axes. Should only be used immediately after creating a new creature (before the first simulation step is performed for this creature), otherwise further simulation can be disturbed.]]></description>
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
 		<element name="drive" type="XYZ">
 			<description><![CDATA[Measured in global coordinates]]></description>
-		</element>
-		<element name="energ0" type="float"/>
-		<element name="energy" type="float"/>
-		<element name="energy_b" type="float"/>
-		<element name="energy_m" type="float"/>
-		<element name="energy_p" type="float"/>
-		<element name="geno" type="Geno">
-			<description><![CDATA[Source genotype for this creature]]></description>
-		</element>
-		<element name="genotype" type="string"/>
-		<element name="gnum" type="integer"/>
-		<element name="group" type="untyped" deprecated="true">
-			<description><![CDATA[Deprecated. Use population instead.]]></description>
-		</element>
-		<element name="idleen" type="float"/>
-		<element name="index" type="integer">
-			<description><![CDATA[Note that the index changes depending on the current creature position in the population. Use Creature.uid if you need a permanent identifier that persists through the entire object lifetime.]]></description>
-		</element>
-		<element name="info" type="string">
-			<description><![CDATA[Additional info or comments]]></description>
-		</element>
-		<element name="lifespan" type="integer"/>
-		<element name="liveModel" type="Model">
-			<description><![CDATA[A Model object that is a copy of the current (temporary) geometry of this creature]]></description>
 		</element>
 		<element name="localDrive" type="XYZ">
@@ -5328,51 +5502,48 @@
 See also: Creature.orient]]></description>
 		</element>
+		<element name="getPart" function="true" type="Part">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getJoint" function="true" type="Joint">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getNeuroDef" function="true" type="NeuroDef">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getMechPart" function="true" type="MechPart">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getMechJoint" function="true" type="MechJoint">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getNeuro" function="true" type="Neuro">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="selfmask" type="integer" min="0" max="2147483647" default="0"/>
+		<element name="othermask" type="integer" min="0" max="2147483647" default="0"/>
+		<element name="currentGeometryAsF0" function="true" type="string"><arguments/></element>
+		<element name="geno" type="Geno">
+			<description><![CDATA[Source genotype for this creature]]></description>
+		</element>
 		<element name="model" type="Model">
 			<description><![CDATA[Source Model for this creature]]></description>
 		</element>
-		<element name="name" type="string"/>
-		<element name="nnenabled" type="integer" min="0" max="1"/>
-		<element name="numjoints" type="integer"/>
-		<element name="numneurons" type="integer"/>
-		<element name="numparts" type="integer"/>
-		<element name="orient" type="Orient">
-			<description><![CDATA[By convention, the orientation of the creature is equal to the orientation of its first Part]]></description>
-		</element>
-		<element name="othermask" type="integer" min="0" max="2147483647" default="0"/>
-		<element name="perf" type="integer" min="0" max="2">
-			<description><![CDATA[Initial value of this property is taken from Population.enableperf]]></description>
-		</element>
-		<element name="population" type="untyped"/>
-		<element name="pos_x" type="float">
-			<description><![CDATA[(pos_x,pos_y,pos_z) is the point of minimal coordinates ("bottom left corner") of the creature, including imaginary Part sizes (Part.s, usually 1.0). See also: Creature.moveAbs]]></description>
-		</element>
-		<element name="pos_y" type="float">
-			<description><![CDATA[See Creature.pos_x]]></description>
-		</element>
-		<element name="pos_z" type="float">
-			<description><![CDATA[See Creature.pos_x]]></description>
-		</element>
-		<element name="selfcol" type="integer" min="0" max="1">
-			<description><![CDATA[Enable/disable detection of self-collisions (within a creature body). They can only occur when using the ODE simulation engine. If enabled, the creature will have its sticks collide during lifespan.]]></description>
-		</element>
-		<element name="selfmask" type="integer" min="0" max="2147483647" default="0"/>
+		<element name="liveModel" type="Model">
+			<description><![CDATA[A Model object that is a copy of the current (temporary) geometry of this creature]]></description>
+		</element>
+		<element name="uid" type="string"/>
 		<element name="signals" type="CreatureSignals"/>
-		<element name="size_x" type="float">
-			<description><![CDATA[(size_x,size_y,size_z) are dimensions of the axis-aligned bounding box of the creature, including the imaginary part sizes (Part.s, usually 1.0). A creature consisting of a single default Part has the size of (2.0,2.0,2.0) - twice the Part.s value (like a sphere diameter is twice its radius).
-See also: Creature.moveAbs]]></description>
-		</element>
-		<element name="size_y" type="float">
-			<description><![CDATA[See Creature.size_x]]></description>
-		</element>
-		<element name="size_z" type="float">
-			<description><![CDATA[See Creature.size_x]]></description>
-		</element>
-		<element name="uid" type="string"/>
-		<element name="user1" type="untyped"/>
-		<element name="user2" type="untyped"/>
-		<element name="user3" type="untyped"/>
-		<element name="velocity" type="float"/>
-		<element name="vertpos" type="float"/>
-		<element name="vertvel" type="float"/>
 		<element name="boundingBoxCollisions" function="true" type="integer">
 			<description><![CDATA[Checks approximate collisions for the selected creature.
@@ -5383,102 +5554,4 @@
 			</arguments>
 		</element>
-		<element name="currentGeometryAsF0" function="true" type="string"><arguments/></element>
-		<element name="getJoint" function="true" type="Joint">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getMechJoint" function="true" type="MechJoint">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getMechPart" function="true" type="MechPart">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getNeuro" function="true" type="Neuro">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getNeuroDef" function="true" type="NeuroDef">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getPart" function="true" type="Part">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="localToWorld" function="true" type="XYZ">
-			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
-			<arguments>
-				<argument name="x" type="float"/>
-				<argument name="y" type="float"/>
-				<argument name="z" type="float"/>
-			</arguments>
-		</element>
-		<element name="move" function="true" type="void">
-			<description><![CDATA[Shift the creature by a given vector.]]></description>
-			<arguments>
-				<argument name="x" type="float"/>
-				<argument name="y" type="float"/>
-				<argument name="z" type="float"/>
-			</arguments>
-		</element>
-		<element name="moveAbs" function="true" type="void">
-			<description><![CDATA[Moves the creature so that its origin (pos_x,pos_y,pos_z) is placed at the given location. The origin is the point of minimal coordinates ("bottom left corner"), including imaginary part sizes (Part.s, usually 1.0).
-Assuming a simple single-stick creature "X" having parts at (0,0,0) and (1,0,0),
-
-origin (pos_x,pos_y,pos_z) = (-1,-1,-1)
-size (size_x,size_y,size_z) = (3,2,2)
-
-The following example places the bottom of a creature at a given location (x,y,z):
-Creature.moveAbs(x-(Creature.size_x/2),y-(Creature.size_y/2),z-1.0)
-(assuming that the part size is 1.0)]]></description>
-			<arguments>
-				<argument name="x" type="float"/>
-				<argument name="y" type="float"/>
-				<argument name="z" type="float"/>
-			</arguments>
-		</element>
-		<element name="moveLocal" function="true" type="void">
-			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
-			<arguments>
-				<argument name="x" type="float"/>
-				<argument name="y" type="float"/>
-				<argument name="z" type="float"/>
-			</arguments>
-		</element>
-		<element name="rotate" function="true" type="void">
-			<description><![CDATA[Rotate the creature around X, Y and Z axes. Should only be used immediately after creating a new creature (before the first simulation step is performed for this creature), otherwise further simulation can be disturbed.]]></description>
-			<arguments>
-				<argument name="x" type="float"/>
-				<argument name="y" type="float"/>
-				<argument name="z" type="float"/>
-			</arguments>
-		</element>
-		<element name="rotateLocal" function="true" type="void">
-			<description><![CDATA[Rotate the creature around (local) X, Y and Z axes. Should only be used immediately after creating a new creature (before the first simulation step is performed for this creature), otherwise further simulation can be disturbed.]]></description>
-			<arguments>
-				<argument name="x" type="float"/>
-				<argument name="y" type="float"/>
-				<argument name="z" type="float"/>
-			</arguments>
-		</element>
-		<element name="selfcolstate" function="true" type="integer">
-			<description><![CDATA[Current self-collision state. In old versions this was a field, not a function.]]></description>
-<arguments/></element>
-		<element name="worldToLocal" function="true" type="XYZ">
-			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
-			<arguments>
-				<argument name="x" type="float"/>
-				<argument name="y" type="float"/>
-				<argument name="z" type="float"/>
-			</arguments>
-		</element>
 	</type>
 	<type name="Element" context="Visual style definition">
@@ -5489,17 +5562,17 @@
 		<element name="node" type="SSGNode"/>
 		<element name="shadow" type="float"/>
-		<element name="useCreature" function="true"/>
+		<element name="useMechPart" function="true"/>
+		<element name="useMechJoint" function="true"/>
+		<element name="useMechJointPart1" function="true"/>
+		<element name="useMechJointPart2" function="true"/>
+		<element name="usePart" function="true"/>
 		<element name="useJoint" function="true"/>
 		<element name="useJointPart1" function="true"/>
 		<element name="useJointPart2" function="true"/>
-		<element name="useMechJoint" function="true"/>
-		<element name="useMechJointPart1" function="true"/>
-		<element name="useMechJointPart2" function="true"/>
-		<element name="useMechPart" function="true"/>
+		<element name="useNeuro" function="true"/>
+		<element name="useNeuroPart" function="true"/>
+		<element name="useNeuroJoint" function="true"/>
 		<element name="useModel" function="true"/>
-		<element name="useNeuro" function="true"/>
-		<element name="useNeuroJoint" function="true"/>
-		<element name="useNeuroPart" function="true"/>
-		<element name="usePart" function="true"/>
+		<element name="useCreature" function="true"/>
 	</type>
 	<type name="GeomBuilder" context="Visual style definition">
@@ -5507,4 +5580,6 @@
 		<element name="code" type="string"/>
 		<element name="currentNode" type="SSGNode"/>
+		<element name="rootNode" type="SSGNode"/>
+		<element name="updatingNode" type="SSGNode"/>
 		<element name="defaultStyle" type="string"/>
 		<element name="matrix00" type="float"/>
@@ -5524,6 +5599,10 @@
 		<element name="matrix32" type="float"/>
 		<element name="matrix33" type="float"/>
-		<element name="rootNode" type="SSGNode"/>
-		<element name="updatingNode" type="SSGNode"/>
+		<element name="addTransform" function="true">
+			<description><![CDATA[create the transform node as a child of the current node and make it the new current node.]]></description>
+		</element>
+		<element name="addBranch" function="true">
+			<description><![CDATA[create the branch node as a child of the current node and make it the new current node]]></description>
+		</element>
 		<element name="add" function="true" type="void">
 			<description><![CDATA[add a child node to the current node]]></description>
@@ -5532,22 +5611,5 @@
 			</arguments>
 		</element>
-		<element name="addBranch" function="true">
-			<description><![CDATA[create the branch node as a child of the current node and make it the new current node]]></description>
-		</element>
-		<element name="addTransform" function="true">
-			<description><![CDATA[create the transform node as a child of the current node and make it the new current node.]]></description>
-		</element>
-		<element name="dump" function="true" type="void">
-			<arguments>
-				<argument name="node" type="SSGNode"/>
-				<argument name="level" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getBranch" function="true" type="integer">
-			<arguments>
-				<argument name="branch node" type="SSGNode"/>
-				<argument name="branch index" type="integer"/>
-			</arguments>
-		</element>
+		<element name="matrixReset" function="true"/>
 		<element name="matrixMove" function="true" type="void">
 			<arguments>
@@ -5557,11 +5619,5 @@
 			</arguments>
 		</element>
-		<element name="matrixMove1" function="true" type="void">
-			<description><![CDATA[MechPart.pos can be used here]]></description>
-			<arguments>
-				<argument name="xyz" type="integer"/>
-			</arguments>
-		</element>
-		<element name="matrixOrient" function="true" type="void">
+		<element name="matrixScale" function="true" type="void">
 			<arguments>
 				<argument name="x" type="float"/>
@@ -5570,12 +5626,5 @@
 			</arguments>
 		</element>
-		<element name="matrixOrient1" function="true" type="void">
-			<description><![CDATA[MechPart.orient can be used here]]></description>
-			<arguments>
-				<argument name="xyz" type="integer"/>
-			</arguments>
-		</element>
-		<element name="matrixReset" function="true"/>
-		<element name="matrixRotate" function="true" type="void">
+		<element name="matrixOrient" function="true" type="void">
 			<arguments>
 				<argument name="x" type="float"/>
@@ -5584,10 +5633,5 @@
 			</arguments>
 		</element>
-		<element name="matrixRotate1" function="true" type="void">
-			<arguments>
-				<argument name="xyz" type="integer"/>
-			</arguments>
-		</element>
-		<element name="matrixScale" function="true" type="void">
+		<element name="matrixRotate" function="true" type="void">
 			<arguments>
 				<argument name="x" type="float"/>
@@ -5596,4 +5640,21 @@
 			</arguments>
 		</element>
+		<element name="matrixRotate1" function="true" type="void">
+			<arguments>
+				<argument name="xyz" type="integer"/>
+			</arguments>
+		</element>
+		<element name="matrixMove1" function="true" type="void">
+			<description><![CDATA[MechPart.pos can be used here]]></description>
+			<arguments>
+				<argument name="xyz" type="integer"/>
+			</arguments>
+		</element>
+		<element name="matrixOrient1" function="true" type="void">
+			<description><![CDATA[MechPart.orient can be used here]]></description>
+			<arguments>
+				<argument name="xyz" type="integer"/>
+			</arguments>
+		</element>
 		<element name="setMatrix" function="true" type="void">
 			<description><![CDATA[copy current matrix into specified node]]></description>
@@ -5602,46 +5663,58 @@
 			</arguments>
 		</element>
+		<element name="getBranch" function="true" type="integer">
+			<arguments>
+				<argument name="branch node" type="SSGNode"/>
+				<argument name="branch index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="dump" function="true" type="void">
+			<arguments>
+				<argument name="node" type="SSGNode"/>
+				<argument name="level" type="integer"/>
+			</arguments>
+		</element>
 	</type>
 	<type name="GL" context="Visual style definition">
 <description><![CDATA[OpenGL constants used in GeomBuilder and Material functions.]]></description>
-		<element name="ALPHA_TEST" type="integer"/>
-		<element name="AMBIENT" type="integer"/>
-		<element name="AMBIENT_AND_DIFFUSE" type="integer"/>
-		<element name="BLEND" type="integer"/>
-		<element name="COLOR_MATERIAL" type="integer"/>
-		<element name="CULL_FACE" type="integer"/>
-		<element name="DIFFUSE" type="integer"/>
-		<element name="EMISSION" type="integer"/>
-		<element name="LIGHTING" type="integer"/>
+		<element name="POINTS" type="integer"/>
+		<element name="LINES" type="integer"/>
 		<element name="LINE_LOOP" type="integer"/>
 		<element name="LINE_STRIP" type="integer"/>
-		<element name="LINES" type="integer"/>
-		<element name="POINTS" type="integer"/>
+		<element name="TRIANGLES" type="integer"/>
+		<element name="TRIANGLE_STRIP" type="integer"/>
+		<element name="TRIANGLE_FAN" type="integer"/>
+		<element name="QUADS" type="integer"/>
 		<element name="QUAD_STRIP" type="integer"/>
-		<element name="QUADS" type="integer"/>
+		<element name="TEXTURE_2D" type="integer"/>
+		<element name="CULL_FACE" type="integer"/>
+		<element name="COLOR_MATERIAL" type="integer"/>
+		<element name="BLEND" type="integer"/>
+		<element name="ALPHA_TEST" type="integer"/>
+		<element name="LIGHTING" type="integer"/>
+		<element name="AMBIENT" type="integer"/>
+		<element name="DIFFUSE" type="integer"/>
+		<element name="AMBIENT_AND_DIFFUSE" type="integer"/>
 		<element name="SPECULAR" type="integer"/>
-		<element name="TEXTURE_2D" type="integer"/>
-		<element name="TRIANGLE_FAN" type="integer"/>
-		<element name="TRIANGLE_STRIP" type="integer"/>
-		<element name="TRIANGLES" type="integer"/>
+		<element name="EMISSION" type="integer"/>
 	</type>
 	<type name="j" context="Visual style definition">
+		<element name="p1" type="integer" min="-1" max="999999" default="-1"/>
+		<element name="p2" type="integer" min="-1" max="999999" default="-1"/>
+		<element name="rx" type="float"/>
+		<element name="ry" type="float"/>
+		<element name="rz" type="float"/>
 		<element name="dx" type="float" min="-2" max="2" default="0.0"/>
 		<element name="dy" type="float" min="-2" max="2" default="0.0"/>
 		<element name="dz" type="float" min="-2" max="2" default="0.0"/>
+		<element name="sh" type="integer" min="0" max="1" default="0"/>
+		<element name="stif" type="float" min="0" max="1" default="1.0"/>
+		<element name="rotstif" type="float" min="0" max="1" default="1.0"/>
+		<element name="stam" type="float" min="0" max="1" default="0.25"/>
 		<element name="i" type="string"/>
-		<element name="p1" type="integer" min="-1" max="999999" default="-1"/>
-		<element name="p2" type="integer" min="-1" max="999999" default="-1"/>
-		<element name="rotstif" type="float" min="0" max="1" default="1.0"/>
-		<element name="rx" type="float"/>
-		<element name="ry" type="float"/>
-		<element name="rz" type="float"/>
-		<element name="sh" type="integer" min="0" max="1" default="0"/>
-		<element name="stam" type="float" min="0" max="1" default="0.25"/>
-		<element name="stif" type="float" min="0" max="1" default="1.0"/>
+		<element name="Vstyle" type="string"/>
+		<element name="vr" type="float" min="0" max="1" default="0.5"/>
+		<element name="vg" type="float" min="0" max="1" default="0.5"/>
 		<element name="vb" type="float" min="0" max="1" default="0.5"/>
-		<element name="vg" type="float" min="0" max="1" default="0.5"/>
-		<element name="vr" type="float" min="0" max="1" default="0.5"/>
-		<element name="Vstyle" type="string"/>
 	</type>
 	<type name="Loader" context="Visual style definition">
@@ -5657,100 +5730,100 @@
 	<type name="Material" context="Visual style definition">
 <description><![CDATA[Manipulate 3d objects surface properties (Material objects can be associated with geometry nodes).]]></description>
+		<element name="new" function="true"/>
+		<element name="diffuse" type="integer"/>
 		<element name="ambient" type="integer"/>
+		<element name="specular" type="integer"/>
+		<element name="emission" type="integer"/>
+		<element name="shininess" type="float"/>
 		<element name="colormat" type="integer"/>
-		<element name="diffuse" type="integer"/>
-		<element name="emission" type="integer"/>
+		<element name="translucent" type="integer"/>
+		<element name="setSmooth" function="true"/>
+		<element name="setFlat" function="true"/>
+		<element name="enable" function="true"/>
+		<element name="disable" function="true"/>
+		<element name="care" function="true"/>
+		<element name="dontcare" function="true"/>
+		<element name="texture" type="string"/>
 		<element name="object" type="Object"/>
-		<element name="shininess" type="float"/>
-		<element name="specular" type="integer"/>
-		<element name="texture" type="string"/>
-		<element name="translucent" type="integer"/>
-		<element name="care" function="true"/>
-		<element name="disable" function="true"/>
-		<element name="dontcare" function="true"/>
-		<element name="enable" function="true"/>
-		<element name="new" function="true"/>
-		<element name="setFlat" function="true"/>
-		<element name="setSmooth" function="true"/>
 	</type>
 	<type name="MechJoint" context="Visual style definition">
 <description><![CDATA[Current joint properties during the simulation]]></description>
-		<element name="absorient" type="Orient"/>
-		<element name="calcorient" type="Orient"/>
+		<element name="rx" type="float"/>
+		<element name="ry" type="float"/>
+		<element name="rz" type="float"/>
 		<element name="dx" type="float"/>
 		<element name="dy" type="float"/>
 		<element name="dz" type="float"/>
+		<element name="orient" type="Orient"/>
+		<element name="absorient" type="Orient"/>
+		<element name="calcorient" type="Orient"/>
 		<element name="length" type="float"/>
+		<element name="stif" type="float"/>
+		<element name="rotstif" type="float"/>
+		<element name="stress" type="float"/>
+		<element name="rotstress" type="float"/>
+	</type>
+	<type name="MechPart" context="Visual style definition">
+<description><![CDATA[Current part properties during the simulation]]></description>
+		<element name="x" type="float"/>
+		<element name="y" type="float"/>
+		<element name="z" type="float"/>
+		<element name="pos" type="XYZ"/>
 		<element name="orient" type="Orient"/>
-		<element name="rotstif" type="float"/>
-		<element name="rotstress" type="float"/>
+		<element name="m" type="float"/>
+		<element name="s" type="float"/>
+		<element name="vol" type="float"/>
+		<element name="fr" type="float"/>
+	</type>
+	<type name="n" context="Visual style definition">
+		<element name="p" type="integer" min="-1" max="999999" default="-1"/>
+		<element name="j" type="integer" min="-1" max="999999" default="-1"/>
+		<element name="d" type="string"/>
+		<element name="i" type="string"/>
+		<element name="Vstyle" type="string"/>
+		<element name="getInputCount" type="integer"/>
+		<element name="getInputNeuroDef" function="true" type="NeuroDef">
+			<arguments>
+				<argument type="integer"/>
+			</arguments>
+		</element>
+		<element name="getInputNeuroIndex" function="true" type="integer">
+			<arguments>
+				<argument type="integer"/>
+			</arguments>
+		</element>
+		<element name="getInputWeight" function="true" type="float">
+			<arguments>
+				<argument type="integer"/>
+			</arguments>
+		</element>
+		<element name="classObject" type="NeuroClass"/>
+		<element name="class" type="string"/>
+		<element name="state" type="float"/>
+	</type>
+	<type name="p" context="Visual style definition">
+		<element name="x" type="float"/>
+		<element name="y" type="float"/>
+		<element name="z" type="float"/>
+		<element name="m" type="float" min="0.1" max="999" default="1.0"/>
+		<element name="sh" type="integer" min="0" max="3" default="0"/>
+		<element name="s" type="float" min="0.1" max="10" default="1.0"/>
+		<element name="sx" type="float" min="0.001" max="1000" default="1.0"/>
+		<element name="sy" type="float" min="0.001" max="1000" default="1.0"/>
+		<element name="sz" type="float" min="0.001" max="1000" default="1.0"/>
+		<element name="h" type="float" min="0" max="1" default="0.0"/>
+		<element name="dn" type="float" min="0.2" max="5" default="1.0"/>
+		<element name="fr" type="float" min="0" max="4" default="0.4"/>
+		<element name="ing" type="float" min="0" max="1" default="0.25"/>
+		<element name="as" type="float" min="0" max="1" default="0.25"/>
 		<element name="rx" type="float"/>
 		<element name="ry" type="float"/>
 		<element name="rz" type="float"/>
-		<element name="stif" type="float"/>
-		<element name="stress" type="float"/>
-	</type>
-	<type name="MechPart" context="Visual style definition">
-<description><![CDATA[Current part properties during the simulation]]></description>
-		<element name="fr" type="float"/>
-		<element name="m" type="float"/>
-		<element name="orient" type="Orient"/>
-		<element name="pos" type="XYZ"/>
-		<element name="s" type="float"/>
-		<element name="vol" type="float"/>
-		<element name="x" type="float"/>
-		<element name="y" type="float"/>
-		<element name="z" type="float"/>
-	</type>
-	<type name="n" context="Visual style definition">
-		<element name="class" type="string"/>
-		<element name="classObject" type="NeuroClass"/>
-		<element name="d" type="string"/>
-		<element name="getInputCount" type="integer"/>
 		<element name="i" type="string"/>
-		<element name="j" type="integer" min="-1" max="999999" default="-1"/>
-		<element name="p" type="integer" min="-1" max="999999" default="-1"/>
-		<element name="state" type="float"/>
 		<element name="Vstyle" type="string"/>
-		<element name="getInputNeuroDef" function="true" type="NeuroDef">
-			<arguments>
-				<argument type="integer"/>
-			</arguments>
-		</element>
-		<element name="getInputNeuroIndex" function="true" type="integer">
-			<arguments>
-				<argument type="integer"/>
-			</arguments>
-		</element>
-		<element name="getInputWeight" function="true" type="float">
-			<arguments>
-				<argument type="integer"/>
-			</arguments>
-		</element>
-	</type>
-	<type name="p" context="Visual style definition">
-		<element name="as" type="float" min="0" max="1" default="0.25"/>
-		<element name="dn" type="float" min="0.2" max="5" default="1.0"/>
-		<element name="fr" type="float" min="0" max="4" default="0.4"/>
-		<element name="h" type="float" min="0" max="1" default="0.0"/>
-		<element name="i" type="string"/>
-		<element name="ing" type="float" min="0" max="1" default="0.25"/>
-		<element name="m" type="float" min="0.1" max="999" default="1.0"/>
-		<element name="rx" type="float"/>
-		<element name="ry" type="float"/>
-		<element name="rz" type="float"/>
-		<element name="s" type="float" min="0.1" max="10" default="1.0"/>
-		<element name="sh" type="integer" min="0" max="3" default="0"/>
-		<element name="sx" type="float" min="0.001" max="1000" default="1.0"/>
-		<element name="sy" type="float" min="0.001" max="1000" default="1.0"/>
-		<element name="sz" type="float" min="0.001" max="1000" default="1.0"/>
+		<element name="vs" type="float" min="0.05" max="0.7" default="0.2"/>
+		<element name="vr" type="float" min="0" max="1" default="0.5"/>
+		<element name="vg" type="float" min="0" max="1" default="0.5"/>
 		<element name="vb" type="float" min="0" max="1" default="0.5"/>
-		<element name="vg" type="float" min="0" max="1" default="0.5"/>
-		<element name="vr" type="float" min="0" max="1" default="0.5"/>
-		<element name="vs" type="float" min="0.05" max="0.7" default="0.2"/>
-		<element name="Vstyle" type="string"/>
-		<element name="x" type="float"/>
-		<element name="y" type="float"/>
-		<element name="z" type="float"/>
 	</type>
 	<type name="Scene" context="Visual style definition">
@@ -5760,5 +5833,33 @@
 	</type>
 	<type name="VertexBuilder" context="Visual style definition">
-		<element name="material" type="Object"/>
+		<element name="new" function="true" type="void">
+			<arguments>
+				<argument name="type" type="integer"/>
+			</arguments>
+		</element>
+		<element name="newPolygon" function="true"/>
+		<element name="newTriangleFan" function="true"/>
+		<element name="newTriangles" function="true"/>
+		<element name="newTriangleStrip" function="true"/>
+		<element name="newQuads" function="true"/>
+		<element name="newQuadStrip" function="true"/>
+		<element name="newPoints" function="true"/>
+		<element name="newLines" function="true"/>
+		<element name="newLineLoop" function="true"/>
+		<element name="newLineStrip" function="true"/>
+		<element name="addVertex" function="true"/>
+		<element name="addNormal" function="true"/>
+		<element name="addNormal_1" function="true">
+			<description><![CDATA[use addNormal instead of this function]]></description>
+		</element>
+		<element name="addCalculatedNormal" function="true">
+			<description><![CDATA[calculate the normal vector from 3 coordinates. integer arguments are the vertices' indices. 0,1,2... = first, second, third vertex, -1,-2,-3,... = last, last-1, last-2 vertex]]></description>
+		</element>
+		<element name="addColor" function="true"/>
+		<element name="addTexCoord" function="true"/>
+		<element name="genTexCoordsXY" function="true"/>
+		<element name="genTexCoordsYZ" function="true"/>
+		<element name="genTexCoordsXZ" function="true"/>
+		<element name="genTexCoords" function="true"/>
 		<element name="node" type="SSGNode">
 			<description><![CDATA[This field returns the geometry node for use in GeomBuilder. You have to set all relevant geometry properties before using this field. The usual sequence:
@@ -5767,54 +5868,34 @@
 3. Use the resulting node ( GeomBuilder.add(VertexBuilder.node) )]]></description>
 		</element>
+		<element name="material" type="Object"/>
 		<element name="twosided" type="integer" min="0" max="1"/>
-		<element name="addCalculatedNormal" function="true">
-			<description><![CDATA[calculate the normal vector from 3 coordinates. integer arguments are the vertices' indices. 0,1,2... = first, second, third vertex, -1,-2,-3,... = last, last-1, last-2 vertex]]></description>
-		</element>
-		<element name="addColor" function="true"/>
-		<element name="addNormal" function="true"/>
-		<element name="addNormal_1" function="true">
-			<description><![CDATA[use addNormal instead of this function]]></description>
-		</element>
-		<element name="addTexCoord" function="true"/>
-		<element name="addVertex" function="true"/>
-		<element name="genTexCoords" function="true"/>
-		<element name="genTexCoordsXY" function="true"/>
-		<element name="genTexCoordsXZ" function="true"/>
-		<element name="genTexCoordsYZ" function="true"/>
-		<element name="new" function="true" type="void">
-			<arguments>
-				<argument name="type" type="integer"/>
-			</arguments>
-		</element>
-		<element name="newLineLoop" function="true"/>
-		<element name="newLines" function="true"/>
-		<element name="newLineStrip" function="true"/>
-		<element name="newPoints" function="true"/>
-		<element name="newPolygon" function="true"/>
-		<element name="newQuads" function="true"/>
-		<element name="newQuadStrip" function="true"/>
-		<element name="newTriangleFan" function="true"/>
-		<element name="newTriangles" function="true"/>
-		<element name="newTriangleStrip" function="true"/>
 	</type>
 	<type name="VisParams" context="Visual style definition">
-		<element name="axes" type="integer" min="0" max="1" default="0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="bbox" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="bgcolor" type="integer" min="0" max="16777215" default="16764040">
-			<description><![CDATA[]]></description>
-		</element>
+		<element name="clear" function="true"/>
+		<element name="add" function="true"/>
+		<element name="remove" function="true"/>
+		<element name="addGroup" function="true"/>
+		<element name="removeGroup" function="true"/>
 		<element name="changedProperty" type="integer"/>
 		<element name="changedPropertyId" type="string"/>
+		<element name="worldpan" type="integer" min="0" max="3" default="2">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="modelpan" type="integer" min="0" max="3" default="1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="bgcolor" type="integer" min="0" max="16777215" default="16764040">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="bbox" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[]]></description>
+		</element>
 		<element name="joint_width" type="integer" min="10" max="150" default="100">
 			<description><![CDATA[]]></description>
 		</element>
-		<element name="modelpan" type="integer" min="0" max="3" default="1">
-			<description><![CDATA[]]></description>
-		</element>
 		<element name="shadows" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="axes" type="integer" min="0" max="1" default="0">
 			<description><![CDATA[]]></description>
 		</element>
@@ -5826,26 +5907,15 @@
 Use scripting and the Symmetry class to compute symmetry accurately.]]></description>
 		</element>
-		<element name="worldpan" type="integer" min="0" max="3" default="2">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="add" function="true"/>
-		<element name="addGroup" function="true"/>
-		<element name="clear" function="true"/>
-		<element name="remove" function="true"/>
-		<element name="removeGroup" function="true"/>
 	</type>
 	<type name="VisualModel" context="Visual style definition">
 <description><![CDATA[Visual representation of the Creature object.]]></description>
+		<element name="rootNode" type="SSGNode"/>
+		<element name="partshadow" type="float"/>
+		<element name="jointshadow" type="float"/>
+		<element name="style" type="string">
+			<description><![CDATA[visual style applied to this object]]></description>
+		</element>
 		<element name="args" type="string">
 			<description><![CDATA[style parameters: Vstyle=name(args)]]></description>
-		</element>
-		<element name="color" type="integer">
-			<description><![CDATA[0xBBGGRR, 0x808080=normal, 0x000000=black, 0xffffff=extra bright]]></description>
-		</element>
-		<element name="jointshadow" type="float"/>
-		<element name="partshadow" type="float"/>
-		<element name="rootNode" type="SSGNode"/>
-		<element name="style" type="string">
-			<description><![CDATA[visual style applied to this object]]></description>
 		</element>
 		<element name="getArg" function="true" type="string">
@@ -5857,67 +5927,59 @@
 			</arguments>
 		</element>
+		<element name="color" type="integer">
+			<description><![CDATA[0xBBGGRR, 0x808080=normal, 0x000000=black, 0xffffff=extra bright]]></description>
+		</element>
 	</type>
 	<type name="VisualStyle" context="Visual style definition">
-		<element name="axes" type="integer" min="0" max="1" default="0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="bbox" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="bgcolor" type="integer" min="0" max="16777215" default="16764040">
-			<description><![CDATA[]]></description>
-		</element>
+		<element name="style" type="string"/>
+		<element name="name" type="string"/>
+		<element name="info" type="string"/>
+		<element name="code" type="string"/>
+		<element name="streload" function="true"/>
+		<element name="rebuild" function="true"/>
+		<element name="tex" type="integer" min="0" max="2" default="1"/>
+		<element name="smooth" type="integer" min="0" max="1" default="1"/>
+		<element name="neurons" type="integer" min="0" max="1" default="1"/>
+		<element name="clear" function="true"/>
+		<element name="add" function="true"/>
+		<element name="remove" function="true"/>
+		<element name="addGroup" function="true"/>
+		<element name="removeGroup" function="true"/>
 		<element name="changedProperty" type="integer"/>
 		<element name="changedPropertyId" type="string"/>
-		<element name="code" type="string"/>
-		<element name="info" type="string"/>
+		<element name="worldpan" type="integer" min="0" max="3" default="2">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="modelpan" type="integer" min="0" max="3" default="1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="bgcolor" type="integer" min="0" max="16777215" default="16764040">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="bbox" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[]]></description>
+		</element>
 		<element name="joint_width" type="integer" min="10" max="150" default="100">
 			<description><![CDATA[]]></description>
 		</element>
-		<element name="modelpan" type="integer" min="0" max="3" default="1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="name" type="string"/>
-		<element name="neurons" type="integer" min="0" max="1" default="1"/>
 		<element name="shadows" type="integer" min="0" max="1" default="1">
 			<description><![CDATA[]]></description>
 		</element>
+		<element name="axes" type="integer" min="0" max="1" default="0">
+			<description><![CDATA[]]></description>
+		</element>
 		<element name="shownames" type="integer" min="0" max="1" default="0">
 			<description><![CDATA[]]></description>
 		</element>
-		<element name="smooth" type="integer" min="0" max="1" default="1"/>
-		<element name="style" type="string"/>
 		<element name="symmetryplane" type="integer" min="0" max="1" default="0">
 			<description><![CDATA[Displays a guess of the symmetry plane (may take a long time to compue for complex bodies).
 Use scripting and the Symmetry class to compute symmetry accurately.]]></description>
 		</element>
-		<element name="tex" type="integer" min="0" max="2" default="1"/>
-		<element name="worldpan" type="integer" min="0" max="3" default="2">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="add" function="true"/>
-		<element name="addGroup" function="true"/>
-		<element name="clear" function="true"/>
-		<element name="rebuild" function="true"/>
-		<element name="remove" function="true"/>
-		<element name="removeGroup" function="true"/>
-		<element name="streload" function="true"/>
 	</type>
 	<type name="World" context="Visual style definition">
 <description><![CDATA[Environment properties.]]></description>
-		<element name="nnspeed" type="float" min="0" max="1000" default="1.0">
-			<description><![CDATA[Number of neural network simulation steps in each physics simulation step]]></description>
-		</element>
-		<element name="signals" type="WorldSignals"/>
-		<element name="simtype" type="integer" min="0" max="1" default="0">
-			<description><![CDATA[MechaStick is a fast and simple primary Framsticks simulation engine.
-ODE is Open Dynamics Engine by Russel Smith et al.
-
-NOTE: switching between simulation engines causes removal of all objects in the world (e.g. creatures).]]></description>
-		</element>
-		<element name="wrldbnd" type="integer" min="0" max="2" default="1"/>
-		<element name="wrldg" type="float" min="0" max="10" default="1.0">
-			<description><![CDATA[You can adjust gravity for your experiments.
-The "official" setting used to evaluate and compare creatures is 1.]]></description>
+		<element name="wrldtyp" type="integer" min="0" max="2" default="0"/>
+		<element name="wrldsiz" type="float" min="10" max="1000" default="20.0">
+			<description><![CDATA[Side length of the world]]></description>
 		</element>
 		<element name="wrldmap" type="string">
@@ -5931,10 +5993,23 @@
 See also the WorldMap object.]]></description>
 		</element>
-		<element name="wrldsiz" type="float" min="10" max="1000" default="20.0">
-			<description><![CDATA[Side length of the world]]></description>
-		</element>
-		<element name="wrldtyp" type="integer" min="0" max="2" default="0"/>
 		<element name="wrldwat" type="float" min="-20" max="200" default="-1.0"/>
+		<element name="wrldbnd" type="integer" min="0" max="2" default="1">
+			<description><![CDATA[Teleporting a creature that is outside of the world area is attempted every 'performance sampling period' steps. Teleport succeeds only when the target location in the world is empty (there is no collision).]]></description>
+		</element>
+		<element name="wrldg" type="float" min="0" max="10" default="1.0">
+			<description><![CDATA[You can adjust gravity for your experiments.
+The "official" setting used to evaluate and compare creatures is 1.]]></description>
+		</element>
 		<element name="wrldchg" function="true" type="void"><arguments/></element>
+		<element name="simtype" type="integer" min="0" max="1" default="0">
+			<description><![CDATA[MechaStick is a fast and simple primary Framsticks simulation engine.
+ODE is Open Dynamics Engine by Russel Smith et al.
+
+NOTE: switching between simulation engines causes removal of all objects in the world (e.g. creatures).]]></description>
+		</element>
+		<element name="nnspeed" type="float" min="0" max="1000" default="1.0">
+			<description><![CDATA[Number of neural network simulation steps in each physics simulation step]]></description>
+		</element>
+		<element name="signals" type="WorldSignals"/>
 	</type>
 	<type name="WorldMap" context="Visual style definition">
@@ -5981,35 +6056,29 @@
 	</type>
 	<type name="Signal" context="Signal label formula">
+		<element name="value" type="untyped">
+			<description><![CDATA[Signal value can be any type. On the receiver side it is only available by accessing the individual Signal objects, i.e. after calling receiveSet() or receiveSingle(). The aggregating functions receive() and receiveFilter() ignore this attribute.]]></description>
+		</element>
+		<element name="power" type="float">
+			<description><![CDATA[Signal power affects the aggregated signal value returned from receive() and receiveFilter().]]></description>
+		</element>
+		<element name="flavor" type="float">
+			<description><![CDATA[Signal flavor can be used to differentiate between signals in a single channel.]]></description>
+		</element>
 		<element name="channel" type="string">
 			<description><![CDATA[Channel name, read-only.]]></description>
 		</element>
-		<element name="flavor" type="float">
-			<description><![CDATA[Signal flavor can be used to differentiate between signals in a single channel.]]></description>
-		</element>
 		<element name="pos" type="XYZ">
 			<description><![CDATA[Signal position, read-only.]]></description>
 		</element>
-		<element name="power" type="float">
-			<description><![CDATA[Signal power affects the aggregated signal value returned from receive() and receiveFilter().]]></description>
-		</element>
-		<element name="value" type="untyped">
-			<description><![CDATA[Signal value can be any type. On the receiver side it is only available by accessing the individual Signal objects, i.e. after calling receiveSet() or receiveSingle(). The aggregating functions receive() and receiveFilter() ignore this attribute.]]></description>
-		</element>
 	</type>
 	<type name="ClassBrowser" context="Command line interface">
 <description><![CDATA[Object reference, can be used to provide online hints.]]></description>
+		<element name="search" function="true" type="integer">
+			<description><![CDATA[Searches the class reference and returns the number of  hits (results). getXXX(item) function can be used to retrieve the results.]]></description>
+			<arguments>
+				<argument name="Text" type="string"/>
+			</arguments>
+		</element>
 		<element name="resultCount" type="integer"/>
-		<element name="getLabel" function="true" type="string">
-			<description><![CDATA[Short texual label of the search result.]]></description>
-			<arguments>
-				<argument name="item" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getText" function="true" type="string">
-			<description><![CDATA[Complete result text.]]></description>
-			<arguments>
-				<argument name="item" type="integer"/>
-			</arguments>
-		</element>
 		<element name="getType" function="true" type="integer">
 			<description><![CDATA[0 = Unknown
@@ -6031,8 +6100,14 @@
 			</arguments>
 		</element>
-		<element name="search" function="true" type="integer">
-			<description><![CDATA[Searches the class reference and returns the number of  hits (results). getXXX(item) function can be used to retrieve the results.]]></description>
-			<arguments>
-				<argument name="Text" type="string"/>
+		<element name="getLabel" function="true" type="string">
+			<description><![CDATA[Short texual label of the search result.]]></description>
+			<arguments>
+				<argument name="item" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getText" function="true" type="string">
+			<description><![CDATA[Complete result text.]]></description>
+			<arguments>
+				<argument name="item" type="integer"/>
 			</arguments>
 		</element>
@@ -6040,12 +6115,25 @@
 	<type name="CLI" context="Command line interface">
 <description><![CDATA[Commandline support functions.]]></description>
+		<element name="script" type="string"/>
+		<element name="execute" function="true" type="void">
+			<arguments>
+				<argument name="command" type="string"/>
+			</arguments>
+		</element>
 		<element name="cmdhandler" type="string"/>
-		<element name="msgtype" type="integer" min="0" max="1"/>
+		<element name="quit" function="true"/>
+		<element name="print" function="true" type="void">
+			<arguments>
+				<argument name="text" type="string"/>
+			</arguments>
+		</element>
+		<element name="println" function="true" type="void">
+			<arguments>
+				<argument name="text" type="string"/>
+			</arguments>
+		</element>
 		<element name="quiet" type="integer" min="0" max="1">
 			<description><![CDATA[enabled by -Q]]></description>
 		</element>
-		<element name="script" type="string"/>
-		<element name="stdin" type="Object"/>
-		<element name="stdout" type="Object"/>
 		<element name="addMacro" function="true" type="void">
 			<arguments>
@@ -6056,21 +6144,4 @@
 			</arguments>
 		</element>
-		<element name="execute" function="true" type="void">
-			<arguments>
-				<argument name="command" type="string"/>
-			</arguments>
-		</element>
-		<element name="listMacros" function="true" type="void"><arguments/></element>
-		<element name="print" function="true" type="void">
-			<arguments>
-				<argument name="text" type="string"/>
-			</arguments>
-		</element>
-		<element name="println" function="true" type="void">
-			<arguments>
-				<argument name="text" type="string"/>
-			</arguments>
-		</element>
-		<element name="quit" function="true"/>
 		<element name="removeMacro" function="true" type="void">
 			<description><![CDATA[(numargs==-2) means remove all macros matching the name, otherwise only one definition is removed]]></description>
@@ -6080,16 +6151,23 @@
 			</arguments>
 		</element>
+		<element name="listMacros" function="true" type="void"><arguments/></element>
+		<element name="stdin" type="Object"/>
+		<element name="stdout" type="Object"/>
+		<element name="msgtype" type="integer" min="0" max="1"/>
 	</type>
 	<type name="CreatureCharts" context="Command line interface">
 <description><![CDATA[Manages charts for monitoring creatures performance.
 This class has no corresponding static object. If you want to use it, you have to create an object or get a reference to the existing object.]]></description>
-		<element name="creature" type="untyped"/>
 		<element name="selected" type="integer"/>
+		<element name="addSelected" function="true">
+			<description><![CDATA[Add the chart for currenly selected property]]></description>
+		</element>
 		<element name="add" function="true">
 			<description><![CDATA[return the new Window object with chart as its client
 arguments: property to be tracked]]></description>
 		</element>
-		<element name="addSelected" function="true">
-			<description><![CDATA[Add the chart for currenly selected property]]></description>
+		<element name="removeAll" function="true"/>
+		<element name="resetAll" function="true">
+			<description><![CDATA[Removes all data from the chart windows.]]></description>
 		</element>
 		<element name="createChart" function="true">
@@ -6097,11 +6175,13 @@
 arguments: property to be tracked]]></description>
 		</element>
-		<element name="removeAll" function="true"/>
-		<element name="resetAll" function="true">
-			<description><![CDATA[Removes all data from the chart windows.]]></description>
-		</element>
+		<element name="creature" type="untyped"/>
 	</type>
 	<type name="CreatureSelection" context="Command line interface">
 		<element name="count" type="integer"/>
+		<element name="get" function="true" type="Creature">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
 		<element name="add" function="true" type="void">
 			<arguments>
@@ -6109,62 +6189,52 @@
 			</arguments>
 		</element>
+		<element name="remove" function="true" type="void">
+			<arguments>
+				<argument type="Creature"/>
+			</arguments>
+		</element>
 		<element name="clear" function="true" type="void"><arguments/></element>
-		<element name="get" function="true" type="Creature">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="remove" function="true" type="void">
-			<arguments>
-				<argument type="Creature"/>
-			</arguments>
-		</element>
 	</type>
 	<type name="DynaChart" context="Command line interface">
 <description><![CDATA[Line chart (visual object). Can be used as the client object in the Window.]]></description>
-		<element name="xscale" type="integer" min="1" max="20"/>
+		<element name="new" function="true" type="DynaChart"><arguments/></element>
 		<element name="add" function="true">
 			<description><![CDATA[add new value]]></description>
 		</element>
 		<element name="clear" function="true" type="void"><arguments/></element>
-		<element name="new" function="true" type="DynaChart"><arguments/></element>
+		<element name="xscale" type="integer" min="1" max="20"/>
 	</type>
 	<type name="DynaChart2D" context="Command line interface">
 <description><![CDATA[2D Line chart (visual object). Can be used as the client object in the Window.]]></description>
+		<element name="new" function="true" type="DynaChart2D"><arguments/></element>
+		<element name="add" function="true" type="void">
+			<description><![CDATA[add (x,y) values for the next graph point]]></description>
+			<arguments>
+				<argument name="x coordinate" type="float"/>
+				<argument name="y coordinate" type="float"/>
+			</arguments>
+		</element>
+		<element name="clear" function="true" type="void"><arguments/></element>
 		<element name="memory" type="integer" min="1" max="1000" default="100">
 			<description><![CDATA[maximum number of (x,y) pairs drawn in the graph.]]></description>
 		</element>
-		<element name="add" function="true" type="void">
-			<description><![CDATA[add (x,y) values for the next graph point]]></description>
-			<arguments>
-				<argument name="x coordinate" type="float"/>
-				<argument name="y coordinate" type="float"/>
-			</arguments>
-		</element>
-		<element name="clear" function="true" type="void"><arguments/></element>
-		<element name="new" function="true" type="DynaChart2D"><arguments/></element>
 	</type>
 	<type name="GLDisplay" context="Command line interface">
 <description><![CDATA[OpenGL display for the Framsticks Theater application.]]></description>
+		<element name="simsteps" type="integer" min="0" max="999999" default="0">
+			<description><![CDATA[0 = simulation is disabled. In most cases you should use desiredsimspeed as it ensures automatic throttle control.]]></description>
+		</element>
+		<element name="desiredsimspeed" type="float" min="0" max="999999" default="0.0">
+			<description><![CDATA[Desired simulation speed in steps/second. 0 = simulation is disabled.]]></description>
+		</element>
+		<element name="userspeed" type="float" min="0" max="100" default="1.0">
+			<description><![CDATA[User interface sets this property to adjust simulation speed.]]></description>
+		</element>
+		<element name="stop" function="true"/>
+		<element name="resume" function="true"/>
+		<element name="draw" function="true"/>
+		<element name="quit" function="true"/>
 		<element name="active" type="integer" min="0" max="1"/>
 		<element name="banner" type="string"/>
-		<element name="desiredsimspeed" type="float" min="0" max="999999" default="0.0">
-			<description><![CDATA[Desired simulation speed in steps/second. 0 = simulation is disabled.]]></description>
-		</element>
-		<element name="fps" type="float">
-			<description><![CDATA[Frames Per Second (measured)]]></description>
-		</element>
-		<element name="fpsvisible" type="integer" min="0" max="1"/>
-		<element name="maxfps" type="integer" min="1" max="100" default="30"/>
-		<element name="messagesVisible" type="integer" min="0" max="1"/>
-		<element name="messagesWindow" type="Object">
-			<description><![CDATA[get window object (class Window)]]></description>
-		</element>
-		<element name="minfps" type="integer" min="1" max="100" default="5"/>
-		<element name="simsteps" type="integer" min="0" max="999999" default="0">
-			<description><![CDATA[0 = simulation is disabled. In most cases you should use desiredsimspeed as it ensures automatic throttle control.]]></description>
-		</element>
-		<element name="size_x" type="integer"/>
-		<element name="size_y" type="integer"/>
 		<element name="user_interaction" type="integer" min="0" max="1" default="1">
 			<description><![CDATA[Bit field:
@@ -6172,8 +6242,17 @@
 ]]></description>
 		</element>
-		<element name="userspeed" type="float" min="0" max="100" default="1.0">
-			<description><![CDATA[User interface sets this property to adjust simulation speed.]]></description>
-		</element>
+		<element name="minfps" type="integer" min="1" max="100" default="5"/>
+		<element name="maxfps" type="integer" min="1" max="100" default="30"/>
+		<element name="fps" type="float">
+			<description><![CDATA[Frames Per Second (measured)]]></description>
+		</element>
+		<element name="fpsvisible" type="integer" min="0" max="1"/>
+		<element name="messagesVisible" type="integer" min="0" max="1"/>
 		<element name="clearMessages" function="true"/>
+		<element name="messagesWindow" type="Object">
+			<description><![CDATA[get window object (class Window)]]></description>
+		</element>
+		<element name="size_x" type="integer"/>
+		<element name="size_y" type="integer"/>
 		<element name="createWindow" function="true" type="Window">
 			<description><![CDATA[create and return the new window object.]]></description>
@@ -6189,20 +6268,8 @@
 			</arguments>
 		</element>
-		<element name="draw" function="true"/>
 		<element name="newCreatureCharts" function="true"/>
 		<element name="newSimStatsCharts" function="true"/>
-		<element name="quit" function="true"/>
-		<element name="resume" function="true"/>
-		<element name="stop" function="true"/>
 	</type>
 	<type name="ImageExport" context="Command line interface">
-		<element name="imgex_compress" type="integer" min="0" max="100" default="15"/>
-		<element name="imgex_currframe" type="integer"/>
-		<element name="imgex_enabled" type="integer" min="0" max="1"/>
-		<element name="imgex_format" type="integer" min="0" max="2"/>
-		<element name="imgex_lastfile" type="string"/>
-		<element name="imgex_maxframes" type="integer" min="0" max="1000000" default="10000">
-			<description><![CDATA[How many frames are to be generated?]]></description>
-		</element>
 		<element name="imgex_outdir" type="string">
 			<description><![CDATA[Directory name WITHOUT trailing '/' sign]]></description>
@@ -6211,4 +6278,6 @@
 			<description><![CDATA[Frame number replaces %d (eg. 'image%03d.jpg')]]></description>
 		</element>
+		<element name="imgex_format" type="integer" min="0" max="2"/>
+		<element name="imgex_compress" type="integer" min="0" max="100" default="15"/>
 		<element name="imgex_skip" type="integer">
 			<description><![CDATA[A scene file is generated each (n+1) simulation steps
@@ -6218,11 +6287,16 @@
 			<description><![CDATA[Starting number]]></description>
 		</element>
+		<element name="imgex_maxframes" type="integer" min="0" max="1000000" default="10000">
+			<description><![CDATA[How many frames are to be generated?]]></description>
+		</element>
+		<element name="imgex_enable" function="true"/>
 		<element name="imgex_disable" function="true"/>
-		<element name="imgex_enable" function="true"/>
 		<element name="imgex_now" function="true"/>
+		<element name="imgex_currframe" type="integer"/>
+		<element name="imgex_enabled" type="integer" min="0" max="1"/>
+		<element name="imgex_lastfile" type="string"/>
 	</type>
 	<type name="NeuroDiagram" context="Command line interface">
 <description><![CDATA[Can be used as the client object in the Window.]]></description>
-		<element name="hide" function="true" type="void"><arguments/></element>
 		<element name="new" function="true"/>
 		<element name="showCreature" function="true" type="void">
@@ -6236,4 +6310,5 @@
 			</arguments>
 		</element>
+		<element name="hide" function="true" type="void"><arguments/></element>
 	</type>
 	<type name="RowFormat" context="Command line interface">
@@ -6244,18 +6319,15 @@
 RowFormat.prepare(Genotype.*,"name/20,strsiz/5,nnsiz/5,fit/6");
 CLI.println(RowFormat.format(Genotype.*));]]></description>
-		<element name="fieldsep" type="string">
-			<description><![CDATA[The character used for separating columns]]></description>
-		</element>
-		<element name="fillchar" type="string">
-			<description><![CDATA[The characted used for padding the columns contents]]></description>
-		</element>
-		<element name="header" type="string">
-			<description><![CDATA[Contains the field names with the same formatting applied (i.e. with fill and separators)]]></description>
-		</element>
-		<element name="addColumn" function="true" type="void">
-			<description><![CDATA[Low level call, adds a single column. "prepare" is better.]]></description>
-			<arguments>
-				<argument name="Field#" type="integer"/>
-				<argument name="Column width" type="integer"/>
+		<element name="prepare" function="true" type="void">
+			<description><![CDATA[Adds a number of columns, described as FIELD_NAME/WIDTH, columns are separated by "," (comma). Existing column definitions are not removed. Usually you will need to call "clear()" before "prepare".]]></description>
+			<arguments>
+				<argument name="Object" type="Object"/>
+				<argument name="Column Descriptions" type="string"/>
+			</arguments>
+		</element>
+		<element name="format" function="true" type="string">
+			<description><![CDATA[Returns the formatted string taking data from the supplied object.]]></description>
+			<arguments>
+				<argument name="Object" type="Object"/>
 			</arguments>
 		</element>
@@ -6263,55 +6335,58 @@
 			<description><![CDATA[Remove all existing column definitions.]]></description>
 <arguments/></element>
-		<element name="format" function="true" type="string">
-			<description><![CDATA[Returns the formatted string taking data from the supplied object.]]></description>
-			<arguments>
-				<argument name="Object" type="Object"/>
-			</arguments>
-		</element>
-		<element name="prepare" function="true" type="void">
-			<description><![CDATA[Adds a number of columns, described as FIELD_NAME/WIDTH, columns are separated by "," (comma). Existing column definitions are not removed. Usually you will need to call "clear()" before "prepare".]]></description>
-			<arguments>
-				<argument name="Object" type="Object"/>
-				<argument name="Column Descriptions" type="string"/>
-			</arguments>
+		<element name="addColumn" function="true" type="void">
+			<description><![CDATA[Low level call, adds a single column. "prepare" is better.]]></description>
+			<arguments>
+				<argument name="Field#" type="integer"/>
+				<argument name="Column width" type="integer"/>
+			</arguments>
+		</element>
+		<element name="fillchar" type="string">
+			<description><![CDATA[The characted used for padding the columns contents]]></description>
+		</element>
+		<element name="fieldsep" type="string">
+			<description><![CDATA[The character used for separating columns]]></description>
+		</element>
+		<element name="header" type="string">
+			<description><![CDATA[Contains the field names with the same formatting applied (i.e. with fill and separators)]]></description>
 		</element>
 	</type>
 	<type name="ShowManager" context="Command line interface">
+		<element name="show" type="string"/>
+		<element name="name" type="string"/>
+		<element name="info" type="string"/>
+		<element name="dispinfo" type="integer" min="0" max="2"/>
+		<element name="userspeed" type="integer" min="0" max="5" default="3"/>
+		<element name="showlog" type="integer" min="0" max="1"/>
+		<element name="code" type="string"/>
+		<element name="expdef" type="string"/>
+		<element name="reload" function="true"/>
+		<element name="dummy" function="true">
+			<description><![CDATA[This is the empty item in the Theater's menu]]></description>
+		</element>
+		<element name="about" function="true"/>
+		<element name="regname" type="string"/>
+		<element name="prev_show" type="string"/>
+		<element name="mode" type="integer" min="0" max="2"/>
+		<element name="switchmode" type="integer" min="0" max="3"/>
+		<element name="switchtime" type="integer" min="0" max="9999">
+			<description><![CDATA[time between switching (seconds)]]></description>
+		</element>
+		<element name="switchshows" type="string">
+			<description><![CDATA[names of the shows participating in automatic switching (comma separated). Use * as a wildcard.]]></description>
+		</element>
+		<element name="includeshows" type="string">
+			<description><![CDATA[names of shows included in the show menu. Use * as a wildcard.]]></description>
+		</element>
+		<element name="excludeshows" type="string">
+			<description><![CDATA[names of shows excluded from the show menu. Use * as a wildcard.]]></description>
+		</element>
+		<element name="clear" function="true"/>
+		<element name="add" function="true"/>
+		<element name="remove" function="true"/>
+		<element name="addGroup" function="true"/>
+		<element name="removeGroup" function="true"/>
 		<element name="changedProperty" type="integer"/>
 		<element name="changedPropertyId" type="string"/>
-		<element name="code" type="string"/>
-		<element name="dispinfo" type="integer" min="0" max="2"/>
-		<element name="excludeshows" type="string">
-			<description><![CDATA[names of shows excluded from the show menu. Use * as a wildcard.]]></description>
-		</element>
-		<element name="expdef" type="string"/>
-		<element name="includeshows" type="string">
-			<description><![CDATA[names of shows included in the show menu. Use * as a wildcard.]]></description>
-		</element>
-		<element name="info" type="string"/>
-		<element name="mode" type="integer" min="0" max="2"/>
-		<element name="name" type="string"/>
-		<element name="prev_show" type="string"/>
-		<element name="regname" type="string"/>
-		<element name="show" type="string"/>
-		<element name="showlog" type="integer" min="0" max="1"/>
-		<element name="switchmode" type="integer" min="0" max="3"/>
-		<element name="switchshows" type="string">
-			<description><![CDATA[names of the shows participating in automatic switching (comma separated). Use * as a wildcard.]]></description>
-		</element>
-		<element name="switchtime" type="integer" min="0" max="9999">
-			<description><![CDATA[time between switching (seconds)]]></description>
-		</element>
-		<element name="userspeed" type="integer" min="0" max="5" default="3"/>
-		<element name="about" function="true"/>
-		<element name="add" function="true"/>
-		<element name="addGroup" function="true"/>
-		<element name="clear" function="true"/>
-		<element name="dummy" function="true">
-			<description><![CDATA[This is the empty item in the Theater's menu]]></description>
-		</element>
-		<element name="reload" function="true"/>
-		<element name="remove" function="true"/>
-		<element name="removeGroup" function="true"/>
 	</type>
 	<type name="SimStatsCharts" context="Command line interface">
@@ -6319,22 +6394,18 @@
 This class has no corresponding static object. If you want to use it, you have to create an object or get a reference to the existing object.]]></description>
 		<element name="selected" type="integer"/>
+		<element name="sscAddSelected" function="true"/>
 		<element name="add" function="true"/>
-		<element name="createChart" function="true"/>
 		<element name="removeAll" function="true"/>
 		<element name="resetAll" function="true">
 			<description><![CDATA[Removes all data from the chart windows.]]></description>
 		</element>
-		<element name="sscAddSelected" function="true"/>
+		<element name="createChart" function="true"/>
 	</type>
 	<type name="TrackingCam" context="Command line interface">
 <description><![CDATA[Camera object with the automatic target tracking ability.]]></description>
-		<element name="cam_change" type="integer" min="0" max="5" default="2"/>
-		<element name="cam_chspeed" type="float" min="0.1" max="10" default="1.0"/>
-		<element name="cam_dir" type="float" min="0" max="360" default="30.0"/>
+		<element name="cam_tracking" type="integer" min="0" max="3" default="1"/>
+		<element name="cam_trspeed" type="float" min="0.1" max="10" default="5.0"/>
 		<element name="cam_distrac" type="integer" min="0" max="1" default="0">
 			<description><![CDATA[Suspend automatic tracking when the camera is moved manually]]></description>
-		</element>
-		<element name="cam_h" type="float" min="0" max="360" default="45.0">
-			<description><![CDATA[0=side view, 90=top view]]></description>
 		</element>
 		<element name="cam_restrac" type="integer" min="0" max="100" default="10">
@@ -6342,13 +6413,16 @@
 (0 to never restore automatic tracking)]]></description>
 		</element>
-		<element name="cam_tracking" type="integer" min="0" max="3" default="1"/>
-		<element name="cam_trspeed" type="float" min="0.1" max="10" default="5.0"/>
-		<element name="cam_zoom" type="float" min="0.2" max="3" default="0.8"/>
-		<element name="interacting" type="integer" min="0" max="2"/>
 		<element name="cam_restore" function="true" type="void">
 			<description><![CDATA[Update camera position and restore automatic tracking]]></description>
 <arguments/></element>
-		<element name="moveTarget" function="true" type="void">
-			<description><![CDATA[notify about the target location/size change]]></description>
+		<element name="cam_change" type="integer" min="0" max="5" default="2"/>
+		<element name="cam_chspeed" type="float" min="0.1" max="10" default="1.0"/>
+		<element name="cam_zoom" type="float" min="0.2" max="3" default="0.8"/>
+		<element name="cam_dir" type="float" min="0" max="360" default="30.0"/>
+		<element name="cam_h" type="float" min="0" max="360" default="45.0">
+			<description><![CDATA[0=side view, 90=top view]]></description>
+		</element>
+		<element name="setTarget" function="true" type="void">
+			<description><![CDATA[select a new target for the camera]]></description>
 			<arguments>
 				<argument name="location x" type="float"/>
@@ -6358,11 +6432,6 @@
 			</arguments>
 		</element>
-		<element name="setOrient" function="true" type="void">
-			<arguments>
-				<argument type="Orient"/>
-			</arguments>
-		</element>
-		<element name="setTarget" function="true" type="void">
-			<description><![CDATA[select a new target for the camera]]></description>
+		<element name="moveTarget" function="true" type="void">
+			<description><![CDATA[notify about the target location/size change]]></description>
 			<arguments>
 				<argument name="location x" type="float"/>
@@ -6379,50 +6448,56 @@
 			</arguments>
 		</element>
+		<element name="setOrient" function="true" type="void">
+			<arguments>
+				<argument type="Orient"/>
+			</arguments>
+		</element>
+		<element name="interacting" type="integer" min="0" max="2"/>
 	</type>
 	<type name="VisualStyle" context="Command line interface">
-		<element name="axes" type="integer" min="0" max="1" default="0">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="bbox" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="bgcolor" type="integer" min="0" max="16777215" default="16764040">
-			<description><![CDATA[]]></description>
-		</element>
+		<element name="style" type="string"/>
+		<element name="name" type="string"/>
+		<element name="info" type="string"/>
+		<element name="code" type="string"/>
+		<element name="streload" function="true"/>
+		<element name="rebuild" function="true"/>
+		<element name="tex" type="integer" min="0" max="2" default="1"/>
+		<element name="smooth" type="integer" min="0" max="1" default="1"/>
+		<element name="neurons" type="integer" min="0" max="1" default="1"/>
+		<element name="clear" function="true"/>
+		<element name="add" function="true"/>
+		<element name="remove" function="true"/>
+		<element name="addGroup" function="true"/>
+		<element name="removeGroup" function="true"/>
 		<element name="changedProperty" type="integer"/>
 		<element name="changedPropertyId" type="string"/>
-		<element name="code" type="string"/>
-		<element name="info" type="string"/>
+		<element name="worldpan" type="integer" min="0" max="3" default="2">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="modelpan" type="integer" min="0" max="3" default="1">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="bgcolor" type="integer" min="0" max="16777215" default="16764040">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="bbox" type="integer" min="0" max="1" default="1">
+			<description><![CDATA[]]></description>
+		</element>
 		<element name="joint_width" type="integer" min="10" max="150" default="100">
 			<description><![CDATA[]]></description>
 		</element>
-		<element name="modelpan" type="integer" min="0" max="3" default="1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="name" type="string"/>
-		<element name="neurons" type="integer" min="0" max="1" default="1"/>
 		<element name="shadows" type="integer" min="0" max="1" default="1">
 			<description><![CDATA[]]></description>
 		</element>
+		<element name="axes" type="integer" min="0" max="1" default="0">
+			<description><![CDATA[]]></description>
+		</element>
 		<element name="shownames" type="integer" min="0" max="1" default="0">
 			<description><![CDATA[]]></description>
 		</element>
-		<element name="smooth" type="integer" min="0" max="1" default="1"/>
-		<element name="style" type="string"/>
 		<element name="symmetryplane" type="integer" min="0" max="1" default="0">
 			<description><![CDATA[Displays a guess of the symmetry plane (may take a long time to compue for complex bodies).
 Use scripting and the Symmetry class to compute symmetry accurately.]]></description>
 		</element>
-		<element name="tex" type="integer" min="0" max="2" default="1"/>
-		<element name="worldpan" type="integer" min="0" max="3" default="2">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="add" function="true"/>
-		<element name="addGroup" function="true"/>
-		<element name="clear" function="true"/>
-		<element name="rebuild" function="true"/>
-		<element name="remove" function="true"/>
-		<element name="removeGroup" function="true"/>
-		<element name="streload" function="true"/>
 	</type>
 	<type name="Window" context="Command line interface">
@@ -6430,14 +6505,4 @@
 This class has no corresponding static object. If you want to use it, you have to create an object or get a reference to the existing object.
  See also: GLDisplay]]></description>
-		<element name="backcolor" type="integer">
-			<description><![CDATA[format: 0xAABBGGRR (alpha,blue,green,red)]]></description>
-		</element>
-		<element name="client" type="Object">
-			<description><![CDATA[what is displayed in the window]]></description>
-		</element>
-		<element name="pos_x" type="integer"/>
-		<element name="pos_y" type="integer"/>
-		<element name="size_x" type="integer"/>
-		<element name="size_y" type="integer"/>
 		<element name="style" type="integer">
 			<description><![CDATA[bitfield:
@@ -6449,4 +6514,14 @@
 		</element>
 		<element name="title" type="string"/>
+		<element name="backcolor" type="integer">
+			<description><![CDATA[format: 0xAABBGGRR (alpha,blue,green,red)]]></description>
+		</element>
+		<element name="pos_x" type="integer"/>
+		<element name="pos_y" type="integer"/>
+		<element name="size_x" type="integer"/>
+		<element name="size_y" type="integer"/>
+		<element name="client" type="Object">
+			<description><![CDATA[what is displayed in the window]]></description>
+		</element>
 	</type>
 </framscript>
