Index: java/FramclipsePlugin/src/main/resources/framscript.xml
===================================================================
--- java/FramclipsePlugin/src/main/resources/framscript.xml	(revision 193)
+++ java/FramclipsePlugin/src/main/resources/framscript.xml	(revision 266)
@@ -30,16 +30,22 @@
 		<element name="info" type="string"/>
 		<element name="name" type="string"/>
-		<element name="neurons" type="integer" min="0" max="1"/>
-		<element name="smooth" type="integer" min="0" max="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"/>
+		<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[Show properties for the Framsticks Theater (from the *.show file).]]></description>
+<description><![CDATA[Properties of a show for the Framsticks Theater (from the *.show file).]]></description>
 		<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"/>
@@ -205,5 +211,6 @@
 		<element name="boundingBoxCollisions" function="true" type="integer">
 			<description><![CDATA[Checks approximate collisions for the selected creature.
-Returns the collision mask calculated as in the regular simulation. The argument is the collision mask substituted for the selected creature (defaults to group colmask for 0).]]></description>
+Returns the collision mask calculated as ( creature.selfmask & other_creatures.othermask ).
+Passing non-zero argument is equivalent to setting a temporary selfmask for the current creature.]]></description>
 			<arguments>
 				<argument name="mask" type="integer"/>
@@ -461,6 +468,12 @@
 <arguments/></element>
 		<element name="flush" function="true" type="void">
-			<description><![CDATA[useful for unbuffered disk files only (openDirect, appendDirect)]]></description>
+			<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 ">
@@ -542,5 +555,5 @@
 	</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>
+<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="fitfun" type="integer" min="0" max="1" default="0">
 			<description><![CDATA[Enables fitness scaling.]]></description>
@@ -558,4 +571,5 @@
 		</element>
 		<element name="index" type="integer"/>
+		<element name="iterator" type="Object"/>
 		<element name="name" type="string"/>
 		<element name="size" type="integer">
@@ -580,4 +594,7 @@
 			</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>
@@ -604,5 +621,5 @@
 		</element>
 		<element name="deleteOne" function="true" type="void">
-			<description><![CDATA[Deletes one individual = decreases 'instances' and deletes the genotype if the 'instances' goes to 0.]]></description>
+			<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"/>
@@ -634,12 +651,30 @@
 			</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>
 <arguments/></element>
 		<element name="random" function="true" type="Genotype">
-			<description><![CDATA[Gets random genotype object]]></description>
+			<description><![CDATA[Returns a random genotype object]]></description>
 <arguments/></element>
 		<element name="randomLikeGeno" function="true" type="Genotype">
-			<description><![CDATA[Gets a random genotype index similar to the selected one.]]></description>
+			<description><![CDATA[Returns a random genotype index similar to the target genotype.]]></description>
 			<arguments>
 				<argument name="minimum similarity" type="float"/>
@@ -648,11 +683,11 @@
 		</element>
 		<element name="revroulette" function="true" type="Genotype">
-			<description><![CDATA[Get reverse fitness-proportional genotype object]]></description>
+			<description><![CDATA[Returns a reverse fitness-proportional genotype object]]></description>
 <arguments/></element>
 		<element name="roulette" function="true" type="Genotype">
-			<description><![CDATA[Gets fitness-proportional genotype object]]></description>
+			<description><![CDATA[Returns a fitness-proportional genotype object]]></description>
 <arguments/></element>
 		<element name="rouletteLikeGeno" function="true" type="Genotype">
-			<description><![CDATA[Gets a random genotype similar to the selected one, fitness-proportional.]]></description>
+			<description><![CDATA[Returns a random genotype similar to the target genotype, fitness-proportional.]]></description>
 			<arguments>
 				<argument name="minimum similarity" type="float"/>
@@ -664,5 +699,5 @@
 <arguments/></element>
 		<element name="tournament" function="true" type="Genotype">
-			<description><![CDATA[Gets tournament winner genotype object]]></description>
+			<description><![CDATA[Returns a tournament winner genotype object]]></description>
 			<arguments>
 				<argument name="genotypes in tournament" type="integer"/>
@@ -670,5 +705,5 @@
 		</element>
 		<element name="worst" function="true" type="Genotype">
-			<description><![CDATA[Gets genotype object having lowest fitness]]></description>
+			<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>
 	</type>
@@ -693,6 +728,7 @@
 			<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="void">
+		<element name="addGroup" function="true" type="GenePool">
 			<description><![CDATA[Adds a new gene pool.]]></description>
 			<arguments>
@@ -982,4 +1018,12 @@
 			<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>
@@ -1005,4 +1049,10 @@
 		</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>
@@ -1253,231 +1303,4 @@
    time (t) float 0..6.28319]]></description>
 		</element>
-		<element name="neuadd_Mzm" type="integer" min="0" max="1">
-			<description><![CDATA[Helps framstick navigate through a maze. This acts as a memory of already visited places. Returns 1 if the framstick has already visited current block, 0 otherwise. The memory is not volatile.
-
-Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="neuadd_OThr" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   does not provide output value
-   should be located on a Joint
-]]></description>
-		</element>
-		<element name="neuadd_SeeLight" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-
-
-Properties:
-    (flavor) float 0..4]]></description>
-		</element>
-		<element name="neuadd_Linb" type="integer" min="0" max="1">
-			<description><![CDATA[output=input(bez sumowania)
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="neuadd_Delay" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   delay time (in steps) (t) integer 1..1000]]></description>
-		</element>
-		<element name="neuadd_ntest" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   provides output value
-   should be located on a Joint
-]]></description>
-		</element>
-		<element name="neuadd_WarnLR" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Maximum distance signal is sensed  (maxDist) float 1..1000]]></description>
-		</element>
-		<element name="neuadd_SeeLight2" type="integer" min="0" max="1">
-			<description><![CDATA[Returns the average signal intensity of all nearby transmitters. Unlike "SeeLight", signals do not attenuate over distance (however, the maximal signal distance is limited by the "range" parameter).
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-
-
-Properties:
-    (range) float 0..100]]></description>
-		</element>
-		<element name="neuadd_FeelInjury" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   supports any number of inputs
-   does not provide output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="neuadd_PIDV" type="integer" min="0" max="1">
-			<description><![CDATA[PID Regulator (velocity/incremental form)
-
-Characteristics:
-   uses single input
-   provides output value
-   does not require location in body
-
-
-Properties:
-   K (k) float 0.01..100
-   Ti (ti) float 0.01..100
-   Td (td) float 0.01..100]]></description>
-		</element>
-		<element name="neuadd_Lin" type="integer" min="0" max="1">
-			<description><![CDATA[output=input
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="neuadd_WarnDD" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Maximum distance signal is sensed  (maxDist) float 1..1000]]></description>
-		</element>
-		<element name="neuadd_Sf" type="integer" min="0" max="1">
-			<description><![CDATA[Detects only food, not other creatures
-(in experiments with food in group #1)
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-]]></description>
-		</element>
-		<element name="neuadd_Nn" type="integer" min="0" max="1">
-			<description><![CDATA[Propagates weighted inputs onto the output, but occassionally generates a random value
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Error rate (e) float 0..0.1]]></description>
-		</element>
-		<element name="neuadd_Rdr" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   does not provide output value
-   does not require location in body
-
-
-Properties:
-    ()]]></description>
-		</element>
-		<element name="neuadd_WarnDist" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Maximum distance signal is sensed  (maxDist) float 1..1000]]></description>
-		</element>
-		<element name="neuadd_Cmp" type="integer" min="0" max="1">
-			<description><![CDATA[Helps framstick navigate through a maze. Output returns 1 if there is a free space in the direction where the joint to which the neuron is attahced points, 0 otherwise. NOTE: This neuron *must* be attached to a *joint*.
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-]]></description>
-		</element>
-		<element name="neuadd_Light" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   supports any number of inputs
-   does not provide output value
-   should be located on a Part
-
-
-Properties:
-    (flavor) float 0..4]]></description>
-		</element>
-		<element name="neuadd_Thr" type="integer" min="0" max="1">
-			<description><![CDATA[if (input>=t) then output=hi else output=lo
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   threshold (t) float
-   low output value (lo) float
-   high output value (hi) float]]></description>
-		</element>
-		<element name="neuadd_PIDP" type="integer" min="0" max="1">
-			<description><![CDATA[PID Regulator (positional/full value form)
-
-Characteristics:
-   uses single input
-   provides output value
-   does not require location in body
-
-
-Properties:
-   K (k) float 0.01..100
-   Ti (ti) float 0.01..100
-   Td (td) float 0.01..100]]></description>
-		</element>
-		<element name="neuadd_ptest" type="integer" min="0" max="1">
-			<description><![CDATA[different parameter datatypes
-
-Characteristics:
-   uses single input
-   provides output value
-   does not require location in body
-
-
-Properties:
-   first integer (i1) integer
-   first float (f1) float
-   first string (s1) string
-   second integer (i2) integer
-   second float (f2) float
-   second string (s2) string]]></description>
-		</element>
-		<element name="neuadd_FF" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   supports any number of inputs
-   does not provide output value
-   should be located on a Part
-]]></description>
-		</element>
 		<element name="add" function="true"/>
 		<element name="addGroup" function="true"/>
@@ -1584,4 +1407,5 @@
 			<description><![CDATA[Genotype, excluding the format specifier]]></description>
 		</element>
+		<element name="toVector" type="Vector"/>
 		<element name="getConverted" function="true" type="Geno">
 			<arguments>
@@ -1601,4 +1425,9 @@
 			<arguments>
 				<argument name="genotype" type="string"/>
+			</arguments>
+		</element>
+		<element name="newFromVector" function="true" type="Geno">
+			<arguments>
+				<argument type="Vector"/>
 			</arguments>
 		</element>
@@ -1691,15 +1520,15 @@
 		</element>
 		<element name="mutate" function="true" type="void"><arguments/></element>
-		<element name="newFromCreature" function="true">
+		<element name="newFromCreature" function="true" type="Genotype">
 			<arguments>
 				<argument name="creature" type="Creature"/>
 			</arguments>
 		</element>
-		<element name="newFromGeno" function="true">
+		<element name="newFromGeno" function="true" type="Genotype">
 			<arguments>
 				<argument name="geno" type="Geno"/>
 			</arguments>
 		</element>
-		<element name="newFromString" function="true">
+		<element name="newFromString" function="true" type="Genotype">
 			<arguments>
 				<argument name="genotype" type="string"/>
@@ -1805,4 +1634,5 @@
 		<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"/>
@@ -2066,4 +1896,27 @@
 		</element>
 	</type>
+	<type name="ModelGeometry" context="Global context">
+<description><![CDATA[Example usage:
+Simulator.print(ModelGeometry.forModel(Model.newFromString("//0\np:sh=1\n")).area());
+
+ModelGeometry.geom_density refers to the global simulator parameter (also available in GUI).
+To set geom_density for individual ModelGeometry objects:
+var mg=ModelGeometry.forModel(GenePools[0][0].getModel()); mg.geom_density=2; GenePools[0][0].user1=mg.area();
+]]></description>
+		<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="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>
+			<arguments>
+				<argument type="Model"/>
+			</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>
@@ -2234,5 +2087,5 @@
 			</arguments>
 		</element>
-		<element name="getClass" function="true">
+		<element name="getClass" function="true" type="NeuroClass">
 			<arguments>
 				<argument name="class name" type="string"/>
@@ -2511,231 +2364,4 @@
    time (t) float 0..6.28319]]></description>
 		</element>
-		<element name="ncl_Mzm" type="integer" min="0" max="1">
-			<description><![CDATA[Helps framstick navigate through a maze. This acts as a memory of already visited places. Returns 1 if the framstick has already visited current block, 0 otherwise. The memory is not volatile.
-
-Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="ncl_OThr" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   does not provide output value
-   should be located on a Joint
-]]></description>
-		</element>
-		<element name="ncl_SeeLight" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-
-
-Properties:
-    (flavor) float 0..4]]></description>
-		</element>
-		<element name="ncl_Linb" type="integer" min="0" max="1">
-			<description><![CDATA[output=input(bez sumowania)
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="ncl_Delay" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   delay time (in steps) (t) integer 1..1000]]></description>
-		</element>
-		<element name="ncl_ntest" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   provides output value
-   should be located on a Joint
-]]></description>
-		</element>
-		<element name="ncl_WarnLR" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Maximum distance signal is sensed  (maxDist) float 1..1000]]></description>
-		</element>
-		<element name="ncl_SeeLight2" type="integer" min="0" max="1">
-			<description><![CDATA[Returns the average signal intensity of all nearby transmitters. Unlike "SeeLight", signals do not attenuate over distance (however, the maximal signal distance is limited by the "range" parameter).
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-
-
-Properties:
-    (range) float 0..100]]></description>
-		</element>
-		<element name="ncl_FeelInjury" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   supports any number of inputs
-   does not provide output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="ncl_PIDV" type="integer" min="0" max="1">
-			<description><![CDATA[PID Regulator (velocity/incremental form)
-
-Characteristics:
-   uses single input
-   provides output value
-   does not require location in body
-
-
-Properties:
-   K (k) float 0.01..100
-   Ti (ti) float 0.01..100
-   Td (td) float 0.01..100]]></description>
-		</element>
-		<element name="ncl_Lin" type="integer" min="0" max="1">
-			<description><![CDATA[output=input
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="ncl_WarnDD" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Maximum distance signal is sensed  (maxDist) float 1..1000]]></description>
-		</element>
-		<element name="ncl_Sf" type="integer" min="0" max="1">
-			<description><![CDATA[Detects only food, not other creatures
-(in experiments with food in group #1)
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-]]></description>
-		</element>
-		<element name="ncl_Nn" type="integer" min="0" max="1">
-			<description><![CDATA[Propagates weighted inputs onto the output, but occassionally generates a random value
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Error rate (e) float 0..0.1]]></description>
-		</element>
-		<element name="ncl_Rdr" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   does not provide output value
-   does not require location in body
-
-
-Properties:
-    ()]]></description>
-		</element>
-		<element name="ncl_WarnDist" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Maximum distance signal is sensed  (maxDist) float 1..1000]]></description>
-		</element>
-		<element name="ncl_Cmp" type="integer" min="0" max="1">
-			<description><![CDATA[Helps framstick navigate through a maze. Output returns 1 if there is a free space in the direction where the joint to which the neuron is attahced points, 0 otherwise. NOTE: This neuron *must* be attached to a *joint*.
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-]]></description>
-		</element>
-		<element name="ncl_Light" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   supports any number of inputs
-   does not provide output value
-   should be located on a Part
-
-
-Properties:
-    (flavor) float 0..4]]></description>
-		</element>
-		<element name="ncl_Thr" type="integer" min="0" max="1">
-			<description><![CDATA[if (input>=t) then output=hi else output=lo
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   threshold (t) float
-   low output value (lo) float
-   high output value (hi) float]]></description>
-		</element>
-		<element name="ncl_PIDP" type="integer" min="0" max="1">
-			<description><![CDATA[PID Regulator (positional/full value form)
-
-Characteristics:
-   uses single input
-   provides output value
-   does not require location in body
-
-
-Properties:
-   K (k) float 0.01..100
-   Ti (ti) float 0.01..100
-   Td (td) float 0.01..100]]></description>
-		</element>
-		<element name="ncl_ptest" type="integer" min="0" max="1">
-			<description><![CDATA[different parameter datatypes
-
-Characteristics:
-   uses single input
-   provides output value
-   does not require location in body
-
-
-Properties:
-   first integer (i1) integer
-   first float (f1) float
-   first string (s1) string
-   second integer (i2) integer
-   second float (f2) float
-   second string (s2) string]]></description>
-		</element>
-		<element name="ncl_FF" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   supports any number of inputs
-   does not provide output value
-   should be located on a Part
-]]></description>
-		</element>
 	</type>
 	<type name="NeuroSignals" context="Global context">
@@ -2857,4 +2483,6 @@
 	<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>
@@ -2902,5 +2530,5 @@
 		</element>
 		<element name="clone" function="true" type="Orient"><arguments/></element>
-		<element name="localToWorld" function="true">
+		<element name="localToWorld" function="true" type="XYZ">
 			<arguments>
 				<argument name="point" type="XYZ"/>
@@ -2944,5 +2572,5 @@
 			</arguments>
 		</element>
-		<element name="worldToLocal" function="true">
+		<element name="worldToLocal" function="true" type="XYZ">
 			<arguments>
 				<argument name="point" type="XYZ"/>
@@ -2955,4 +2583,5 @@
 		<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"/>
@@ -2962,4 +2591,8 @@
 		<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="vb" type="float" min="0" max="1" default="0.5"/>
 		<element name="vg" type="float" min="0" max="1" default="0.5"/>
@@ -3001,4 +2634,5 @@
 		</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>
@@ -3019,5 +2653,5 @@
 		<element name="selfmask" type="integer" min="0" max="2147483647" default="0">
 			<description><![CDATA[Collisions between objects can be handled in two ways:
- - standard 'mechanical' collision (simple 'rebound' effect)
+ - standard 'mechanical' collision handler (simple 'rebound' effect)
  - special script handler (On[GROUPNAME]Collision function)
 
@@ -3026,5 +2660,8 @@
 The handler is called once for each creature that collides with the creature from [GROUPNAME].
 
-Collision masks determine which one will be used (none and both are also possible). On each collision, selfmask and othermask of the colliding objects are logically ANDed. 16 lower bits (0xffff) enable the standard handler. 16 higher bits (0xffff0000) enable the custom handler. 
+Collision masks that you set determine which handler will be used (none and both are also possible). On each collision, selfmask and othermask of the colliding objects are logically ANDed.
+If the resulting non-zero value falls into 16 lower bits (0x0000ffff), the standard handler is enabled.
+If the resulting non-zero value falls into 16 higher bits (0xffff0000), the custom handler is enabled.
+
 Examples:
 
@@ -3037,9 +2674,9 @@
 2.Two groups yield more interesting cases. Let us consider the 'standard.expdef' setting:
   Creatures: selfmask=0x10001, othermask=0x20001
-  Food colmask = selfmask=0x20002, othermask=0x10002
+  Food: selfmask=0x20002, othermask=0x10002
 There are three possible scenarios:
 - creature and creature: collision value = 0x10001 & 0x20001 = 1 -> Standard handling will be used (1 is one of the lower 16 bits)
 - food and food: collision value = 0x20002 & 0x10002 = 2 -> As above.
-- creature and food: collision value = (0x10001 & 0x10002) or (0x20002 & 0x20001) = 0x10000 or 0x20000 -> Custom handling will be used (higher 16 bits).
+- creature and food: collision value = (0x10001 & 0x10002) or (0x20002 & 0x20001) = 0x10000 or 0x20000 -> Custom handling will be used (the result falls into higher 16 bits).
 ]]></description>
 		</element>
@@ -3051,15 +2688,15 @@
 			<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="create" function="true" type="Creature">
-			<arguments>
-				<argument name="genotype object or geno object or string genotype" type="untyped"/>
-			</arguments>
-		</element>
 		<element name="createFromGeno" function="true" type="Creature" deprecated="true">
 			<description><![CDATA[Uses the supplied Geno object.
-Deprecated. Use the more universal create() function.]]></description>
+Deprecated. Use the more universal add() function.]]></description>
 			<arguments>
 				<argument type="Geno"/>
@@ -3068,9 +2705,9 @@
 		<element name="createFromGenotype" function="true" type="Creature" deprecated="true">
 			<description><![CDATA[Uses the selected Genotype object.
-Deprecated. Use the more universal create() function.]]></description>
+Deprecated. Use the more universal add() function.]]></description>
 <arguments/></element>
 		<element name="createFromString" function="true" type="Creature" deprecated="true">
 			<description><![CDATA[Uses the supplied string argument.
-Deprecated. Use the more universal create() function.]]></description>
+Deprecated. Use the more universal add() function.]]></description>
 			<arguments>
 				<argument name="genotype" type="string"/>
@@ -3078,5 +2715,5 @@
 		</element>
 		<element name="delete" function="true" type="void">
-			<description><![CDATA[delete creature]]></description>
+			<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"/>
@@ -3099,6 +2736,24 @@
 			</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 creature]]></description>
+			<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"/>
@@ -3129,5 +2784,5 @@
 	<type name="Populations" context="Global context">
 <description><![CDATA[Manages all Creature objects in the experiment, organized in one or more groups.
-Before version 4.0rc4 some operations could only be performed on the "selected" creature (the one pointed to by group/create fields in Populations). Currently, the more convenient and recommended way is to call Creatures's functions that operate directly on the passed objects.
+Before version 4.0rc4 some operations could only be performed on the "selected" creature (the one pointed to by group/creature fields in Populations). Currently, the more convenient and recommended way is to call Creatures's functions that operate directly on the passed objects.
 
 // The old way:
@@ -3148,4 +2803,5 @@
 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="addGroup" function="true" type="Population">
@@ -3167,5 +2823,7 @@
 		<element name="creatBBCollisions" function="true" type="integer" deprecated="true">
 			<description><![CDATA[Checks approximate collisions for the selected creature.
-Returns the collision mask calculated as in the regular simulation. The argument is the collision mask substituted for the selected creature (defaults to group colmask for 0).
+Returns the collision mask calculated as ( creature.selfmask & other_creatures.othermask ).
+Passing non-zero argument is equivalent to setting a temporary selfmask for the current creature.
+
 Deprecated. Use Creature.boundingBoxCollisions()]]></description>
 			<arguments>
@@ -3228,7 +2886,4 @@
 			<description><![CDATA[(for internal use only) use &variablename to create Ref objects.]]></description>
 		</element>
-		<element name="newS" function="true">
-			<description><![CDATA[(for internal use only) use &variablename to create Ref objects.]]></description>
-		</element>
 	</type>
 	<type name="Shapes" context="Global context">
@@ -3332,7 +2987,4 @@
 	<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="aging" type="integer" min="0" max="100000">
-			<description><![CDATA[Idle metabolism doubles after this period (0 disables aging)]]></description>
-		</element>
 		<element name="autosaveperiod" type="integer" min="0" max="100000">
 			<description><![CDATA[Save simulation state once every n-th event
@@ -3347,79 +2999,10 @@
 			<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="boostphase" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[After stagnation has been detected, switches negative selection to "delete worst", doubles "multiple evaluation" and starts another stagnation detection phase.
-"Delete worst" results in extremely quick convergence and high selection pressure, similarly to "local search" optimization techniques.]]></description>
-		</element>
-		<element name="capacity" type="integer" min="0" max="10000">
-			<description><![CDATA[]]></description>
-		</element>
 		<element name="changedProperty" type="integer"/>
 		<element name="changedPropertyId" type="string"/>
 		<element name="cpus" type="integer"/>
-		<element name="cr_c" type="float" min="-10000" max="10000">
-			<description><![CDATA[Constant value added to total fitness]]></description>
-		</element>
-		<element name="cr_di" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of distance in total fitness]]></description>
-		</element>
-		<element name="cr_gl" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of body size (number of parts) in total fitness]]></description>
-		</element>
-		<element name="cr_joints" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of structure size (number of joints) in total fitness]]></description>
-		</element>
-		<element name="cr_life" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of life span in total fitness]]></description>
-		</element>
-		<element name="cr_nncon" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of brain connections in total fitness]]></description>
-		</element>
-		<element name="cr_nnsiz" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of brain size (number of neurons) in total fitness]]></description>
-		</element>
-		<element name="cr_norm" type="integer" min="0" max="1">
-			<description><![CDATA[Normalize each criterion to 0..1 interval before weighting]]></description>
-		</element>
-		<element name="cr_simi" type="integer" min="0" max="1">
-			<description><![CDATA[If enabled, fitness of each genotype will be reduced by its phenotypic similarity to all other genotypes in the gene pool]]></description>
-		</element>
-		<element name="cr_v" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of horizontal velocity in total fitness]]></description>
-		</element>
-		<element name="cr_vpos" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of vertical position in total fitness]]></description>
-		</element>
-		<element name="cr_vvel" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of vertical velocity in total fitness]]></description>
-		</element>
 		<element name="createrr" type="integer" min="0" max="2" default="1"/>
-		<element name="creath" type="float" min="-1" max="50">
-			<description><![CDATA[Vertical position (above the surface) where newborn creatures are placed.
-Negative values are only used in the water area:
-  0   = at the surface
--0.5 = half depth
--1   = just above the bottom]]></description>
-		</element>
-		<element name="creaturesgrouploaded" type="integer">
-			<description><![CDATA[]]></description>
-		</element>
 		<element name="creatwarnfail" type="integer" min="0" max="1">
 			<description><![CDATA[Creatures grown with warnings will not be simulated.]]></description>
-		</element>
-		<element name="delrule" type="integer" min="0" max="2">
-			<description><![CDATA[Negative selection: which genotypes should be removed when we need room for new genotypes in the gene pool]]></description>
-		</element>
-		<element name="e_meta" type="float" min="0" max="1">
-			<description><![CDATA[Each stick consumes this amount of energy in one time step]]></description>
-		</element>
-		<element name="Energy0" type="float" min="0" max="10000">
-			<description><![CDATA[Base starting energy level (for each stick)]]></description>
-		</element>
-		<element name="evalcount" type="integer" min="0" max="1000" default="0">
-			<description><![CDATA[If more than zero:
-- each genotype will be evaluated many times
-- fitness will be averaged
-- fitness standard deviation will be stored in the 'user1' field of a genotype
-- there will be no "Unchanged" genotypes ("Unchanged" value is considered zero).]]></description>
 		</element>
 		<element name="expdef" type="string">
@@ -3613,23 +3196,14 @@
 			<description><![CDATA[mutation: probability of changing a node]]></description>
 		</element>
-		<element name="feed" type="integer" min="0" max="100">
-			<description><![CDATA[Number of energy pieces in the world]]></description>
-		</element>
-		<element name="feede0" type="float" min="0" max="1000">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="feedtrans" type="float" min="0" max="100">
-			<description><![CDATA[]]></description>
+		<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="foodgen" type="string">
-			<description><![CDATA[The default food model is a simple, single part object:
-  //0
-  m:Vstyle=food
-  p:
-(this genotype is used when you leave this field blank).
-You can specify another genotype to create "intelligent" or mobile food.]]></description>
 		</element>
 		<element name="gen_extmutinfo" type="integer" min="0" max="2" default="0">
@@ -3659,4 +3233,7 @@
 			<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>
@@ -3673,4 +3250,13 @@
 		<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"/>
@@ -3679,26 +3265,9 @@
 		</element>
 		<element name="importchk" type="integer" min="0" max="1"/>
-		<element name="initialgen" type="string">
-			<description><![CDATA[The gene pool will be replaced with the supplied genotype when the experiment begins.
-Use the empty initial genotype if you want to preserve the current gene pool.]]></description>
-		</element>
 		<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="log" type="integer" min="0" max="5">
-			<description><![CDATA[Sends [LOG] messages with genotypes count and minimal, average and best gene pool fitness, which can be used to produce graphs by external tools like gnuplot or Excel.
-It also sends the [LOGTITLE] message on experiment initialization, which summarizes most important parameters of your experiment. It can be used as a graph title.]]></description>
-		</element>
-		<element name="makesound" type="integer" min="0" max="1" default="0">
-			<description><![CDATA[Emit sounds on improvements? (frequency depends on the magnitude of improvement)]]></description>
-		</element>
-		<element name="MaxCreated" type="integer" min="0" max="50">
-			<description><![CDATA[]]></description>
-		</element>
 		<element name="maxjoint" type="float" min="0" max="100" default="2.0"/>
-		<element name="minfitness" type="float">
-			<description><![CDATA[Minimal fitness that allows to automatically stop evolution when stagnation detected]]></description>
-		</element>
 		<element name="minjoint" type="float" min="0" max="100" default="0.0"/>
 		<element name="neuadd_N" type="integer" min="0" max="1">
@@ -3948,231 +3517,4 @@
    time (t) float 0..6.28319]]></description>
 		</element>
-		<element name="neuadd_Mzm" type="integer" min="0" max="1">
-			<description><![CDATA[Helps framstick navigate through a maze. This acts as a memory of already visited places. Returns 1 if the framstick has already visited current block, 0 otherwise. The memory is not volatile.
-
-Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="neuadd_OThr" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   does not provide output value
-   should be located on a Joint
-]]></description>
-		</element>
-		<element name="neuadd_SeeLight" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-
-
-Properties:
-    (flavor) float 0..4]]></description>
-		</element>
-		<element name="neuadd_Linb" type="integer" min="0" max="1">
-			<description><![CDATA[output=input(bez sumowania)
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="neuadd_Delay" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   delay time (in steps) (t) integer 1..1000]]></description>
-		</element>
-		<element name="neuadd_ntest" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   provides output value
-   should be located on a Joint
-]]></description>
-		</element>
-		<element name="neuadd_WarnLR" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Maximum distance signal is sensed  (maxDist) float 1..1000]]></description>
-		</element>
-		<element name="neuadd_SeeLight2" type="integer" min="0" max="1">
-			<description><![CDATA[Returns the average signal intensity of all nearby transmitters. Unlike "SeeLight", signals do not attenuate over distance (however, the maximal signal distance is limited by the "range" parameter).
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-
-
-Properties:
-    (range) float 0..100]]></description>
-		</element>
-		<element name="neuadd_FeelInjury" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   supports any number of inputs
-   does not provide output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="neuadd_PIDV" type="integer" min="0" max="1">
-			<description><![CDATA[PID Regulator (velocity/incremental form)
-
-Characteristics:
-   uses single input
-   provides output value
-   does not require location in body
-
-
-Properties:
-   K (k) float 0.01..100
-   Ti (ti) float 0.01..100
-   Td (td) float 0.01..100]]></description>
-		</element>
-		<element name="neuadd_Lin" type="integer" min="0" max="1">
-			<description><![CDATA[output=input
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="neuadd_WarnDD" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Maximum distance signal is sensed  (maxDist) float 1..1000]]></description>
-		</element>
-		<element name="neuadd_Sf" type="integer" min="0" max="1">
-			<description><![CDATA[Detects only food, not other creatures
-(in experiments with food in group #1)
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-]]></description>
-		</element>
-		<element name="neuadd_Nn" type="integer" min="0" max="1">
-			<description><![CDATA[Propagates weighted inputs onto the output, but occassionally generates a random value
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Error rate (e) float 0..0.1]]></description>
-		</element>
-		<element name="neuadd_Rdr" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   does not provide output value
-   does not require location in body
-
-
-Properties:
-    ()]]></description>
-		</element>
-		<element name="neuadd_WarnDist" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Maximum distance signal is sensed  (maxDist) float 1..1000]]></description>
-		</element>
-		<element name="neuadd_Cmp" type="integer" min="0" max="1">
-			<description><![CDATA[Helps framstick navigate through a maze. Output returns 1 if there is a free space in the direction where the joint to which the neuron is attahced points, 0 otherwise. NOTE: This neuron *must* be attached to a *joint*.
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-]]></description>
-		</element>
-		<element name="neuadd_Light" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   supports any number of inputs
-   does not provide output value
-   should be located on a Part
-
-
-Properties:
-    (flavor) float 0..4]]></description>
-		</element>
-		<element name="neuadd_Thr" type="integer" min="0" max="1">
-			<description><![CDATA[if (input>=t) then output=hi else output=lo
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   threshold (t) float
-   low output value (lo) float
-   high output value (hi) float]]></description>
-		</element>
-		<element name="neuadd_PIDP" type="integer" min="0" max="1">
-			<description><![CDATA[PID Regulator (positional/full value form)
-
-Characteristics:
-   uses single input
-   provides output value
-   does not require location in body
-
-
-Properties:
-   K (k) float 0.01..100
-   Ti (ti) float 0.01..100
-   Td (td) float 0.01..100]]></description>
-		</element>
-		<element name="neuadd_ptest" type="integer" min="0" max="1">
-			<description><![CDATA[different parameter datatypes
-
-Characteristics:
-   uses single input
-   provides output value
-   does not require location in body
-
-
-Properties:
-   first integer (i1) integer
-   first float (f1) float
-   first string (s1) string
-   second integer (i2) integer
-   second float (f2) float
-   second string (s2) string]]></description>
-		</element>
-		<element name="neuadd_FF" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   supports any number of inputs
-   does not provide output value
-   should be located on a Part
-]]></description>
-		</element>
 		<element name="ncl_N" type="integer" min="0" max="1">
 			<description><![CDATA[Standard neuron
@@ -4421,231 +3763,4 @@
    time (t) float 0..6.28319]]></description>
 		</element>
-		<element name="ncl_Mzm" type="integer" min="0" max="1">
-			<description><![CDATA[Helps framstick navigate through a maze. This acts as a memory of already visited places. Returns 1 if the framstick has already visited current block, 0 otherwise. The memory is not volatile.
-
-Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="ncl_OThr" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   does not provide output value
-   should be located on a Joint
-]]></description>
-		</element>
-		<element name="ncl_SeeLight" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-
-
-Properties:
-    (flavor) float 0..4]]></description>
-		</element>
-		<element name="ncl_Linb" type="integer" min="0" max="1">
-			<description><![CDATA[output=input(bez sumowania)
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="ncl_Delay" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   delay time (in steps) (t) integer 1..1000]]></description>
-		</element>
-		<element name="ncl_ntest" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   provides output value
-   should be located on a Joint
-]]></description>
-		</element>
-		<element name="ncl_WarnLR" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Maximum distance signal is sensed  (maxDist) float 1..1000]]></description>
-		</element>
-		<element name="ncl_SeeLight2" type="integer" min="0" max="1">
-			<description><![CDATA[Returns the average signal intensity of all nearby transmitters. Unlike "SeeLight", signals do not attenuate over distance (however, the maximal signal distance is limited by the "range" parameter).
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-
-
-Properties:
-    (range) float 0..100]]></description>
-		</element>
-		<element name="ncl_FeelInjury" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   supports any number of inputs
-   does not provide output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="ncl_PIDV" type="integer" min="0" max="1">
-			<description><![CDATA[PID Regulator (velocity/incremental form)
-
-Characteristics:
-   uses single input
-   provides output value
-   does not require location in body
-
-
-Properties:
-   K (k) float 0.01..100
-   Ti (ti) float 0.01..100
-   Td (td) float 0.01..100]]></description>
-		</element>
-		<element name="ncl_Lin" type="integer" min="0" max="1">
-			<description><![CDATA[output=input
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-]]></description>
-		</element>
-		<element name="ncl_WarnDD" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Maximum distance signal is sensed  (maxDist) float 1..1000]]></description>
-		</element>
-		<element name="ncl_Sf" type="integer" min="0" max="1">
-			<description><![CDATA[Detects only food, not other creatures
-(in experiments with food in group #1)
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-]]></description>
-		</element>
-		<element name="ncl_Nn" type="integer" min="0" max="1">
-			<description><![CDATA[Propagates weighted inputs onto the output, but occassionally generates a random value
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Error rate (e) float 0..0.1]]></description>
-		</element>
-		<element name="ncl_Rdr" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   uses single input
-   does not provide output value
-   does not require location in body
-
-
-Properties:
-    ()]]></description>
-		</element>
-		<element name="ncl_WarnDist" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   does not use inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   Maximum distance signal is sensed  (maxDist) float 1..1000]]></description>
-		</element>
-		<element name="ncl_Cmp" type="integer" min="0" max="1">
-			<description><![CDATA[Helps framstick navigate through a maze. Output returns 1 if there is a free space in the direction where the joint to which the neuron is attahced points, 0 otherwise. NOTE: This neuron *must* be attached to a *joint*.
-
-Characteristics:
-   does not use inputs
-   provides output value
-   should be located on a Part
-]]></description>
-		</element>
-		<element name="ncl_Light" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   supports any number of inputs
-   does not provide output value
-   should be located on a Part
-
-
-Properties:
-    (flavor) float 0..4]]></description>
-		</element>
-		<element name="ncl_Thr" type="integer" min="0" max="1">
-			<description><![CDATA[if (input>=t) then output=hi else output=lo
-
-Characteristics:
-   supports any number of inputs
-   provides output value
-   does not require location in body
-
-
-Properties:
-   threshold (t) float
-   low output value (lo) float
-   high output value (hi) float]]></description>
-		</element>
-		<element name="ncl_PIDP" type="integer" min="0" max="1">
-			<description><![CDATA[PID Regulator (positional/full value form)
-
-Characteristics:
-   uses single input
-   provides output value
-   does not require location in body
-
-
-Properties:
-   K (k) float 0.01..100
-   Ti (ti) float 0.01..100
-   Td (td) float 0.01..100]]></description>
-		</element>
-		<element name="ncl_ptest" type="integer" min="0" max="1">
-			<description><![CDATA[different parameter datatypes
-
-Characteristics:
-   uses single input
-   provides output value
-   does not require location in body
-
-
-Properties:
-   first integer (i1) integer
-   first float (f1) float
-   first string (s1) string
-   second integer (i2) integer
-   second float (f2) float
-   second string (s2) string]]></description>
-		</element>
-		<element name="ncl_FF" type="integer" min="0" max="1">
-			<description><![CDATA[Characteristics:
-   supports any number of inputs
-   does not provide output value
-   should be located on a Part
-]]></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>
@@ -4653,8 +3768,4 @@
 		<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="notes" type="string">
-			<description><![CDATA[You can write anything here
-(it will be saved to the experiment file)]]></description>
 		</element>
 		<element name="odeairdrag" type="float" min="0" max="0.5" default="0.01">
@@ -4713,16 +3824,4 @@
 			<description><![CDATA[Overwite existing files or create their backups]]></description>
 		</element>
-		<element name="p_mut" type="float" min="0" max="100">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="p_nop" type="float" min="0" max="100">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="p_xov" type="float" min="0" max="100">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="placement" type="integer" min="0" max="1">
-			<description><![CDATA[For 'Central' placement, newborn creatures are placed at the world center, if possible.]]></description>
-		</element>
 		<element name="populations" type="Populations"/>
 		<element name="randinit" type="float" min="0" max="10" default="0.01">
@@ -4733,15 +3832,6 @@
 If turned off: parameters from previous experiment definition will remain (dangerous).]]></description>
 		</element>
-		<element name="rotation" type="integer" min="0" max="4">
-			<description><![CDATA[Initial heading of newborn creatures]]></description>
-		</element>
 		<element name="running" type="integer" min="0" max="1">
 			<description><![CDATA[useful for synchronizing the user interface state]]></description>
-		</element>
-		<element name="savebest" type="integer" min="0" max="3">
-			<description><![CDATA[Saves (on each improvement) best found genotype or a complete experiment state to a file in scripts_output subdirectory.]]></description>
-		</element>
-		<element name="selrule" type="integer" min="0" max="5">
-			<description><![CDATA[Positive selection: how to choose genotypes for cloning/mutation/crossover]]></description>
 		</element>
 		<element name="signals" type="WorldSignals"/>
@@ -4768,7 +3858,4 @@
 		</element>
 		<element name="slaves" type="SlaveSimulators"/>
-		<element name="stagnation" type="integer" min="0" max="1000000" default="0">
-			<description><![CDATA[No improvement period required to stop simulation (stagnation). 0 disables automatic stopping.]]></description>
-		</element>
 		<element name="symAlphaSteps" type="integer" min="2" max="50" default="20">
 			<description><![CDATA[Default number of samples per full angle (#1)]]></description>
@@ -4785,11 +3872,4 @@
 		<element name="symResultD" type="float"/>
 		<element name="time" type="integer"/>
-		<element name="totaltestedcr" type="integer">
-			<description><![CDATA[Total number of creatures evaluated in the experiment]]></description>
-		</element>
-		<element name="totaltests" type="integer">
-			<description><![CDATA[Total number of evaluations in the experiment.
-This is equivalent to "Evaluated creatures" unless multiple evaluation is activated.]]></description>
-		</element>
 		<element name="touchrange" type="float" min="0" max="100" default="1.0"/>
 		<element name="user" type="untyped"/>
@@ -4818,11 +3898,8 @@
 		</element>
 		<element name="wrldtyp" type="integer" min="0" max="2" default="0"/>
-		<element name="wrldwat" type="float" min="-20" max="50" default="-1.0"/>
-		<element name="xov_mins" type="float" min="0" max="9999">
-			<description><![CDATA[Only genotypes with dissimilarity below this threshold will be crossed over.
-Value of 0 means no crossover restrictions.]]></description>
-		</element>
+		<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="beep" function="true" type="void">
 			<description><![CDATA[Plays a default system sound]]></description>
@@ -4865,8 +3942,4 @@
 		</element>
 		<element name="clear" function="true"/>
-		<element name="cleardata" function="true">
-			<description><![CDATA[Sets the number of instances of each genotype to zero (as if it has never been evaluated).
-Genotype performance values stay intact, yet they are meaningless if a genotype has no instances.]]></description>
-		</element>
 		<element name="crossOver" function="true" type="Geno">
 			<description><![CDATA[returns crossed over genotype]]></description>
@@ -4877,6 +3950,14 @@
 		</element>
 		<element name="eval" function="true" type="void">
-			<arguments>
-				<argument name="script expression" type="string"/>
+			<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>
@@ -4908,4 +3989,10 @@
 			</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>
+			<arguments>
+				<argument type="Model"/>
+			</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>
@@ -5001,76 +4088,7 @@
 			</arguments>
 		</element>
-		<element name="script_2D_layout" function="true">
-			<description><![CDATA[make a 2d layout (coord's provided)]]></description>
-		</element>
-		<element name="script_Alphabetic_symbols" function="true">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="script_Alternative_symbols" function="true">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="script_Brain_simplifier" function="true">
-			<description><![CDATA[Removes all brain neurons that do not influence effectors. Converts genotypes to f0.]]></description>
-		</element>
-		<element name="script_Calculate_symmetry" function="true">
-			<description><![CDATA[Calculate symmetry value and symmetry plane for all genotypes
-(note: may take a long time for complex bodies)]]></description>
-		</element>
-		<element name="script_Creatures_circle" function="true">
-			<description><![CDATA[Arranges living creatures (first population) in a circle, tallest in the middle
-(the tallest one is selected based on the vertical position which should already be measured)]]></description>
-		</element>
-		<element name="script_Dump_creatures" function="true">
-			<description><![CDATA[Dumps coordinates and velocities of all Parts of all living Creatures from group #0]]></description>
-		</element>
-		<element name="script_Food_circle" function="true">
-			<description><![CDATA[Arranges food pieces in a circle]]></description>
-		</element>
-		<element name="script_Food_circle_2" function="true">
-			<description><![CDATA[Arranges food pieces in a circle]]></description>
-		</element>
-		<element name="script_Gallery" function="true">
-			<description><![CDATA[Arranges creatures from the first gene pool in a grid]]></description>
-		</element>
-		<element name="script_Make_f0def_describing_all_neuron_classes" function="true">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="script_Make_neuroshtml_describing_all_neuron_classes" function="true">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="script_Make_regular_shapes" function="true">
-			<description><![CDATA[Make regular shapes (truss, sponge, grid, net)]]></description>
-		</element>
-		<element name="script_Neuro_inspection" function="true">
-			<description><![CDATA[Performs a given number of simulation steps, logs neural states of selected neurons, can also enforce states of selected neurons.
-The log file can be used for further analyses, or to draw plots in gnuplot (see neuro_insp_chart.gp) or another external program.
-See script source for details and settings.]]></description>
-		</element>
-		<element name="script_Neuro_test" function="true">
-			<description><![CDATA[Performs a given number of simulation steps and logs neural states of selected neurons.
-See script source for details and settings.
-]]></description>
-		</element>
-		<element name="script_Neurons_report" function="true">
-			<description><![CDATA[Show all neuron classes and their names]]></description>
-		</element>
-		<element name="script_Print_creatures_coordinates" function="true">
-			<description><![CDATA[Print coordinates of Parts for all creatures from group #0.]]></description>
-		</element>
-		<element name="script_Reload_neuron_definitions" function="true">
-			<description><![CDATA[Reloads scripts/*.neuro files]]></description>
-		</element>
-		<element name="script_Rotate" function="true">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="script_Stabilizacja" function="true">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="script_svd_2D" function="true">
-			<description><![CDATA[make a 2d layout (coord's provided)]]></description>
-		</element>
-		<element name="script_Toy_Spring_Sticks" function="true">
-			<description><![CDATA[Make creature joints look like springs]]></description>
-		</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>
@@ -5111,4 +4129,5 @@
 			</arguments>
 		</element>
+		<element name="volume" function="true" type="float"><arguments/></element>
 		<element name="wrldchg" function="true" type="void"><arguments/></element>
 	</type>
@@ -5206,6 +4225,14 @@
 		</element>
 		<element name="eval" function="true" type="void">
-			<arguments>
-				<argument name="script expression" type="string"/>
+			<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>
@@ -5423,6 +4450,4 @@
 		<element name="st_avg_pos_y" type="float"/>
 		<element name="st_avg_pos_z" type="float"/>
-		<element name="st_avg_selfcol" type="float"/>
-		<element name="st_avg_selfcolstate" type="float"/>
 		<element name="st_avg_size_x" type="float"/>
 		<element name="st_avg_size_y" type="float"/>
@@ -5452,6 +4477,4 @@
 		<element name="st_max_pos_y" type="float"/>
 		<element name="st_max_pos_z" type="float"/>
-		<element name="st_max_selfcol" type="float"/>
-		<element name="st_max_selfcolstate" type="float"/>
 		<element name="st_max_size_x" type="float"/>
 		<element name="st_max_size_y" type="float"/>
@@ -5480,6 +4503,4 @@
 		<element name="st_min_pos_y" type="float"/>
 		<element name="st_min_pos_z" type="float"/>
-		<element name="st_min_selfcol" type="float"/>
-		<element name="st_min_selfcolstate" type="float"/>
 		<element name="st_min_size_x" type="float"/>
 		<element name="st_min_size_y" type="float"/>
@@ -5518,4 +4539,21 @@
 			<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>
+			<arguments>
+				<argument type="string"/>
+				<argument type="string"/>
+			</arguments>
+		</element>
+		<element name="endsWith" function="true" type="integer">
+			<arguments>
+				<argument name="string" type="string"/>
+				<argument name="substring" type="string"/>
 			</arguments>
 		</element>
@@ -5554,4 +4592,9 @@
 			</arguments>
 		</element>
+		<element name="hash" function="true" type="integer">
+			<arguments>
+				<argument type="string"/>
+			</arguments>
+		</element>
 		<element name="indexOf" function="true" type="integer">
 			<description><![CDATA[String.indexOf("abcdef","cd") -> 2
@@ -5631,4 +4674,10 @@
 				<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>
@@ -5709,76 +4758,4 @@
 		<element name="remove" function="true"/>
 		<element name="removeGroup" function="true"/>
-		<element name="script_2D_layout" function="true">
-			<description><![CDATA[make a 2d layout (coord's provided)]]></description>
-		</element>
-		<element name="script_Alphabetic_symbols" function="true">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="script_Alternative_symbols" function="true">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="script_Brain_simplifier" function="true">
-			<description><![CDATA[Removes all brain neurons that do not influence effectors. Converts genotypes to f0.]]></description>
-		</element>
-		<element name="script_Calculate_symmetry" function="true">
-			<description><![CDATA[Calculate symmetry value and symmetry plane for all genotypes
-(note: may take a long time for complex bodies)]]></description>
-		</element>
-		<element name="script_Creatures_circle" function="true">
-			<description><![CDATA[Arranges living creatures (first population) in a circle, tallest in the middle
-(the tallest one is selected based on the vertical position which should already be measured)]]></description>
-		</element>
-		<element name="script_Dump_creatures" function="true">
-			<description><![CDATA[Dumps coordinates and velocities of all Parts of all living Creatures from group #0]]></description>
-		</element>
-		<element name="script_Food_circle" function="true">
-			<description><![CDATA[Arranges food pieces in a circle]]></description>
-		</element>
-		<element name="script_Food_circle_2" function="true">
-			<description><![CDATA[Arranges food pieces in a circle]]></description>
-		</element>
-		<element name="script_Gallery" function="true">
-			<description><![CDATA[Arranges creatures from the first gene pool in a grid]]></description>
-		</element>
-		<element name="script_Make_f0def_describing_all_neuron_classes" function="true">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="script_Make_neuroshtml_describing_all_neuron_classes" function="true">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="script_Make_regular_shapes" function="true">
-			<description><![CDATA[Make regular shapes (truss, sponge, grid, net)]]></description>
-		</element>
-		<element name="script_Neuro_inspection" function="true">
-			<description><![CDATA[Performs a given number of simulation steps, logs neural states of selected neurons, can also enforce states of selected neurons.
-The log file can be used for further analyses, or to draw plots in gnuplot (see neuro_insp_chart.gp) or another external program.
-See script source for details and settings.]]></description>
-		</element>
-		<element name="script_Neuro_test" function="true">
-			<description><![CDATA[Performs a given number of simulation steps and logs neural states of selected neurons.
-See script source for details and settings.
-]]></description>
-		</element>
-		<element name="script_Neurons_report" function="true">
-			<description><![CDATA[Show all neuron classes and their names]]></description>
-		</element>
-		<element name="script_Print_creatures_coordinates" function="true">
-			<description><![CDATA[Print coordinates of Parts for all creatures from group #0.]]></description>
-		</element>
-		<element name="script_Reload_neuron_definitions" function="true">
-			<description><![CDATA[Reloads scripts/*.neuro files]]></description>
-		</element>
-		<element name="script_Rotate" function="true">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="script_Stabilizacja" function="true">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="script_svd_2D" function="true">
-			<description><![CDATA[make a 2d layout (coord's provided)]]></description>
-		</element>
-		<element name="script_Toy_Spring_Sticks" function="true">
-			<description><![CDATA[Make creature joints look like springs]]></description>
-		</element>
 	</type>
 	<type name="Vector" context="Global context">
@@ -5788,4 +4765,5 @@
 v.add(123); v.add("string");]]></description>
 		<element name="avg" type="float"/>
+		<element name="iterator" type="Object"/>
 		<element name="size" type="integer"/>
 		<element name="stdev" type="float">
@@ -5865,5 +4843,5 @@
 		</element>
 		<element name="wrldtyp" type="integer" min="0" max="2" default="0"/>
-		<element name="wrldwat" type="float" min="-20" max="50" default="-1.0"/>
+		<element name="wrldwat" type="float" min="-20" max="200" default="-1.0"/>
 		<element name="wrldchg" function="true" type="void"><arguments/></element>
 	</type>
@@ -6045,144 +5023,9 @@
 	</type>
 	<type name="ExpParams" context="Experiment definition">
-		<element name="aging" type="integer" min="0" max="100000">
-			<description><![CDATA[Idle metabolism doubles after this period (0 disables aging)]]></description>
-		</element>
-		<element name="boostphase" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[After stagnation has been detected, switches negative selection to "delete worst", doubles "multiple evaluation" and starts another stagnation detection phase.
-"Delete worst" results in extremely quick convergence and high selection pressure, similarly to "local search" optimization techniques.]]></description>
-		</element>
-		<element name="capacity" type="integer" min="0" max="10000">
-			<description><![CDATA[]]></description>
-		</element>
 		<element name="changedProperty" type="integer"/>
 		<element name="changedPropertyId" type="string"/>
-		<element name="cr_c" type="float" min="-10000" max="10000">
-			<description><![CDATA[Constant value added to total fitness]]></description>
-		</element>
-		<element name="cr_di" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of distance in total fitness]]></description>
-		</element>
-		<element name="cr_gl" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of body size (number of parts) in total fitness]]></description>
-		</element>
-		<element name="cr_joints" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of structure size (number of joints) in total fitness]]></description>
-		</element>
-		<element name="cr_life" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of life span in total fitness]]></description>
-		</element>
-		<element name="cr_nncon" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of brain connections in total fitness]]></description>
-		</element>
-		<element name="cr_nnsiz" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of brain size (number of neurons) in total fitness]]></description>
-		</element>
-		<element name="cr_norm" type="integer" min="0" max="1">
-			<description><![CDATA[Normalize each criterion to 0..1 interval before weighting]]></description>
-		</element>
-		<element name="cr_simi" type="integer" min="0" max="1">
-			<description><![CDATA[If enabled, fitness of each genotype will be reduced by its phenotypic similarity to all other genotypes in the gene pool]]></description>
-		</element>
-		<element name="cr_v" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of horizontal velocity in total fitness]]></description>
-		</element>
-		<element name="cr_vpos" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of vertical position in total fitness]]></description>
-		</element>
-		<element name="cr_vvel" type="float" min="-10000" max="10000">
-			<description><![CDATA[Weight of vertical velocity in total fitness]]></description>
-		</element>
-		<element name="creath" type="float" min="-1" max="50">
-			<description><![CDATA[Vertical position (above the surface) where newborn creatures are placed.
-Negative values are only used in the water area:
-  0   = at the surface
--0.5 = half depth
--1   = just above the bottom]]></description>
-		</element>
-		<element name="delrule" type="integer" min="0" max="2">
-			<description><![CDATA[Negative selection: which genotypes should be removed when we need room for new genotypes in the gene pool]]></description>
-		</element>
-		<element name="e_meta" type="float" min="0" max="1">
-			<description><![CDATA[Each stick consumes this amount of energy in one time step]]></description>
-		</element>
-		<element name="Energy0" type="float" min="0" max="10000">
-			<description><![CDATA[Base starting energy level (for each stick)]]></description>
-		</element>
-		<element name="evalcount" type="integer" min="0" max="1000" default="0">
-			<description><![CDATA[If more than zero:
-- each genotype will be evaluated many times
-- fitness will be averaged
-- fitness standard deviation will be stored in the 'user1' field of a genotype
-- there will be no "Unchanged" genotypes ("Unchanged" value is considered zero).]]></description>
-		</element>
-		<element name="feed" type="integer" min="0" max="100">
-			<description><![CDATA[Number of energy pieces in the world]]></description>
-		</element>
-		<element name="feede0" type="float" min="0" max="1000">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="feedtrans" type="float" min="0" max="100">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="foodgen" type="string">
-			<description><![CDATA[The default food model is a simple, single part object:
-  //0
-  m:Vstyle=food
-  p:
-(this genotype is used when you leave this field blank).
-You can specify another genotype to create "intelligent" or mobile food.]]></description>
-		</element>
-		<element name="initialgen" type="string">
-			<description><![CDATA[The gene pool will be replaced with the supplied genotype when the experiment begins.
-Use the empty initial genotype if you want to preserve the current gene pool.]]></description>
-		</element>
-		<element name="log" type="integer" min="0" max="5">
-			<description><![CDATA[Sends [LOG] messages with genotypes count and minimal, average and best gene pool fitness, which can be used to produce graphs by external tools like gnuplot or Excel.
-It also sends the [LOGTITLE] message on experiment initialization, which summarizes most important parameters of your experiment. It can be used as a graph title.]]></description>
-		</element>
-		<element name="makesound" type="integer" min="0" max="1" default="0">
-			<description><![CDATA[Emit sounds on improvements? (frequency depends on the magnitude of improvement)]]></description>
-		</element>
-		<element name="MaxCreated" type="integer" min="0" max="50">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="minfitness" type="float">
-			<description><![CDATA[Minimal fitness that allows to automatically stop evolution when stagnation detected]]></description>
-		</element>
-		<element name="p_mut" type="float" min="0" max="100">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="p_nop" type="float" min="0" max="100">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="p_xov" type="float" min="0" max="100">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="placement" type="integer" min="0" max="1">
-			<description><![CDATA[For 'Central' placement, newborn creatures are placed at the world center, if possible.]]></description>
-		</element>
-		<element name="rotation" type="integer" min="0" max="4">
-			<description><![CDATA[Initial heading of newborn creatures]]></description>
-		</element>
-		<element name="savebest" type="integer" min="0" max="3">
-			<description><![CDATA[Saves (on each improvement) best found genotype or a complete experiment state to a file in scripts_output subdirectory.]]></description>
-		</element>
-		<element name="selrule" type="integer" min="0" max="5">
-			<description><![CDATA[Positive selection: how to choose genotypes for cloning/mutation/crossover]]></description>
-		</element>
-		<element name="stagnation" type="integer" min="0" max="1000000" default="0">
-			<description><![CDATA[No improvement period required to stop simulation (stagnation). 0 disables automatic stopping.]]></description>
-		</element>
-		<element name="xov_mins" type="float" min="0" max="9999">
-			<description><![CDATA[Only genotypes with dissimilarity below this threshold will be crossed over.
-Value of 0 means no crossover restrictions.]]></description>
-		</element>
 		<element name="add" function="true"/>
 		<element name="addGroup" function="true"/>
 		<element name="clear" function="true"/>
-		<element name="cleardata" function="true">
-			<description><![CDATA[Sets the number of instances of each genotype to zero (as if it has never been evaluated).
-Genotype performance values stay intact, yet they are meaningless if a genotype has no instances.]]></description>
-		</element>
 		<element name="remove" function="true"/>
 		<element name="removeGroup" function="true"/>
@@ -6191,18 +5034,4 @@
 		<element name="changedProperty" type="integer"/>
 		<element name="changedPropertyId" type="string"/>
-		<element name="creaturesgrouploaded" type="integer">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="notes" type="string">
-			<description><![CDATA[You can write anything here
-(it will be saved to the experiment file)]]></description>
-		</element>
-		<element name="totaltestedcr" type="integer">
-			<description><![CDATA[Total number of creatures evaluated in the experiment]]></description>
-		</element>
-		<element name="totaltests" type="integer">
-			<description><![CDATA[Total number of evaluations in the experiment.
-This is equivalent to "Evaluated creatures" unless multiple evaluation is activated.]]></description>
-		</element>
 		<element name="add" function="true"/>
 		<element name="addGroup" function="true"/>
@@ -6427,15 +5256,15 @@
 		</element>
 		<element name="mutate" function="true" type="void"><arguments/></element>
-		<element name="newFromCreature" function="true">
+		<element name="newFromCreature" function="true" type="Genotype">
 			<arguments>
 				<argument name="creature" type="Creature"/>
 			</arguments>
 		</element>
-		<element name="newFromGeno" function="true">
+		<element name="newFromGeno" function="true" type="Genotype">
 			<arguments>
 				<argument name="geno" type="Geno"/>
 			</arguments>
 		</element>
-		<element name="newFromString" function="true">
+		<element name="newFromString" function="true" type="Genotype">
 			<arguments>
 				<argument name="genotype" type="string"/>
@@ -6548,5 +5377,6 @@
 		<element name="boundingBoxCollisions" function="true" type="integer">
 			<description><![CDATA[Checks approximate collisions for the selected creature.
-Returns the collision mask calculated as in the regular simulation. The argument is the collision mask substituted for the selected creature (defaults to group colmask for 0).]]></description>
+Returns the collision mask calculated as ( creature.selfmask & other_creatures.othermask ).
+Passing non-zero argument is equivalent to setting a temporary selfmask for the current creature.]]></description>
 			<arguments>
 				<argument name="mask" type="integer"/>
@@ -6657,5 +5487,6 @@
 This is a link between a creature's element (part/joint/neuron) and the geometry object (Element.node).
 Calling Element.useXXX() functions connects the static object references (Creature, Model, Part, Joint, Neuro, MechPart, MechJoint) to the proper creature elements. All these objects are invalid before doing that! E.g. you have to call "Element.useCreature()" before referring to "Creature.energy" in your _build() and _update() functions.]]></description>
-		<element name="node" type="integer"/>
+		<element name="node" type="SSGNode"/>
+		<element name="shadow" type="float"/>
 		<element name="useCreature" function="true"/>
 		<element name="useJoint" function="true"/>
@@ -6675,5 +5506,5 @@
 <description><![CDATA[Scene graph access (build and manipulate the 3d object tree)]]></description>
 		<element name="code" type="string"/>
-		<element name="currentNode" type="integer"/>
+		<element name="currentNode" type="SSGNode"/>
 		<element name="defaultStyle" type="string"/>
 		<element name="matrix00" type="float"/>
@@ -6693,10 +5524,10 @@
 		<element name="matrix32" type="float"/>
 		<element name="matrix33" type="float"/>
-		<element name="rootNode" type="integer"/>
-		<element name="updatingNode" type="integer"/>
+		<element name="rootNode" type="SSGNode"/>
+		<element name="updatingNode" type="SSGNode"/>
 		<element name="add" function="true" type="void">
 			<description><![CDATA[add a child node to the current node]]></description>
 			<arguments>
-				<argument name="node" type="integer"/>
+				<argument type="SSGNode"/>
 			</arguments>
 		</element>
@@ -6709,5 +5540,5 @@
 		<element name="dump" function="true" type="void">
 			<arguments>
-				<argument name="node" type="integer"/>
+				<argument name="node" type="SSGNode"/>
 				<argument name="level" type="integer"/>
 			</arguments>
@@ -6715,5 +5546,5 @@
 		<element name="getBranch" function="true" type="integer">
 			<arguments>
-				<argument name="branch node" type="integer"/>
+				<argument name="branch node" type="SSGNode"/>
 				<argument name="branch index" type="integer"/>
 			</arguments>
@@ -6768,5 +5599,5 @@
 			<description><![CDATA[copy current matrix into specified node]]></description>
 			<arguments>
-				<argument name="transform node" type="integer"/>
+				<argument name="transform node" type="SSGNode"/>
 			</arguments>
 		</element>
@@ -6806,4 +5637,5 @@
 		<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"/>
@@ -6816,5 +5648,5 @@
 <description><![CDATA[Loads 3d objects files.
 Visual styles placed in subdirectories (like "matrix") automatically access the parent directory if the file is not found in their subdirectory.]]></description>
-		<element name="loaded" type="integer"/>
+		<element name="loaded" type="SSGNode"/>
 		<element name="load" function="true"/>
 	</type>
@@ -6844,11 +5676,11 @@
 	<type name="MechJoint" context="Visual style definition">
 <description><![CDATA[Current joint properties during the simulation]]></description>
-		<element name="absorient" type="integer"/>
-		<element name="calcorient" type="integer"/>
+		<element name="absorient" type="Orient"/>
+		<element name="calcorient" type="Orient"/>
 		<element name="dx" type="float"/>
 		<element name="dy" type="float"/>
 		<element name="dz" type="float"/>
 		<element name="length" type="float"/>
-		<element name="orient" type="integer"/>
+		<element name="orient" type="Orient"/>
 		<element name="rotstif" type="float"/>
 		<element name="rotstress" type="float"/>
@@ -6863,6 +5695,6 @@
 		<element name="fr" type="float"/>
 		<element name="m" type="float"/>
-		<element name="orient" type="integer"/>
-		<element name="pos" type="integer"/>
+		<element name="orient" type="Orient"/>
+		<element name="pos" type="XYZ"/>
 		<element name="s" type="float"/>
 		<element name="vol" type="float"/>
@@ -6901,4 +5733,5 @@
 		<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"/>
@@ -6908,4 +5741,8 @@
 		<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="vb" type="float" min="0" max="1" default="0.5"/>
 		<element name="vg" type="float" min="0" max="1" default="0.5"/>
@@ -6924,5 +5761,5 @@
 	<type name="VertexBuilder" context="Visual style definition">
 		<element name="material" type="Object"/>
-		<element name="node" type="integer">
+		<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:
 1. newXXX - selects the geometry type (see your OpenGL manual for explanation)
@@ -6962,13 +5799,32 @@
 	</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="changedProperty" type="integer"/>
 		<element name="changedPropertyId" type="string"/>
-		<element name="modelpan" type="integer" min="0" max="3">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="shownames" type="integer" min="0" max="1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="worldpan" type="integer" min="0" max="3">
+		<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="shownames" type="integer" min="0" max="1" default="0">
+			<description><![CDATA[]]></description>
+		</element>
+		<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="worldpan" type="integer" min="0" max="3" default="2">
 			<description><![CDATA[]]></description>
 		</element>
@@ -6989,5 +5845,5 @@
 		<element name="jointshadow" type="float"/>
 		<element name="partshadow" type="float"/>
-		<element name="rootNode" type="integer"/>
+		<element name="rootNode" type="SSGNode"/>
 		<element name="style" type="string">
 			<description><![CDATA[visual style applied to this object]]></description>
@@ -7003,20 +5859,39 @@
 	</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="changedProperty" type="integer"/>
 		<element name="changedPropertyId" type="string"/>
 		<element name="code" type="string"/>
 		<element name="info" type="string"/>
-		<element name="modelpan" type="integer" min="0" max="3">
+		<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"/>
-		<element name="shownames" type="integer" min="0" max="1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="smooth" type="integer" min="0" max="1"/>
+		<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="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="tex" type="integer" min="0" max="2"/>
-		<element name="worldpan" type="integer" min="0" max="3">
+		<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>
@@ -7060,5 +5935,5 @@
 		</element>
 		<element name="wrldtyp" type="integer" min="0" max="2" default="0"/>
-		<element name="wrldwat" type="float" min="-20" max="50" default="-1.0"/>
+		<element name="wrldwat" type="float" min="-20" max="200" default="-1.0"/>
 		<element name="wrldchg" function="true" type="void"><arguments/></element>
 	</type>
@@ -7322,10 +6197,10 @@
 	</type>
 	<type name="ImageExport" context="Command line interface">
-		<element name="imgex_compress" type="integer" min="0" max="100"/>
+		<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">
+		<element name="imgex_maxframes" type="integer" min="0" max="1000000" default="10000">
 			<description><![CDATA[How many frames are to be generated?]]></description>
 		</element>
@@ -7340,5 +6215,5 @@
 (a small value means more frames and smooth animation)]]></description>
 		</element>
-		<element name="imgex_startf" type="integer">
+		<element name="imgex_startf" type="integer" min="0" max="1000000" default="0">
 			<description><![CDATA[Starting number]]></description>
 		</element>
@@ -7407,5 +6282,11 @@
 		<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"/>
@@ -7448,5 +6329,5 @@
 	<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="3"/>
+		<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"/>
@@ -7464,4 +6345,5 @@
 		<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>
@@ -7476,4 +6358,9 @@
 			</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>
@@ -7494,20 +6381,39 @@
 	</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="changedProperty" type="integer"/>
 		<element name="changedPropertyId" type="string"/>
 		<element name="code" type="string"/>
 		<element name="info" type="string"/>
-		<element name="modelpan" type="integer" min="0" max="3">
+		<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"/>
-		<element name="shownames" type="integer" min="0" max="1">
-			<description><![CDATA[]]></description>
-		</element>
-		<element name="smooth" type="integer" min="0" max="1"/>
+		<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="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="tex" type="integer" min="0" max="2"/>
-		<element name="worldpan" type="integer" min="0" max="3">
+		<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>
