Index: /java/Framclipse/com.framsticks.framclipse/res/framscript.xml
===================================================================
--- /java/Framclipse/com.framsticks.framclipse/res/framscript.xml	(revision 640)
+++ /java/Framclipse/com.framsticks.framclipse/res/framscript.xml	(revision 641)
@@ -131,5 +131,7 @@
 		<element name="energ0" type="float" deprecated="true" flags="8226"/>
 		<element name="energy0" type="float"/>
-		<element name="idleen" type="float"/>
+		<element name="idleen" type="float">
+			<description><![CDATA[The amount of energy subtracted from the energy of this creature in each simulation step, as in: cr.energy-=cr.idleen;]]></description>
+		</element>
 		<element name="energy" type="float"/>
 		<element name="perf" type="integer" min="0" max="2">
@@ -148,5 +150,13 @@
 			<description><![CDATA[Current self-collision state. In old versions this was a field, not a function.]]></description>
 <arguments/></element>
-		<element name="lifespan" type="integer"/>
+		<element name="lifespan" type="integer">
+			<description><![CDATA[While the creature's performance measurement is enabled, the creature's lifespan is incremented in "performance sampling period" intervals.]]></description>
+		</element>
+		<element name="steps_after_birth" type="integer">
+			<description><![CDATA["Birth" is the moment when the simulation of a creature starts.]]></description>
+		</element>
+		<element name="steps_in_lifespan" type="integer">
+			<description><![CDATA["Lifespan" is the period during simulation of a creature when its performance measurement is enabled.]]></description>
+		</element>
 		<element name="distance" type="float"/>
 		<element name="c_velocity" type="float"/>
@@ -156,31 +166,38 @@
 		<element name="vertpos" type="float"/>
 		<element name="vertvel" type="float"/>
-		<element name="pos_x" type="float" flags="3">
+		<element name="pos_x" type="float" deprecated="true" flags="8195">
 			<description><![CDATA[(pos_x,pos_y,pos_z) is the point of minimal coordinates ("bottom left corner") of the creature, including imaginary Part sizes (Part.s, usually 1.0). See also: Creature.moveAbs]]></description>
 		</element>
-		<element name="pos_y" type="float" flags="3">
+		<element name="pos_y" type="float" deprecated="true" flags="8195">
 			<description><![CDATA[See Creature.pos_x]]></description>
 		</element>
-		<element name="pos_z" type="float" flags="3">
+		<element name="pos_z" type="float" deprecated="true" flags="8195">
 			<description><![CDATA[See Creature.pos_x]]></description>
 		</element>
-		<element name="size_x" type="float" flags="3">
+		<element name="size_x" type="float" deprecated="true" flags="8195">
 			<description><![CDATA[(size_x,size_y,size_z) are dimensions of the axis-aligned bounding box of the creature, including the imaginary part sizes (Part.s, usually 1.0). A creature consisting of a single default Part has the size of (2.0,2.0,2.0) - twice the Part.s value (like a sphere diameter is twice its radius).
 See also: Creature.moveAbs]]></description>
 		</element>
-		<element name="size_y" type="float" flags="3">
+		<element name="size_y" type="float" deprecated="true" flags="8195">
 			<description><![CDATA[See Creature.size_x]]></description>
 		</element>
-		<element name="size_z" type="float" flags="3">
+		<element name="size_z" type="float" deprecated="true" flags="8195">
 			<description><![CDATA[See Creature.size_x]]></description>
 		</element>
-		<element name="center_x" type="float" flags="1">
+		<element name="center_x" type="float" deprecated="true" flags="8193">
 			<description><![CDATA[Center of gravity]]></description>
 		</element>
-		<element name="center_y" type="float" flags="1">
+		<element name="center_y" type="float" deprecated="true" flags="8193">
 			<description><![CDATA[Center of gravity]]></description>
 		</element>
-		<element name="center_z" type="float" flags="1">
+		<element name="center_z" type="float" deprecated="true" flags="8193">
 			<description><![CDATA[Center of gravity]]></description>
+		</element>
+		<element name="bboxLow" type="XYZ" flags="3"/>
+		<element name="bboxHigh" type="XYZ" flags="3"/>
+		<element name="bboxCenter" type="XYZ" flags="1"/>
+		<element name="bboxSize" type="XYZ" flags="3"/>
+		<element name="centerOfGravity" type="XYZ" flags="3">
+			<description><![CDATA[Only updated once every 'perfperiod' steps!]]></description>
 		</element>
 		<element name="numparts" type="integer" flags="3"/>
@@ -192,6 +209,22 @@
 		<element name="user2" type="untyped" deprecated="true" flags="8192"/>
 		<element name="user3" type="untyped" deprecated="true" flags="8192"/>
-		<element name="move" function="true" type="void" flags="32">
-			<description><![CDATA[Shift the creature by a given vector.]]></description>
+		<element name="move" function="true" type="void" deprecated="true" flags="8224">
+			<description><![CDATA[Replaced by locationMoveBy().]]></description>
+			<arguments>
+				<argument name="dx" type="float"/>
+				<argument name="dy" type="float"/>
+				<argument name="dz" type="float"/>
+			</arguments>
+		</element>
+		<element name="locationMoveBy" function="true" type="void" flags="32">
+			<description><![CDATA[Shift the creature by a given vector (in world coordinates).]]></description>
+			<arguments>
+				<argument name="dx" type="float"/>
+				<argument name="dy" type="float"/>
+				<argument name="dz" type="float"/>
+			</arguments>
+		</element>
+		<element name="moveAbs" function="true" type="void" deprecated="true" flags="8224">
+			<description><![CDATA[Replaced by locationSetBboxLow().]]></description>
 			<arguments>
 				<argument name="x" type="float"/>
@@ -200,14 +233,6 @@
 			</arguments>
 		</element>
-		<element name="moveAbs" function="true" type="void" flags="32">
-			<description><![CDATA[Moves the creature so that its origin (pos_x,pos_y,pos_z) is placed at the given location. The origin is the point of minimal coordinates ("bottom left corner"), including imaginary part sizes (Part.s, usually 1.0).
-Assuming a simple single-stick creature "X" having parts at (0,0,0) and (1,0,0),
-
-origin (pos_x,pos_y,pos_z) = (-1,-1,-1)
-size (size_x,size_y,size_z) = (3,2,2)
-
-The following example places the bottom of a creature at a given location (x,y,z):
-Creature.moveAbs(x-(Creature.size_x/2),y-(Creature.size_y/2),z-1.0)
-(assuming that the part size is 1.0)]]></description>
+		<element name="locationSetBboxLow" function="true" type="void" flags="32">
+			<description><![CDATA[Moves the creature as determined by the "low" corner (the one with the lower coordinate values) of the bounding box of a creature.]]></description>
 			<arguments>
 				<argument name="x" type="float"/>
@@ -216,6 +241,6 @@
 			</arguments>
 		</element>
-		<element name="moveLocal" function="true" type="void" flags="32">
-			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
+		<element name="locationSetBboxCenter" function="true" type="void" flags="32">
+			<description><![CDATA[Moves the creature as determined by the center of the bounding box of a creature.]]></description>
 			<arguments>
 				<argument name="x" type="float"/>
@@ -224,6 +249,22 @@
 			</arguments>
 		</element>
+		<element name="moveLocal" function="true" type="void" deprecated="true" flags="8224">
+			<description><![CDATA[Replaced by locationMoveLocalBy]]></description>
+			<arguments>
+				<argument name="dx" type="float"/>
+				<argument name="dy" type="float"/>
+				<argument name="dz" type="float"/>
+			</arguments>
+		</element>
+		<element name="locationMoveLocalBy" function="true" type="void" flags="32">
+			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part.]]></description>
+			<arguments>
+				<argument name="dx" type="float"/>
+				<argument name="dy" type="float"/>
+				<argument name="dz" type="float"/>
+			</arguments>
+		</element>
 		<element name="localToWorld" function="true" type="XYZ" flags="32">
-			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
+			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part.]]></description>
 			<arguments>
 				<argument name="x" type="float"/>
@@ -233,5 +274,5 @@
 		</element>
 		<element name="worldToLocal" function="true" type="XYZ" flags="32">
-			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
+			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part.]]></description>
 			<arguments>
 				<argument name="x" type="float"/>
@@ -241,5 +282,5 @@
 		</element>
 		<element name="orient" type="Orient" flags="33">
-			<description><![CDATA[By convention, the orientation of the creature is equal to the orientation of its first Part]]></description>
+			<description><![CDATA[By convention, the orientation of the creature is equal to the orientation of its first Part.]]></description>
 		</element>
 		<element name="rotate" function="true" type="void" flags="32">
@@ -260,10 +301,13 @@
 		</element>
 		<element name="drive" type="XYZ" flags="34">
-			<description><![CDATA[Measured in global coordinates]]></description>
-		</element>
-		<element name="localDrive" type="XYZ" flags="34">
+			<description><![CDATA[Measured in global coordinates.]]></description>
+		</element>
+		<element name="driveLocal" type="XYZ" flags="34">
 			<description><![CDATA[Measured in local coordinates, that is, with respect to the current orientation of the creature.
 See also: Creature.orient]]></description>
 		</element>
+		<element name="localDrive" type="XYZ" deprecated="true" flags="8226">
+			<description><![CDATA[This field is now called driveLocal.]]></description>
+		</element>
 		<element name="getPart" function="true" type="Part" flags="32">
 			<arguments>
@@ -311,5 +355,7 @@
 			<description><![CDATA[A Model object that is a copy of the current (temporary) geometry of this creature]]></description>
 		</element>
-		<element name="uid" type="string" flags="33"/>
+		<element name="uid" type="string" flags="1">
+			<description><![CDATA[Unique identifier]]></description>
+		</element>
 		<element name="signals" type="CreatureSignals" flags="35"/>
 		<element name="boundingBoxCollisions" function="true" type="integer" flags="34">
@@ -319,4 +365,16 @@
 			<arguments>
 				<argument name="mask" type="integer"/>
+			</arguments>
+		</element>
+		<element name="checkCollisions" function="true" type="untyped" flags="34">
+			<description><![CDATA[Returns zero if creature does not collide with other creatures.
+Arguments:
+- mask: see boundingBoxCollisions() (temporarily replaces the creature.selfmask if not zero)
+- accuracy:
+ 0 = testing creature bounding boxes
+ 1 = testing creature elements]]></description>
+			<arguments>
+				<argument name="mask" type="integer"/>
+				<argument name="accuracy" type="integer"/>
 			</arguments>
 		</element>
@@ -421,5 +479,7 @@
 		<element name="gnum" type="integer"/>
 		<element name="energy0" type="float"/>
-		<element name="idleen" type="float"/>
+		<element name="idleen" type="float">
+			<description><![CDATA[The amount of energy subtracted from the energy of this creature in each simulation step, as in: cr.energy-=cr.idleen;]]></description>
+		</element>
 		<element name="energy" type="float"/>
 		<element name="perf" type="integer" min="0" max="2">
@@ -435,5 +495,13 @@
 			<description><![CDATA[Enable/disable detection of self-collisions (within a creature body). They can only occur when using the ODE simulation engine. If enabled, the creature will have its sticks collide during lifespan.]]></description>
 		</element>
-		<element name="lifespan" type="integer"/>
+		<element name="lifespan" type="integer">
+			<description><![CDATA[While the creature's performance measurement is enabled, the creature's lifespan is incremented in "performance sampling period" intervals.]]></description>
+		</element>
+		<element name="steps_after_birth" type="integer">
+			<description><![CDATA["Birth" is the moment when the simulation of a creature starts.]]></description>
+		</element>
+		<element name="steps_in_lifespan" type="integer">
+			<description><![CDATA["Lifespan" is the period during simulation of a creature when its performance measurement is enabled.]]></description>
+		</element>
 		<element name="distance" type="float"/>
 		<element name="c_velocity" type="float"/>
@@ -443,13 +511,14 @@
 		<element name="vertpos" type="float"/>
 		<element name="vertvel" type="float"/>
-		<element name="center_x" type="float">
+		<element name="center_x" type="float" deprecated="true" flags="8192">
 			<description><![CDATA[Center of gravity]]></description>
 		</element>
-		<element name="center_y" type="float">
+		<element name="center_y" type="float" deprecated="true" flags="8192">
 			<description><![CDATA[Center of gravity]]></description>
 		</element>
-		<element name="center_z" type="float">
+		<element name="center_z" type="float" deprecated="true" flags="8192">
 			<description><![CDATA[Center of gravity]]></description>
 		</element>
+		<element name="bboxCenter" type="XYZ"/>
 		<element name="data" type="Dictionary" flags="32768"/>
 		<element name="user1" type="untyped" deprecated="true" flags="8192"/>
@@ -457,5 +526,5 @@
 		<element name="user3" type="untyped" deprecated="true" flags="8192"/>
 		<element name="orient" type="Orient" flags="32">
-			<description><![CDATA[By convention, the orientation of the creature is equal to the orientation of its first Part]]></description>
+			<description><![CDATA[By convention, the orientation of the creature is equal to the orientation of its first Part.]]></description>
 		</element>
 		<element name="selfmask" type="integer" min="0" max="2147483647" default="0" flags="32">
@@ -465,5 +534,7 @@
 			<description><![CDATA[Creature's othermask is set according to the Creature's Population.othermask. See Population.selfmask for detailed information about collision handling.]]></description>
 		</element>
-		<element name="uid" type="string" flags="32"/>
+		<element name="uid" type="string">
+			<description><![CDATA[Unique identifier]]></description>
+		</element>
 	</type>
 	<type name="Dictionary" context="Global context">
@@ -503,7 +574,11 @@
 			</arguments>
 		</element>
-		<element name="set" function="true" type="void" flags="256">
+		<element name="set" function="true" type="untyped" flags="256">
 			<description><![CDATA[Set element value for the specified key or index (depending on the argument type: string or int).
-object.set(key,value) can be shortened to object[key]=value]]></description>
+Returns the value previously associated with the given key (or index).
+object.set(key,value) can be shortened to object[key]=value. Literal string keys can use even shorter notation: object->key=value instead of object.set("key",value)
+Note the difference in the returned value:
+  var old_value=object.set("key",new_value); //'old_value' gets the value previously associated with "key"
+  var x=object["key"]=new_value; //'x' becomes 'new_value', consistently with the semantics of the assignment operator. The value previously associated with "key" is lost.]]></description>
 			<arguments>
 				<argument name="key" type="untyped"/>
@@ -585,5 +660,7 @@
 			</arguments>
 		</element>
-		<element name="readLine" function="true" type="string" flags="32"><arguments/></element>
+		<element name="readLine" function="true" type="string" flags="32">
+			<description><![CDATA[Returns the next line read from file or null when there are no more lines.]]></description>
+<arguments/></element>
 		<element name="readObject" function="true" type="void" flags="32">
 			<arguments>
@@ -1055,8 +1132,8 @@
 
 Properties:
-   Inertia (in) float 0..1
-   Force (fo) float 0..999
-   Sigmoid (si) float -99999..99999
-   State (s) float -1..1]]></description>
+   Inertia (in) float 0..1 (default 0.8)
+   Force (fo) float 0..999 (default 0.04)
+   Sigmoid (si) float -99999..99999 (default 2)
+   State (s) float -1..1 (default 0)]]></description>
 		</element>
 		<element name="neuadd_Nu" type="integer" min="0" max="1">
@@ -1071,8 +1148,8 @@
 
 Properties:
-   Inertia (in) float 0..1
-   Force (fo) float 0..999
-   Sigmoid (si) float -99999..99999
-   State (s) float -1..1]]></description>
+   Inertia (in) float 0..1 (default 0.8)
+   Force (fo) float 0..999 (default 0.04)
+   Sigmoid (si) float -99999..99999 (default 2)
+   State (s) float -1..1 (default 0)]]></description>
 		</element>
 		<element name="neuadd_G" type="integer" min="0" max="1">
@@ -1100,5 +1177,5 @@
 
 Properties:
-   Range (r) float 0..1]]></description>
+   Range (r) float 0..1 (default 1)]]></description>
 		</element>
 		<element name="neuadd_S" type="integer" min="0" max="1">
@@ -1129,6 +1206,6 @@
 
 Properties:
-   power (p) float 0.01..1
-   bending range (r) float 0..1]]></description>
+   power (p) float 0.01..1 (default 0.25)
+   bending range (r) float 0..1 (default 1)]]></description>
 		</element>
 		<element name="neuadd_Rotation_muscle" type="integer" min="0" max="1">
@@ -1140,5 +1217,5 @@
 
 Properties:
-   power (p) float 0.01..1]]></description>
+   power (p) float 0.01..1 (default 1)]]></description>
 		</element>
 		<element name="neuadd_D" type="integer" min="0" max="1">
@@ -1163,6 +1240,6 @@
    number of fuzzy sets (ns) integer
    number of rules (nr) integer
-   fuzzy sets (fs) string
-   fuzzy rules (fr) string]]></description>
+   fuzzy sets (fs) string (default "")
+   fuzzy rules (fr) string (default "")]]></description>
 		</element>
 		<element name="neuadd_VEye" type="integer" min="0" max="1">
@@ -1179,10 +1256,10 @@
    target.y (ty) float
    target.z (tz) float
-   target shape (ts) string
-   perspective (p) float 0.1..10
-   scale (s) float 0.1..100
-   show hidden lines (h) integer 0..1
-   output lines count (each line needs four channels) (o) integer 0..99
-   debug (d) integer 0..1]]></description>
+   target shape (ts) string (default "")
+   perspective (p) float 0.1..10 (default 1)
+   scale (s) float 0.1..100 (default 1)
+   show hidden lines (h) integer 0..1 (default 0)
+   output lines count (each line needs four channels) (o) integer 0..99 (default 0)
+   debug (d) integer 0..1 (default 0)]]></description>
 		</element>
 		<element name="neuadd_VMotor" type="integer" min="0" max="1">
@@ -1215,5 +1292,5 @@
 
 Properties:
-   power (p) float 0.01..1]]></description>
+   power (p) float 0.01..1 (default 1)]]></description>
 		</element>
 		<element name="neuadd_Water" type="integer" min="0" max="1">
@@ -1288,6 +1365,6 @@
 
 Properties:
-   base frequency (f0) float -1..1
-   time (t) float 0..6.28319]]></description>
+   base frequency (f0) float -1..1 (default 0.0628319)
+   time (t) float 0..6.28319 (default 0)]]></description>
 		</element>
 		<element name="f0_nodel_tag" type="integer" min="0" max="1" default="1">
@@ -1573,12 +1650,25 @@
 	</type>
 	<type name="Genotype" context="Global context">
-<description><![CDATA[A Genotype with the associated performance information. Adding genotypes to GenePool makes them accessible in Framsticks GUI and enables the use of GenePool selection methods.
-Before version 4.0rc4 the static Genotype object was used in functions operating on the "selected" genotype. This is now deprecated as all operations can be performed using the more convenient direct access (see GenePools).]]></description>
+<description><![CDATA[A Genotype with the associated performance information. Adding genotypes to GenePool makes them accessible in Framsticks GUI and enables the use of GenePool selection methods. See also GenePools.]]></description>
 		<element name="name" type="string" max="40"/>
 		<element name="genotype" type="string">
-			<description><![CDATA[Genes as a string of characters]]></description>
-		</element>
-		<element name="info" type="string">
-			<description><![CDATA[Additional information or comments]]></description>
+			<description><![CDATA[Genes as a string of characters.]]></description>
+		</element>
+		<element name="info_timestamp" type="float" min="0" max="-1" default="0.0"/>
+		<element name="info_author" type="string" max="100"/>
+		<element name="info_author_ispublic" type="integer" min="0" max="1" default="1"/>
+		<element name="info_email" type="string" max="100"/>
+		<element name="info_email_ispublic" type="integer" min="0" max="1" default="0"/>
+		<element name="info" type="string" min="1" max="1000">
+			<description><![CDATA[Short description of key features of this creature.]]></description>
+		</element>
+		<element name="info_origin" type="integer" min="0" max="4" default="0">
+			<description><![CDATA[Declaration of how this genotype originated.]]></description>
+		</element>
+		<element name="info_how_created" type="string" min="1" max="1000">
+			<description><![CDATA[Description of the process of designing and/or evolving this genotype.]]></description>
+		</element>
+		<element name="info_performance" type="string" min="1" max="1000">
+			<description><![CDATA[Description of why this genotype is special/interesting and how it performs.]]></description>
 		</element>
 		<element name="simi" type="float" flags="3">
@@ -1643,5 +1733,5 @@
 			<description><![CDATA[A Geno object for this Genotype]]></description>
 		</element>
-		<element name="uid" type="string" flags="33">
+		<element name="uid" type="string" flags="1">
 			<description><![CDATA[Unique identifier]]></description>
 		</element>
@@ -1693,6 +1783,14 @@
 	</type>
 	<type name="Interface" context="Global context">
-<description><![CDATA[Used to query for object member descriptions. Example:
-var iface=Interface.makeFrom(someobject); var description="this object has "+iface.size+" properties, first property is "+iface.getId(0);]]></description>
+<description><![CDATA[Used to query for object member descriptions. Examples:
+  Simulator.print(Interface.makeFrom(Populations[0]).getType("perfperiod"));
+  Simulator.print(Interface.makeFrom(Populations[0]).getMin("perfperiod"));
+  Simulator.print(Interface.makeFrom(Populations[0]).getMax("perfperiod"));
+  Simulator.print(Interface.makeFrom(Populations[0]).getDefault("perfperiod"));
+  Simulator.print(Interface.makeFrom(Joint.*).getMax("dx"));
+  Simulator.print(Interface.makeFrom(Part.*).getName("x"));
+  Simulator.print(Interface.makeFrom(Creature.*).getHelp("idleen"));
+  var iface=Interface.makeFrom(someobject); var description="This object has "+iface.size+" properties, first property is "+iface.getId(0);
+]]></description>
 		<element name="name" type="string" flags="257"/>
 		<element name="size" type="integer" flags="257"/>
@@ -1700,40 +1798,55 @@
 		<element name="get" function="true" type="untyped" flags="256">
 			<arguments>
+				<argument name="index or id" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="getId" function="true" type="string" flags="256">
+			<arguments>
+				<argument name="index or id" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="getName" function="true" type="string" flags="256">
+			<arguments>
+				<argument name="index or id" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="getGroup" function="true" type="integer" flags="256">
+			<arguments>
+				<argument name="index or id" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="getGroupName" function="true" type="string" flags="256">
+			<arguments>
 				<argument name="index" type="integer"/>
 			</arguments>
 		</element>
-		<element name="getId" function="true" type="string" flags="256">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getName" function="true" type="string" flags="256">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getGroup" function="true" type="integer" flags="256">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
-		<element name="getGroupName" function="true" type="string" flags="256">
-			<arguments>
-				<argument name="index" type="integer"/>
-			</arguments>
-		</element>
 		<element name="getType" function="true" type="string" flags="256">
 			<arguments>
-				<argument name="index" type="integer"/>
+				<argument name="index or id" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="getMin" function="true" type="string" flags="256">
+			<arguments>
+				<argument name="index or id" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="getMax" function="true" type="string" flags="256">
+			<arguments>
+				<argument name="index or id" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="getDefault" function="true" type="string" flags="256">
+			<arguments>
+				<argument name="index or id" type="untyped"/>
 			</arguments>
 		</element>
 		<element name="getFlags" function="true" type="integer" flags="256">
 			<arguments>
-				<argument name="index" type="integer"/>
+				<argument name="index or id" type="untyped"/>
 			</arguments>
 		</element>
 		<element name="getHelp" function="true" type="string" flags="256">
 			<arguments>
-				<argument name="index" type="integer"/>
+				<argument name="index or id" type="untyped"/>
 			</arguments>
 		</element>
@@ -1761,5 +1874,5 @@
 		<element name="set" function="true" type="void" flags="256">
 			<arguments>
-				<argument name="index" type="integer"/>
+				<argument name="index or id" type="untyped"/>
 				<argument name="value" type="untyped"/>
 			</arguments>
@@ -1767,5 +1880,5 @@
 		<element name="setDefault" function="true" type="void" flags="256">
 			<arguments>
-				<argument name="index" type="integer"/>
+				<argument name="index or id" type="untyped"/>
 			</arguments>
 		</element>
@@ -2045,22 +2158,24 @@
 			</arguments>
 		</element>
-		<element name="size_x" type="float" flags="257">
+		<element name="size_x" type="float" deprecated="true" flags="8449">
 			<description><![CDATA[(size_x,size_y,size_z) are dimensions of the axis-aligned bounding box of the creature, including imaginary Part sizes (Part.s, usually 1.0). A creature consisting of a single default part has the size of (2.0,2.0,2.0) - twice the Part.s value (like a sphere diameter is twice its radius).
 See also: Creature.moveAbs]]></description>
 		</element>
-		<element name="size_y" type="float" flags="257">
+		<element name="size_y" type="float" deprecated="true" flags="8449">
 			<description><![CDATA[See Model.size_x]]></description>
 		</element>
-		<element name="size_z" type="float" flags="257">
+		<element name="size_z" type="float" deprecated="true" flags="8449">
 			<description><![CDATA[See Model.size_x]]></description>
 		</element>
+		<element name="bboxSize" type="XYZ" flags="257"/>
 	</type>
 	<type name="ModelGeometry" context="Global context">
-<description><![CDATA[Example usage:
+<description><![CDATA[Approximately estimates sizes, volume, and area of a Model based on the geometry of its parts.
+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();
+var mg=ModelGeometry.forModel(GenePools[0][0].getModel()); mg.geom_density=2; GenePools[0][0].data->area=mg.area();
 ]]></description>
 		<element name="geom_density" type="float" min="0.01" max="100" default="1.0">
@@ -2093,4 +2208,7 @@
 		</element>
 		<element name="simil_partgeom" type="float" min="0" max="100" default="0.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="simil_fixedZaxis" type="integer" min="0" max="1" default="0">
 			<description><![CDATA[]]></description>
 		</element>
@@ -2355,8 +2473,8 @@
 
 Properties:
-   Inertia (in) float 0..1
-   Force (fo) float 0..999
-   Sigmoid (si) float -99999..99999
-   State (s) float -1..1]]></description>
+   Inertia (in) float 0..1 (default 0.8)
+   Force (fo) float 0..999 (default 0.04)
+   Sigmoid (si) float -99999..99999 (default 2)
+   State (s) float -1..1 (default 0)]]></description>
 		</element>
 		<element name="ncl_Nu" type="integer" min="0" max="1">
@@ -2371,8 +2489,8 @@
 
 Properties:
-   Inertia (in) float 0..1
-   Force (fo) float 0..999
-   Sigmoid (si) float -99999..99999
-   State (s) float -1..1]]></description>
+   Inertia (in) float 0..1 (default 0.8)
+   Force (fo) float 0..999 (default 0.04)
+   Sigmoid (si) float -99999..99999 (default 2)
+   State (s) float -1..1 (default 0)]]></description>
 		</element>
 		<element name="ncl_G" type="integer" min="0" max="1">
@@ -2400,5 +2518,5 @@
 
 Properties:
-   Range (r) float 0..1]]></description>
+   Range (r) float 0..1 (default 1)]]></description>
 		</element>
 		<element name="ncl_S" type="integer" min="0" max="1">
@@ -2429,6 +2547,6 @@
 
 Properties:
-   power (p) float 0.01..1
-   bending range (r) float 0..1]]></description>
+   power (p) float 0.01..1 (default 0.25)
+   bending range (r) float 0..1 (default 1)]]></description>
 		</element>
 		<element name="ncl_Rotation_muscle" type="integer" min="0" max="1">
@@ -2440,5 +2558,5 @@
 
 Properties:
-   power (p) float 0.01..1]]></description>
+   power (p) float 0.01..1 (default 1)]]></description>
 		</element>
 		<element name="ncl_D" type="integer" min="0" max="1">
@@ -2463,6 +2581,6 @@
    number of fuzzy sets (ns) integer
    number of rules (nr) integer
-   fuzzy sets (fs) string
-   fuzzy rules (fr) string]]></description>
+   fuzzy sets (fs) string (default "")
+   fuzzy rules (fr) string (default "")]]></description>
 		</element>
 		<element name="ncl_VEye" type="integer" min="0" max="1">
@@ -2479,10 +2597,10 @@
    target.y (ty) float
    target.z (tz) float
-   target shape (ts) string
-   perspective (p) float 0.1..10
-   scale (s) float 0.1..100
-   show hidden lines (h) integer 0..1
-   output lines count (each line needs four channels) (o) integer 0..99
-   debug (d) integer 0..1]]></description>
+   target shape (ts) string (default "")
+   perspective (p) float 0.1..10 (default 1)
+   scale (s) float 0.1..100 (default 1)
+   show hidden lines (h) integer 0..1 (default 0)
+   output lines count (each line needs four channels) (o) integer 0..99 (default 0)
+   debug (d) integer 0..1 (default 0)]]></description>
 		</element>
 		<element name="ncl_VMotor" type="integer" min="0" max="1">
@@ -2515,5 +2633,5 @@
 
 Properties:
-   power (p) float 0.01..1]]></description>
+   power (p) float 0.01..1 (default 1)]]></description>
 		</element>
 		<element name="ncl_Water" type="integer" min="0" max="1">
@@ -2588,6 +2706,6 @@
 
 Properties:
-   base frequency (f0) float -1..1
-   time (t) float 0..6.28319]]></description>
+   base frequency (f0) float -1..1 (default 0.0628319)
+   time (t) float 0..6.28319 (default 0)]]></description>
 		</element>
 	</type>
@@ -2909,10 +3027,8 @@
 		</element>
 		<element name="em_stat" type="float" min="0" max="1" default="0.0">
-			<description><![CDATA[Energy requirements for a muscle
-resisting an external force]]></description>
+			<description><![CDATA[Energy consumption of a muscle resisting an external force (whether performing or not performing any physical work). Framsticks muscles cannot be "turned off", but they can stop consuming "static" energy when the body part keeps itself in the requested position without stressing the muscle, e.g. when floating in the water or resting freely on the ground.]]></description>
 		</element>
 		<element name="em_dyn" type="float" min="0" max="1" default="0.0">
-			<description><![CDATA[Energy requirements for a muscle
-moving a stick]]></description>
+			<description><![CDATA[Energy consumption of a muscle moving a stick, calculated from the actual work performed by the muscle. Muscles must move to consume this kind of energy.]]></description>
 		</element>
 		<element name="en_assim" type="float" min="0" max="1" default="0.0">
@@ -2954,16 +3070,17 @@
 		</element>
 		<element name="senseCreaturesProperty" function="true" type="float" flags="34">
-			<description><![CDATA[arguments:
+			<description><![CDATA[Arguments:
  - x,y,z (sensor position)
- - property (name, name[index] or Class:id). name[index] can be used for Vector objects inside the user fields, eg "user2[10]"
+ - property (name, data[key] or Class:id). "data[key]" can be used to access Creature's data field (Dictionary) containing named items
  - exclude (creature object)
-works like a smell sensor for a given property (for all creatures in this group except "exclude").
-The following function reproduces the "classic" Framsticks "S" sensor:
-	function smellReceptorValue(x, y, z, exclude)
+
+This function works like a smell sensor (but you can provide any property as the argument, not just "energy") for all creatures in this group except "exclude".
+The following is a sample function that reproduces the "S" sensor which smells creatures from all populations:
+	function smellEnergyAllPopulations(x, y, z, exclude)
 	{
-	var i,s=0;
-	for(i=0; i<Populations.size; i++)
-		s += Populations[0].senseCreaturesProperty(x, y, z, "energy", exclude);
-	return s;
+		var s=0;
+		for(var i=0; i<Populations.size; i++)
+			s += Populations[i].senseCreaturesProperty(x, y, z, "energy", exclude);
+		return s;
 	}]]></description>
 			<arguments>
@@ -2976,4 +3093,6 @@
 		</element>
 		<element name="findCreatureAt" function="true" type="Creature" flags="34">
+			<description><![CDATA[Returns the first Creature object colliding with the line defined by the supplied starting point and the vector. For the purpose of this function, "collision" means "passing closer than 1.0 from any of the Creature's Parts".
+Note that a screen point corresponds to a 3D line going through the screen surface; if you want to identify the object under the mouse cursor, you can use this function because finding an object at a given screen coordinates can be a special case of finding the line-with-object collision.]]></description>
 			<arguments>
 				<argument name="point" type="Vector"/>
@@ -3097,4 +3216,6 @@
 		</element>
 		<element name="findCreatureAt" function="true" type="Creature" flags="34">
+			<description><![CDATA[Returns the first Creature object colliding with the line defined by the supplied starting point and the vector. For the purpose of this function, "collision" means "passing closer than 1.0 from any of the Creature's Parts".
+Note that a screen point corresponds to a 3D line going through the screen surface; if you want to identify the object under the mouse cursor, you can use this function because finding an object at a given screen coordinates can be a special case of finding the line-with-object collision.]]></description>
 			<arguments>
 				<argument name="point" type="Vector"/>
@@ -3150,31 +3271,4 @@
 		</element>
 		<element name="toString" type="string" flags="257"/>
-	</type>
-	<type name="Shapes" context="Global context">
-<description><![CDATA[This object defines appearance of the elements of creatures (applies to the 'wireframe' display mode). Default shape definitions make food's "p:" look like a sphere, and manipulator's "p:" look like a robot hand. The model's Vstyle property is the name of the shape. Developers of experiment definitions can introduce new Vstyle(s) for their expdef and provide appropriate shape definitions by calling Shapes.set(...) in the onExpDefLoad() function.]]></description>
-		<element name="set" function="true" type="void">
-			<description><![CDATA[Arguments:
-
-- "id" - can be
-  "1p_STYLENAME": affects a single-Part creature (without Joints)
-  "p_STYLENAME": affects all normal Parts
-  "j_STYLENAME": affects Joints
-     (STYLENAME corresponds to the Model.Vstyle value, and it can be empty).
-
-- "definition" is a genotype describing the object shape
-
-- "color" can be 0xRRGGBB or one of the special values: -3 = default creature color, -4 = default food color, -5 = default manipulator color
-
-Examples:
-Shapes.set("j_predator","X",0xff0000);//make all predators (i.e. creatures with Vstyle=predator) red
-Shapes.set("1p_food","...some...genotype...",-4);//change food appearance
-Shapes.set("p_","//0\np:0,0,0\np:-0.1,0,0\np:0.1,0,0\np:0,-0.1,0\np:0,0.1,0\np:0,0,-0.1\np:0,0,0.1\nj:0,1\nj:0,2\nj:0,3\nj:0,4\nj:0,5\nj:0,6\n",0);//make Parts' orientation axes visible]]></description>
-			<arguments>
-				<argument name="id" type="string"/>
-				<argument name="definition" type="string"/>
-				<argument name="color" type="integer"/>
-			</arguments>
-		</element>
-		<element name="clear" function="true" type="void"><arguments/></element>
 	</type>
 	<type name="Signal" context="Global context">
@@ -3253,5 +3347,5 @@
 <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="print" function="true" type="void" flags="32">
-			<description><![CDATA[One argument: message to be printed]]></description>
+			<description><![CDATA[One argument: message to be printed.]]></description>
 			<arguments>
 				<argument name="text" type="string"/>
@@ -3271,5 +3365,5 @@
 		</element>
 		<element name="sleep" function="true" type="void" flags="32">
-			<description><![CDATA[Suspends the execution for a specified interval]]></description>
+			<description><![CDATA[Suspends the execution for a specified interval.]]></description>
 			<arguments>
 				<argument name="milliseconds" type="integer"/>
@@ -3277,5 +3371,5 @@
 		</element>
 		<element name="beep" function="true" type="void" flags="32">
-			<description><![CDATA[Plays a default system sound]]></description>
+			<description><![CDATA[Plays the default system sound.]]></description>
 <arguments/></element>
 		<element name="sound" function="true" type="void" flags="32">
@@ -3300,5 +3394,5 @@
 		</element>
 		<element name="load" function="true" type="void" flags="32">
-			<description><![CDATA[Load experiment file (calls onExpLoad() in the current experiment definition). This function is intended to replace the simulator state; the old state is cleared by automatically calling "resetToDefaults()". Use "import" if you don't want to loose the old simulator state.]]></description>
+			<description><![CDATA[Load experiment file (calls onExpLoad() in the current experiment definition). This function is intended to replace the simulator state; the old state is cleared by automatically calling "resetToDefaults()". Use "import" if you don't want to lose the old simulator state. Contents can also be loaded from string by using specifically formed filename: "string://string_contents_to_be_loaded".]]></description>
 			<arguments>
 				<argument name="filename" type="string"/>
@@ -3306,5 +3400,6 @@
 		</element>
 		<element name="import" function="true" type="void" flags="32">
-			<description><![CDATA[Load some data from file. The second optional argument selects what section(s) will be imported:
+			<description><![CDATA[Import some data from file. Contents can also be imported from string by using specifically formed filename: "string://string_contents_to_be_imported".
+The second optional argument selects what section(s) will be imported:
 	1 - experiment (works just like load(), all other bits are ignored, and can reset the simulator state!)
 	2 - genotypes
@@ -3322,5 +3417,5 @@
 		</element>
 		<element name="import" function="true" type="void" flags="32">
-			<description><![CDATA[Equivalent to import(filename,2+4+8+16) - imports genotypes, parameters, genepool and population settings]]></description>
+			<description><![CDATA[Equivalent to import(filename,2+4+8+16) - imports genotypes, parameters, genepool and population settings.]]></description>
 			<arguments>
 				<argument name="filename" type="string"/>
@@ -3328,5 +3423,5 @@
 		</element>
 		<element name="save" function="true" type="untyped" flags="32">
-			<description><![CDATA[Save experiment file (calls onExpSave() in the current experiment definition)]]></description>
+			<description><![CDATA[Save experiment file (calls onExpSave() in the current experiment definition). Providing null filename makes save() return saved data as a text string instead of writing it to the file.]]></description>
 			<arguments>
 				<argument name="filename" type="string"/>
@@ -3334,16 +3429,16 @@
 		</element>
 		<element name="export" function="true" type="untyped" flags="32">
-			<description><![CDATA[Save some data to file. arguments:
-- filename
-- flags: composed of the following bit values:
-   1 - experiment (works just like save() and all other bits are ignored)
-   2 - genotypes
-   4 - simulator parameters
-   8 - simulator stats
-   16 - genepool settings
-   32 - population settings
-   64 - do autosave
-- selected genepool
-- selected population]]></description>
+			<description><![CDATA[Save some data to file. Arguments:
+- filename: can be null, which makes export() return saved data as a text string instead of writing it to the file.
+- options: composed of the following bit values:
+	1 - experiment (works just like save() and all other option bits are ignored)
+	2 - genotypes
+	4 - simulator parameters
+	8 - simulator stats
+	16 - genepool settings
+	32 - population settings
+	64 - do autosave
+- selected genepool, -1 means all genepools
+- selected population, -1 means all populations]]></description>
 			<arguments>
 				<argument name="filename" type="string"/>
@@ -3354,11 +3449,11 @@
 		</element>
 		<element name="start" function="true" type="void" flags="4096">
-			<description><![CDATA[called by the user interface]]></description>
+			<description><![CDATA[Called by the user interface.]]></description>
 <arguments/></element>
 		<element name="stop" function="true" type="void" flags="4096">
-			<description><![CDATA[the expdef script calls this to stop simulation]]></description>
+			<description><![CDATA[The expdef script calls this function to stop simulation.]]></description>
 <arguments/></element>
 		<element name="running" type="integer" min="0" max="1" flags="4130">
-			<description><![CDATA[useful for synchronizing the user interface state]]></description>
+			<description><![CDATA[Useful for synchronizing the user interface state.]]></description>
 		</element>
 		<element name="step" function="true" type="void" flags="32"><arguments/></element>
@@ -3406,5 +3501,5 @@
 		</element>
 		<element name="filecomm" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[Display comments encountered in opened files]]></description>
+			<description><![CDATA[Controls displaying comments encountered in opened files.]]></description>
 		</element>
 		<element name="checkpoint" function="true" type="void" flags="32">
@@ -3412,5 +3507,5 @@
 <arguments/></element>
 		<element name="checkpointData" function="true" type="void" flags="32">
-			<description><![CDATA[In the distributed/paralellized scenario the data passed as argument can be received by the controlling entity (onSlaveCheckpoint in multithreaded master experiment, /simulator/expevent in distributed network simulator)]]></description>
+			<description><![CDATA[In the distributed/paralellized scenario the data passed as argument can be received by the controlling entity (onSlaveCheckpoint in multithreaded master experiment, /simulator/expevent in distributed network simulator).]]></description>
 			<arguments>
 				<argument name="any_data" type="untyped"/>
@@ -3438,16 +3533,18 @@
 		<element name="expstate" type="ExpState" flags="35"/>
 		<element name="genman" type="GenMan" flags="35"/>
-		<element name="loadNeurons" function="true" type="void" flags="32">
-			<arguments>
-				<argument name="directory path" type="string"/>
-			</arguments>
-		</element>
-		<element name="user" type="untyped" flags="34"/>
+		<element name="reloadNeurons" function="true" type="void" flags="32"><arguments/></element>
+		<element name="userdata" type="untyped" flags="34"/>
 		<element name="identity" type="integer" flags="35">
 			<description><![CDATA[-1 for master simulator, 0...count-1 for slaves]]></description>
 		</element>
 		<element name="refreshGUI" function="true" type="void" flags="32">
-			<description><![CDATA[Notify all populations and gene pools content changed.]]></description>
+			<description><![CDATA[Notify that all populations and gene pools content changed.]]></description>
 <arguments/></element>
+		<element name="version_string" type="string" flags="35">
+			<description><![CDATA[Current application version as a string (human-friendly).]]></description>
+		</element>
+		<element name="version_int" type="integer" flags="33">
+			<description><![CDATA[Current application version as an integer.]]></description>
+		</element>
 		<element name="clear" function="true" flags="34"/>
 		<element name="add" function="true" flags="34"/>
@@ -3637,8 +3734,8 @@
 
 Properties:
-   Inertia (in) float 0..1
-   Force (fo) float 0..999
-   Sigmoid (si) float -99999..99999
-   State (s) float -1..1]]></description>
+   Inertia (in) float 0..1 (default 0.8)
+   Force (fo) float 0..999 (default 0.04)
+   Sigmoid (si) float -99999..99999 (default 2)
+   State (s) float -1..1 (default 0)]]></description>
 		</element>
 		<element name="neuadd_Nu" type="integer" min="0" max="1">
@@ -3653,8 +3750,8 @@
 
 Properties:
-   Inertia (in) float 0..1
-   Force (fo) float 0..999
-   Sigmoid (si) float -99999..99999
-   State (s) float -1..1]]></description>
+   Inertia (in) float 0..1 (default 0.8)
+   Force (fo) float 0..999 (default 0.04)
+   Sigmoid (si) float -99999..99999 (default 2)
+   State (s) float -1..1 (default 0)]]></description>
 		</element>
 		<element name="neuadd_G" type="integer" min="0" max="1">
@@ -3682,5 +3779,5 @@
 
 Properties:
-   Range (r) float 0..1]]></description>
+   Range (r) float 0..1 (default 1)]]></description>
 		</element>
 		<element name="neuadd_S" type="integer" min="0" max="1">
@@ -3711,6 +3808,6 @@
 
 Properties:
-   power (p) float 0.01..1
-   bending range (r) float 0..1]]></description>
+   power (p) float 0.01..1 (default 0.25)
+   bending range (r) float 0..1 (default 1)]]></description>
 		</element>
 		<element name="neuadd_Rotation_muscle" type="integer" min="0" max="1">
@@ -3722,5 +3819,5 @@
 
 Properties:
-   power (p) float 0.01..1]]></description>
+   power (p) float 0.01..1 (default 1)]]></description>
 		</element>
 		<element name="neuadd_D" type="integer" min="0" max="1">
@@ -3745,6 +3842,6 @@
    number of fuzzy sets (ns) integer
    number of rules (nr) integer
-   fuzzy sets (fs) string
-   fuzzy rules (fr) string]]></description>
+   fuzzy sets (fs) string (default "")
+   fuzzy rules (fr) string (default "")]]></description>
 		</element>
 		<element name="neuadd_VEye" type="integer" min="0" max="1">
@@ -3761,10 +3858,10 @@
    target.y (ty) float
    target.z (tz) float
-   target shape (ts) string
-   perspective (p) float 0.1..10
-   scale (s) float 0.1..100
-   show hidden lines (h) integer 0..1
-   output lines count (each line needs four channels) (o) integer 0..99
-   debug (d) integer 0..1]]></description>
+   target shape (ts) string (default "")
+   perspective (p) float 0.1..10 (default 1)
+   scale (s) float 0.1..100 (default 1)
+   show hidden lines (h) integer 0..1 (default 0)
+   output lines count (each line needs four channels) (o) integer 0..99 (default 0)
+   debug (d) integer 0..1 (default 0)]]></description>
 		</element>
 		<element name="neuadd_VMotor" type="integer" min="0" max="1">
@@ -3797,5 +3894,5 @@
 
 Properties:
-   power (p) float 0.01..1]]></description>
+   power (p) float 0.01..1 (default 1)]]></description>
 		</element>
 		<element name="neuadd_Water" type="integer" min="0" max="1">
@@ -3870,6 +3967,6 @@
 
 Properties:
-   base frequency (f0) float -1..1
-   time (t) float 0..6.28319]]></description>
+   base frequency (f0) float -1..1 (default 0.0628319)
+   time (t) float 0..6.28319 (default 0)]]></description>
 		</element>
 		<element name="f0_nodel_tag" type="integer" min="0" max="1" default="1">
@@ -4101,8 +4198,8 @@
 
 Properties:
-   Inertia (in) float 0..1
-   Force (fo) float 0..999
-   Sigmoid (si) float -99999..99999
-   State (s) float -1..1]]></description>
+   Inertia (in) float 0..1 (default 0.8)
+   Force (fo) float 0..999 (default 0.04)
+   Sigmoid (si) float -99999..99999 (default 2)
+   State (s) float -1..1 (default 0)]]></description>
 		</element>
 		<element name="ncl_Nu" type="integer" min="0" max="1">
@@ -4117,8 +4214,8 @@
 
 Properties:
-   Inertia (in) float 0..1
-   Force (fo) float 0..999
-   Sigmoid (si) float -99999..99999
-   State (s) float -1..1]]></description>
+   Inertia (in) float 0..1 (default 0.8)
+   Force (fo) float 0..999 (default 0.04)
+   Sigmoid (si) float -99999..99999 (default 2)
+   State (s) float -1..1 (default 0)]]></description>
 		</element>
 		<element name="ncl_G" type="integer" min="0" max="1">
@@ -4146,5 +4243,5 @@
 
 Properties:
-   Range (r) float 0..1]]></description>
+   Range (r) float 0..1 (default 1)]]></description>
 		</element>
 		<element name="ncl_S" type="integer" min="0" max="1">
@@ -4175,6 +4272,6 @@
 
 Properties:
-   power (p) float 0.01..1
-   bending range (r) float 0..1]]></description>
+   power (p) float 0.01..1 (default 0.25)
+   bending range (r) float 0..1 (default 1)]]></description>
 		</element>
 		<element name="ncl_Rotation_muscle" type="integer" min="0" max="1">
@@ -4186,5 +4283,5 @@
 
 Properties:
-   power (p) float 0.01..1]]></description>
+   power (p) float 0.01..1 (default 1)]]></description>
 		</element>
 		<element name="ncl_D" type="integer" min="0" max="1">
@@ -4209,6 +4306,6 @@
    number of fuzzy sets (ns) integer
    number of rules (nr) integer
-   fuzzy sets (fs) string
-   fuzzy rules (fr) string]]></description>
+   fuzzy sets (fs) string (default "")
+   fuzzy rules (fr) string (default "")]]></description>
 		</element>
 		<element name="ncl_VEye" type="integer" min="0" max="1">
@@ -4225,10 +4322,10 @@
    target.y (ty) float
    target.z (tz) float
-   target shape (ts) string
-   perspective (p) float 0.1..10
-   scale (s) float 0.1..100
-   show hidden lines (h) integer 0..1
-   output lines count (each line needs four channels) (o) integer 0..99
-   debug (d) integer 0..1]]></description>
+   target shape (ts) string (default "")
+   perspective (p) float 0.1..10 (default 1)
+   scale (s) float 0.1..100 (default 1)
+   show hidden lines (h) integer 0..1 (default 0)
+   output lines count (each line needs four channels) (o) integer 0..99 (default 0)
+   debug (d) integer 0..1 (default 0)]]></description>
 		</element>
 		<element name="ncl_VMotor" type="integer" min="0" max="1">
@@ -4261,5 +4358,5 @@
 
 Properties:
-   power (p) float 0.01..1]]></description>
+   power (p) float 0.01..1 (default 1)]]></description>
 		</element>
 		<element name="ncl_Water" type="integer" min="0" max="1">
@@ -4334,6 +4431,6 @@
 
 Properties:
-   base frequency (f0) float -1..1
-   time (t) float 0..6.28319]]></description>
+   base frequency (f0) float -1..1 (default 0.0628319)
+   time (t) float 0..6.28319 (default 0)]]></description>
 		</element>
 		<element name="simil_parts" type="float" min="0" max="100" default="0.0">
@@ -4347,4 +4444,7 @@
 		</element>
 		<element name="simil_partgeom" type="float" min="0" max="100" default="0.0">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="simil_fixedZaxis" type="integer" min="0" max="1" default="0">
 			<description><![CDATA[]]></description>
 		</element>
@@ -4416,5 +4516,5 @@
 <description><![CDATA[The Framsticks simulator.]]></description>
 		<element name="print" function="true" type="void" flags="32">
-			<description><![CDATA[One argument: message to be printed]]></description>
+			<description><![CDATA[One argument: message to be printed.]]></description>
 			<arguments>
 				<argument name="text" type="string"/>
@@ -4434,5 +4534,5 @@
 		</element>
 		<element name="sleep" function="true" type="void" flags="32">
-			<description><![CDATA[Suspends the execution for a specified interval]]></description>
+			<description><![CDATA[Suspends the execution for a specified interval.]]></description>
 			<arguments>
 				<argument name="milliseconds" type="integer"/>
@@ -4440,5 +4540,5 @@
 		</element>
 		<element name="beep" function="true" type="void" flags="32">
-			<description><![CDATA[Plays a default system sound]]></description>
+			<description><![CDATA[Plays the default system sound.]]></description>
 <arguments/></element>
 		<element name="sound" function="true" type="void" flags="32">
@@ -4463,5 +4563,5 @@
 		</element>
 		<element name="load" function="true" type="void" flags="32">
-			<description><![CDATA[Load experiment file (calls onExpLoad() in the current experiment definition). This function is intended to replace the simulator state; the old state is cleared by automatically calling "resetToDefaults()". Use "import" if you don't want to loose the old simulator state.]]></description>
+			<description><![CDATA[Load experiment file (calls onExpLoad() in the current experiment definition). This function is intended to replace the simulator state; the old state is cleared by automatically calling "resetToDefaults()". Use "import" if you don't want to lose the old simulator state. Contents can also be loaded from string by using specifically formed filename: "string://string_contents_to_be_loaded".]]></description>
 			<arguments>
 				<argument name="filename" type="string"/>
@@ -4469,5 +4569,6 @@
 		</element>
 		<element name="import" function="true" type="void" flags="32">
-			<description><![CDATA[Load some data from file. The second optional argument selects what section(s) will be imported:
+			<description><![CDATA[Import some data from file. Contents can also be imported from string by using specifically formed filename: "string://string_contents_to_be_imported".
+The second optional argument selects what section(s) will be imported:
 	1 - experiment (works just like load(), all other bits are ignored, and can reset the simulator state!)
 	2 - genotypes
@@ -4485,5 +4586,5 @@
 		</element>
 		<element name="import" function="true" type="void" flags="32">
-			<description><![CDATA[Equivalent to import(filename,2+4+8+16) - imports genotypes, parameters, genepool and population settings]]></description>
+			<description><![CDATA[Equivalent to import(filename,2+4+8+16) - imports genotypes, parameters, genepool and population settings.]]></description>
 			<arguments>
 				<argument name="filename" type="string"/>
@@ -4491,5 +4592,5 @@
 		</element>
 		<element name="save" function="true" type="untyped" flags="32">
-			<description><![CDATA[Save experiment file (calls onExpSave() in the current experiment definition)]]></description>
+			<description><![CDATA[Save experiment file (calls onExpSave() in the current experiment definition). Providing null filename makes save() return saved data as a text string instead of writing it to the file.]]></description>
 			<arguments>
 				<argument name="filename" type="string"/>
@@ -4497,16 +4598,16 @@
 		</element>
 		<element name="export" function="true" type="untyped" flags="32">
-			<description><![CDATA[Save some data to file. arguments:
-- filename
-- flags: composed of the following bit values:
-   1 - experiment (works just like save() and all other bits are ignored)
-   2 - genotypes
-   4 - simulator parameters
-   8 - simulator stats
-   16 - genepool settings
-   32 - population settings
-   64 - do autosave
-- selected genepool
-- selected population]]></description>
+			<description><![CDATA[Save some data to file. Arguments:
+- filename: can be null, which makes export() return saved data as a text string instead of writing it to the file.
+- options: composed of the following bit values:
+	1 - experiment (works just like save() and all other option bits are ignored)
+	2 - genotypes
+	4 - simulator parameters
+	8 - simulator stats
+	16 - genepool settings
+	32 - population settings
+	64 - do autosave
+- selected genepool, -1 means all genepools
+- selected population, -1 means all populations]]></description>
 			<arguments>
 				<argument name="filename" type="string"/>
@@ -4517,11 +4618,11 @@
 		</element>
 		<element name="start" function="true" type="void" flags="4096">
-			<description><![CDATA[called by the user interface]]></description>
+			<description><![CDATA[Called by the user interface.]]></description>
 <arguments/></element>
 		<element name="stop" function="true" type="void" flags="4096">
-			<description><![CDATA[the expdef script calls this to stop simulation]]></description>
+			<description><![CDATA[The expdef script calls this function to stop simulation.]]></description>
 <arguments/></element>
 		<element name="running" type="integer" min="0" max="1" flags="4130">
-			<description><![CDATA[useful for synchronizing the user interface state]]></description>
+			<description><![CDATA[Useful for synchronizing the user interface state.]]></description>
 		</element>
 		<element name="step" function="true" type="void" flags="32"><arguments/></element>
@@ -4569,5 +4670,5 @@
 		</element>
 		<element name="filecomm" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[Display comments encountered in opened files]]></description>
+			<description><![CDATA[Controls displaying comments encountered in opened files.]]></description>
 		</element>
 		<element name="checkpoint" function="true" type="void" flags="32">
@@ -4575,5 +4676,5 @@
 <arguments/></element>
 		<element name="checkpointData" function="true" type="void" flags="32">
-			<description><![CDATA[In the distributed/paralellized scenario the data passed as argument can be received by the controlling entity (onSlaveCheckpoint in multithreaded master experiment, /simulator/expevent in distributed network simulator)]]></description>
+			<description><![CDATA[In the distributed/paralellized scenario the data passed as argument can be received by the controlling entity (onSlaveCheckpoint in multithreaded master experiment, /simulator/expevent in distributed network simulator).]]></description>
 			<arguments>
 				<argument name="any_data" type="untyped"/>
@@ -4601,16 +4702,18 @@
 		<element name="expstate" type="ExpState" flags="35"/>
 		<element name="genman" type="GenMan" flags="35"/>
-		<element name="loadNeurons" function="true" type="void" flags="32">
-			<arguments>
-				<argument name="directory path" type="string"/>
-			</arguments>
-		</element>
-		<element name="user" type="untyped" flags="34"/>
+		<element name="reloadNeurons" function="true" type="void" flags="32"><arguments/></element>
+		<element name="userdata" type="untyped" flags="34"/>
 		<element name="identity" type="integer" flags="35">
 			<description><![CDATA[-1 for master simulator, 0...count-1 for slaves]]></description>
 		</element>
 		<element name="refreshGUI" function="true" type="void" flags="32">
-			<description><![CDATA[Notify all populations and gene pools content changed.]]></description>
+			<description><![CDATA[Notify that all populations and gene pools content changed.]]></description>
 <arguments/></element>
+		<element name="version_string" type="string" flags="35">
+			<description><![CDATA[Current application version as a string (human-friendly).]]></description>
+		</element>
+		<element name="version_int" type="integer" flags="33">
+			<description><![CDATA[Current application version as an integer.]]></description>
+		</element>
 	</type>
 	<type name="SlaveSimulators" context="Global context">
@@ -4815,5 +4918,5 @@
 split("word1---word2-word3","-") returns ["word1","","","word2","word3"]]]></description>
 			<arguments>
-				<argument type="string"/>
+				<argument name="text to split" type="string"/>
 				<argument name="word separator" type="string"/>
 			</arguments>
@@ -4824,5 +4927,5 @@
 split2("word1---word2-word3","-") returns ["word1","word2","word3"]]]></description>
 			<arguments>
-				<argument type="string"/>
+				<argument name="text to split" type="string"/>
 				<argument name="word separator" type="string"/>
 			</arguments>
@@ -5075,4 +5178,31 @@
 <arguments/></element>
 	</type>
+	<type name="WireframeAppearance" context="Global context">
+<description><![CDATA[This object defines appearance of the elements of creatures (applies to the 'wireframe' display mode). Default shape definitions make food's "p:" look like a sphere, and manipulator's "p:" look like a robot hand. The model's Vstyle property is the name of the shape. Developers of experiment definitions can introduce new Vstyle(s) for their expdef and provide appropriate shape definitions by calling WireframeAppearance.set(...) in the onExpDefLoad() function.]]></description>
+		<element name="set" function="true" type="void">
+			<description><![CDATA[Arguments:
+
+- "id" - can be
+  "1p_STYLENAME": affects a single-Part creature (without Joints)
+  "p_STYLENAME": affects all normal Parts
+  "j_STYLENAME": affects Joints
+     (STYLENAME corresponds to the Model.Vstyle value, and it can be empty).
+
+- "definition" is a genotype describing the object shape
+
+- "color" can be 0xRRGGBB or one of the special values: -3 = default creature color, -4 = default food color, -5 = default manipulator color
+
+Examples:
+WireframeAppearance.set("j_predator","X",0xff0000);//make all predators (i.e. creatures with Vstyle=predator) red
+WireframeAppearance.set("1p_food","...some...genotype...",-4);//change food appearance
+WireframeAppearance.set("p_","//0\np:0,0,0\np:-0.1,0,0\np:0.1,0,0\np:0,-0.1,0\np:0,0.1,0\np:0,0,-0.1\np:0,0,0.1\nj:0,1\nj:0,2\nj:0,3\nj:0,4\nj:0,5\nj:0,6\n",0);//make Parts' orientation axes visible]]></description>
+			<arguments>
+				<argument name="id" type="string"/>
+				<argument name="definition" type="string"/>
+				<argument name="color" type="integer"/>
+			</arguments>
+		</element>
+		<element name="clear" function="true" type="void"><arguments/></element>
+	</type>
 	<type name="World" context="Global context">
 <description><![CDATA[Environment properties.]]></description>
@@ -5435,12 +5565,25 @@
 	</type>
 	<type name="this" context="Fitness formula">
-<description><![CDATA[A Genotype with the associated performance information. Adding genotypes to GenePool makes them accessible in Framsticks GUI and enables the use of GenePool selection methods.
-Before version 4.0rc4 the static Genotype object was used in functions operating on the "selected" genotype. This is now deprecated as all operations can be performed using the more convenient direct access (see GenePools).]]></description>
+<description><![CDATA[A Genotype with the associated performance information. Adding genotypes to GenePool makes them accessible in Framsticks GUI and enables the use of GenePool selection methods. See also GenePools.]]></description>
 		<element name="name" type="string" max="40"/>
 		<element name="genotype" type="string">
-			<description><![CDATA[Genes as a string of characters]]></description>
-		</element>
-		<element name="info" type="string">
-			<description><![CDATA[Additional information or comments]]></description>
+			<description><![CDATA[Genes as a string of characters.]]></description>
+		</element>
+		<element name="info_timestamp" type="float" min="0" max="-1" default="0.0"/>
+		<element name="info_author" type="string" max="100"/>
+		<element name="info_author_ispublic" type="integer" min="0" max="1" default="1"/>
+		<element name="info_email" type="string" max="100"/>
+		<element name="info_email_ispublic" type="integer" min="0" max="1" default="0"/>
+		<element name="info" type="string" min="1" max="1000">
+			<description><![CDATA[Short description of key features of this creature.]]></description>
+		</element>
+		<element name="info_origin" type="integer" min="0" max="4" default="0">
+			<description><![CDATA[Declaration of how this genotype originated.]]></description>
+		</element>
+		<element name="info_how_created" type="string" min="1" max="1000">
+			<description><![CDATA[Description of the process of designing and/or evolving this genotype.]]></description>
+		</element>
+		<element name="info_performance" type="string" min="1" max="1000">
+			<description><![CDATA[Description of why this genotype is special/interesting and how it performs.]]></description>
 		</element>
 		<element name="simi" type="float" flags="3">
@@ -5505,5 +5648,5 @@
 			<description><![CDATA[A Geno object for this Genotype]]></description>
 		</element>
-		<element name="uid" type="string" flags="33">
+		<element name="uid" type="string" flags="1">
 			<description><![CDATA[Unique identifier]]></description>
 		</element>
@@ -5575,5 +5718,7 @@
 		<element name="energ0" type="float" deprecated="true" flags="8226"/>
 		<element name="energy0" type="float"/>
-		<element name="idleen" type="float"/>
+		<element name="idleen" type="float">
+			<description><![CDATA[The amount of energy subtracted from the energy of this creature in each simulation step, as in: cr.energy-=cr.idleen;]]></description>
+		</element>
 		<element name="energy" type="float"/>
 		<element name="perf" type="integer" min="0" max="2">
@@ -5592,5 +5737,13 @@
 			<description><![CDATA[Current self-collision state. In old versions this was a field, not a function.]]></description>
 <arguments/></element>
-		<element name="lifespan" type="integer"/>
+		<element name="lifespan" type="integer">
+			<description><![CDATA[While the creature's performance measurement is enabled, the creature's lifespan is incremented in "performance sampling period" intervals.]]></description>
+		</element>
+		<element name="steps_after_birth" type="integer">
+			<description><![CDATA["Birth" is the moment when the simulation of a creature starts.]]></description>
+		</element>
+		<element name="steps_in_lifespan" type="integer">
+			<description><![CDATA["Lifespan" is the period during simulation of a creature when its performance measurement is enabled.]]></description>
+		</element>
 		<element name="distance" type="float"/>
 		<element name="c_velocity" type="float"/>
@@ -5600,31 +5753,38 @@
 		<element name="vertpos" type="float"/>
 		<element name="vertvel" type="float"/>
-		<element name="pos_x" type="float" flags="3">
+		<element name="pos_x" type="float" deprecated="true" flags="8195">
 			<description><![CDATA[(pos_x,pos_y,pos_z) is the point of minimal coordinates ("bottom left corner") of the creature, including imaginary Part sizes (Part.s, usually 1.0). See also: Creature.moveAbs]]></description>
 		</element>
-		<element name="pos_y" type="float" flags="3">
+		<element name="pos_y" type="float" deprecated="true" flags="8195">
 			<description><![CDATA[See Creature.pos_x]]></description>
 		</element>
-		<element name="pos_z" type="float" flags="3">
+		<element name="pos_z" type="float" deprecated="true" flags="8195">
 			<description><![CDATA[See Creature.pos_x]]></description>
 		</element>
-		<element name="size_x" type="float" flags="3">
+		<element name="size_x" type="float" deprecated="true" flags="8195">
 			<description><![CDATA[(size_x,size_y,size_z) are dimensions of the axis-aligned bounding box of the creature, including the imaginary part sizes (Part.s, usually 1.0). A creature consisting of a single default Part has the size of (2.0,2.0,2.0) - twice the Part.s value (like a sphere diameter is twice its radius).
 See also: Creature.moveAbs]]></description>
 		</element>
-		<element name="size_y" type="float" flags="3">
+		<element name="size_y" type="float" deprecated="true" flags="8195">
 			<description><![CDATA[See Creature.size_x]]></description>
 		</element>
-		<element name="size_z" type="float" flags="3">
+		<element name="size_z" type="float" deprecated="true" flags="8195">
 			<description><![CDATA[See Creature.size_x]]></description>
 		</element>
-		<element name="center_x" type="float" flags="1">
+		<element name="center_x" type="float" deprecated="true" flags="8193">
 			<description><![CDATA[Center of gravity]]></description>
 		</element>
-		<element name="center_y" type="float" flags="1">
+		<element name="center_y" type="float" deprecated="true" flags="8193">
 			<description><![CDATA[Center of gravity]]></description>
 		</element>
-		<element name="center_z" type="float" flags="1">
+		<element name="center_z" type="float" deprecated="true" flags="8193">
 			<description><![CDATA[Center of gravity]]></description>
+		</element>
+		<element name="bboxLow" type="XYZ" flags="3"/>
+		<element name="bboxHigh" type="XYZ" flags="3"/>
+		<element name="bboxCenter" type="XYZ" flags="1"/>
+		<element name="bboxSize" type="XYZ" flags="3"/>
+		<element name="centerOfGravity" type="XYZ" flags="3">
+			<description><![CDATA[Only updated once every 'perfperiod' steps!]]></description>
 		</element>
 		<element name="numparts" type="integer" flags="3"/>
@@ -5636,6 +5796,22 @@
 		<element name="user2" type="untyped" deprecated="true" flags="8192"/>
 		<element name="user3" type="untyped" deprecated="true" flags="8192"/>
-		<element name="move" function="true" type="void" flags="32">
-			<description><![CDATA[Shift the creature by a given vector.]]></description>
+		<element name="move" function="true" type="void" deprecated="true" flags="8224">
+			<description><![CDATA[Replaced by locationMoveBy().]]></description>
+			<arguments>
+				<argument name="dx" type="float"/>
+				<argument name="dy" type="float"/>
+				<argument name="dz" type="float"/>
+			</arguments>
+		</element>
+		<element name="locationMoveBy" function="true" type="void" flags="32">
+			<description><![CDATA[Shift the creature by a given vector (in world coordinates).]]></description>
+			<arguments>
+				<argument name="dx" type="float"/>
+				<argument name="dy" type="float"/>
+				<argument name="dz" type="float"/>
+			</arguments>
+		</element>
+		<element name="moveAbs" function="true" type="void" deprecated="true" flags="8224">
+			<description><![CDATA[Replaced by locationSetBboxLow().]]></description>
 			<arguments>
 				<argument name="x" type="float"/>
@@ -5644,14 +5820,6 @@
 			</arguments>
 		</element>
-		<element name="moveAbs" function="true" type="void" flags="32">
-			<description><![CDATA[Moves the creature so that its origin (pos_x,pos_y,pos_z) is placed at the given location. The origin is the point of minimal coordinates ("bottom left corner"), including imaginary part sizes (Part.s, usually 1.0).
-Assuming a simple single-stick creature "X" having parts at (0,0,0) and (1,0,0),
-
-origin (pos_x,pos_y,pos_z) = (-1,-1,-1)
-size (size_x,size_y,size_z) = (3,2,2)
-
-The following example places the bottom of a creature at a given location (x,y,z):
-Creature.moveAbs(x-(Creature.size_x/2),y-(Creature.size_y/2),z-1.0)
-(assuming that the part size is 1.0)]]></description>
+		<element name="locationSetBboxLow" function="true" type="void" flags="32">
+			<description><![CDATA[Moves the creature as determined by the "low" corner (the one with the lower coordinate values) of the bounding box of a creature.]]></description>
 			<arguments>
 				<argument name="x" type="float"/>
@@ -5660,6 +5828,6 @@
 			</arguments>
 		</element>
-		<element name="moveLocal" function="true" type="void" flags="32">
-			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
+		<element name="locationSetBboxCenter" function="true" type="void" flags="32">
+			<description><![CDATA[Moves the creature as determined by the center of the bounding box of a creature.]]></description>
 			<arguments>
 				<argument name="x" type="float"/>
@@ -5668,6 +5836,22 @@
 			</arguments>
 		</element>
+		<element name="moveLocal" function="true" type="void" deprecated="true" flags="8224">
+			<description><![CDATA[Replaced by locationMoveLocalBy]]></description>
+			<arguments>
+				<argument name="dx" type="float"/>
+				<argument name="dy" type="float"/>
+				<argument name="dz" type="float"/>
+			</arguments>
+		</element>
+		<element name="locationMoveLocalBy" function="true" type="void" flags="32">
+			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part.]]></description>
+			<arguments>
+				<argument name="dx" type="float"/>
+				<argument name="dy" type="float"/>
+				<argument name="dz" type="float"/>
+			</arguments>
+		</element>
 		<element name="localToWorld" function="true" type="XYZ" flags="32">
-			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
+			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part.]]></description>
 			<arguments>
 				<argument name="x" type="float"/>
@@ -5677,5 +5861,5 @@
 		</element>
 		<element name="worldToLocal" function="true" type="XYZ" flags="32">
-			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part]]></description>
+			<description><![CDATA[Local coordinates are measured with respect to the position and orientation of the first Part.]]></description>
 			<arguments>
 				<argument name="x" type="float"/>
@@ -5685,5 +5869,5 @@
 		</element>
 		<element name="orient" type="Orient" flags="33">
-			<description><![CDATA[By convention, the orientation of the creature is equal to the orientation of its first Part]]></description>
+			<description><![CDATA[By convention, the orientation of the creature is equal to the orientation of its first Part.]]></description>
 		</element>
 		<element name="rotate" function="true" type="void" flags="32">
@@ -5704,10 +5888,13 @@
 		</element>
 		<element name="drive" type="XYZ" flags="34">
-			<description><![CDATA[Measured in global coordinates]]></description>
-		</element>
-		<element name="localDrive" type="XYZ" flags="34">
+			<description><![CDATA[Measured in global coordinates.]]></description>
+		</element>
+		<element name="driveLocal" type="XYZ" flags="34">
 			<description><![CDATA[Measured in local coordinates, that is, with respect to the current orientation of the creature.
 See also: Creature.orient]]></description>
 		</element>
+		<element name="localDrive" type="XYZ" deprecated="true" flags="8226">
+			<description><![CDATA[This field is now called driveLocal.]]></description>
+		</element>
 		<element name="getPart" function="true" type="Part" flags="32">
 			<arguments>
@@ -5755,5 +5942,7 @@
 			<description><![CDATA[A Model object that is a copy of the current (temporary) geometry of this creature]]></description>
 		</element>
-		<element name="uid" type="string" flags="33"/>
+		<element name="uid" type="string" flags="1">
+			<description><![CDATA[Unique identifier]]></description>
+		</element>
 		<element name="signals" type="CreatureSignals" flags="35"/>
 		<element name="boundingBoxCollisions" function="true" type="integer" flags="34">
@@ -5763,4 +5952,16 @@
 			<arguments>
 				<argument name="mask" type="integer"/>
+			</arguments>
+		</element>
+		<element name="checkCollisions" function="true" type="untyped" flags="34">
+			<description><![CDATA[Returns zero if creature does not collide with other creatures.
+Arguments:
+- mask: see boundingBoxCollisions() (temporarily replaces the creature.selfmask if not zero)
+- accuracy:
+ 0 = testing creature bounding boxes
+ 1 = testing creature elements]]></description>
+			<arguments>
+				<argument name="mask" type="integer"/>
+				<argument name="accuracy" type="integer"/>
 			</arguments>
 		</element>
@@ -5802,5 +6003,5 @@
 	</type>
 	<type name="GeomBuilder" context="Visual style definition">
-<description><![CDATA[Scene graph access (build and manipulate the 3d object tree)]]></description>
+<description><![CDATA[Scene graph access (build and manipulate the 3D object tree).]]></description>
 		<element name="code" type="string"/>
 		<element name="currentNode" type="SSGNode" flags="34"/>
@@ -5844,5 +6045,5 @@
 			</arguments>
 		</element>
-		<element name="matrixScale" function="true" type="void" flags="32">
+		<element name="matrixPosition" function="true" type="void" flags="32">
 			<arguments>
 				<argument name="x" type="float"/>
@@ -5851,5 +6052,5 @@
 			</arguments>
 		</element>
-		<element name="matrixOrient" function="true" type="void" flags="32">
+		<element name="matrixScale" function="true" type="void" flags="32">
 			<arguments>
 				<argument name="x" type="float"/>
@@ -5858,5 +6059,5 @@
 			</arguments>
 		</element>
-		<element name="matrixRotate" function="true" type="void" flags="32">
+		<element name="matrixOrient" function="true" type="void" flags="32">
 			<arguments>
 				<argument name="x" type="float"/>
@@ -5865,4 +6066,11 @@
 			</arguments>
 		</element>
+		<element name="matrixRotate" function="true" type="void" flags="32">
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="z" type="float"/>
+			</arguments>
+		</element>
 		<element name="matrixRotate1" function="true" type="void" flags="32">
 			<arguments>
@@ -5871,4 +6079,10 @@
 		</element>
 		<element name="matrixMove1" function="true" type="void" flags="32">
+			<description><![CDATA[MechPart.pos can be used here]]></description>
+			<arguments>
+				<argument name="xyz" type="integer"/>
+			</arguments>
+		</element>
+		<element name="matrixPosition1" function="true" type="void" flags="32">
 			<description><![CDATA[MechPart.pos can be used here]]></description>
 			<arguments>
@@ -6158,7 +6372,8 @@
 			</arguments>
 		</element>
-		<element name="color" type="integer" flags="34">
-			<description><![CDATA[0xBBGGRR, 0x808080=normal, 0x000000=black, 0xffffff=extra bright]]></description>
-		</element>
+		<element name="color" type="integer" min="0" max="16777215" default="16777215" flags="34">
+			<description><![CDATA[RGB format, 0xRRGGBB in hexadecimal]]></description>
+		</element>
+		<element name="brightness" type="float" min="0" max="2" default="1.0" flags="34"/>
 	</type>
 	<type name="VisualStyle" context="Visual style definition">
