anchor.diff:          bw.Write(x)
           bw.Write(w)
   
  +    let writeF3Vector (v:Vector3) (bw:BinaryWriter) =
  +        bw.Write(v.X)
  +        bw.Write(v.Y)
  +        bw.Write(v.Z)        
  +
       module DataWriters =
           let rbBlendIndex (binDataLookup:ModDB.BinaryLookupHelper) (vertRels:MeshRelation.VertRel[]) (modm:Mesh) (modVertIndex: int) (el:SDXVertexElement) (bw:BinaryWriter) =
               match el.Type with
  
positive.code:             | SDXVertexDeclType.Ubyte4 ->
                  let br = binDataLookup.BinaryReader(vertRels.[modVertIndex].RefPointIdx, el.Usage)
                  bw.Write(br.ReadBytes(4))                
              | _ -> failwithf "Unsupported type for normal: %A" el.Type
  
          let modmBinormalTangent (modm:Mesh) (modNrmIndex: int) (modVertIndex: int) (el:SDXVertexElement) (bw:BinaryWriter) =
              match el.Type with
              | SDXVertexDeclType.Color 
              | SDXVertexDeclType.Ubyte4 ->
                  // This isn't the most accurate way to compute these, but its easier than the mathematically correct method, which
                  // requires inspecting the triangle and uv coordinates.  Its probably worth implementing that at some point, 
                  // but this produces good enough results in most cases.
                  // see: http://www.geeks3d.com/20130122/normal-mapping-without-precomputed-tangent-space-vectors/
                  let srcNrm = modm.Normals.[modNrmIndex]
                  let v1 = Vector3.Cross(srcNrm, Vector3(0.f, 0.f, 1.f))
                  let v2 = Vector3.Cross(srcNrm, Vector3(0.f, 1.f, 0.f))
                  let t = if (v1.Length() > v2.Length()) then v1 else v2
                  t.Normalize()
                  let vec = 
                      if (el.Usage = SDXVertexDeclUsage.Binormal) then
                          let b = Vector3.Cross(srcNrm,t)
                          b.Normalize()
                          b
                      else
                          t
                  write4ByteVector vec bw                
              | _ -> failwithf "Unsupported type for binormal/tangent: %A" el.Type
  
          let rbBinormalTangent (binDataLookup:ModDB.BinaryLookupHelper) (vertRels:MeshRelation.VertRel[]) (_: int) (modVertIndex: int) (el:SDXVertexElement) (bw:BinaryWriter) =
              match el.Type with
  
negative.code:             | SDXVertexDeclType.UByte4N -> 
                  let refVertIndex = vertRels.[modVertIndex].RefPointIdx
                  writeMeshBW refm refVertIndex bw
              | SDXVertexDeclType.Float4 ->
                  let refVertIndex = vertRels.[modVertIndex].RefPointIdx
                  writeMeshBWF4 refm refVertIndex bw
              | _ -> failwithf "Unsupported type for ref blend weight: %A" el.Type
  
          let modmNormal (modm:Mesh) (modNrmIndex: int) (modVertIndex: int) (el:SDXVertexElement) (bw:BinaryWriter) =
              match el.Type with
  