diff --git a/nif.xml b/nif.xml
index 0795fce17002273058af8a71d320431d3626d424..2f22a6aa3010de95f456cbf1fddfe59a9ad513ea 100644
--- a/nif.xml
+++ b/nif.xml
@@ -115,8 +115,8 @@
     <basic name="HeaderString" count="0" niflibtype="HeaderString">
         A variable length string that ends with a newline character (0x0A).  The string starts as follows depending on the version:
 
-        Version &lt;= 10.0.1.0:  &#039;NetImmerse File Format&#039;
-        Version &gt;= 10.1.0.0:  &#039;Gamebryo File Format&#039;
+        Version &lt;= 10.0.1.0:  'NetImmerse File Format'
+        Version &gt;= 10.1.0.0:  'Gamebryo File Format'
     </basic>
 
     <basic name="LineString" count="0" niflibtype="LineString">
@@ -830,8 +830,9 @@
         <option value="9" name="MO_SYS_CHARACTER">A specialized motion used for character controllers</option>
     </enum>
 
-    <enum name="DeactivatorType" storage="byte">
-        Bethesda Havok.
+    <enum name="hkDeactivatorType" storage="byte">
+        Bethesda Havok, based on hkpRigidBodyDeactivator::DeactivatorType.
+        Deactivator Type determines which mechanism Havok will use to classify the body as deactivated.
         <option value="0" name="DEACTIVATOR_INVALID">Invalid</option>
         <option value="1" name="DEACTIVATOR_NEVER">This will force the rigid body to never deactivate.</option>
         <option value="2" name="DEACTIVATOR_SPATIAL">Tells Havok to use a spatial deactivation scheme. This makes use of high and low frequencies of positional motion to determine when deactivation should occur.</option>
@@ -1471,7 +1472,7 @@
     <!-- Don't use vercond in Header, it breaks niflib -->
     <compound name="Header">
         The NIF file header.
-        <add name="Header String" type="HeaderString">&#039;NetImmerse File Format x.x.x.x&#039; (versions &lt;= 10.0.1.2) or &#039;Gamebryo File Format x.x.x.x&#039; (versions &gt;= 10.1.0.0), with x.x.x.x the version written out. Ends with a newline character (0x0A).</add>
+        <add name="Header String" type="HeaderString">'NetImmerse File Format x.x.x.x' (versions &lt;= 10.0.1.2) or 'Gamebryo File Format x.x.x.x' (versions &gt;= 10.1.0.0), with x.x.x.x the version written out. Ends with a newline character (0x0A).</add>
         <add name="Copyright" type="LineString" arr1="3" ver2="3.1.0.0" />
         <add name="Version" type="FileVersion" default="0x04000002" ver1="3.1.0.1">The NIF version, in hexadecimal notation: 0x04000002, 0x0401000C, 0x04020002, 0x04020100, 0x04020200, 0x0A000100, 0x0A010000, 0x0A020000, 0x14000004, ...</add>
         <add name="Endian Type" type="EndianType" default="ENDIAN_LITTLE" ver1="20.0.0.3">Determines the endianness of the data in the file.</add>
@@ -1513,7 +1514,7 @@
         <add name="Value" type="TEMPLATE">The key value.</add>
         <add name="Forward" type="TEMPLATE" cond="ARG == 2">Key forward tangent.</add>
         <add name="Backward" type="TEMPLATE" cond="ARG == 2">The key backward tangent.</add>
-        <add name="TBC" type="TBC" cond="ARG == 3">The key&#039;s TBC.</add>
+        <add name="TBC" type="TBC" cond="ARG == 3">The TBC of the key.</add>
     </compound>
 
     <compound name="KeyGroup" istemplate="1">
@@ -1560,15 +1561,16 @@
         <add name="Flags" type="Flags" ver1="20.1.0.3">Texture mode flags; clamp and filter mode stored in upper byte with 0xYZ00 = clamp mode Y, filter mode Z.</add>
         <add name="Max Anisotropy" type="ushort" ver1="20.5.0.4" />
         <add name="UV Set" type="uint" default="0" ver2="20.0.0.5">The texture coordinate set in NiGeometryData that this texture slot will use.</add>
-        <add name="PS2 L" type="short" default="0" ver2="10.4.0.1">PS2 only; from the Freedom Force docs, &quot;L values can range from 0 to 3 and are used to specify how fast a texture gets blurry&quot;.</add>
-        <add name="PS2 K" type="short" default="-75" ver2="10.4.0.1">PS2 only; from the Freedom Force docs, &quot;The K value is used as an offset into the mipmap levels and can range from -2047 to 2047. Positive values push the mipmap towards being blurry and negative values make the mipmap sharper.&quot; -75 for most v4.0.0.2 meshes.</add>
+        <add name="PS2 L" type="short" default="0" ver2="10.4.0.1">L can range from 0 to 3 and are used to specify how fast a texture gets blurry.</add>
+        <add name="PS2 K" type="short" default="-75" ver2="10.4.0.1">K is used as an offset into the mipmap levels and can range from -2047 to 2047. Positive values push the mipmap towards being blurry and negative values make the mipmap sharper.</add>
         <add name="Unknown1" type="ushort" ver2="4.1.0.12">Unknown, 0 or 0x0101?</add>
-        <add name="Has Texture Transform" type="bool" default="false" ver1="10.1.0.0">Determines whether or not the texture&#039;s coordinates are transformed.</add>
-        <add name="Translation" type="TexCoord" cond="Has Texture Transform" ver1="10.1.0.0">The amount to translate the texture coordinates in each direction?</add>
-        <add name="Tiling" type="TexCoord" cond="Has Texture Transform" ver1="10.1.0.0" default="1.0, 1.0">The number of times the texture is tiled in each direction?</add>
-        <add name="W Rotation" type="float" default="0.0" cond="Has Texture Transform" ver1="10.1.0.0">2D Rotation of texture image around third W axis after U and V.</add>
+        <!-- NiTextureTransform -->
+        <add name="Has Texture Transform" type="bool" default="false" ver1="10.1.0.0">Whether or not the texture coordinates are transformed.</add>
+        <add name="Translation" type="TexCoord" cond="Has Texture Transform" ver1="10.1.0.0">The UV translation.</add>
+        <add name="Scale" type="TexCoord" cond="Has Texture Transform" ver1="10.1.0.0" default="1.0, 1.0">The UV scale.</add>
+        <add name="Rotation" type="float" default="0.0" cond="Has Texture Transform" ver1="10.1.0.0">The W axis rotation in texture space.</add>
         <add name="Transform Method" type="TransformMethod" default="0" cond="Has Texture Transform" ver1="10.1.0.0">Depending on the source, scaling can occur before or after rotation.</add>
-        <add name="Center Offset" type="TexCoord" cond="Has Texture Transform" ver1="10.1.0.0">The offset from the origin?</add>
+        <add name="Center" type="TexCoord" cond="Has Texture Transform" ver1="10.1.0.0">The origin around which the texture rotates.</add>
     </compound>
 
     <compound name="ShaderTexDesc">
@@ -1657,7 +1659,7 @@
         <add name="Triangles" type="Triangle" arr1="Num Triangles" cond="Num Strips == 0" ver2="10.0.1.2">The triangles.</add>
         <add name="Triangles" type="Triangle" arr1="Num Triangles" cond="(Has Faces) &amp;&amp; (Num Strips == 0)" ver1="10.1.0.0">The triangles.</add>
         <add name="Has Bone Indices" type="bool">Do we have bone indices?</add>
-        <add name="Bone Indices" type="byte" arr1="Num Vertices" arr2="Num Weights Per Vertex" cond="Has Bone Indices">Bone indices, they index into &#039;Bones&#039;.</add>
+        <add name="Bone Indices" type="byte" arr1="Num Vertices" arr2="Num Weights Per Vertex" cond="Has Bone Indices">Bone indices, they index into 'Bones'.</add>
 		<add name="Unknown Short" type="ushort" vercond="User Version >= 12">Unknown</add>
 		<add name="Vertex Size" type="byte" ver="20.2.0.7" userver2="100" />
 		<add name="Float Size" type="byte" ver="20.2.0.7" userver2="100" />
@@ -1771,7 +1773,7 @@
         particle array entry
         <add name="Velocity" type="Vector3">Particle velocity</add>
         <add name="Unknown Vector" type="Vector3">Unknown</add>
-        <add name="Lifetime" type="float">The particle&#039;s age.</add>
+        <add name="Lifetime" type="float">The particle age.</add>
         <add name="Lifespan" type="float">Maximum age of the particle.</add>
         <add name="Timestamp" type="float">Timestamp of the last update.</add>
         <add name="Unknown Short" type="ushort" default="0">Unknown short</add>
@@ -1800,9 +1802,9 @@
         	Bit 6: turns collision off (not used for Layer BIPED).
         	Bit 5: sets the SCALED property.
 
-					PART NUMBER is stored in bits 0-4. Used only when Layer is set to BIPED.
+        	PART NUMBER is stored in bits 0-4. Used only when Layer is set to BIPED.
 
-					Part Numbers for Oblivion, Fallout 3, Skyrim:
+        	Part Numbers for Oblivion, Fallout 3, Skyrim:
         	0 - OTHER
         	1 - HEAD
         	2 - BODY
@@ -1834,7 +1836,7 @@
         	28 - ADDONLEG
         	29-31 - NULL
         </add>
-        <add name="Group" type="ushort">Unknown.</add>
+        <add name="Group" type="ushort" />
     </compound>
 
     <compound name="HavokMaterial">
@@ -1865,8 +1867,8 @@
         <add name="Min Force" type="float" default="-1000000.0">Minimum motor force</add>
         <add name="Max Force" type="float" default="1000000.0">Maximum motor force</add>
         <add name="Tau" type="float" default="0">Relative stiffness</add>
-        <add name="Target Velocity" type="float" default="0">Unknown</add>
-        <add name="Use Velocity Target" type="bool" default="0">Unknown</add>
+        <add name="Target Velocity" type="float" default="0" />
+        <add name="Use Velocity Target" type="bool" default="0" />
         <add name="Motor Enabled" type="bool" default="0">Is Motor enabled</add>
     </compound>
 
@@ -2023,9 +2025,9 @@
     </compound>
 
     <compound name="StiffSpringDescriptor">
-        <add name="Pivot A" type="Vector4">Pivot A.</add>
-        <add name="Pivot B" type="Vector4">Pivot B.</add>
-        <add name="Length" type="float">Length.</add>
+        <add name="Pivot A" type="Vector4" />
+        <add name="Pivot B" type="Vector4" />
+        <add name="Length" type="float" />
     </compound>
 
     <compound name="OldSkinData">
@@ -2043,9 +2045,9 @@
 
     <compound name="BoxBV">
         Box Bounding Volume
-        <add name="Center" type="Vector3">Center</add>
-        <add name="Axis" type="Vector3" arr1="3">Axis</add>
-        <add name="Extent" type="float" arr1="3">Extent</add>
+        <add name="Center" type="Vector3" />
+        <add name="Axis" type="Vector3" arr1="3" />
+        <add name="Extent" type="Vector3" />
     </compound>
 
     <compound name="CapsuleBV">
@@ -2063,21 +2065,21 @@
 
     <compound name="BoundingVolume">
         <add name="Collision Type" type="BoundVolumeType">Type of collision data.</add>
-        <add name="Sphere" type="NiBound" cond="Collision Type == 0">Sphere</add>
-        <add name="Box" type="BoxBV" cond="Collision Type == 1">Box</add>
-        <add name="Capsule" type="CapsuleBV" cond="Collision Type == 2">Capsule</add>
-        <add name="Union" type="UnionBV" cond="Collision Type == 4">Union</add>
-        <add name="HalfSpace" type="HalfSpaceBV" cond="Collision Type == 5">Half Space</add>
+        <add name="Sphere" type="NiBound" cond="Collision Type == 0" />
+        <add name="Box" type="BoxBV" cond="Collision Type == 1" />
+        <add name="Capsule" type="CapsuleBV" cond="Collision Type == 2" />
+        <add name="Union" type="UnionBV" cond="Collision Type == 4" />
+        <add name="Half Space" type="HalfSpaceBV" cond="Collision Type == 5" />
     </compound>
 
     <compound name="UnionBV">
-        <add name="Num BV" type="uint">Number of Bounding Volumes.</add>
-        <add name="Bounding Volumes" type="BoundingVolume" arr1="Num BV">Bounding Volume.</add>
+        <add name="Num BV" type="uint" />
+        <add name="Bounding Volumes" type="BoundingVolume" arr1="Num BV" />
     </compound>
 
     <compound name="MorphWeight">
-        <add name="Interpolator" type="Ref" template="NiInterpolator">Interpolator</add>
-        <add name="Weight?" type="float">Weight</add>
+        <add name="Interpolator" type="Ref" template="NiInterpolator" />
+        <add name="Weight" type="float" />
     </compound>
 
     <compound name="ArkTexture">
@@ -2104,7 +2106,7 @@
 
     <compound name="DecalVectorArray">
         Array of Vectors for Decal placement in BSDecalPlacementVectorExtraData.
-        <add name="Num Vectors" type="short">Number of sets</add>
+        <add name="Num Vectors" type="short" />
         <add name="Points" type="Vector3" arr1="Num Vectors">Vector XYZ coords</add>
         <add name="Normals" type="Vector3" arr1="Num Vectors">Vector Normals</add>
     </compound>
@@ -2130,8 +2132,8 @@
     
     <compound name="BoneLOD">
         Stores Bone Level of Detail info in a BSBoneLODExtraData
-        <add name="Distance" type="uint">Distance to cull?</add>
-        <add name="Bone Name" type="string">The bones name</add>
+        <add name="Distance" type="uint" />
+        <add name="Bone Name" type="string" />
     </compound>
 
     <compound name="bhkCMSDMaterial">
@@ -2142,11 +2144,11 @@
 
     <compound name="bhkCMSDBigTris">
         Triangle indices used in pair with "Big Verts" in a bhkCompressedMeshShapeData.
-        <add name="Triangle 1" type="ushort"></add>
-        <add name="Triangle 2" type="ushort"></add>
-        <add name="Triangle 3" type="ushort"></add>
+        <add name="Triangle 1" type="ushort" />
+        <add name="Triangle 2" type="ushort" />
+        <add name="Triangle 3" type="ushort" />
         <add name="Material" type="uint">Always 0?</add>
-        <add name="Welding Info" type="ushort"></add>
+        <add name="Welding Info" type="ushort" />
     </compound>
     
     <compound name="bhkCMSDTransform">
@@ -2157,18 +2159,18 @@
     
     <compound name="bhkCMSDChunk">
         Defines subshape chunks in bhkCompressedMeshShapeData
-        <add name="Translation" type="Vector4">Local translation</add>
+        <add name="Translation" type="Vector4" />
         <add name="Material Index" type="uint">Index of material in bhkCompressedMeshShapeData::Chunk Materials</add>
         <add name="Reference" type="ushort">Always 65535?</add>
         <add name="Transform Index" type="ushort">Index of transformation in bhkCompressedMeshShapeData::Chunk Transforms</add>
-        <add name="Num Vertices" type="uint">Number of compressed vertices</add>
-        <add name="Vertices" type="ushort" arr1="Num Vertices">Compressed vertices</add>
-        <add name="Num Indices" type="uint"></add>
-        <add name="Indices" type="ushort" arr1="Num Indices"></add>
-        <add name="Num Strips" type="uint">Number of compressed strips</add>
-        <add name="Strips" type="ushort" arr1="Num Strips">Compressed strips</add>
-        <add name="Num Indices 2" type="uint">Number of </add>
-        <add name="Indices 2" type="ushort" arr1="Num Indices 2">Compressed </add>
+        <add name="Num Vertices" type="uint" />
+        <add name="Vertices" type="ushort" arr1="Num Vertices" />
+        <add name="Num Indices" type="uint" />
+        <add name="Indices" type="ushort" arr1="Num Indices" />
+        <add name="Num Strips" type="uint" />
+        <add name="Strips" type="ushort" arr1="Num Strips" />
+        <add name="Num Welding Info" type="uint" />
+        <add name="Welding Info" type="ushort" arr1="Num Welding Info" />
     </compound>
 
     <compound name="MalleableDescriptor">
@@ -2262,13 +2264,13 @@
 
     <niobject name="NiPSysCollider" abstract="1" inherit="NiObject">
         Particle system collider.
-        <add name="Bounce" type="float">Defines amount of bounce the collider object has.</add>
-        <add name="Spawn on Collide" type="bool">Unknown.</add>
-        <add name="Die on Collide" type="bool">Kill particles on impact if set to yes.</add>
-        <add name="Spawn Modifier" type="Ref" template="NiPSysSpawnModifier">Link to NiPSysSpawnModifier object?</add>
+        <add name="Bounce" type="float">Amount of bounce for the collider.</add>
+        <add name="Spawn on Collide" type="bool">Spawn particles on impact?</add>
+        <add name="Die on Collide" type="bool">Kill particles on impact?</add>
+        <add name="Spawn Modifier" type="Ref" template="NiPSysSpawnModifier">Spawner to use for the collider.</add>
         <add name="Parent" type="Ptr" template="NiObject">Link to parent.</add>
         <add name="Next Collider" type="Ref" template="NiObject">The next collider.</add>
-        <add name="Collider Object" type="Ptr" template="NiNode">Links to a NiNode that will define where in object space the collider is located/oriented.</add>
+        <add name="Collider Object" type="Ptr" template="NiNode">The object whose position and orientation are the basis of the collider.</add>
     </niobject>
 
     <enum name="BroadPhaseType" storage="byte">
@@ -2323,11 +2325,10 @@
     <niobject name="bhkRigidBody" abstract="0" inherit="bhkEntity">
         This is the default body type for all "normal" usable and static world objects. The "T" suffix
         marks this body as active for translation and rotation, a normal bhkRigidBody ignores those
-        properties. Because the properties are equal, a bhkRigidBody may be renamed
-        into a bhkRigidBodyT and vice-versa.
-        <add name="Collision Response" type="hkResponseType" default="RESPONSE_SIMPLE_CONTACT">The collision response. See hkResponseType for hkpWorld default implementations.</add>
+        properties. Because the properties are equal, a bhkRigidBody may be renamed into a bhkRigidBodyT and vice-versa.
+        <add name="Collision Response" type="hkResponseType" default="RESPONSE_SIMPLE_CONTACT">How the body reacts to collisions. See hkResponseType for hkpWorld default implementations.</add>
         <add name="Unused Byte 1" type="byte">Skipped over when writing Collision Response and Callback Delay.</add>
-        <add name="Process Contact Callback Delay" type="ushort" default="0xffff">Lowers the frequency for processContactCallbacks. A value of 5 means that a callback is raised every 5th frame.</add>
+        <add name="Process Contact Callback Delay" type="ushort" default="0xffff">Lowers the frequency for processContactCallbacks. A value of 5 means that a callback is raised every 5th frame. The default is once every 65535 frames.</add>
         <add name="Unknown Int 1" type="uint">Unknown.</add>
         <add name="Havok Filter Copy" type="HavokFilter">Copy of Havok Filter</add>
         <add name="Unused 2" type="byte" arr1="4">Garbage data from memory. Matches previous Unused value.</add>
@@ -2340,19 +2341,18 @@
         <add name="Rotation" type="hkQuaternion">The rotation Yaw/Pitch/Roll to apply to the body. Only enabled in bhkRigidBodyT objects.</add>
         <add name="Linear Velocity" type="Vector4">Linear velocity.</add>
         <add name="Angular Velocity" type="Vector4">Angular velocity.</add>
-        <add name="Inertia Tensor" type="hkMatrix3">Defines how the mass is distributed among the body.</add>
-        <add name="Center" type="Vector4"> This seems to be used to relocate the object's center of mass. Useful for balancing objects in contraints.</add>
+        <add name="Inertia Tensor" type="hkMatrix3">Defines how the mass is distributed among the body, i.e. how difficult it is to rotate around any given axis.</add>
+        <add name="Center" type="Vector4">The body's center of mass.</add>
         <add name="Mass" type="float" default="1.0">The body's mass in kg. A mass of zero represents an immovable object.</add>
-        <add name="Linear Damping" type="float" default="0.1"> Damping value for linear movement. A value that is too small fixes the object in place.</add>
-        <add name="Angular Damping" type="float" default="0.05"> Damping value for angular movement.</add>
+        <add name="Linear Damping" type="float" default="0.1">Reduces the movement of the body over time. A value of 0.1 will remove 10% of the linear velocity every second.</add>
+        <add name="Angular Damping" type="float" default="0.05">Reduces the movement of the body over time. A value of 0.05 will remove 5% of the angular velocity every second.</add>
         <add name="Time Factor" type="float" default="1.0" vercond="(User Version 2 &gt; 34)" />
         <add name="Gravity Factor" type="float" default="1.0" vercond="(User Version 2 &gt; 34)" />
-        <add name="Friction" type="float" default="0.5">The body&#039;s friction.</add>
+        <add name="Friction" type="float" default="0.5">How smooth its surfaces is and how easily it will slide along other bodies.</add>
         <add name="Rolling Friction Multiplier" type="float" vercond="(User Version 2 &gt; 34)" />
         <add name="Restitution" type="float" default="0.4">
-            The body&#039;s restitution (elasticity).
+            How "bouncy" the body is, i.e. how much energy it has after colliding. Less than 1.0 loses energy, greater than 1.0 gains energy.
             If the restitution is not 0.0 the object will need extra CPU for all new collisions.
-            Try to set restitution to 0 for maximum performance (e.g. collapsing buildings)
         </add>
         <add name="Max Linear Velocity" type="float" default="104.4">Maximal linear velocity.</add>
         <add name="Max Angular Velocity" type="float" default="31.57">Maximal angular velocity.</add>
@@ -2368,8 +2368,8 @@
         <add name="Quality Type" type="hkQualityType" default="MO_QUAL_FIXED">The type of interaction with other objects.</add>
         <add name="Unknown Bytes 1" type="byte" arr1="12">Unknown.</add>
         <add name="Unknown Bytes 2" type="byte" arr1="4" vercond="(User Version 2 &gt; 34)">Unknown. Skyrim only.</add>
-        <add name="Num Constraints" type="uint"> The number of constraints this object is bound to.</add>
-        <add name="Constraints" type="Ref" template="bhkSerializable" arr1="Num Constraints">Unknown.</add>
+        <add name="Num Constraints" type="uint" />
+        <add name="Constraints" type="Ref" template="bhkSerializable" arr1="Num Constraints" />
         <add name="Body Flags" type="uint" vercond="(User Version 2 &lt; 76)">1 = respond to wind</add>
         <add name="Body Flags" type="ushort" vercond="(User Version 2 &gt;= 76)">1 = respond to wind</add>
     </niobject>
@@ -2568,8 +2568,8 @@
 
     <niobject name="bhkPackedNiTriStripsShape" abstract="0" inherit="bhkShapeCollection">
         A shape constructed from strips data.
-        <add name="Num Sub Shapes" type="ushort" ver2="20.0.0.5">Number of subparts.</add>
-        <add name="Sub Shapes" type="OblivionSubShape" arr1="Num Sub Shapes" ver2="20.0.0.5">The subparts.</add>
+        <add name="Num Sub Shapes" type="ushort" ver2="20.0.0.5" />
+        <add name="Sub Shapes" type="OblivionSubShape" arr1="Num Sub Shapes" ver2="20.0.0.5" />
         <add name="User Data" type="uint" default="0" />
         <add name="Unused 1" type="uint">Looks like a memory pointer and may be garbage.</add>
         <add name="Radius" type="float" default="0.1" />
@@ -2577,7 +2577,7 @@
         <add name="Scale" type="Vector4" default="1.0, 1.0, 1.0, 0.0" />
         <add name="Radius Copy" type="float" default="0.1">Same as radius</add>
         <add name="Scale Copy" type="Vector4" default="1.0, 1.0, 1.0, 0.0">Same as scale.</add>
-        <add name="Data" type="Ref" template="hkPackedNiTriStripsData">A link to the shape&#039;s NiTriStripsData.</add>
+        <add name="Data" type="Ref" template="hkPackedNiTriStripsData" />
     </niobject>
 
     <niobject name="bhkNiTriStripsShape" abstract="0" inherit="bhkShapeCollection">
@@ -2609,20 +2609,20 @@
 
     <niobject name="NiFloatInterpolator" abstract="0" inherit="NiKeyBasedInterpolator">
         Uses NiFloatKeys to animate a float value over time.
-        <add name="Float Value" type="float">Value when posed?  At time 0?</add>
-        <add name="Data" type="Ref" template="NiFloatData">Float data?</add>
+        <add name="Pose Value" type="float">Value if lacking NiFloatData.</add>
+        <add name="Data" type="Ref" template="NiFloatData" />
     </niobject>
 
     <niobject name="NiTransformInterpolator" abstract="0" inherit="NiKeyBasedInterpolator">
         An interpolator for transform keyframes.
         <add name="Transform" type="NiQuatTransform" />
-        <add name="Data" type="Ref" template="NiTransformData">Refers to NiTransformData.</add>
+        <add name="Data" type="Ref" template="NiTransformData" />
     </niobject>
 
     <niobject name="NiPoint3Interpolator" abstract="0" inherit="NiKeyBasedInterpolator">
         Uses NiPosKeys to animate an NiPoint3 value over time.
-        <add name="Point 3 Value" type="Vector3">Value when posed?  Value at time 0?</add>
-        <add name="Data" type="Ref" template="NiPosData">Reference to NiPosData.</add>
+        <add name="Pose Value" type="Vector3">Value if lacking NiPosData.</add>
+        <add name="Data" type="Ref" template="NiPosData" />
     </niobject>
 
     <bitflags name="PathFlags" storage="ushort" prefix="NIPI">
@@ -2638,18 +2638,18 @@
     <niobject name="NiPathInterpolator" abstract="0" inherit="NiKeyBasedInterpolator">
         Used to make an object follow a predefined spline path.
         <add name="Flags" type="PathFlags" />
-        <add name="Bank Dir" type="uint" />
-        <add name="Max Bank Angle" type="float" />
+        <add name="Bank Dir" type="int">-1 = Negative, 1 = Positive</add>
+        <add name="Max Bank Angle" type="float">Max angle in radians.</add>
         <add name="Smoothing" type="float" />
-        <add name="Follow Axis" type="ushort">Unknown. Zero.</add>
-        <add name="Path Data" type="Ref" template="NiPosData">Refers to NiPosData.</add>
-        <add name="Percent Data" type="Ref" template="NiFloatData">Refers to NiFloatData.</add>
+        <add name="Follow Axis" type="short">0, 1, or 2 representing X, Y, or Z.</add>
+        <add name="Path Data" type="Ref" template="NiPosData" />
+        <add name="Percent Data" type="Ref" template="NiFloatData" />
     </niobject>
 
     <niobject name="NiBoolInterpolator" abstract="0" inherit="NiKeyBasedInterpolator">
         Uses NiBoolKeys to animate a bool value over time.
-        <add name="Bool Value" type="bool">Value when posed?  At time 0?</add>
-        <add name="Data" type="Ref" template="NiBoolData">Refers to a NiBoolData object.</add>
+        <add name="Pose Value" type="bool">Value if lacking NiBoolData.</add>
+        <add name="Data" type="Ref" template="NiBoolData" />
     </niobject>
 
     <niobject name="NiBoolTimelineInterpolator" abstract="0" inherit="NiBoolInterpolator">
@@ -2690,8 +2690,8 @@
         Abstract base class for interpolators storing data via a B-spline.
         <add name="Start Time" type="float">Animation start time.</add>
         <add name="Stop Time" type="float">Animation stop time.</add>
-        <add name="Spline Data" type="Ref" template="NiBSplineData">Refers to NiBSplineData.</add>
-        <add name="Basis Data" type="Ref" template="NiBSplineBasisData">Refers to NiBSPlineBasisData.</add>
+        <add name="Spline Data" type="Ref" template="NiBSplineData" />
+        <add name="Basis Data" type="Ref" template="NiBSplineBasisData" />
     </niobject>
 
     <niobject name="NiObjectNET" abstract="1" inherit="NiObject">
@@ -2719,10 +2719,10 @@
 
     <niobject name="NiCollisionData" abstract="0" inherit="NiCollisionObject">
         Collision box.
-        <add name="Propagation Mode" type="PropagationMode">Propagation Mode</add>
-        <add name="Collision Mode" type="CollisionMode" ver1="10.1.0.0">Collision Mode</add>
+        <add name="Propagation Mode" type="PropagationMode" />
+        <add name="Collision Mode" type="CollisionMode" ver1="10.1.0.0" />
         <add name="Use ABV" type="byte">Use Alternate Bounding Volume.</add>
-        <add name="Bounding Volume" type="BoundingVolume" cond="Use ABV == 1">Collision data.</add>
+        <add name="Bounding Volume" type="BoundingVolume" cond="Use ABV == 1" />
     </niobject>
 
     <bitflags name="bhkCOFlags" storage="ushort">
@@ -2746,7 +2746,7 @@
         <add name="Flags" type="bhkCOFlags" default="1">
             Set to 1 for most objects, and to 41 for animated objects (ANIM_STATIC). Bits: 0=Active 2=Notify 3=Set Local 6=Reset.
         </add>
-        <add name="Body" type="Ref" template="NiObject">Links to the collision object data</add>
+        <add name="Body" type="Ref" template="NiObject" />
     </niobject>
 
     <niobject name="bhkCollisionObject" abstract="0" inherit="bhkNiCollisionObject">
@@ -2769,19 +2769,19 @@
 
     <niobject name="NiAVObject" abstract="1" inherit="NiObjectNET">
         Abstract audio-visual base class from which all of Gamebryo's scene graph objects inherit.
-        <add name="Flags" type="uint" default="14" vercond="(Version == 20.2.0.7) &amp;&amp; (User Version &gt;= 11) &amp;&amp; (User Version 2 &gt; 26)">Basic flags for AV objects.</add>
+        <add name="Flags" type="uint" default="14" vercond="(Version == 20.2.0.7) &amp;&amp; (User Version &gt;= 11) &amp;&amp; (User Version 2 &gt; 26)">Basic flags for AV objects. For Bethesda streams above 26 only.</add>
         <add name="Flags" type="Flags" ver1="3.0" vercond="!((Version == 20.2.0.7) &amp;&amp; (User Version &gt;= 11) &amp;&amp; (User Version 2 &gt; 26))">Basic flags for AV objects; commonly 0x000C or 0x000A.</add>
         <add name="Translation" type="Vector3">The translation vector.</add>
         <add name="Rotation" type="Matrix33">The rotation part of the transformation matrix.</add>
         <add name="Scale" type="float" default="1.0">Scaling part (only uniform scaling is supported).</add>
         <add name="Velocity" type="Vector3" ver2="4.2.2.0">Unknown function. Always seems to be (0, 0, 0)</add>
-        <add name="Num Properties" type="uint" vercond="((Version &lt; 20.2.0.7) || (User Version &lt;= 11))">The number of property objects referenced.</add>
-        <add name="Properties" type="Ref" template="NiProperty" arr1="Num Properties" vercond="((Version &lt; 20.2.0.7) || (User Version &lt;= 11))">List of node properties.</add>
+        <add name="Num Properties" type="uint" vercond="((Version &lt; 20.2.0.7) || (User Version &lt;= 11))" />
+        <add name="Properties" type="Ref" template="NiProperty" arr1="Num Properties" vercond="((Version &lt; 20.2.0.7) || (User Version &lt;= 11))">All rendering properties attached to this object.</add>
         <add name="Unknown 1" type="uint" arr1="4" ver2="2.3">Always 2,0,2,0.</add>
         <add name="Unknown 2" type="byte" ver2="2.3">0 or 1.</add>
-        <add name="Has Bounding Box" type="bool" ver1="3.0" ver2="4.2.2.0">Do we have a bounding box?</add>
-        <add name="Bounding Box" type="BoundingBox" cond="Has Bounding Box" ver1="3.0" ver2="4.2.2.0">The bounding box.</add>
-        <add name="Collision Object" type="Ref" template="NiCollisionObject" ver1="10.0.1.0">Refers to NiCollisionObject, which is usually a bounding box or other simple collision shape.  In Oblivion this links the Havok objects.</add>
+        <add name="Has Bounding Box" type="bool" ver1="3.0" ver2="4.2.2.0" />
+        <add name="Bounding Box" type="BoundingBox" cond="Has Bounding Box" ver1="3.0" ver2="4.2.2.0" />
+        <add name="Collision Object" type="Ref" template="NiCollisionObject" ver1="10.0.1.0" />
     </niobject>
 
     <niobject name="NiDynamicEffect" abstract="1" inherit="NiAVObject">
@@ -2814,10 +2814,10 @@
 
     <niobject name="NiPSysModifier" abstract="1" inherit="NiObject">
         Abstract base class for all particle system modifiers.
-        <add name="Name" type="string">The object name.</add>
+        <add name="Name" type="string">Used to locate the modifier.</add>
         <add name="Order" type="uint">Modifier ID in the particle modifier chain (always a multiple of 1000)?</add>
         <add name="Target" type="Ptr" template="NiParticleSystem">NiParticleSystem parent of this modifier.</add>
-        <add name="Active" type="bool">Whether the modifier is currently in effect?  Usually true.</add>
+        <add name="Active" type="bool">Whether or not the modifier is active.</add>
     </niobject>
 
     <niobject name="NiPSysEmitter" abstract="1" inherit="NiPSysModifier">
@@ -2874,14 +2874,14 @@
     <niobject name="NiGeomMorpherController" abstract="0" inherit="NiInterpController">
         DEPRECATED (20.5), replaced by NiMorphMeshModifier.
         Time controller for geometry morphing.
-        <add name="Extra Flags" type="Flags" ver1="10.0.1.2">Unknown.</add>
+        <add name="Extra Flags" type="Flags" ver1="10.0.1.2">1 = UPDATE NORMALS</add>
         <add name="Unknown 2" type="byte" ver1="10.1.0.106" ver2="10.1.0.106">Unknown.</add>
         <add name="Data" type="Ref" template="NiMorphData">Geometry morphing data index.</add>
         <add name="Always Update" type="byte" ver1="4.0.0.1" />
-        <add name="Num Interpolators" type="uint" ver1="10.1.0.106">The number of interpolator objects.</add>
-        <add name="Interpolators" type="Ref" template="NiInterpolator" arr1="Num Interpolators" ver1="10.1.0.106" ver2="20.0.0.5">List of interpolators.</add>
-        <add name="Interpolator Weights" type="MorphWeight" arr1="Num Interpolators" ver1="20.1.0.3">Weighted Interpolators?</add>
-        <add name="Num Unknown Ints" type="uint" ver1="20.0.0.4" ver2="20.0.0.5" vercond="(User Version >= 10)">A count.</add>
+        <add name="Num Interpolators" type="uint" ver1="10.1.0.106" />
+        <add name="Interpolators" type="Ref" template="NiInterpolator" arr1="Num Interpolators" ver1="10.1.0.106" ver2="20.0.0.5" />
+        <add name="Interpolator Weights" type="MorphWeight" arr1="Num Interpolators" ver1="20.1.0.3" />
+        <add name="Num Unknown Ints" type="uint" ver1="20.0.0.4" ver2="20.0.0.5" vercond="(User Version >= 10)" />
         <add name="Unknown Ints" type="uint" arr1="Num Unknown Ints" ver1="20.0.0.4" ver2="20.0.0.5" vercond="(User Version >= 10)">Unknown.</add>
     </niobject>
 
@@ -2896,7 +2896,7 @@
 
     <niobject name="NiSingleInterpController" abstract="1" inherit="NiInterpController">
         Uses a single NiInterpolator to animate its target value.
-        <add name="Interpolator" type="Ref" template="NiInterpolator" ver1="10.2.0.0">Link to interpolator.</add>
+        <add name="Interpolator" type="Ref" template="NiInterpolator" ver1="10.2.0.0" />
     </niobject>
 
     <niobject name="NiKeyframeController" abstract="0" inherit="NiSingleInterpController">
@@ -2977,7 +2977,7 @@
             Time between two flips.
             delta = (start_time - stop_time) / sources.num_indices
         </add>
-        <add name="Num Sources" type="uint">The number of source objects.</add>
+        <add name="Num Sources" type="uint" />
         <add name="Sources" type="Ref" template="NiSourceTexture" arr1="Num Sources" ver1="4.0.0.0">The texture sources.</add>
         <add name="Images" type="Ref" template="NiImage" arr1="Num Sources" ver2="3.1">The image sources</add>
     </niobject>
@@ -2991,7 +2991,7 @@
         Used to animate a single member of an NiTextureTransform.
         NiInterpController::GetCtlrID() string formats:
             ['%1-%2-TT_TRANSLATE_U', '%1-%2-TT_TRANSLATE_V', '%1-%2-TT_ROTATE', '%1-%2-TT_SCALE_U', '%1-%2-TT_SCALE_V']
-        (Depending on "Operation" enumeration, %1 = Value of "Shader Map", Value of %2 = "Texture Slot")
+        (Depending on "Operation" enumeration, %1 = Value of "Shader Map", %2 = Value of "Texture Slot")
         <add name="Shader Map" type="bool">Is the target map a shader map?</add>
         <add name="Texture Slot" type="TexType">The target texture slot.</add>
         <add name="Operation" type="TransformMember">Controls which aspect of the texture transform to modify.</add>
@@ -3242,7 +3242,7 @@
         <add name="Triangles" type="TriangleData" arr1="Num Triangles" />
         <add name="Num Vertices" type="uint" />
         <add name="Unknown Byte 1" type="byte" ver1="20.2.0.7">Unknown.</add>
-        <add name="Vertices" type="Vector3" arr1="Num Vertices">The vertices?</add>
+        <add name="Vertices" type="Vector3" arr1="Num Vertices" />
         <add name="Num Sub Shapes" type="ushort" ver1="20.2.0.7">Number of subparts.</add>
         <add name="Sub Shapes" type="OblivionSubShape" arr1="Num Sub Shapes" ver1="20.2.0.7">The subparts.</add>
     </niobject>
@@ -3292,7 +3292,7 @@
     <niobject name="NiParticlesData" abstract="0" inherit="NiGeometryData">
         Generic rotating particles data object.
         <add name="Num Particles" type="ushort" ver2="4.0.0.2">The maximum number of particles (matches the number of vertices).</add>
-        <add name="Particle Radius" type="float" ver2="10.0.1.0">The particles&#039; size.</add>
+        <add name="Particle Radius" type="float" ver2="10.0.1.0">The particles' size.</add>
         <add name="Has Radii" type="bool" ver1="10.1.0.0">Is the particle size array present?</add>
         <add name="Radii" type="float" arr1="Num Vertices" cond="Has Radii" ver1="10.1.0.0" vercond="!((Version >= 20.2.0.7) &amp;&amp; (User Version >= 11))">The individual particel sizes.</add>
         <add name="Num Active" type="ushort">The number of active particles at the time the system was saved. This is also the number of valid entries in the following arrays.</add>
@@ -3506,10 +3506,10 @@
 
     <niobject name="NiControllerManager" abstract="0" inherit="NiTimeController">
         Controls animation sequences on a specific branch of the scene graph.
-        <add name="Cumulative" type="bool">Designates whether animation sequences are cumulative?</add>
-        <add name="Num Controller Sequences" type="uint">The number of controller sequence objects.</add>
-        <add name="Controller Sequences" type="Ref" template="NiControllerSequence" arr1="Num Controller Sequences">Refers to a list of NiControllerSequence object.</add>
-        <add name="Object Palette" type="Ref" template="NiDefaultAVObjectPalette">Refers to a NiDefaultAVObjectPalette.</add>
+        <add name="Cumulative" type="bool">Whether transformation accumulation is enabled. If accumulation is not enabled, the manager will treat all sequence data on the accumulation root as absolute data instead of relative delta values.</add>
+        <add name="Num Controller Sequences" type="uint" />
+        <add name="Controller Sequences" type="Ref" template="NiControllerSequence" arr1="Num Controller Sequences" />
+        <add name="Object Palette" type="Ref" template="NiDefaultAVObjectPalette" />
     </niobject>
 
     <niobject name="NiSequence" abstract="0" inherit="NiObject">
@@ -3561,7 +3561,7 @@
 
     <niobject name="NiDitherProperty" abstract="0" inherit="NiProperty">
         NiDitherProperty allows the application to turn the dithering of interpolated colors and fog values on and off.
-        <add name="Flags" type="Flags">1&#039;s Bit: Enable dithering</add>
+        <add name="Flags" type="Flags">1 = Enable dithering</add>
     </niobject>
 
     <niobject name="NiRollController" abstract="0" inherit="NiSingleInterpController">
@@ -3588,13 +3588,13 @@
     <niobject name="NiFogProperty" abstract="0" inherit="NiProperty">
         NiFogProperty allows the application to enable, disable and control the appearance of fog.
         <add name="Flags" type="Flags">
-            1&#039;s bit: Enables Fog
-            2&#039;s bit: Sets Fog Function to FOG_RANGE_SQ
-            4&#039;s bit: Sets Fog Function to FOG_VERTEX_ALPHA
+            Bit 0: Enables Fog
+            Bit 1: Sets Fog Function to FOG_RANGE_SQ
+            Bit 2: Sets Fog Function to FOG_VERTEX_ALPHA
 
-            If 2&#039;s and 4&#039;s bit are not set, but fog is enabled, Fog function is FOG_Z_LINEAR.
+            If Bit 1 and Bit 2 are not set, but fog is enabled, Fog function is FOG_Z_LINEAR.
         </add>
-        <add name="Fog Depth" type="float">The thickness of the fog?  Default is 1.0</add>
+        <add name="Fog Depth" type="float">Depth of the fog in normalized units. 1.0 = begins at near plane. 0.5 = begins halfway between the near and far planes.</add>
         <add name="Fog Color" type="Color3">The color of the fog.</add>
     </niobject>
 
@@ -3602,8 +3602,8 @@
         LEGACY (pre-10.1) particle modifier. Applies a gravitational field on the particles.
         <add name="Unknown Float 1" type="float" ver1="3.3.0.13">Unknown.</add>
         <add name="Force" type="float">The strength/force of this gravity.</add>
-        <add name="Type" type="FieldType">The force field&#039;s type.</add>
-        <add name="Position" type="Vector3">The position of the mass point relative to the particle system. (TODO: check for versions &lt;= 3.1)</add>
+        <add name="Type" type="FieldType">The force field type.</add>
+        <add name="Position" type="Vector3">The position of the mass point relative to the particle system.</add>
         <add name="Direction" type="Vector3">The direction of the applied acceleration.</add>
     </niobject>
 
@@ -3684,8 +3684,8 @@
         <add name="Diffuse Color" type="Color3" vercond="!((Version == 20.2.0.7) &amp;&amp; (User Version >= 11) &amp;&amp; (User Version 2 > 21))">How much the material reflects diffuse light.</add>
         <add name="Specular Color" type="Color3">How much light the material reflects in a specular manner.</add>
         <add name="Emissive Color" type="Color3">How much light the material emits.</add>
-        <add name="Glossiness" type="float">The material&#039;s glossiness.</add>
-        <add name="Alpha" type="float">The material transparency (1=non-transparant). Refer to a NiAlphaProperty object in this material&#039;s parent NiTriShape object, when alpha is not 1.</add>
+        <add name="Glossiness" type="float">The material glossiness.</add>
+        <add name="Alpha" type="float">The material transparency (1=non-transparant). Refer to a NiAlphaProperty object in this material's parent NiTriShape object, when alpha is not 1.</add>
         <add name="Emit Multi" type="float" default="1.0" vercond="(Version == 20.2.0.7) &amp;&amp; (User Version >= 11) &amp;&amp; (User Version 2 > 21)">Unknown</add>
     </niobject>
 
@@ -3778,12 +3778,10 @@
 
     <niobject name="NiLODNode" abstract="0" inherit="NiSwitchNode">
         Level of detail selector. Links to different levels of detail of the same model, used to switch a geometry at a specified distance.
-        <!--<add name="Unknown 4 Bytes" type="byte" arr1="4">Unknown.  0,0,0,0 or 1,0,0,0.</add>-->
-        <add name="LOD Center" type="Vector3" ver1="4.0.0.2" ver2="10.0.1.0">Point to calculate distance from for switching?</add>
-        <add name="Num LOD Levels" type="uint" ver2="10.0.1.0">Number of levels of detail.</add>
-        <add name="LOD Levels" type="LODRange" arr1="Num LOD Levels" ver2="10.0.1.0">The ranges of distance that each level of detail applies in.</add>
-        <!--<add name="Unknown Short" type="ushort" ver1="10.1.0.0">Zero?</add>-->
-        <add name="LOD Level Data" type="Ref" template="NiLODData"  ver1="10.1.0.0">Refers to LOD level information, either distance or screen size based.</add>
+        <add name="LOD Center" type="Vector3" ver1="4.0.0.2" ver2="10.0.1.0" />
+        <add name="Num LOD Levels" type="uint" ver2="10.0.1.0" />
+        <add name="LOD Levels" type="LODRange" arr1="Num LOD Levels" ver2="10.0.1.0" />
+        <add name="LOD Level Data" type="Ref" template="NiLODData" ver1="10.1.0.0" />
     </niobject>
 
     <niobject name="NiPalette" abstract="0" inherit="NiObject">
@@ -3796,19 +3794,19 @@
 
     <niobject name="NiParticleBomb" abstract="0" inherit="NiParticleModifier">
         LEGACY (pre-10.1) particle modifier.
-        <add name="Decay?" type="float">Unknown.</add>
-        <add name="Duration?" type="float">Unknown.</add>
-        <add name="DeltaV?" type="float">Unknown.</add>
-        <add name="Start?" type="float">Unknown.</add>
-        <add name="Decay Type?" type="DecayType">Unknown.</add>
-        <add name="Symmetry Type?" type="SymmetryType" ver1="4.1.0.12">Unknown.</add>
-        <add name="Position?" type="Vector3">The position of the mass point relative to the particle system?</add>
-        <add name="Direction?" type="Vector3">The direction of the applied acceleration?</add>
+        <add name="Decay" type="float" />
+        <add name="Duration" type="float" />
+        <add name="DeltaV" type="float" />
+        <add name="Start" type="float" />
+        <add name="Decay Type" type="DecayType" />
+        <add name="Symmetry Type" type="SymmetryType" ver1="4.1.0.12" />
+        <add name="Position" type="Vector3">The position of the mass point relative to the particle system?</add>
+        <add name="Direction" type="Vector3">The direction of the applied acceleration?</add>
     </niobject>
 
     <niobject name="NiParticleColorModifier" abstract="0" inherit="NiParticleModifier">
         LEGACY (pre-10.1) particle modifier.
-        <add name="Color Data" type="Ref" template="NiColorData">Color data index.</add>
+        <add name="Color Data" type="Ref" template="NiColorData" />
     </niobject>
 
     <niobject name="NiParticleGrowFade" abstract="0" inherit="NiParticleModifier">
@@ -3819,15 +3817,15 @@
 
     <niobject name="NiParticleMeshModifier" abstract="0" inherit="NiParticleModifier">
         LEGACY (pre-10.1) particle modifier.
-        <add name="Num Particle Meshes" type="uint">The number of particle mesh references that follow.</add>
-        <add name="Particle Meshes" arr1="Num Particle Meshes" type="Ref" template="NiAVObject">Links to nodes of particle meshes?</add>
+        <add name="Num Particle Meshes" type="uint" />
+        <add name="Particle Meshes" arr1="Num Particle Meshes" type="Ref" template="NiAVObject" />
     </niobject>
 
     <niobject name="NiParticleRotation" abstract="0" inherit="NiParticleModifier">
         LEGACY (pre-10.1) particle modifier.
-        <add name="Random Initial Axis?" type="byte">Unknown.</add>
-        <add name="Initial Axis?" type="Vector3">Unknown.</add>
-        <add name="Rotation Speed?" type="float">Unknown.</add>
+        <add name="Random Initial Axis" type="byte" />
+        <add name="Initial Axis" type="Vector3" />
+        <add name="Rotation Speed" type="float" />
     </niobject>
 
     <niobject name="NiParticles" abstract="0" inherit="NiGeometry">
@@ -3875,9 +3873,9 @@
             1.6 : horizontal
             3.1416 : down
         </add>
-        <add name="Vertical Angle" type="float">emitter&#039;s vertical opening angle [radians]</add>
+        <add name="Vertical Angle" type="float">emitter's vertical opening angle [radians]</add>
         <add name="Horizontal Direction" type="float">horizontal emit direction</add>
-        <add name="Horizontal Angle" type="float">emitter&#039;s horizontal opening angle</add>
+        <add name="Horizontal Angle" type="float">emitter's horizontal opening angle</add>
         <add name="Unknown Normal?" type="Vector3">Unknown.</add>
         <add name="Unknown Color?" type="Color4">Unknown.</add>
         <add name="Size" type="float">Particle size</add>
@@ -3899,7 +3897,7 @@
         <!-- <add name="Particle" type="Particle" ver2="3.1">The particle (older NIF versions only have a single particle per controller?)</add> -->
         <add name="Particle Velocity" type="Vector3" ver2="3.1">Particle velocity</add>
         <add name="Particle Unknown Vector" type="Vector3" ver2="3.1">Unknown</add>
-        <add name="Particle Lifetime" type="float" ver2="3.1">The particle&#039;s age.</add>
+        <add name="Particle Lifetime" type="float" ver2="3.1">The particle's age.</add>
         <add name="Particle Link" type="Ref" template="NiObject" ver2="3.1" />
         <add name="Particle Timestamp" type="uint" ver2="3.1">Timestamp of the last update.</add>
         <add name="Particle Unknown Short" type="ushort" ver2="3.1">Unknown short</add>
@@ -3962,7 +3960,7 @@
         <add name="Bits Per Pixel" type="byte" ver1="10.3.0.3">Bits per pixel, 0 (Compressed), 8, 24 or 32.</add>
         <add name="Renderer Hint" type="uint" ver1="10.3.0.3" />
         <add name="Extra Data" type="uint" ver1="10.3.0.3" />
-        <add name="Flags" type="byte" ver1="10.3.0.3">Flags</add>
+        <add name="Flags" type="byte" ver1="10.3.0.3" />
         <add name="Tiling" type="PixelTiling" ver1="10.3.0.3" />
         <add name="sRGB Space" type="bool" ver1="20.3.0.4" />
         <add name="Channels" type="PixelFormatComponent" arr1="4" ver1="10.3.0.3">Channel Data</add>
@@ -4017,111 +4015,110 @@
 
     <niobject name="NiPointLight" abstract="0" inherit="NiLight">
         A point light.
-        <add name="Constant Attenuation" type="float">Constant Attenuation</add>
-        <add name="Linear Attenuation" type="float">Linear Attenuation</add>
-        <add name="Quadratic Attenuation" type="float">Quadratic Attenuation (see glLight)</add>
+        <add name="Constant Attenuation" type="float" />
+        <add name="Linear Attenuation" type="float" />
+        <add name="Quadratic Attenuation" type="float" />
     </niobject>
 
     <niobject name="NiPosData" abstract="0" inherit="NiObject">
         Wrapper for position animation keys.
-        <add name="Data" type="KeyGroup" template="Vector3">The position keys.</add>
+        <add name="Data" type="KeyGroup" template="Vector3" />
     </niobject>
 
     <niobject name="NiPSysAgeDeathModifier" abstract="0" inherit="NiPSysModifier">
         Particle modifier that controls and updates the age of particles in the system.
-        <add name="Spawn on Death" type="bool">Unknown.</add>
-        <add name="Spawn Modifier" type="Ref" template="NiPSysSpawnModifier">Link to NiPSysSpawnModifier object?</add>
+        <add name="Spawn on Death" type="bool">Should the particles spawn on death?</add>
+        <add name="Spawn Modifier" type="Ref" template="NiPSysSpawnModifier">The spawner to use on death.</add>
     </niobject>
 
     <niobject name="NiPSysBombModifier" abstract="0" inherit="NiPSysModifier">
         Particle modifier that applies an explosive force to particles.
-        <add name="Bomb Object" type="Ptr" template="NiNode">Link to a NiNode for bomb to function.</add>
-        <add name="Bomb Axis" type="Vector3">Orientation of bomb object.</add>
-        <add name="Decay" type="float">Falloff rate of the bomb object.</add>
-        <add name="Delta V" type="float">DeltaV /  Strength?</add>
-        <add name="Decay Type" type="DecayType">Decay type</add>
-        <add name="Symmetry Type" type="SymmetryType">Shape/symmetry of the bomb object.</add>
+        <add name="Bomb Object" type="Ptr" template="NiNode">The object whose position and orientation are the basis of the force.</add>
+        <add name="Bomb Axis" type="Vector3">The local direction of the force.</add>
+        <add name="Decay" type="float">How the bomb force will decrease with distance.</add>
+        <add name="Delta V" type="float">The acceleration the bomb will apply to particles.</add>
+        <add name="Decay Type" type="DecayType" />
+        <add name="Symmetry Type" type="SymmetryType" />
     </niobject>
 
     <niobject name="NiPSysBoundUpdateModifier" abstract="0" inherit="NiPSysModifier">
         Particle modifier that creates and updates bound volumes.
-        <add name="Update Skip" type="ushort">Unknown.</add>
+        <add name="Update Skip" type="ushort">Optimize by only computing the bound of (1 / Update Skip) of the total particles each frame.</add>
     </niobject>
 
     <niobject name="NiPSysBoxEmitter" abstract="0" inherit="NiPSysVolumeEmitter">
         Particle emitter that uses points within a defined Box shape to emit from.
-        <add name="Width" type="float">Defines the Width of the box area.</add>
-        <add name="Height" type="float">Defines the Height of the box area.</add>
-        <add name="Depth" type="float">Defines the Depth of the box area.</add>
+        <add name="Width" type="float" />
+        <add name="Height" type="float" />
+        <add name="Depth" type="float" />
     </niobject>
 
     <niobject name="NiPSysColliderManager" abstract="0" inherit="NiPSysModifier">
         Particle modifier that adds a defined shape to act as a collision object for particles to interact with.
-        <add name="Collider" type="Ref" template="NiPSysCollider">Link to a NiPSysPlanarCollider or NiPSysSphericalCollider.</add>
+        <add name="Collider" type="Ref" template="NiPSysCollider" />
     </niobject>
 
     <niobject name="NiPSysColorModifier" abstract="0" inherit="NiPSysModifier">
         Particle modifier that adds keyframe data to modify color/alpha values of particles over time.
-        <add name="Data" type="Ref" template="NiColorData">Refers to NiColorData object.</add>
+        <add name="Data" type="Ref" template="NiColorData" />
     </niobject>
 
     <niobject name="NiPSysCylinderEmitter" abstract="0" inherit="NiPSysVolumeEmitter">
         Particle emitter that uses points within a defined Cylinder shape to emit from.
-        <add name="Radius" type="float">Radius of the cylinder shape.</add>
-        <add name="Height" type="float">Height of the cylinders shape.</add>
+        <add name="Radius" type="float" />
+        <add name="Height" type="float" />
     </niobject>
 
     <niobject name="NiPSysDragModifier" abstract="0" inherit="NiPSysModifier">
         Particle modifier that applies a linear drag force to particles.
-        <add name="Parent" type="Ptr" template="NiObject">Parent reference.</add>
-        <add name="Drag Axis" type="Vector3">The drag axis.</add>
-        <add name="Percentage" type="float">Drag percentage.</add>
-        <add name="Range" type="float">The range.</add>
-        <add name="Range Falloff" type="float">The range falloff.</add>
+        <add name="Parent" type="Ptr" template="NiObject">The object whose position and orientation are the basis of the force.</add>
+        <add name="Drag Axis" type="Vector3">The local direction of the force.</add>
+        <add name="Percentage" type="float">The amount of drag to apply to particles.</add>
+        <add name="Range" type="float">The distance up to which particles are fully affected.</add>
+        <add name="Range Falloff" type="float">The distance at which particles cease to be affected.</add>
     </niobject>
 
     <niobject name="NiPSysEmitterCtlrData" abstract="0" inherit="NiObject">
         DEPRECATED (10.2). Particle system emitter controller data.
-        <add name="Float Keys?" type="KeyGroup" template="float">Unknown.</add>
-        <add name="Num Visibility Keys?" type="uint">Number of keys.</add>
-        <add name="Visibility Keys?" type="Key" arg="1" template="byte" arr1="Num Visibility Keys?">Unknown.</add>
+        <add name="Birth Rate Keys" type="KeyGroup" template="float" />
+        <add name="Num Active Keys" type="uint" />
+        <add name="Active Keys" type="Key" arg="1" template="byte" arr1="Num Active Keys" />
     </niobject>
 
     <niobject name="NiPSysGravityModifier" abstract="0" inherit="NiPSysModifier">
         Particle modifier that applies a gravitational force to particles.
-        <add name="Gravity Object" type="Ptr" template="NiNode">Refers to a NiNode for gravity location.</add>
-        <add name="Gravity Axis" type="Vector3">Orientation of gravity.</add>
-        <add name="Decay" type="float">Falloff range.</add>
-        <add name="Strength" type="float">The strength of gravity.</add>
-        <add name="Force Type" type="ForceType">Planar or Spherical type</add>
+        <add name="Gravity Object" type="Ptr" template="NiNode">The object whose position and orientation are the basis of the force.</add>
+        <add name="Gravity Axis" type="Vector3">The local direction of the force.</add>
+        <add name="Decay" type="float">How the force diminishes by distance.</add>
+        <add name="Strength" type="float">The acceleration of the force.</add>
+        <add name="Force Type" type="ForceType">The type of gravitational force.</add>
         <add name="Turbulence" type="float">Adds a degree of randomness.</add>
-        <add name="Turbulence Scale" type="float" default="1.0">Range for turbulence.</add>
+        <add name="Turbulence Scale" type="float" default="1.0">Scale for turbulence.</add>
         <add name="World Aligned" type="bool" ver1="20.2.0.7" vercond="User Version >= 11" />
     </niobject>
 
     <niobject name="NiPSysGrowFadeModifier" abstract="0" inherit="NiPSysModifier">
-        Particle modifier that controls the time it takes to grow a particle from Size=0 to the specified Size in the emitter, and then back to 0.  This modifer has no control over alpha settings.
-        <add name="Grow Time" type="float">Time in seconds to fade in.</add>
-        <add name="Grow Generation" type="ushort">Unknown.</add>
-        <add name="Fade Time" type="float">Time in seconds to fade out.</add>
-        <add name="Fade Generation" type="ushort">Unknown.</add>
-        <add name="Base Scale" type="float" ver1="20.2.0.7" userver="11">Unknown</add>
+        Particle modifier that controls the time it takes to grow and shrink a particle.
+        <add name="Grow Time" type="float">The time taken to grow from 0 to their specified size.</add>
+        <add name="Grow Generation" type="ushort">Specifies the particle generation to which the grow effect should be applied. This is usually generation 0, so that newly created particles will grow.</add>
+        <add name="Fade Time" type="float">The time taken to shrink from their specified size to 0.</add>
+        <add name="Fade Generation" type="ushort">Specifies the particle generation to which the shrink effect should be applied. This is usually the highest supported generation for the particle system.</add>
+        <add name="Base Scale" type="float" ver1="20.2.0.7" userver="11">A multiplier on the base particle scale.</add>
     </niobject>
 
     <niobject name="NiPSysMeshEmitter" abstract="0" inherit="NiPSysEmitter">
         Particle emitter that uses points on a specified mesh to emit from.
-        <add name="Num Emitter Meshes" type="uint">The number of references to emitter meshes that follow.</add>
-        <!-- Note: Reduced strictness of validation -->
-        <add name="Emitter Meshes" type="Ref" template="NiAVObject" arr1="Num Emitter Meshes">Links to meshes used for emitting.</add>
-        <add name="Initial Velocity Type" type="VelocityType">The way the particles get their initial direction and speed.</add>
-        <add name="Emission Type" type="EmitFrom">The parts of the mesh that the particles emit from.</add>
-        <add name="Emission Axis" type="Vector3">The emission axis.</add>
+        <add name="Num Emitter Meshes" type="uint" />
+        <add name="Emitter Meshes" type="Ptr" template="NiAVObject" arr1="Num Emitter Meshes">The meshes which are emitted from.</add>
+        <add name="Initial Velocity Type" type="VelocityType">The method by which the initial particle velocity will be computed.</add>
+        <add name="Emission Type" type="EmitFrom">The manner in which particles are emitted from the Emitter Meshes.</add>
+        <add name="Emission Axis" type="Vector3">The emission axis if VELOCITY_USE_DIRECTION.</add>
     </niobject>
 
     <niobject name="NiPSysMeshUpdateModifier" abstract="0" inherit="NiPSysModifier">
         Particle modifier that updates mesh particles using the age of each particle.
-        <add name="Num Meshes" type="uint">The number of object references that follow.</add>
-        <add name="Meshes" type="Ref" template="NiAVObject" arr1="Num Meshes">Group of target NiNodes or NiTriShapes?</add>
+        <add name="Num Meshes" type="uint" />
+        <add name="Meshes" type="Ref" template="NiAVObject" arr1="Num Meshes" />
     </niobject>
     
     <niobject name="BSPSysInheritVelocityModifier"  abstract="0" inherit="NiPSysModifier">
@@ -4132,9 +4129,9 @@
     </niobject>
     
     <niobject name="BSPSysHavokUpdateModifier"  abstract="0" inherit="NiPSysModifier">
-        <add name="Num Nodes" type="uint">Unknown</add>
-        <add name="Nodes" type="Ref" template="NiNode" arr1="Num Nodes">Group of target NiNodes?</add>
-        <add name="Modifier" type="Ref" template="NiPSysModifier">Unknown</add>
+        <add name="Num Nodes" type="uint" />
+        <add name="Nodes" type="Ref" template="NiNode" arr1="Num Nodes" />
+        <add name="Modifier" type="Ref" template="NiPSysModifier" />
     </niobject>   
 
     <niobject name="BSPSysRecycleBoundModifier"  abstract="0" inherit="NiPSysModifier">
@@ -4149,22 +4146,22 @@
         <add name="Start Frame Fudge" type="float">Random chance to start on a different frame?</add>
         <add name="End Frame" type="float">Ending frame/position on atlas</add>
         <add name="Loop Start Frame" type="float">Frame to start looping</add>
-        <add name="Loop Start Frame Fudge" type="float"></add>
-        <add name="Frame Count" type="float">Unknown</add>
-        <add name="Frame Count Fudge" type="float">Unknown</add>
+        <add name="Loop Start Frame Fudge" type="float" />
+        <add name="Frame Count" type="float" />
+        <add name="Frame Count Fudge" type="float" />
     </niobject>
     
     <niobject name="NiPSysPlanarCollider" abstract="0" inherit="NiPSysCollider">
         Particle Collider object which particles will interact with.
-        <add name="Width" type="float">Defines the width of the plane.</add>
-        <add name="Height" type="float">Defines the height of the plane.</add>
-        <add name="X Axis" type="Vector3">Defines Orientation.</add>
-        <add name="Y Axis" type="Vector3">Defines Orientation.</add>
+        <add name="Width" type="float">Width of the plane along the X Axis.</add>
+        <add name="Height" type="float">Height of the plane along the Y Axis.</add>
+        <add name="X Axis" type="Vector3">Axis defining a plane, relative to Collider Object.</add>
+        <add name="Y Axis" type="Vector3">Axis defining a plane, relative to Collider Object.</add>
     </niobject>
 
     <niobject name="NiPSysSphericalCollider" abstract="0" inherit="NiPSysCollider">
         Particle Collider object which particles will interact with.
-        <add name="Radius" type="float">Defines the radius of the sphere object.</add>
+        <add name="Radius" type="float" />
     </niobject>
 
     <niobject name="NiPSysPositionModifier" abstract="0" inherit="NiPSysModifier">
@@ -4177,31 +4174,31 @@
 
     <niobject name="NiPSysRotationModifier" abstract="0" inherit="NiPSysModifier">
         Particle modifier that adds rotations to particles.
-        <add name="Initial Rotation Speed" type="float">The initial speed of rotation.</add>
-        <add name="Initial Rotation Speed Variation" type="float" ver1="20.0.0.4">Adds a ranged randomness to rotation speed.</add>
-        <add name="Initial Rotation Angle" type="float" ver1="20.0.0.4">Sets the intial angle for particles to be birthed in.</add>
-        <add name="Initial Rotation Angle Variation" type="float" ver1="20.0.0.4">Adds a random range to Initial angle.</add>
-        <add name="Random Rot Speed Sign" type="bool" ver1="20.0.0.4">Unknown</add>
-        <add name="Random Initial Axis" type="bool">Unknown.</add>
-        <add name="Initial Axis" type="Vector3">Unknown.</add>
+        <add name="Rotation Speed" type="float">Initial Rotation Speed in radians per second.</add>
+        <add name="Rotation Speed Variation" type="float" ver1="20.0.0.2">Distributes rotation speed over the range [Speed - Variation, Speed + Variation].</add>
+        <add name="Rotation Angle" type="float" ver1="20.0.0.2">Initial Rotation Angle in radians.</add>
+        <add name="Rotation Angle Variation" type="float" ver1="20.0.0.2">Distributes rotation angle over the range [Angle - Variation, Angle + Variation].</add>
+        <add name="Random Rot Speed Sign" type="bool" ver1="20.0.0.2">Randomly negate the initial rotation speed?</add>
+        <add name="Random Axis" type="bool">Assign a random axis to new particles?</add>
+        <add name="Axis" type="Vector3">Initial rotation axis.</add>
     </niobject>
 
     <niobject name="NiPSysSpawnModifier" abstract="0" inherit="NiPSysModifier">
         Particle modifier that spawns additional copies of a particle.
-        <add name="Num Spawn Generations" type="ushort">Unknown.</add>
-        <add name="Percentage Spawned" type="float">Unknown.</add>
-        <add name="Min Num to Spawn" type="ushort">Unknown.</add>
-        <add name="Max Num to Spawn" type="ushort">Unknown.</add>
-        <add name="Spawn Speed Chaos" type="float">Unknown.</add>
-        <add name="Spawn Dir Chaos" type="float">Unknown.</add>
-        <add name="Life Span" type="float">Unknown.</add>
-        <add name="Life Span Variation" type="float">Unknown.</add>
-        <add name="Unknown int" type="int" ver1="10.4.0.1" ver2="10.4.0.1">Unknown</add>
+        <add name="Num Spawn Generations" type="ushort">Number of allowed generations for spawning. Particles whose generations are >= will not be spawned.</add>
+        <add name="Percentage Spawned" type="float">The likelihood of a particular particle being spawned. Must be between 0.0 and 1.0.</add>
+        <add name="Min Num to Spawn" type="ushort">The minimum particles to spawn for any given original particle.</add>
+        <add name="Max Num to Spawn" type="ushort">The maximum particles to spawn for any given original particle.</add>
+        <add name="Unknown Int" type="int" ver1="10.4.0.1" ver2="10.4.0.1">WorldShift</add>
+        <add name="Spawn Speed Variation" type="float">How much the spawned particle speed can vary.</add>
+        <add name="Spawn Dir Variation" type="float">How much the spawned particle direction can vary.</add>
+        <add name="Life Span" type="float">Lifespan assigned to spawned particles.</add>
+        <add name="Life Span Variation" type="float">The amount the lifespan can vary.</add>
     </niobject>
 
     <niobject name="NiPSysSphereEmitter" abstract="0" inherit="NiPSysVolumeEmitter">
         Particle emitter that uses points within a sphere shape to emit from.
-        <add name="Radius" type="float">The radius of the sphere shape</add>
+        <add name="Radius" type="float" />
     </niobject>
 
     <niobject name="NiPSysUpdateCtlr" abstract="0" inherit="NiTimeController">
@@ -4210,32 +4207,32 @@
 
     <niobject name="NiPSysFieldModifier" abstract="1" inherit="NiPSysModifier">
         Base for all force field particle modifiers.
-        <add name="Field Object" type="Ref" template="NiAVObject">Force Field Object</add>
-        <add name="Magnitude" type="float">Magnitude of the force</add>
-        <add name="Attenuation" type="float">Controls how quick the field diminishes</add>
-        <add name="Use Max Distance" type="bool">Use maximum distance</add>
-        <add name="Max Distance" type="float">Maximum distance</add>
+        <add name="Field Object" type="Ref" template="NiAVObject">The object whose position and orientation are the basis of the field.</add>
+        <add name="Magnitude" type="float">Magnitude of the force.</add>
+        <add name="Attenuation" type="float">How the magnitude diminishes with distance from the Field Object.</add>
+        <add name="Use Max Distance" type="bool">Whether or not to use a distance from the Field Object after which there is no effect.</add>
+        <add name="Max Distance" type="float">Maximum distance after which there is no effect.</add>
     </niobject>
 
     <niobject name="NiPSysVortexFieldModifier" inherit="NiPSysFieldModifier">
         Particle system modifier, implements a vortex field force for particles.
-        <add name="Direction" type="Vector3">Direction of the particle velocity</add>
+        <add name="Direction" type="Vector3">Direction of the vortex field in Field Object's space.</add>
     </niobject>
 
     <niobject name="NiPSysGravityFieldModifier" inherit="NiPSysFieldModifier">
         Particle system modifier, implements a gravity field force for particles.
-        <add name="Direction" type="Vector3">Direction of the particle velocity</add>
+        <add name="Direction" type="Vector3">Direction of the gravity field in Field Object's space.</add>
     </niobject>
 
     <niobject name="NiPSysDragFieldModifier" inherit="NiPSysFieldModifier">
         Particle system modifier, implements a drag field force for particles.
-        <add name="Use Direction?" type="bool">Whether to use the direction field?</add>
-        <add name="Direction" type="Vector3">Direction of the particle velocity</add>
+        <add name="Use Direction" type="bool">Whether or not the drag force applies only in the direction specified.</add>
+        <add name="Direction" type="Vector3">Direction in which the force applies if Use Direction is true.</add>
     </niobject>
 
     <niobject name="NiPSysTurbulenceFieldModifier" inherit="NiPSysFieldModifier">
         Particle system modifier, implements a turbulence field force for particles.
-        <add name="Frequency" type="float">Frequency of the update.</add>
+        <add name="Frequency" type="float">How many turbulence updates per second.</add>
     </niobject>
 
     <niobject name="BSPSysLODModifier" inherit="NiPSysModifier">
@@ -4246,8 +4243,8 @@
     </niobject>
     
     <niobject name="BSPSysScaleModifier" inherit="NiPSysModifier">
-        <add name="Num Floats" type="uint"></add>
-        <add name="Floats" type="float" arr1="Num Floats">Unknown</add>
+        <add name="Num Scales" type="uint" />
+        <add name="Scales" type="float" arr1="Num Scales" />
     </niobject>
     
     
@@ -4331,18 +4328,18 @@
 
     <niobject name="NiPSysRadialFieldModifier" inherit="NiPSysFieldModifier">
         Particle system modifier, updates the particle velocity to simulate the effects of point gravity.
-        <add name="Radial Type" type="int">Unknown Enums?</add>
+        <add name="Radial Type" type="float">If zero, no attenuation.</add>
     </niobject>
 
-    <niobject name ="NiLODData" abstract="1" inherit="NiObject">
+    <niobject name="NiLODData" abstract="1" inherit="NiObject">
         Abstract class used for different types of LOD selections.
     </niobject>
 
     <niobject name="NiRangeLODData" abstract="0" inherit="NiLODData">
         NiRangeLODData controls switching LOD levels based on Z depth from the camera to the NiLODNode.
-        <add name="LOD Center" type="Vector3">?</add>
-        <add name="Num LOD Levels" type="uint">Number of levels of detail.</add>
-        <add name="LOD Levels" type="LODRange" arr1="Num LOD Levels">The ranges of distance that each level of detail applies in.</add>
+        <add name="LOD Center" type="Vector3" />
+        <add name="Num LOD Levels" type="uint" />
+        <add name="LOD Levels" type="LODRange" arr1="Num LOD Levels" />
     </niobject>
 
     <niobject name="NiScreenLODData" abstract="0" inherit="NiLODData">
@@ -4365,9 +4362,7 @@
     <niobject name="NiShadeProperty" abstract="0" inherit="NiProperty">
         Determines whether flat shading or smooth shading is used on a shape.
         <add name="Flags" type="Flags">
-            1&#039;s Bit:  Enable smooth phong shading on this shape.
-
-            If 1&#039;s bit is not set, hard-edged flat shading will be used on this shape.
+            Bit 0: Enable smooth phong shading on this shape. Otherwise, hard-edged flat shading will be used on this shape.
         </add>
     </niobject>
 
@@ -4403,7 +4398,7 @@
 
     <niobject name="NiSkinPartition" abstract="0" inherit="NiObject">
         Skinning data, optimized for hardware skinning. The mesh is partitioned in submeshes such that each vertex of a submesh is influenced only by a limited and fixed number of bones.
-        <add name="Num Skin Partition Blocks" type="uint">Unknown.</add>
+        <add name="Num Skin Partition Blocks" type="uint" />
 		<add name="Skin Partition Blocks" type="SkinPartition" arr1="Num Skin Partition Blocks" vercond="!((Version == 20.2.0.7) &amp;&amp; (User Version 2 == 100))">Skin partition objects.</add>
 		<add name="Data Size" type="uint" ver="20.2.0.7" userver2="100" />
 		<add name="Vertex Size" type="uint" ver="20.2.0.7" userver2="100" />
@@ -4445,7 +4440,7 @@
 
     <niobject name="NiSpecularProperty" abstract="0" inherit="NiProperty">
         Gives specularity to a shape. Flags 0x0001.
-        <add name="Flags" type="Flags">1&#039;s Bit = Enable specular lighting on this shape.</add>
+        <add name="Flags" type="Flags">Bit 0 = Enable specular lighting on this shape.</add>
     </niobject>
 
     <niobject name="NiSphericalCollider" abstract="0" inherit="NiParticleModifier">
@@ -4471,7 +4466,7 @@
         <add name="Flags" type="Flags" ver2="10.0.1.2">Property flags.</add>
         <add name="Stencil Enabled" type="byte" ver2="20.0.0.5">Enables or disables the stencil test.</add>
         <add name="Stencil Function" type="StencilCompareMode" ver2="20.0.0.5">Selects the compare mode function (see: glStencilFunc).</add>
-        <add name="Stencil Ref" type="uint" ver2="20.0.0.5">Unknown.  Default is 0.</add>
+        <add name="Stencil Ref" type="uint" ver2="20.0.0.5" />
         <add name="Stencil Mask" type="uint" default="4294967295" ver2="20.0.0.5">A bit mask. The default is 0xffffffff.</add>
         <add name="Fail Action" type="StencilAction" ver2="20.0.0.5" />
         <add name="Z Fail Action" type="StencilAction" ver2="20.0.0.5" />
@@ -4486,7 +4481,7 @@
             Bits 10-11: Draw Mode
             Bits 12-14: Stencil Function
         </add>
-        <add name="Stencil Ref" type="uint" ver1="20.1.0.3">Unknown.  Default is 0.</add>
+        <add name="Stencil Ref" type="uint" ver1="20.1.0.3" />
         <add name="Stencil Mask" type="uint" default="4294967295" ver1="20.1.0.3">A bit mask. The default is 0xffffffff.</add>
     </niobject>
 
@@ -4576,9 +4571,9 @@
         <add name="Glow Texture" type="TexDesc" cond="Has Glow Texture">The glowing texture.</add>
         <add name="Has Bump Map Texture" type="bool" ver1="3.3.0.13" cond="Texture Count &gt; 5">Do we have a bump map texture?</add>
         <add name="Bump Map Texture" type="TexDesc" cond="Has Bump Map Texture">The bump map texture.</add>
-        <add name="Bump Map Luma Scale" type="float" cond="Has Bump Map Texture">Unknown.</add>
-        <add name="Bump Map Luma Offset" type="float" cond="Has Bump Map Texture">Unknown.</add>
-        <add name="Bump Map Matrix" type="Matrix22" cond="Has Bump Map Texture">Unknown.</add>
+        <add name="Bump Map Luma Scale" type="float" cond="Has Bump Map Texture" />
+        <add name="Bump Map Luma Offset" type="float" cond="Has Bump Map Texture" />
+        <add name="Bump Map Matrix" type="Matrix22" cond="Has Bump Map Texture" />
         <add name="Has Normal Texture" type="bool" cond="Texture Count &gt; 6" ver1="20.2.0.5">Do we have a normal texture?</add>
         <add name="Normal Texture" type="TexDesc" cond="Has Normal Texture">Normal texture.</add>
         <add name="Has Parallax Texture" type="bool" cond="Texture Count &gt; 7" ver1="20.2.0.5" />
@@ -4724,18 +4719,12 @@
     <niobject name="NiVertexColorProperty" abstract="0" inherit="NiProperty">
         Property of vertex colors. This object is referred to by the root object of the NIF file whenever some NiTriShapeData object has vertex colors with non-default settings; if not present, vertex colors have vertex_mode=2 and lighting_mode=1.
         <add name="Flags" type="Flags">
-            Property flags. Appears to be unused until 20.1.0.3.
-
             Bits 0-2: Unknown
-            Bit 3: Lighting Mode?
-            Bits 4-5: Vertex Mode?
+            Bit 3: Lighting Mode
+            Bits 4-5: Vertex Mode
         </add>
-        <add name="Vertex Mode" type="VertMode" ver2="20.0.0.5">
-            Determines how vertex and material colors are mixed.
-            related gl function: glColorMaterial
-            In Flags from version 20.1.0.3 onwards.
-        </add>
-        <add name="Lighting Mode" type="LightMode" ver2="20.0.0.5">The light mode. In Flags from 20.1.0.3 on.</add>
+        <add name="Vertex Mode" type="VertMode" ver2="20.0.0.5">In Flags from 20.1.0.3 on.</add>
+        <add name="Lighting Mode" type="LightMode" ver2="20.0.0.5">In Flags from 20.1.0.3 on.</add>
     </niobject>
 
     <niobject name="NiVertWeightsExtraData" abstract="0" inherit="NiExtraData">
@@ -4750,8 +4739,8 @@
     <niobject name="NiVisData" abstract="0" inherit="NiObject">
         DEPRECATED (10.2), REMOVED (?), Replaced by NiBoolData.
         Visibility data for a controller.
-        <add name="Num Keys" type="uint">The number of visibility keys that follow.</add>
-        <add name="Keys" type="Key" arg="1" template="byte" arr1="Num Keys">The visibility keys.</add>
+        <add name="Num Keys" type="uint" />
+        <add name="Keys" type="Key" arg="1" template="byte" arr1="Num Keys" />
     </niobject>
 
     <niobject name="NiWireframeProperty" abstract="0" inherit="NiProperty">
@@ -5167,10 +5156,10 @@
 
     <compound name="Polygon">
         Two dimensional screen elements.
-        <add name="Num Vertices" type="ushort">Number of vertices in this polygon</add>
-        <add name="Vertex Offset" type="ushort">Vertex Offset</add>
-        <add name="Num Triangles" type="ushort">Number of faces in this polygon</add>
-        <add name="Triangle Offset" type="ushort">Triangle offset in shape</add>
+        <add name="Num Vertices" type="ushort" />
+        <add name="Vertex Offset" type="ushort">Offset in vertex array.</add>
+        <add name="Num Triangles" type="ushort" />
+        <add name="Triangle Offset" type="ushort">Offset in indices array.</add>
     </compound>
 
     <niobject name="NiScreenElementsData" inherit="NiTriShapeData">
@@ -5194,9 +5183,9 @@
 
     <niobject name="NiRoomGroup" inherit="NiNode">
         NiRoomGroup represents a set of connected rooms i.e. a game level.
-        <add name="Shell Link" type="Ptr" template="NiNode" >Outer Shell Geometry Node?</add>
-        <add name="Num Rooms" type="int">Number of rooms in this group</add>
-        <add name="Rooms" type="Ptr" template="NiRoom" arr1="Num Rooms">Rooms associated with this group.</add>
+        <add name="Shell" type="Ptr" template="NiNode">Object that represents the room group as seen from the outside.</add>
+        <add name="Num Rooms" type="int" />
+        <add name="Rooms" type="Ptr" template="NiRoom" arr1="Num Rooms" />
     </niobject>
 
     <niobject name="NiRoom" inherit="NiNode">
@@ -5216,9 +5205,9 @@
         They represent flat polygonal regions through which a part of a scene graph can be viewed.
         <add name="Portal Flags" type="ushort" />
         <add name="Plane Count" type="ushort">Unused in 20.x, possibly also 10.x.</add>
-        <add name="Num Vertices" type="ushort">Number of vertices in this polygon</add>
-        <add name="Vertices" type="Vector3" arr1="Num Vertices">Vertices</add>
-        <add name="Target" type="Ptr" template="NiNode">Target portal or room</add>
+        <add name="Num Vertices" type="ushort" />
+        <add name="Vertices" type="Vector3" arr1="Num Vertices" />
+        <add name="Adjoiner" type="Ptr" template="NiNode">Root of the scenegraph which is to be seen through this portal.</add>
     </niobject>
 
     <!-- Red Ocean Custom Objects
@@ -5341,13 +5330,13 @@
     
     <niobject name="BSShaderProperty" abstract="0" inherit="NiProperty">
         Bethesda-specific property.
-        <add name="Smooth" type="Flags" default="1">Unknown.
+        <add name="Smooth" type="Flags" default="1">
             0: smooth no
             1: smooth yes
         </add>
-        <add name="Shader Type" type="BSShaderType" default="SHADER_DEFAULT">Unknown (Set to 0x21 for NoLighting, 0x11 for Water)</add>
-        <add name="Shader Flags" type="BSShaderFlags" default="0x82000000">Shader Property Flags</add>
-        <add name="Shader Flags 2" type="BSShaderFlags2" default="1">Shader Property Flags 2</add>
+        <add name="Shader Type" type="BSShaderType" default="SHADER_DEFAULT" />
+        <add name="Shader Flags" type="BSShaderFlags" default="0x82000000" />
+        <add name="Shader Flags 2" type="BSShaderFlags2" default="1" />
         <add name="Environment Map Scale" type="float" default="1.0" vercond="User Version == 11">Scales the intensity of the environment/cube map.</add>
     </niobject>
 
@@ -5410,23 +5399,23 @@
         <add name="Interpolator 7: Length Var" type="Ref" template="NiInterpolator">References length variation interpolator.</add>
         <add name="Interpolator 8: Width" type="Ref" template="NiInterpolator">References width interpolator.</add>
         <add name="Interpolator 9: Arc Offset" type="Ref" template="NiInterpolator">References interpolator for amplitude control. 0=straight, 50=wide</add>
-        <add name="Subdivisions" type="ushort">Unknown</add>
-        <add name="Num Branches" type="ushort">Unknown</add>
-        <add name="Num Branches Variation" type="ushort">Unknown</add>
+        <add name="Subdivisions" type="ushort" />
+        <add name="Num Branches" type="ushort" />
+        <add name="Num Branches Variation" type="ushort" />
         <add name="Length" type="float">How far lightning will stretch to.</add>
         <add name="Length Variation" type="float">How far lightning variation will stretch to.</add>
         <add name="Width" type="float">How wide the bolt will be.</add>
         <add name="Child Width Mult" type="float">Influences forking behavior with a multiplier.</add>
-        <add name="Arc Offset" type="float">Unknown</add>
-        <add name="Fade Main Bolt" type="bool">Unknown</add>
-        <add name="Fade Child Bolts" type="bool">Unknown</add>
-        <add name="Animate Arc Offset" type="bool">Unknown</add>
+        <add name="Arc Offset" type="float" />
+        <add name="Fade Main Bolt" type="bool" />
+        <add name="Fade Child Bolts" type="bool" />
+        <add name="Animate Arc Offset" type="bool" />
         <add name="Shader Property" type="Ref" template="NiProperty">Reference to a shader property.</add>
 	</niobject>
 
    <niobject name="BSShaderTextureSet" abstract="0" inherit="NiObject">
         Bethesda-specific Texture Set.
-        <add name="Num Textures" type="int" default="6">Number of Textures</add>
+        <add name="Num Textures" type="int" default="6" />
         <add name="Textures" type="SizedString" arr1="Num Textures">Textures.
             0: Diffuse
             1: Normal/Gloss
@@ -5492,7 +5481,7 @@
         Skyrim Shader Property Flags 1
         <option value="0" name="SLSF1_Specular">Enables Specularity</option>
         <option value="1" name="SLSF1_Skinned">Required For Skinned Meshes.</option>
-        <option value="2" name="SLSF1_Temp_Refraction">Unknown</option>
+        <option value="2" name="SLSF1_Temp_Refraction"></option>
         <option value="3" name="SLSF1_Vertex_Alpha">Enables using alpha component of vertex colors.</option>
         <option value="4" name="SLSF1_Greyscale_To_PaletteColor">in EffectShaderProperty</option>
         <option value="5" name="SLSF1_Greyscale_To_PaletteAlpha">in EffectShaderProperty</option>
@@ -5503,8 +5492,8 @@
         <option value="10" name="SLSF1_Facegen_Detail_Map">Use a face detail map in the 4th texture slot.</option>
         <option value="11" name="SLSF1_Parallax">Unused?</option>
         <option value="12" name="SLSF1_Model_Space_Normals">Use Model space normals and an external Specular Map.</option>
-        <option value="13" name="SLSF1_Non_Projective_Shadows">Unknown.</option>
-        <option value="14" name="SLSF1_Landscape">Unknown.</option>
+        <option value="13" name="SLSF1_Non_Projective_Shadows"></option>
+        <option value="14" name="SLSF1_Landscape"></option>
         <option value="15" name="SLSF1_Refraction">Use normal map for refraction effect.</option>
         <option value="16" name="SLSF1_Fire_Refraction"></option>
         <option value="17" name="SLSF1_Eye_Environment_Mapping">Eye Environment Mapping (Must use the Eye shader and the model must be skinned)</option>
@@ -5645,9 +5634,9 @@
         <add name="Emissive Multiple" type="float">Multiplied emissive colors</add>
         <add name="Wet Material" type="string" vercond="(Version == 20.2.0.7) &amp;&amp; (User Version 2 == 130)" />
         <add name="Texture Clamp Mode" type="TexClampMode">How to handle texture borders.</add>
-        <add name="Alpha" type="float" default="1.0">The material&#039;s opacity (1=non-transparent).</add>
+        <add name="Alpha" type="float" default="1.0">The material opacity (1=non-transparent).</add>
         <add name="Refraction Strength" type="float">The amount of distortion. **Not based on physically accurate refractive index** (0=none) (0-1)</add>
-        <add name="Glossiness" type="float">The material&#039;s specular power, or glossiness (0-999).</add>
+        <add name="Glossiness" type="float">The material specular power, or glossiness (0-999).</add>
         <add name="Specular Color" type="Color3">Adds a colored highlight.</add>
         <add name="Specular Strength" type="float" default="1.0">Brightness of specular highlight. (0=not visible) (0-999)</add>
         <add name="Lighting Effect 1" type="float" vercond="User Version 2 &lt; 130">Controls strength for envmap/backlight/rim/softlight lighting effect?</add>
@@ -5674,7 +5663,7 @@
         <add name="Parallax Refraction Scale" type="float" cond="Skyrim Shader Type == 11">Depth of inner parallax layer effect.</add>
         <add name="Parallax Inner Layer Texture Scale" type="TexCoord" cond="Skyrim Shader Type == 11">Scales the inner parallax layer texture.</add>
         <add name="Parallax Envmap Strength" type="float" cond="Skyrim Shader Type == 11">How strong the environment/cube map is. (0-??)</add>
-        <add name="Sparkle Parameters" type="Vector4" cond="Skyrim Shader Type == 14">Unknown/unused?  CK lists "snow material" when used.</add>
+        <add name="Sparkle Parameters" type="Vector4" cond="Skyrim Shader Type == 14">CK lists "snow material" when used.</add>
         <add name="Eye Cubemap Scale" type="float" cond="Skyrim Shader Type == 16">Eye cubemap scale</add>
         <add name="Left Eye Reflection Center" type="Vector3" cond="Skyrim Shader Type == 16">Offset to set center for left eye cubemap</add>
         <add name="Right Eye Reflection Center" type="Vector3" cond="Skyrim Shader Type == 16">Offset to set center for right eye cubemap</add>
@@ -5737,44 +5726,43 @@
         <add name="UV Offset" type="TexCoord">Offset UVs. Seems to be unused, but it fits with the other Skyrim shader properties.</add>
         <add name="UV Scale" type="TexCoord" default="1.0, 1.0">Offset UV Scale to repeat tiling textures, see above.</add>
         <add name="Source Texture" type="SizedString">points to an external texture.</add>
-        <add name="Sky Object Type" type="SkyObjectType">Sky Object Type</add>
+        <add name="Sky Object Type" type="SkyObjectType" />
     </niobject>
 
     <niobject name="BSDismemberSkinInstance" abstract="0" inherit="NiSkinInstance">
         Bethesda-specific skin instance.
-        <add name="Num Partitions" type="int">Unknown</add>
-
-        <add name="Partitions" type="BodyPartList" arr1="Num Partitions">Unknown</add>
+        <add name="Num Partitions" type="int" />
+        <add name="Partitions" type="BodyPartList" arr1="Num Partitions" />
     </niobject>
 
     <niobject name="BSDecalPlacementVectorExtraData" inherit="NiFloatExtraData">
-        Bethesda-specific extra data. (for dynamic decal projection?)
-        <add name="Num Vector Blocks" type="short">Number of groups</add>
-        <add name="Vector Blocks" type="DecalVectorArray" arr1="Num Vector Blocks">Number of Blocks</add>
+        Bethesda-specific extra data. Lists locations and normals on a mesh that are appropriate for decal placement.
+        <add name="Num Vector Blocks" type="short" />
+        <add name="Vector Blocks" type="DecalVectorArray" arr1="Num Vector Blocks" />
     </niobject>
 
     <niobject name="BSPSysSimpleColorModifier" inherit="NiPSysModifier">
         Bethesda-specific particle modifier.
-        <add name="Fade In Percent" type="float">Unknown</add>
-        <add name="Fade out Percent" type="float">Unknown</add>
-        <add name="Color 1 End Percent" type="float">Unknown</add>
-        <add name="Color 1 Start Percent" type="float">Unknown</add>
-        <add name="Color 2 End Percent" type="float">Unknown</add>
-        <add name="Color 2 Start Percent" type="float">Unknown</add>
-        <add name="Colors" type="Color4" arr1="3">Colors</add>
+        <add name="Fade In Percent" type="float" />
+        <add name="Fade out Percent" type="float" />
+        <add name="Color 1 End Percent" type="float" />
+        <add name="Color 1 Start Percent" type="float" />
+        <add name="Color 2 End Percent" type="float" />
+        <add name="Color 2 Start Percent" type="float" />
+        <add name="Colors" type="Color4" arr1="3" />
     </niobject>
 
 
     <bitflags name="BSValueNodeFlags" storage="byte">
         Flags for BSValueNode.
-        <option value="0" name="BillboardWorldZ">Billboard World Z</option>
-        <option value="1" name="UsePlayerAdjust">Use Player Adjust</option>
+        <option value="0" name="BillboardWorldZ" />
+        <option value="1" name="UsePlayerAdjust" />
     </bitflags>
 
     <niobject name="BSValueNode" inherit="NiNode">
         Bethesda-specific node. Found on fxFire effects
-        <add name="Value" type="uint">Value</add>
-        <add name="Value Node Flags" type="BSValueNodeFlags">Value node flags.</add>
+        <add name="Value" type="uint" />
+        <add name="Value Node Flags" type="BSValueNodeFlags" />
     </niobject>
 
 
@@ -5794,7 +5782,7 @@
 
     <niobject name="BSPSysStripUpdateModifier" inherit="NiPSysModifier">
         Bethesda-Specific (mesh?) Particle System Modifier.
-        <add name="Update Delta Time" type="float">Unknown</add>
+        <add name="Update Delta Time" type="float" />
     </niobject>
 
 
@@ -5806,9 +5794,9 @@
 
     <niobject name="BSMasterParticleSystem" inherit="NiNode">
         Bethesda-Specific particle system.
-        <add name="Max Emitter Objects" type="ushort">Unknown</add>
-        <add name="Num Particle Systems" type="int">Unknown</add>
-        <add name="Particle Systems" type="Ref" template="NiAVObject" arr1="Num Particle Systems">Unknown</add>
+        <add name="Max Emitter Objects" type="ushort" />
+        <add name="Num Particle Systems" type="int" />
+        <add name="Particle Systems" type="Ref" template="NiAVObject" arr1="Num Particle Systems" />
 
     </niobject>
 
@@ -5827,16 +5815,16 @@
 
     <niobject name="BSOrderedNode" inherit="NiNode">
         Bethesda-Specific node.
-        <add name="Alpha Sort Bound" type="Vector4">Unknown</add>
-        <add name="Static Bound" type="bool">Unknown</add>
+        <add name="Alpha Sort Bound" type="Vector4" />
+        <add name="Static Bound" type="bool" />
     </niobject>
 
 
     <niobject name="BSRangeNode" inherit="NiNode">
         Bethesda-Specific node.
-        <add name="Min" type="byte">Min</add>
-        <add name="Max" type="byte">Max</add>
-        <add name="Current" type="byte">Current</add>
+        <add name="Min" type="byte" />
+        <add name="Max" type="byte" />
+        <add name="Current" type="byte" />
     </niobject>
 
     <niobject name="BSBlastNode" inherit="BSRangeNode">
@@ -5850,7 +5838,7 @@
 
     <niobject name="BSRefractionFirePeriodController" abstract="0" inherit="NiTimeController">
         Bethesda-specific time controller.
-        <add name="Interpolator" type="Ref" template="NiInterpolator" ver1="20.2.0.7">Link to Interpolator.</add>
+        <add name="Interpolator" type="Ref" template="NiInterpolator" ver1="20.2.0.7" />
     </niobject>
 
     <niobject name="bhkConvexListShape" abstract="0" inherit="bhkShape">
@@ -5862,7 +5850,7 @@
 
         Also, shapes collected in a bhkListShape may not have the correct
         walking noise, so only use it for non-walkable objects.
-        <add name="Num Sub Shapes" type="uint">The number of sub shapes referenced.</add>
+        <add name="Num Sub Shapes" type="uint" />
         <add name="Sub Shapes" type="Ref" template="bhkConvexShape" arr1="Num Sub Shapes">List of shapes.</add>
         <add name="Material" type="HavokMaterial">The material of the shape.</add>
         <add name="Radius" type="float" />
@@ -5882,9 +5870,9 @@
 
     <niobject name="BSTreadTransfInterpolator" abstract="0" inherit="NiInterpolator">
         Bethesda-specific interpolator.
-        <add name="Num Tread Transforms" type="int">Unknown.</add>
-        <add name="Tread Transforms" type="BSTreadTransform" arr1="Num Tread Transforms">Unknown.</add>
-        <add name="Data" type="Ref" template="NiFloatData">Unknown float data.</add>
+        <add name="Num Tread Transforms" type="int" />
+        <add name="Tread Transforms" type="BSTreadTransform" arr1="Num Tread Transforms" />
+        <add name="Data" type="Ref" template="NiFloatData" />
     </niobject>
 
     <enum name="AnimNoteType" storage="uint">
@@ -5912,8 +5900,8 @@
     <niobject name="bhkLiquidAction" inherit="bhkSerializable">
         Bethesda-specific Havok serializable.
         <add name="User Data" type="uint" />
-        <add name="Unknown Int 2" type="int">Unknown Flag</add>
-        <add name="Unknown Int 3" type="int">Unknown Flag</add>
+        <add name="Unknown Int 2" type="int">Unknown</add>
+        <add name="Unknown Int 3" type="int">Unknown</add>
         <add name="Initial Stick Force" type="float" />
         <add name="Stick Strength" type="float" />
         <add name="Neighbor Distance" type="float" />
@@ -5953,8 +5941,8 @@
     
     <niobject name="BSMultiBoundSphere" inherit="BSMultiBoundData">
         Bethesda-specific object.
-        <add name="Center" type="Vector3">Center</add>
-        <add name="Radius" type="float">Radius</add>
+        <add name="Center" type="Vector3" />
+        <add name="Radius" type="float" />
     </niobject>
 
     <niobject name="BSSegmentedTriShape" inherit="NiTriShape">
@@ -5983,12 +5971,12 @@
         <!-- todo: check if this is essentially the same as BSPackedAdditionalData, i.e. if this is identical to BSPackedAdditionalData minus its last two fields -->
         <add name="Has Data" type="bool">Has data</add>
         <add name="Block Size" type="int" cond="Has Data">Size of Block</add>
-        <add name="Num Blocks" type="int" cond="Has Data">Unknown</add>
-        <add name="Block Offsets" type="int" arr1="Num Blocks" cond="Has Data">Unknown</add>
+        <add name="Num Blocks" type="int" cond="Has Data" />
+        <add name="Block Offsets" type="int" arr1="Num Blocks" cond="Has Data" />
 
-        <add name="Num Data" type="int" cond="Has Data">Unknown</add>
-        <add name="Data Sizes" type="int" arr1="Num Data" cond="Has Data">Unknown</add>
-        <add name="Data" type="byte" arr1="Num Data" arr2="Block Size" cond="Has Data">Unknown</add>
+        <add name="Num Data" type="int" cond="Has Data" />
+        <add name="Data Sizes" type="int" arr1="Num Data" cond="Has Data" />
+        <add name="Data" type="byte" arr1="Num Data" arr2="Block Size" cond="Has Data" />
     </compound>
 
     <compound name="BSPackedAdditionalDataBlock">
@@ -6000,7 +5988,7 @@
 
         <add name="Num Atoms" type="int" cond="Has Data">Number of atoms?</add>
         <add name="Atom Sizes" type="int" arr1="Num Atoms" cond="Has Data">The sum of all of these equal num total bytes per element, so this probably describes how each data element breaks down into smaller chunks (i.e. atoms).</add>
-        <add name="Data" type="byte" arr1="Num Total Bytes" cond="Has Data">Unknown</add>
+        <add name="Data" type="byte" arr1="Num Total Bytes" cond="Has Data" />
         <add name="Unknown Int 1" type="int" />
         <add name="Num Total Bytes Per Element" type="int">Unsure, but this seems to correspond again to the number of total bytes per element.</add>
     </compound>
@@ -6024,8 +6012,8 @@
 
     <niobject name="BSWArray" inherit="NiExtraData">
         Bethesda-specific extra data.
-        <add name="Num Items" type="int">Unknown</add>
-        <add name="Items" type="int" arr1="Num Items">Unknown</add>
+        <add name="Num Items" type="int" />
+        <add name="Items" type="int" arr1="Num Items" />
     </niobject>
 
     <niobject name="bhkAabbPhantom" inherit="bhkShapePhantom">
@@ -6068,16 +6056,16 @@
         Found in Fallout 3 .psa files, extra ragdoll info for NPCs/creatures. (usually idleanims\deathposes.psa)
         Defines different kill poses. The game selects the pose randomly and applies it to a skeleton immediately upon ragdolling.
         Poses can be previewed in GECK Object Window-Actor Data-Ragdoll and selecting Pose Matching tab.
-        <add name="Num Bones" type="int">Number of target bones.</add>
-        <add name="Bones" type="string" arr1="Num Bones">Array of bone names.</add>
-        <add name="Num Poses" type="int">Number of poses.</add>
-        <add name="Poses" type="BonePose" arr1="Num Poses">Array of poses.</add>
+        <add name="Num Bones" type="int" />
+        <add name="Bones" type="string" arr1="Num Bones" />
+        <add name="Num Poses" type="int" />
+        <add name="Poses" type="BonePose" arr1="Num Poses" />
     </niobject>
 
     <niobject name="bhkRagdollTemplate" inherit="NiExtraData">
         Found in Fallout 3, more ragdoll info?  (meshes\ragdollconstraint\*.rdt)
-        <add name="Num Bones" type="int">Number of target bones</add>
-        <add name="Bones" type="Ref" template="NiObject" arr1="Num Bones">Bones in index</add>
+        <add name="Num Bones" type="int" />
+        <add name="Bones" type="Ref" template="NiObject" arr1="Num Bones" />
     </niobject>
 
     <niobject name="bhkRagdollTemplateData" inherit="NiObject">
@@ -6201,7 +6189,6 @@
         <add name="Regions" type="Region" arr1="Num Regions">The regions in the mesh. Regions can be used to mark off submeshes which are independent draw calls.</add>
         <add name="Num Components" type="uint">Number of components of the data (matches corresponding field in MeshData).</add>
         <add name="Component Formats" type="ComponentFormat" arr1="Num Components">The format of each component in this data stream.</add>
-        <!-- temporarily defined as blob until we have a way to handle this -->
         <add name="Data" type="byte" binary="1" arr1="Num Bytes" />
         <add name="Streamable" type="bool" default="1" />
     </niobject>
@@ -6243,15 +6230,15 @@
     <compound name="MaterialData" ver1="20.5.0.0">
         Data stored per-material by NiRenderObject
         <add name="Material Name" type="string">The name of the material.</add>
-        <add name="Material Extra Data" type ="uint">Extra data associated with the material?</add>
+        <add name="Material Extra Data" type="uint">Extra data associated with the material?</add>
     </compound>
 
     <niobject name="NiRenderObject" inherit="NiAVObject">
         An object that can be rendered.
-        <add name="Num Materials" type="uint">The number of materials affecting this renderable object.</add>
+        <add name="Num Materials" type="uint" />
         <add name="Material Data" type="MaterialData" arr1="Num Materials">Per-material data.</add>
         <add name="Active Material" type="int" default="-1">The index of the currently active material.</add>
-        <add name="Material Needs Update Default" type="bool">The initial value for the flag that determines if the internal cached shader is valid.</add>
+        <add name="Material Needs Update Default" type="bool">Whether the materials for this render object always needs to be updated before rendering with them.</add>
     </niobject>
 
     <enum name="MeshPrimitiveType" storage="uint">
@@ -6264,23 +6251,23 @@
     </enum>
 
     <enum name="SyncPoint" storage="ushort">
-        Specifies the time when an application must syncronize for some reason.
-        <option value="0x8000" name="SYNC_ANY">Value used when no specific sync point is desired.</option>
+        A sync point corresponds to a particular stage in per-frame processing.
+        <option value="0x8000" name="SYNC_ANY">Synchronize for any sync points that the modifier supports.</option>
         <option value="0x8010" name="SYNC_UPDATE">Synchronize when an object is updated.</option>
         <option value="0x8020" name="SYNC_POST_UPDATE">Synchronize when an entire scene graph has been updated.</option>
         <option value="0x8030" name="SYNC_VISIBLE">Synchronize when an object is determined to be potentially visible.</option>
         <option value="0x8040" name="SYNC_RENDER">Synchronize when an object is rendered.</option>
         <option value="0x8050" name="SYNC_PHYSICS_SIMULATE">Synchronize when a physics simulation step is about to begin.</option>
         <option value="0x8060" name="SYNC_PHYSICS_COMPLETED">Synchronize when a physics simulation step has produced results.</option>
-        <option value="0x8070" name="SYNC_REFLECTIONS">Syncronize after all data necessary to calculate reflections is ready.</option>
+        <option value="0x8070" name="SYNC_REFLECTIONS">Synchronize after all data necessary to calculate reflections is ready.</option>
     </enum>
 
     <niobject name="NiMeshModifier" inherit="NiObject">
         Base class for mesh modifiers.
-        <add name="Num Submit Points" type="uint">The number of submit points used by this mesh modifier.</add>
-        <add name="Submit Points" type="SyncPoint" arr1="Num Submit Points">The submit points used by this mesh modifier</add>
-        <add name="Num Complete Points" type="uint">The number of complete points used by this mesh modifier.</add>
-        <add name="Complete Points" type="SyncPoint" arr1="Num Complete Points">The complete points used by this mesh modifier</add>
+        <add name="Num Submit Points" type="uint" />
+        <add name="Submit Points" type="SyncPoint" arr1="Num Submit Points">The sync points supported by this mesh modifier for SubmitTasks.</add>
+        <add name="Num Complete Points" type="uint" />
+        <add name="Complete Points" type="SyncPoint" arr1="Num Complete Points">The sync points supported by this mesh modifier for CompleteTasks.</add>
     </niobject>
 
     <compound name="ExtraMeshDataEpicMickey">
@@ -6316,7 +6303,7 @@
         <add name="Num Datas" type="uint" />
         <add name="Datas" type="MeshData" arr1="Num Datas" />
         <add name="Num Modifiers" type="uint" />
-        <add name="Modifiers" type="Ref" template="NiMeshModifier" arr1="Num Modifiers" /><!-- see Zorsis Zombie_Boy.nif -->
+        <add name="Modifiers" type="Ref" template="NiMeshModifier" arr1="Num Modifiers" />
 
         <!-- start: epic mickey (user version 15) unknowns -->
         <add name="Unknown 100" type="byte" userver="15">Unknown.</add>
@@ -6338,11 +6325,11 @@
     </niobject>
 
     <niobject name="NiMorphWeightsController" inherit="NiInterpController">
-        <add name="Unknown 2" type="int"></add>
-        <add name="Num Interpolators" type="uint"></add>
-        <add name="Interpolators" type="Ref" template="NiObject" arr1="Num Interpolators"></add>
-        <add name="Num Targets" type="uint">The number of morph targets.</add>
-        <add name="Target Names" type="string" arr1="Num Targets">Name of each morph target.</add>
+        <add name="Count" type="uint" />
+        <add name="Num Interpolators" type="uint" />
+        <add name="Interpolators" type="Ref" template="NiObject" arr1="Num Interpolators" />
+        <add name="Num Targets" type="uint" />
+        <add name="Target Names" type="string" arr1="Num Targets" />
     </niobject>
 
     <compound name="ElementReference" ver1="20.5.0.0">
@@ -6371,20 +6358,22 @@
             USE_SOFTWARE_SKINNING = 0x0001
             RECOMPUTE_BOUNDS = 0x0002
         </add>
-        <add name="Skeleton Root" type="Ptr" template="NiAVObject">The root bone of the skeleton.</add><!-- Root Bone Parent -->
-        <add name="Skeleton Transform" type="NiTransform">The transform that takes the root bone parent coordinate system into the skin coordinate system.</add><!-- Root Bone Parent To Skin Transform -->
+        <add name="Skeleton Root" type="Ptr" template="NiAVObject">The root bone of the skeleton.</add>
+        <add name="Skeleton Transform" type="NiTransform">The transform that takes the root bone parent coordinate system into the skin coordinate system.</add>
         <add name="Num Bones" type="uint">The number of bones referenced by this mesh modifier.</add>
         <add name="Bones" type="Ptr" template="NiAVObject" arr1="Num Bones">Pointers to the bone nodes that affect this skin.</add>
-        <add name="Bone Transforms" type="NiTransform" arr1="Num Bones">The transforms that go from bind-pose space to bone space.</add><!-- Skin To Bone Transforms -->
+        <add name="Bone Transforms" type="NiTransform" arr1="Num Bones">The transforms that go from bind-pose space to bone space.</add>
         <add name="Bone Bounds" type="NiBound" cond="(Flags &amp; 2)!=0" arr1="Num Bones">The bounds of the bones.  Only stored if the RECOMPUTE_BOUNDS bit is set.</add>
     </niobject>
 
     <niobject name="NiMeshHWInstance" inherit="NiAVObject">
-        <add name="Master Mesh" type="Ref" template="NiMesh" />
+        An instance of a hardware-instanced mesh in a scene graph.
+        <add name="Master Mesh" type="Ref" template="NiMesh">The instanced mesh this object represents.</add>
         <add name="Mesh Modifier" type="Ref" template="NiInstancingMeshModifier" />
     </niobject>
 
     <niobject name="NiInstancingMeshModifier" inherit="NiMeshModifier">
+        Mesh modifier that provides per-frame instancing capabilities in Gamebryo.
         <add name="Has Instance Nodes" type="bool" />
         <add name="Per Instance Culling" type="bool" />
         <add name="Has Static Bounds" type="bool" />
@@ -6400,6 +6389,7 @@
     </compound>
 
     <niobject name="NiSkinningLODController" inherit="NiTimeController">
+        Defines the levels of detail for a given character and dictates the character's current LOD.
         <add name="Current LOD" type="uint" />
         <add name="Num Bones" type="uint" />
         <add name="Bones" type="Ref" template="NiNode" arr1="Num Bones" />
@@ -6418,6 +6408,7 @@
     </compound>
 
     <enum name="AlignMethod" storage="uint">
+        Describes the various methods that may be used to specify the orientation of the particles.
         <option value="0" name="ALIGN_INVALID" />
         <option value="1" name="ALIGN_PER_PARTICLE" />
         <option value="2" name="ALIGN_LOCAL_FIXED" />
@@ -6491,8 +6482,8 @@
 
     <niobject name="NiPSSimulator" inherit="NiMeshModifier">
         The mesh modifier that performs all particle system simulation.
-        <add name="Num Simulation Steps" type="uint">The number of simulation steps in this modifier.</add>
-        <add name="Simulation Steps" type="Ref" template="NiPSSimulatorStep" arr1="Num Simulation Steps">Links to the simulation steps.</add>
+        <add name="Num Simulation Steps" type="uint" />
+        <add name="Simulation Steps" type="Ref" template="NiPSSimulatorStep" arr1="Num Simulation Steps" />
     </niobject>
 
     <niobject name="NiPSSimulatorStep" inherit="NiObject" abstract="1">
@@ -6509,13 +6500,13 @@
 
     <niobject name="NiPSSimulatorGeneralStep" inherit="NiPSSimulatorStep">
         Encapsulates a floodgate kernel that updates particle size, colors, and rotations.
-        <add name="Num Size Keys" type="byte" ver1="20.6.1.0">The number of size animation keys.</add>
+        <add name="Num Size Keys" type="byte" ver1="20.6.1.0" />
         <add name="Size Keys" type="Key" template="float" arg="1" arr1="Num Size Keys" ver1="20.6.1.0">The particle size keys.</add>
         <add name="Size Loop Behavior" type="PSLoopBehavior" ver1="20.6.1.0">The loop behavior for the size keys.</add>
-        <add name="Num Color Keys" type="byte">The number of color animation keys.</add>
+        <add name="Num Color Keys" type="byte" />
         <add name="Color Keys" type="Key" template="ByteColor4" arg="1" arr1="Num Color Keys">The particle color keys.</add>
         <add name="Color Loop Behavior" type="PSLoopBehavior" ver1="20.6.1.0">The loop behavior for the color keys.</add>
-        <add name="Num Rotation Keys" type="byte" ver1="20.6.1.0">The number of rotation animation keys.</add>
+        <add name="Num Rotation Keys" type="byte" ver1="20.6.1.0" />
         <add name="Rotation Keys" type="QuatKey" template="Quaternion" arg="1" arr1="Num Rotation Keys" ver1="20.6.1.0">The particle rotation keys.</add>
         <add name="Rotation Loop Behavior" type="PSLoopBehavior" ver1="20.6.1.0">The loop behavior for the rotation keys.</add>
         <add name="Grow Time" type="float"> The the amount of time over which a particle's size is ramped from 0.0 to 1.0 in seconds</add>
@@ -6526,19 +6517,19 @@
 
     <niobject name="NiPSSimulatorForcesStep" inherit="NiPSSimulatorStep">
         Encapsulates a floodgate kernel that simulates particle forces.
-        <add name="Num Forces" type="uint">The number of forces affecting the particle system.</add>
-        <add name="Forces" type="Ref" template="NiObject" arr1="Num Forces">The forces affecting the particle system.</add><!--Should be NiPSForce-->
+        <add name="Num Forces" type="uint" />
+        <add name="Forces" type="Ref" template="NiPSForce" arr1="Num Forces">The forces affecting the particle system.</add>
     </niobject>
 
     <niobject name="NiPSSimulatorCollidersStep" inherit="NiPSSimulatorStep">
         Encapsulates a floodgate kernel that simulates particle colliders.
-        <add name="Num Colliders" type="uint">The number of colliders affecting the particle system.</add>
-        <add name="Colliders" type="Ref" template="NiObject" arr1="Num Colliders">The colliders affecting the particle system.</add><!--Should be NiPSCollider-->
+        <add name="Num Colliders" type="uint" />
+        <add name="Colliders" type="Ref" template="NiPSCollider" arr1="Num Colliders">The colliders affecting the particle system.</add>
     </niobject>
 
     <niobject name="NiPSSimulatorMeshAlignStep" inherit="NiPSSimulatorStep">
         Encapsulates a floodgate kernel that updates mesh particle alignment and transforms.
-        <add name="Num Rotation Keys" type="byte">The number of rotation keys.</add>
+        <add name="Num Rotation Keys" type="byte" />
         <add name="Rotation Keys" type="QuatKey" template="Quaternion" arg="1" arr1="Num Rotation Keys">The particle rotation keys.</add>
         <add name="Rotation Loop Behavior" type="PSLoopBehavior">The loop behavior for the rotation keys.</add>
     </niobject>
@@ -6555,6 +6546,7 @@
     <!-- NiPS Forces -->
 
     <enum name="PSForceType" storage="uint">
+        This is used by the Floodgate kernel to determine which NiPSForceHelpers functions to call.
         <option value="0" name="FORCE_BOMB" />
         <option value="1" name="FORCE_DRAG" />
         <option value="2" name="FORCE_AIR_FIELD" />
@@ -6751,6 +6743,7 @@
     <!-- NiPS Colliders -->
 
     <enum name="ColliderType" storage="uint">
+        This is used by the Floodgate kernel to determine which NiPSColliderHelpers functions to call.
         <option value="0" name="COLLIDER_PLANAR" />
         <option value="1" name="COLLIDER_SPHERICAL" />
     </enum>
@@ -6808,6 +6801,7 @@
     </niobject>
 
     <niobject name="NiShadowGenerator" inherit="NiObject">
+        An NiShadowGenerator object is attached to an NiDynamicEffect object to inform the shadowing system that the effect produces shadows.
         <add name="Name" type="string" />
         <add name="Flags" type="ushort" />
         <add name="Num Shadow Casters" type="uint" />
@@ -6869,15 +6863,15 @@
 		<add name="Materials 8" type="uint" arr1="Num Materials 8">Does not appear to be used.</add>
 		<add name="Num Materials" type="uint">Number of chunk materials</add>
 		<add name="Chunk Materials" type="bhkCMSDMaterial" arr1="Num Materials">Table (array) with sets of materials. Chunks refers to this table by index.</add>
-		<add name="Unknown Int 6" type="uint">Unknown</add>
+		<add name="Num Named Materials" type="uint" />
 		<add name="Num Transforms" type="uint">Number of chunk transformations</add>
         <add name="Chunk Transforms" type="bhkCMSDTransform" arr1="Num Transforms">Table (array) with sets of transformations. Chunks refers to this table by index.</add>
-		<add name="Num Big Verts" type="uint">Unknown</add>
+		<add name="Num Big Verts" type="uint" />
 		<add name="Big Verts" type="Vector4" arr1="Num Big Verts">Compressed Vertices?</add>
-        <add name="Num Big Tris" type="uint">Unknown</add>
-        <add name="Big Tris" type="bhkCMSDBigTris" arr1="Num Big Tris">Unknown</add>
-        <add name="Num Chunks" type="uint">Unknown</add>
-        <add name="Chunks" type="bhkCMSDChunk" arr1="Num Chunks"></add>
+        <add name="Num Big Tris" type="uint" />
+        <add name="Big Tris" type="bhkCMSDBigTris" arr1="Num Big Tris" />
+        <add name="Num Chunks" type="uint" />
+        <add name="Chunks" type="bhkCMSDChunk" arr1="Num Chunks" />
         <add name="Num Convex Piece A" type="uint">Does not appear to be used. Needs array.</add>
 	</niobject>
 	
@@ -6917,9 +6911,9 @@
 
 	<niobject name="BSLODTriShape" inherit="NiTriBasedGeom">
 		A variation on NiTriShape, for visibility control over vertex groups.
-		<add name="Level 0 Size" type="uint">Unknown</add>
-		<add name="Level 1 Size" type="uint">Unknown</add>
-		<add name="Level 2 Size" type="uint">Unknown</add>
+		<add name="Level 0 Size" type="uint" />
+		<add name="Level 1 Size" type="uint" />
+		<add name="Level 2 Size" type="uint" />
 	</niobject>
 
 	<niobject name="BSFurnitureMarkerNode" inherit="BSFurnitureMarker">
@@ -6932,9 +6926,9 @@
     
     <niobject name="BSTreeNode" inherit="NiNode">
         Node for handling Trees, Switches branch configurations for variation?
-        <add name="Num Bones 1" type="uint">Unknown</add>
+        <add name="Num Bones 1" type="uint" />
         <add name="Bones 1" type="Ref" arr1="Num Bones 1" template="NiNode">Unknown</add>
-        <add name="Num Bones 2" type="uint">Unknown</add>
+        <add name="Num Bones 2" type="uint" />
         <add name="Bones" type="Ref" arr1="Num Bones 2" template="NiNode">Unknown</add>
     </niobject>
     
@@ -7083,11 +7077,11 @@
     </niobject>
 
     <compound name="BSConnectPoint">
-        <add name="Parent" type="SizedString" />
+        <add name="Parent" type="SizedString" default="WorkshopConnectPoints" />
         <add name="Name" type="SizedString" />
         <add name="Rotation" type="Quaternion" />
         <add name="Translation" type="Vector3" />
-        <add name="Scale" type="float" />
+        <add name="Scale" type="float" default="1.0" />
     </compound>
 
     <niobject name="BSConnectPoint::Parents" inherit="NiExtraData">