diff --git a/nif.xml b/nif.xml
index 80f0ded349cd0d351bbd7862dd781f3b8b6390fd..c6a19eddef3734ee8d048722395377e95adc861d 100644
--- a/nif.xml
+++ b/nif.xml
@@ -1488,19 +1488,30 @@
 	</bitflags>
     
 	<compound name="BSVertexData">
-		<add name="Vertex" type="Vector3" userver2="100" cond="((ARG &amp; 16) != 0)" />
-		<add name="Bitangent X" type="float" userver2="100" cond="((ARG &amp; 256) != 0)" />
-		<add name="Unknown Int" type="int" userver2="100" cond="(ARG &amp; 256) == 0" />
+		<add name="Vertex" type="HalfVector3" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 16384) == 0)" />
+		<add name="Bitangent X" type="hfloat" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 256) != 0) &amp;&amp; ((ARG &amp; 16384) == 0)" />
+		<add name="Unknown Short" type="ushort" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 256) == 0) &amp;&amp; ((ARG &amp; 16384) == 0)" />
 		
-		<add name="Vertex" type="HalfVector3" userver2="130" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 16384) == 0)" />
-		<add name="Bitangent X" type="hfloat" userver2="130" cond="((ARG &amp; 256) != 0) &amp;&amp; ((ARG &amp; 16384) == 0)" />
-		<add name="Unknown Short" type="ushort" userver2="130" cond="((ARG &amp; 256) == 0) &amp;&amp; ((ARG &amp; 16384) == 0)" />
+		<add name="Vertex" type="Vector3" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 16384) != 0)" />
+		<add name="Bitangent X" type="float" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 256) != 0) &amp;&amp; ((ARG &amp; 16384) != 0)" />
+		<add name="Unknown Int" type="uint" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 256) == 0) &amp;&amp; ((ARG &amp; 16384) != 0)" />
 		
-		<add name="Vertex" type="Vector3" userver2="130" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 16384) != 0)" />
-		<add name="Bitangent X" type="float" userver2="130" cond="((ARG &amp; 256) != 0) &amp;&amp; ((ARG &amp; 16384) != 0)" />
-		<add name="Unknown Int" type="uint" userver2="130" cond="((ARG &amp; 256) == 0) &amp;&amp; ((ARG &amp; 16384) != 0)" />
-		
-		<add name="UV" type="HalfTexCoord" cond="(((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 32) != 0))" />
+		<add name="UV" type="HalfTexCoord" cond="((ARG &amp; 32) != 0)" />
+		<add name="Normal" type="ByteVector3" cond="(ARG &amp; 128) != 0" />
+		<add name="Bitangent Y" type="byte" cond="(ARG &amp; 128) != 0" />
+		<add name="Tangent" type="ByteVector3" cond="((ARG &amp; 128) != 0) &amp;&amp; ((ARG &amp; 256) != 0)" />
+		<add name="Bitangent Z" type="byte" cond="((ARG &amp; 128) != 0) &amp;&amp; ((ARG &amp; 256) != 0)" />
+		<add name="Vertex Colors" type="ByteColor4" cond="(ARG &amp; 512) != 0" />
+		<add name="Bone Weights" type="hfloat" arr1="4" cond="(ARG &amp; 1024) != 0" />
+		<add name="Bone Indices" type="byte" arr1="4" cond="(ARG &amp; 1024) != 0" />
+		<add name="Unknown Int 2" type="uint" cond="(ARG &amp; 4096) != 0" />
+	</compound>
+
+	<compound name="BSVertexDataSSE">
+		<add name="Vertex" type="Vector3" cond="((ARG &amp; 16) != 0)" />
+		<add name="Bitangent X" type="float" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 256) != 0)" />
+		<add name="Unknown Int" type="int" cond="((ARG &amp; 16) != 0) &amp;&amp; (ARG &amp; 256) == 0" />
+		<add name="UV" type="HalfTexCoord" cond="((ARG &amp; 32) != 0)" />
 		<add name="Normal" type="ByteVector3" cond="(ARG &amp; 128) != 0" />
 		<add name="Bitangent Y" type="byte" cond="(ARG &amp; 128) != 0" />
 		<add name="Tangent" type="ByteVector3" cond="((ARG &amp; 128) != 0) &amp;&amp; ((ARG &amp; 256) != 0)" />
@@ -4238,7 +4249,7 @@
 		<add name="VF5" type="byte" ver="20.2.0.7" userver2="100" />
 		<add name="VF" type="VertexFlags" ver="20.2.0.7" userver2="100" />
 		<add name="VF8" type="byte" ver="20.2.0.7" userver2="100" />
-		<add name="Vertex Data" type="BSVertexData" arg="VF" arr1="Data Size / Vertex Size" cond="Data Size &gt; 0" ver="20.2.0.7" userver2="100" />
+		<add name="Vertex Data" type="BSVertexDataSSE" arg="VF" arr1="Data Size / Vertex Size" cond="Data Size &gt; 0" ver="20.2.0.7" userver2="100" />
 		<add name="Partition" type="SkinPartition" arr1="Num Skin Partition Blocks" ver="20.2.0.7" userver2="100" />
     </niobject>
 
@@ -6543,7 +6554,8 @@
         <add name="Num Triangles" type="ushort" vercond="User Version 2 &lt; 130" />
         <add name="Num Vertices" type="ushort" />
         <add name="Data Size" type="uint" />
-        <add name="Vertex Data" type="BSVertexData" arr1="Num Vertices" arg="VF" cond="Data Size &gt; 0" />
+        <add name="Vertex Data" type="BSVertexData" arr1="Num Vertices" arg="VF" cond="Data Size &gt; 0" userver2="130" />
+        <add name="Vertex Data" type="BSVertexDataSSE" arr1="Num Vertices" arg="VF" cond="Data Size &gt; 0" userver2="100" />
         <add name="Triangles" type="Triangle" arr1="Num Triangles" cond="Data Size &gt; 0" />
         <add name="Particle Data Size" type="uint" userver2="100" />
         <add name="Vertices" type="Vector3" arr1="Num Vertices" cond="Particle Data Size &gt; 0" userver2="100" />
@@ -6618,14 +6630,12 @@
     
     <niobject name="bhkPhysicsSystem" inherit="bhkSystem">
         Fallout 4 Collision System
-        <add name="Size" type="uint" />
-        <add name="Data" type="byte" binary="1" arr1="Size" />
+        <add name="Binary Data" type="ByteArray" />
     </niobject>
 
     <niobject name="bhkRagdollSystem" inherit="bhkSystem">
         Fallout 4 Ragdoll System
-        <add name="Size" type="uint" />
-        <add name="Data" type="byte" binary="1" arr1="Size" />
+        <add name="Binary Data" type="ByteArray" />
     </niobject>
 
     <niobject name="BSExtraData" inherit="NiExtraData">
@@ -6634,8 +6644,7 @@
 
     <niobject name="BSClothExtraData" inherit="BSExtraData">
         Fallout 4 Cloth data
-        <add name="Size" type="uint" />
-        <add name="Data" type="byte" binary="1" arr1="Size" />
+        <add name="Binary Data" type="ByteArray" />
     </niobject>
     
     <!-- Fallout 4 Skeleton -->
@@ -6650,8 +6659,8 @@
 
     <niobject name="BSSkin::Instance" inherit="NiObject">
         Fallout 4 Skin Instance
-        <add name="Root Parent" type="Ptr" template="NiAVObject" />
-        <add name="Bone Data" type="Ref" template="BSSkin::BoneData" />
+        <add name="Skeleton Root" type="Ptr" template="NiAVObject" />
+        <add name="Data" type="Ref" template="BSSkin::BoneData" />
         <add name="Num Bones" type="uint" />
         <add name="Bones" type="Ptr" arr1="Num Bones" />
         <add name="Num Unknown" type="uint" />
@@ -6661,7 +6670,7 @@
     <niobject name="BSSkin::BoneData" inherit="NiObject">
         Fallout 4 Bone Data
         <add name="Num Bones" type="uint" />
-        <add name="Bones" type="BSSkinBoneTrans" arr1="Num Bones" />
+        <add name="Bone List" type="BSSkinBoneTrans" arr1="Num Bones" />
     </niobject>
 
     <niobject name="BSPositionData" inherit="NiExtraData">