diff --git a/include/nif_math.h b/include/nif_math.h
index 33dea8057609e36713f6cbd5cd6f61358ea3d62b..94aa5a1d47c4cd781cd5a426dd1d53759277bc4f 100644
--- a/include/nif_math.h
+++ b/include/nif_math.h
@@ -203,22 +203,26 @@ struct Vector3 {
 	 * \return The result of the addition.
 	 */
 	NIFLIB_API Vector3 operator+( const Vector3 & rh ) const;
+	NIFLIB_API Vector3 operator+( const float & rh ) const;
 
 	/* Adds the two vectors and then sets the result to the left-hand vector.
 	 * \return This vector is returned.
 	 */
 	NIFLIB_API Vector3 & operator+=( const Vector3 & rh );
+	NIFLIB_API Vector3 & operator+=( const float & rh );
 
 	/* Allows the subtraction of vectors.  Each component, x, y, y, is subtracted from
 	 * the same component of the other vector.
 	 * \return The result of the subtraction.
 	 */
 	NIFLIB_API Vector3 operator-( const Vector3 & rh ) const;
+	NIFLIB_API Vector3 operator-( const float & rh ) const;
 
 	/* This operator subtracts the two vectors and then sets the result to the left-hand vector.
 	 * \return This vector is returned.
 	 */
 	NIFLIB_API Vector3 & operator-=( const Vector3 & rh);
+	NIFLIB_API Vector3 & operator-=( const float & rh );
 
 	/* Allows scaler multiplication, that is multipying all components of the
 	 * vector, x, y and z, by the same number.
@@ -1009,6 +1013,39 @@ struct Color4 {
 		return ret;
 	}
 
+	NIFLIB_API Color4 operator-(const Color4& rhs) const
+	{
+		Color4 ret;
+		ret = *this;
+		ret.r -= rhs.r;
+		ret.g -= rhs.g;
+		ret.b -= rhs.b;
+		ret.a -= rhs.a;
+		return ret;
+	}
+
+	NIFLIB_API Color4 operator+(const float rhs) const
+	{
+		Color4 ret;
+		ret = *this;
+		ret.r += rhs;
+		ret.g += rhs;
+		ret.b += rhs;
+		ret.a += rhs;
+		return ret;
+	}
+
+	NIFLIB_API Color4 operator-(const float rhs) const
+	{
+		Color4 ret;
+		ret = *this;
+		ret.r -= rhs;
+		ret.g -= rhs;
+		ret.b -= rhs;
+		ret.a -= rhs;
+		return ret;
+	}
+
 	NIFLIB_API Color4 operator*(const float rhs) const
 	{
 		Color4 ret;
@@ -1020,6 +1057,17 @@ struct Color4 {
 		return ret;
 	}
 
+	NIFLIB_API Color4 operator/(const float rhs) const
+	{
+		Color4 ret;
+		ret = *this;
+		ret.r /= rhs;
+		ret.g /= rhs;
+		ret.b /= rhs;
+		ret.a /= rhs;
+		return ret;
+	}
+
 	/*! Default constructor */
 	NIFLIB_API Color4() : r(0.0f), g(0.0f), b(0.0f), a(0.0f) {}
 
@@ -1084,6 +1132,41 @@ struct Quaternion {
 		this->z = z;
 	}
 
+	/* Dot-product */
+	NIFLIB_API float Dot(const Quaternion &rhs) const {
+		return  x * rhs.x + 
+			y * rhs.y + 
+			z * rhs.z + 
+			w * rhs.w;
+	}
+
+	/* Multiplication */
+	NIFLIB_API Quaternion operator*(const float &rhs) const {
+		Quaternion ret;
+		ret = *this;
+		ret.x *= rhs;
+		ret.y *= rhs;
+		ret.z *= rhs;
+		ret.w *= rhs;
+		return ret;
+	}
+
+	/* Addition */
+	NIFLIB_API Quaternion operator+(const Quaternion &rhs) const {
+		Quaternion ret;
+		ret = *this;
+		ret.x += rhs.x;
+		ret.y += rhs.y;
+		ret.z += rhs.z;
+		ret.w += rhs.w;
+		return ret;
+	}
+
+	/* Equality */
+	NIFLIB_API bool operator==( const Quaternion & n ) const {
+		return ( x == n.x && y == n.y && z == n.z && w == n.w );
+	}
+
 	/*! This function can be used to set all values in the structure at the same time.
 	 * \param[in] w The value to set the W scalar component of this quaternion to.
 	 * \param[in] x The value to set the X vector component of this quaternion to.
diff --git a/include/obj/NiBoneLODController.h b/include/obj/NiBoneLODController.h
index 8eb3dff50f2936fc91807e833bbb96961cb0e1ba..7701b31292813413317b4d4e7fee8fe8b0264fe2 100644
--- a/include/obj/NiBoneLODController.h
+++ b/include/obj/NiBoneLODController.h
@@ -106,6 +106,25 @@ public:
 	 * Clears all node groups.
 	 */
 	NIFLIB_API void ClearNodeGroups();
+	
+	/*!
+	 * Adds a single shape to the specified group. The group list will expand if necessary.
+	 * \param[in] shape The shape to add to the group.
+	 */
+	NIFLIB_API bool AddShapeToGroup( Ref<NiTriBasedGeom > shape );
+
+	/*!
+	 * Remove a single shape from the specified shape group.
+	 * \param[in] shape The shape remove from the group.
+	 */
+	NIFLIB_API bool RemoveShapeFromGroup( Ref<NiTriBasedGeom > shape );
+
+	/*!
+	 * Replace a single shape by another in the specified shape group.
+	 * \param[in] newshape The shape put from the group.
+	 * \param[in] oldshape The shape remove from the group.
+	 */
+	NIFLIB_API bool ReplaceShapeInGroup( Ref<NiTriBasedGeom > newshape, Ref<NiTriBasedGeom > oldshape );
 
 	//--END CUSTOM CODE--//
 protected:
diff --git a/include/obj/NiDefaultAVObjectPalette.h b/include/obj/NiDefaultAVObjectPalette.h
index 02986fc80da4a44ba0b44ac9b504c7dfa6e4cd71..636e072ddf9d9c48226b97af9f7c502f8b9f7b51 100644
--- a/include/obj/NiDefaultAVObjectPalette.h
+++ b/include/obj/NiDefaultAVObjectPalette.h
@@ -68,6 +68,25 @@ public:
 	 * \return The new AV Objects to be stored in this palette.
 	 */
 	NIFLIB_API void SetObjs( const vector< Ref<NiAVObject> > & value );
+	
+	/*!
+	 * Adds a single object to the collection. The collection will expand if necessary.
+	 * \param[in] mesh The object to add to the collection.
+	 */
+	NIFLIB_API bool AddObj( Ref<NiAVObject> obj );
+
+	/*!
+	 * Remove a single object from the collection.
+	 * \param[in] mesh The object remove from the collection.
+	 */
+	NIFLIB_API bool RemoveObj( Ref<NiAVObject> obj );
+
+	/*!
+	 * Replace a single object by another in the collection.
+	 * \param[in] newobj The object put into the collection.
+	 * \param[in] oldobj The object remove from the collection.
+	 */
+	NIFLIB_API void ReplaceObj( const Ref<NiAVObject> newobj, const Ref<NiAVObject> oldobj );
 
 	//--END CUSTOM CODE--//
 protected:
diff --git a/include/obj/NiGeometry.h b/include/obj/NiGeometry.h
index a806c82299fd2252b376a96ab4ff9e93a7d54660..8db414c04f3099f3253ef1b24000b9c7ea03710f 100644
--- a/include/obj/NiGeometry.h
+++ b/include/obj/NiGeometry.h
@@ -97,6 +97,12 @@ public:
 	 * \return The NiSkinInstance object used by this geometry node, or NULL if none is used.
 	 */
 	NIFLIB_API Ref<NiSkinInstance> GetSkinInstance() const;
+	
+	/*!
+	 * Sets the NiSkinInstance object used by this geometry node.
+	 * \param[in] skin The NiSkinInstance object to be used by this geometry node, or NULL if none is to be used.
+	 */
+	NIFLIB_API void SetSkinInstance(Ref<NiSkinInstance> skin);
 
 	/*!
 	 * Retrieves the geometry data object used by this geometry node, if any.  This contains the vertices, normals, etc. and can be shared among several geometry nodes.
diff --git a/include/obj/NiMultiTargetTransformController.h b/include/obj/NiMultiTargetTransformController.h
index 1aa8b40525ab240dcf548c99921ad6f667a84852..22d44c5f37affe4221b9e4f42726ba04853c78bb 100644
--- a/include/obj/NiMultiTargetTransformController.h
+++ b/include/obj/NiMultiTargetTransformController.h
@@ -67,6 +67,25 @@ public:
 	 * \param[in] value The new NiAVObject targets to be controlled.
 	 */
 	NIFLIB_API void SetExtraTargets( const vector< Ref<NiAVObject> > & value );
+	
+	/*!
+	 * Adds a single extra target to the collection. The collection will expand if necessary.
+	 * \param[in] mesh The avobject to add to the collection.
+	 */
+	NIFLIB_API bool AddExtraTarget( NiAVObject* target );
+
+	/*!
+	 * Remove a single extra target from the collection.
+	 * \param[in] mesh The avobject remove from the collection.
+	 */
+	NIFLIB_API bool RemoveExtraTarget( NiAVObject* target );
+
+	/*!
+	 * Replace a single extra target by another in the specified extra target group.
+	 * \param[in] newmesh The avobject put into the collection.
+	 * \param[in] oldmesh The avobject remove from collection.
+	 */
+	NIFLIB_API bool ReplaceExtraTarget( NiAVObject* newtarget, NiAVObject* oldtarget );
 
 	//--END CUSTOM CODE--//
 protected:
diff --git a/include/obj/NiPSysMeshEmitter.h b/include/obj/NiPSysMeshEmitter.h
index ae9e4c2948e73e1953e869015d1e9186112b7262..28194969545cb417f1746033175e382f2a549d53 100644
--- a/include/obj/NiPSysMeshEmitter.h
+++ b/include/obj/NiPSysMeshEmitter.h
@@ -58,6 +58,26 @@ public:
 	NIFLIB_API virtual const Type & GetType() const;
 
 	//--BEGIN MISC CUSTOM CODE--//
+
+	/*!
+	 * Adds a single geometry to the collection. The collection will expand if necessary.
+	 * \param[in] mesh The shape to add to the collection.
+	 */
+	NIFLIB_API bool AddEmitterMesh( Ref<NiTriBasedGeom > mesh );
+
+	/*!
+	 * Remove a single geometry from the collection.
+	 * \param[in] mesh The shape remove from the collection.
+	 */
+	NIFLIB_API bool RemoveEmitterMesh( Ref<NiTriBasedGeom > mesh );
+
+	/*!
+	 * Replace a single geometry by another in the specified shape group.
+	 * \param[in] newmesh The geometry put into the collection.
+	 * \param[in] oldmesh The geometry remove from collection.
+	 */
+	NIFLIB_API bool ReplaceEmitterMesh( Ref<NiTriBasedGeom > newmesh, Ref<NiTriBasedGeom > oldmesh );
+
 	//--END CUSTOM CODE--//
 protected:
 	/*! The number of references to emitter meshes that follow. */
diff --git a/include/obj/NiSkinData.h b/include/obj/NiSkinData.h
index 3641b0caaf9bfea8fdddb8de776e5804e71fc496..cc6cb2447840501b8cb0e547c0bccac6c8d3458e 100644
--- a/include/obj/NiSkinData.h
+++ b/include/obj/NiSkinData.h
@@ -106,6 +106,12 @@ public:
 	 */
 	NIFLIB_API void SetBoneWeights( unsigned int bone_index, const vector<SkinWeight> & weights, Vector3 center, float radius );
 	
+	/*!
+	 * Sets the skin weights for a particular bone, without changing center and radius
+	 * \sa NiSkinData::SetBoneWeights
+	 */
+	NIFLIB_API void SetBoneWeights( unsigned int bone_index, const vector<SkinWeight> & weights );
+
 	/*!
 	 * Returns a reference to the hardware skin partition data object, if any.
 	 * \return The hardware skin partition data, or NULL if none is used.
diff --git a/include/obj/hkPackedNiTriStripsData.h b/include/obj/hkPackedNiTriStripsData.h
index c376b43c0a4513b3bab6ad8c1dbb4e3d9377c257..9e56ab353794584049cfd08fd2e3e9fdf7ef6404 100644
--- a/include/obj/hkPackedNiTriStripsData.h
+++ b/include/obj/hkPackedNiTriStripsData.h
@@ -64,6 +64,13 @@ public:
 	 * \sa hkPackedNiTriStripsData::SetTriangles
 	 */
 	NIFLIB_API virtual vector<Triangle> GetTriangles() const;
+	
+	/*!
+	 * Returns the triangle data that make up this mesh.
+	 * \return A vector containing the triangle data that make up this mesh.
+	 * \sa hkPackedNiTriStripsData::SetTriangles
+	 */
+	NIFLIB_API virtual vector<hkTriangle> GetHavokTriangles() const;
 
 	/*! 
 	 * Returns the number of vertices that make up this mesh.  This is also the number of normals, colors, and UV coordinates if these are used.
@@ -98,6 +105,12 @@ public:
 	* \sa ITriShapeData::GetTriangles
 	*/
 	NIFLIB_API virtual void SetTriangles( const vector<Triangle> & in );
+	
+	/*! Replaces the triangle face data in this mesh with new data.
+	* \param in A vector containing the new face data.  Maximum size is 65,535.
+	* \sa ITriShapeData::GetHavokTriangles
+	*/
+	NIFLIB_API virtual void SetHavokTriangles( const vector<hkTriangle> & in );
 
 	/*! Replaces the face normal data in this mesh with new data.
 	* \param in A vector containing the new face normal data.
diff --git a/niflib_VC2008.vcproj b/niflib_VC2008.vcproj
index f239d227b2c0974ba041dbec996fef78c671fe27..d9c492c874045a6763f39cbe6ddf5672b1c19a4d 100644
--- a/niflib_VC2008.vcproj
+++ b/niflib_VC2008.vcproj
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="Windows-1252"?>
 <VisualStudioProject
 	ProjectType="Visual C++"
-	Version="9.00"
+	Version="9,00"
 	Name="Niflib"
 	ProjectGUID="{19FD8EE6-79CC-4BAC-9744-D9573BE47C7E}"
 	RootNamespace="NIFlib"
@@ -21,8 +21,8 @@
 	<Configurations>
 		<Configuration
 			Name="Debug - Static|Win32"
-			OutputDirectory="$(ProjectDir)obj\$(ConfigurationName)"
-			IntermediateDirectory="$(ProjectDir)obj\$(ConfigurationName)"
+			OutputDirectory="$(ProjectDir)\vc9\obj\$(ConfigurationName)"
+			IntermediateDirectory="$(ProjectDir)\vc9\obj\$(ConfigurationName)"
 			ConfigurationType="4"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
 			CharacterSet="2"
@@ -47,9 +47,11 @@
 				Optimization="0"
 				AdditionalIncludeDirectories="$(ProjectDir)include"
 				PreprocessorDefinitions="NIFLIB_STATIC_LINK;WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS"
+				StringPooling="true"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
+				EnableEnhancedInstructionSet="2"
 				UsePrecompiledHeader="0"
 				PrecompiledHeaderThrough=""
 				WarningLevel="3"
@@ -66,7 +68,7 @@
 			/>
 			<Tool
 				Name="VCLibrarianTool"
-				OutputFile="lib/niflib_static_debug.lib"
+				OutputFile="$(ProjectDir)vc9/lib/niflib_static_debug.lib"
 			/>
 			<Tool
 				Name="VCALinkTool"
@@ -86,8 +88,8 @@
 		</Configuration>
 		<Configuration
 			Name="Debug - Static|x64"
-			OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+			OutputDirectory="$(ProjectDir)\vc9\obj\$(PlatformName)\$(ConfigurationName)\"
+			IntermediateDirectory="$(ProjectDir)\vc9\obj\$(PlatformName)\$(ConfigurationName)\"
 			ConfigurationType="4"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
 			CharacterSet="2"
@@ -113,9 +115,11 @@
 				Optimization="0"
 				AdditionalIncludeDirectories="$(ProjectDir)include"
 				PreprocessorDefinitions="NIFLIB_STATIC_LINK;WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS"
+				StringPooling="true"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
+				EnableEnhancedInstructionSet="2"
 				UsePrecompiledHeader="0"
 				PrecompiledHeaderThrough=""
 				WarningLevel="3"
@@ -132,7 +136,7 @@
 			/>
 			<Tool
 				Name="VCLibrarianTool"
-				OutputFile="lib/niflib_static_debug_x64.lib"
+				OutputFile="$(ProjectDir)vc9/lib/niflib_static_debug_x64.lib"
 			/>
 			<Tool
 				Name="VCALinkTool"
@@ -152,8 +156,8 @@
 		</Configuration>
 		<Configuration
 			Name="Release - Static|Win32"
-			OutputDirectory="$(ProjectDir)obj\$(ConfigurationName)"
-			IntermediateDirectory="$(ProjectDir)obj\$(ConfigurationName)"
+			OutputDirectory="$(ProjectDir)\vc9\obj\$(ConfigurationName)"
+			IntermediateDirectory="$(ProjectDir)\vc9\obj\$(ConfigurationName)"
 			ConfigurationType="4"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
 			CharacterSet="2"
@@ -176,11 +180,17 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
-				Optimization="0"
-				WholeProgramOptimization="false"
+				Optimization="3"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="true"
+				FavorSizeOrSpeed="1"
+				OmitFramePointers="true"
+				WholeProgramOptimization="true"
 				AdditionalIncludeDirectories="$(ProjectDir)include"
 				PreprocessorDefinitions="NIFLIB_STATIC_LINK;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS"
+				StringPooling="true"
 				RuntimeLibrary="0"
+				EnableEnhancedInstructionSet="2"
 				UsePrecompiledHeader="0"
 				PrecompiledHeaderThrough=""
 				WarningLevel="3"
@@ -197,7 +207,7 @@
 			/>
 			<Tool
 				Name="VCLibrarianTool"
-				OutputFile="lib/niflib_static.lib"
+				OutputFile="$(ProjectDir)vc9/lib/niflib_static.lib"
 			/>
 			<Tool
 				Name="VCALinkTool"
@@ -217,12 +227,12 @@
 		</Configuration>
 		<Configuration
 			Name="Release - Static|x64"
-			OutputDirectory="$(ProjectDir)obj\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(ProjectDir)obj\$(PlatformName)\$(ConfigurationName)"
+			OutputDirectory="$(ProjectDir)\vc9\obj\$(PlatformName)\$(ConfigurationName)"
+			IntermediateDirectory="$(ProjectDir)\vc9\obj\$(PlatformName)\$(ConfigurationName)"
 			ConfigurationType="4"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
 			CharacterSet="2"
-			WholeProgramOptimization="0"
+			WholeProgramOptimization="1"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -242,11 +252,17 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
-				Optimization="0"
-				WholeProgramOptimization="false"
+				Optimization="3"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="true"
+				FavorSizeOrSpeed="1"
+				OmitFramePointers="true"
+				WholeProgramOptimization="true"
 				AdditionalIncludeDirectories="$(ProjectDir)include"
 				PreprocessorDefinitions="NIFLIB_STATIC_LINK;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS"
+				StringPooling="true"
 				RuntimeLibrary="0"
+				EnableEnhancedInstructionSet="2"
 				UsePrecompiledHeader="0"
 				PrecompiledHeaderThrough=""
 				WarningLevel="3"
@@ -263,7 +279,7 @@
 			/>
 			<Tool
 				Name="VCLibrarianTool"
-				OutputFile="lib/niflib_static_x64.lib"
+				OutputFile="$(ProjectDir)vc9/lib/niflib_static_x64.lib"
 			/>
 			<Tool
 				Name="VCALinkTool"
@@ -283,8 +299,8 @@
 		</Configuration>
 		<Configuration
 			Name="Release - DLL|Win32"
-			OutputDirectory="$(ProjectDir)obj\$(ConfigurationName)"
-			IntermediateDirectory="$(ProjectDir)obj\$(ConfigurationName)"
+			OutputDirectory="$(ProjectDir)\vc9\obj\$(ConfigurationName)"
+			IntermediateDirectory="$(ProjectDir)\vc9\obj\$(ConfigurationName)"
 			ConfigurationType="2"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
 			CharacterSet="2"
@@ -310,7 +326,9 @@
 				Optimization="3"
 				AdditionalIncludeDirectories="$(ProjectDir)include"
 				PreprocessorDefinitions="BUILDING_NIFLIB_DLL;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS"
+				StringPooling="true"
 				RuntimeLibrary="2"
+				EnableEnhancedInstructionSet="2"
 				UsePrecompiledHeader="0"
 				PrecompiledHeaderThrough=""
 				WarningLevel="3"
@@ -327,7 +345,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				OutputFile="bin\niflib.dll"
+				OutputFile="$(ProjectDir)vc9\bin\niflib.dll"
 				Version="0.7.3"
 				RandomizedBaseAddress="1"
 				DataExecutionPrevention="0"
@@ -357,8 +375,8 @@
 		</Configuration>
 		<Configuration
 			Name="Release - DLL|x64"
-			OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+			OutputDirectory="$(ProjectDir)\vc9\obj\$(PlatformName)\$(ConfigurationName)"
+			IntermediateDirectory="$(ProjectDir)\vc9\obj\$(PlatformName)\$(ConfigurationName)"
 			ConfigurationType="2"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
 			CharacterSet="2"
@@ -385,7 +403,9 @@
 				Optimization="3"
 				AdditionalIncludeDirectories="$(ProjectDir)include"
 				PreprocessorDefinitions="BUILDING_NIFLIB_DLL;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS"
+				StringPooling="true"
 				RuntimeLibrary="2"
+				EnableEnhancedInstructionSet="2"
 				UsePrecompiledHeader="0"
 				PrecompiledHeaderThrough=""
 				WarningLevel="3"
@@ -402,7 +422,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				OutputFile="bin\niflib_x64.dll"
+				OutputFile="$(ProjectDir)vc9\bin\niflib_x64.dll"
 				Version="0.7.3"
 				RandomizedBaseAddress="1"
 				DataExecutionPrevention="0"
@@ -433,8 +453,8 @@
 		</Configuration>
 		<Configuration
 			Name="Debug - DLL|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
+			OutputDirectory="$(ProjectDir)\vc9\obj\$(ConfigurationName)"
+			IntermediateDirectory="$(ProjectDir)\vc9\obj\$(ConfigurationName)"
 			ConfigurationType="2"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
 			CharacterSet="2"
@@ -459,9 +479,11 @@
 				Optimization="0"
 				AdditionalIncludeDirectories="$(ProjectDir)include"
 				PreprocessorDefinitions="BUILDING_NIFLIB_DLL;WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS"
+				StringPooling="true"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="3"
+				EnableEnhancedInstructionSet="2"
 				UsePrecompiledHeader="0"
 				PrecompiledHeaderThrough=""
 				WarningLevel="3"
@@ -478,7 +500,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				OutputFile="bin\niflib_debug.dll"
+				OutputFile="$(ProjectDir)vc9\bin\niflib_debug.dll"
 				Version="0.7.3"
 				GenerateDebugInformation="true"
 				RandomizedBaseAddress="1"
@@ -509,8 +531,8 @@
 		</Configuration>
 		<Configuration
 			Name="Debug - DLL|x64"
-			OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+			OutputDirectory="$(ProjectDir)\vc9\obj\$(PlatformName)\$(ConfigurationName)"
+			IntermediateDirectory="$(ProjectDir)\vc9\obj\$(PlatformName)\$(ConfigurationName)"
 			ConfigurationType="2"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
 			CharacterSet="2"
@@ -536,9 +558,11 @@
 				Optimization="0"
 				AdditionalIncludeDirectories="$(ProjectDir)include"
 				PreprocessorDefinitions="BUILDING_NIFLIB_DLL;WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS"
+				StringPooling="true"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="3"
+				EnableEnhancedInstructionSet="2"
 				UsePrecompiledHeader="0"
 				PrecompiledHeaderThrough=""
 				WarningLevel="3"
@@ -555,7 +579,7 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				OutputFile="bin\niflib_debug_x64.dll"
+				OutputFile="$(ProjectDir)vc9\bin\niflib_debug_x64.dll"
 				Version="0.7.3"
 				RandomizedBaseAddress="1"
 				DataExecutionPrevention="0"
@@ -668,6 +692,10 @@
 			<Filter
 				Name="obj"
 				>
+				<File
+					RelativePath=".\src\obj\AbstractAdditionalGeometryData.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\ATextureRenderData.cpp"
 					>
@@ -680,6 +708,14 @@
 					RelativePath=".\src\obj\bhkAabbPhantom.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\bhkBallAndSocketConstraint.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\bhkBallSocketConstraintChain.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\bhkBlendCollisionObject.cpp"
 					>
@@ -708,6 +744,14 @@
 					RelativePath=".\src\obj\bhkCollisionObject.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\bhkCompressedMeshShape.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\bhkCompressedMeshShapeData.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\bhkConstraint.cpp"
 					>
@@ -752,6 +796,10 @@
 					RelativePath=".\src\obj\bhkMalleableConstraint.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\bhkMeshShape.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\bhkMoppBvTreeShape.cpp"
 					>
@@ -852,10 +900,18 @@
 					RelativePath=".\src\obj\BSAnimNotes.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\BSBehaviorGraphExtraData.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\BSBlastNode.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\BSBoneLODExtraData.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\BSBound.cpp"
 					>
@@ -880,6 +936,18 @@
 					RelativePath=".\src\obj\BSDistantTreeShaderProperty.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\BSEffectShaderProperty.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\BSEffectShaderPropertyColorController.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\BSEffectShaderPropertyFloatController.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\BSFadeNode.cpp"
 					>
@@ -892,10 +960,42 @@
 					RelativePath=".\src\obj\BSFurnitureMarker.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\BSFurnitureMarkerNode.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\BSInvMarker.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\BSKeyframeController.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\BSLagBoneController.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\BSLeafAnimNode.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\BSLightingShaderProperty.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\BSLightingShaderPropertyColorController.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\BSLightingShaderPropertyFloatController.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\BSLODTriShape.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\BSMasterParticleSystem.cpp"
 					>
@@ -920,26 +1020,62 @@
 					RelativePath=".\src\obj\BSMultiBoundNode.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\BSMultiBoundOBB.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\BSMultiBoundSphere.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\BSNiAlphaPropertyTestRefController.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\BSOrderedNode.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\BSPackedAdditionalGeometryData.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\BSParentVelocityModifier.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\BSProceduralLightningController.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\BSPSysArrayEmitter.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\BSPSysHavokUpdateModifier.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\BSPSysInheritVelocityModifier.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\BSPSysLODModifier.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\BSPSysMultiTargetEmitterCtlr.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\BSPSysRecycleBoundModifier.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\BSPSysScaleModifier.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\BSPSysSimpleColorModifier.cpp"
 					>
@@ -948,6 +1084,10 @@
 					RelativePath=".\src\obj\BSPSysStripUpdateModifier.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\BSPSysSubTexModifier.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\BSRefractionFirePeriodController.cpp"
 					>
@@ -956,6 +1096,10 @@
 					RelativePath=".\src\obj\BSRefractionStrengthController.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\BSRotAccumTransfInterpolator.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\BSSegmentedTriShape.cpp"
 					>
@@ -980,6 +1124,10 @@
 					RelativePath=".\src\obj\BSShaderTextureSet.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\BSSkyShaderProperty.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\BSStripParticleSystem.cpp"
 					>
@@ -992,6 +1140,10 @@
 					RelativePath=".\src\obj\BSTreadTransfInterpolator.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\BSTreeNode.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\BSValueNode.cpp"
 					>
@@ -1000,6 +1152,10 @@
 					RelativePath=".\src\obj\BSWArray.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\BSWaterShaderProperty.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\BSWindModifier.cpp"
 					>
@@ -1008,6 +1164,10 @@
 					RelativePath=".\src\obj\BSXFlags.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\CStreamableAssetData.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\DistantLODShaderProperty.cpp"
 					>
@@ -1212,6 +1372,10 @@
 					RelativePath=".\src\obj\NiBSplineCompPoint3Interpolator.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\NiBSplineCompTransformEvaluator.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\NiBSplineCompTransformInterpolator.cpp"
 					>
@@ -1276,6 +1440,10 @@
 					RelativePath=".\src\obj\NiControllerSequence.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\NiDataStream.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\NiDefaultAVObjectPalette.cpp"
 					>
@@ -1340,6 +1508,10 @@
 					RelativePath=".\src\obj\NiFogProperty.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\NiFurSpringController.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\NiGeometry.cpp"
 					>
@@ -1360,6 +1532,10 @@
 					RelativePath=".\src\obj\NiImage.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\NiInstancingMeshModifier.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\NiIntegerExtraData.cpp"
 					>
@@ -1436,6 +1612,18 @@
 					RelativePath=".\src\obj\NiMaterialProperty.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\NiMesh.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiMeshHWInstance.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiMeshModifier.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\NiMeshParticleSystem.cpp"
 					>
@@ -1456,6 +1644,14 @@
 					RelativePath=".\src\obj\NiMorpherController.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\obj\NiMorphMeshModifier.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiMorphWeightsController.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\obj\NiMultiTargetTransformController.cpp"
 					>
@@ -1613,343 +1809,559 @@
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysAgeDeathModifier.cpp"
+					RelativePath=".\src\obj\NiPSBombForce.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysAirFieldModifier.cpp"
+					RelativePath=".\src\obj\NiPSBoundUpdater.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysBombModifier.cpp"
+					RelativePath=".\src\obj\NiPSBoxEmitter.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysBoundUpdateModifier.cpp"
+					RelativePath=".\src\obj\NiPSCylinderEmitter.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysBoxEmitter.cpp"
+					RelativePath=".\src\obj\NiPSDragForce.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysCollider.cpp"
+					RelativePath=".\src\obj\NiPSEmitParticlesCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysColliderManager.cpp"
+					RelativePath=".\src\obj\NiPSEmitterDeclinationCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysColorModifier.cpp"
+					RelativePath=".\src\obj\NiPSEmitterDeclinationVarCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysCylinderEmitter.cpp"
+					RelativePath=".\src\obj\NiPSEmitterLifeSpanCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysData.cpp"
+					RelativePath=".\src\obj\NiPSEmitterPlanarAngleCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysDragFieldModifier.cpp"
+					RelativePath=".\src\obj\NiPSEmitterPlanarAngleVarCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysDragModifier.cpp"
+					RelativePath=".\src\obj\NiPSEmitterRadiusCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysEmitter.cpp"
+					RelativePath=".\src\obj\NiPSEmitterRotAngleCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysEmitterCtlr.cpp"
+					RelativePath=".\src\obj\NiPSEmitterRotAngleVarCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysEmitterCtlrData.cpp"
+					RelativePath=".\src\obj\NiPSEmitterRotSpeedCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysEmitterDeclinationCtlr.cpp"
+					RelativePath=".\src\obj\NiPSEmitterRotSpeedVarCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysEmitterDeclinationVarCtlr.cpp"
+					RelativePath=".\src\obj\NiPSEmitterSpeedCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysEmitterInitialRadiusCtlr.cpp"
+					RelativePath=".\src\obj\NiPSFacingQuadGenerator.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysEmitterLifeSpanCtlr.cpp"
+					RelativePath=".\src\obj\NiPSForceActiveCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysEmitterSpeedCtlr.cpp"
+					RelativePath=".\src\obj\NiPSGravityForce.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysFieldMagnitudeCtlr.cpp"
+					RelativePath=".\src\obj\NiPSGravityStrengthCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysFieldModifier.cpp"
+					RelativePath=".\src\obj\NiPSMeshEmitter.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysGravityFieldModifier.cpp"
+					RelativePath=".\src\obj\NiPSMeshParticleSystem.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysGravityModifier.cpp"
+					RelativePath=".\src\obj\NiPSParticleSystem.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysGravityStrengthCtlr.cpp"
+					RelativePath=".\src\obj\NiPSPlanarCollider.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysGrowFadeModifier.cpp"
+					RelativePath=".\src\obj\NiPSResetOnLoopCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysMeshEmitter.cpp"
+					RelativePath=".\src\obj\NiPSSimulator.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysMeshUpdateModifier.cpp"
+					RelativePath=".\src\obj\NiPSSimulatorCollidersStep.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysModifier.cpp"
+					RelativePath=".\src\obj\NiPSSimulatorFinalStep.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysModifierActiveCtlr.cpp"
+					RelativePath=".\src\obj\NiPSSimulatorForcesStep.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysModifierBoolCtlr.cpp"
+					RelativePath=".\src\obj\NiPSSimulatorGeneralStep.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysModifierCtlr.cpp"
+					RelativePath=".\src\obj\NiPSSimulatorMeshAlignStep.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysModifierFloatCtlr.cpp"
+					RelativePath=".\src\obj\NiPSSimulatorStep.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysPlanarCollider.cpp"
+					RelativePath=".\src\obj\NiPSSpawner.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysPositionModifier.cpp"
+					RelativePath=".\src\obj\NiPSSphereEmitter.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysResetOnLoopCtlr.cpp"
+					RelativePath=".\src\obj\NiPSSphericalCollider.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysRotationModifier.cpp"
+					RelativePath=".\src\obj\NiPSysAgeDeathModifier.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysSpawnModifier.cpp"
+					RelativePath=".\src\obj\NiPSysAirFieldAirFrictionCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysSphereEmitter.cpp"
+					RelativePath=".\src\obj\NiPSysAirFieldInheritVelocityCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysSphericalCollider.cpp"
+					RelativePath=".\src\obj\NiPSysAirFieldModifier.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysTrailEmitter.cpp"
+					RelativePath=".\src\obj\NiPSysAirFieldSpreadCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysTurbulenceFieldModifier.cpp"
+					RelativePath=".\src\obj\NiPSysBombModifier.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysUpdateCtlr.cpp"
+					RelativePath=".\src\obj\NiPSysBoundUpdateModifier.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysVolumeEmitter.cpp"
+					RelativePath=".\src\obj\NiPSysBoxEmitter.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiPSysVortexFieldModifier.cpp"
+					RelativePath=".\src\obj\NiPSysCollider.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiRangeLODData.cpp"
+					RelativePath=".\src\obj\NiPSysColliderManager.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiRawImageData.cpp"
+					RelativePath=".\src\obj\NiPSysColorModifier.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiRollController.cpp"
+					RelativePath=".\src\obj\NiPSysCylinderEmitter.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiRoom.cpp"
+					RelativePath=".\src\obj\NiPSysData.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiRoomGroup.cpp"
+					RelativePath=".\src\obj\NiPSysDragFieldModifier.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiRotatingParticles.cpp"
+					RelativePath=".\src\obj\NiPSysDragModifier.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiRotatingParticlesData.cpp"
+					RelativePath=".\src\obj\NiPSysEmitter.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiScreenElements.cpp"
+					RelativePath=".\src\obj\NiPSysEmitterCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiScreenElementsData.cpp"
+					RelativePath=".\src\obj\NiPSysEmitterCtlrData.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiScreenLODData.cpp"
+					RelativePath=".\src\obj\NiPSysEmitterDeclinationCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiSequence.cpp"
+					RelativePath=".\src\obj\NiPSysEmitterDeclinationVarCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiSequenceStreamHelper.cpp"
+					RelativePath=".\src\obj\NiPSysEmitterInitialRadiusCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiShadeProperty.cpp"
+					RelativePath=".\src\obj\NiPSysEmitterLifeSpanCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiSingleInterpController.cpp"
+					RelativePath=".\src\obj\NiPSysEmitterPlanarAngleCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiSkinData.cpp"
+					RelativePath=".\src\obj\NiPSysEmitterPlanarAngleVarCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiSkinInstance.cpp"
+					RelativePath=".\src\obj\NiPSysEmitterSpeedCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiSkinPartition.cpp"
+					RelativePath=".\src\obj\NiPSysFieldAttenuationCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiSortAdjustNode.cpp"
+					RelativePath=".\src\obj\NiPSysFieldMagnitudeCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiSourceCubeMap.cpp"
+					RelativePath=".\src\obj\NiPSysFieldMaxDistanceCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiSourceTexture.cpp"
+					RelativePath=".\src\obj\NiPSysFieldModifier.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiSpecularProperty.cpp"
+					RelativePath=".\src\obj\NiPSysGravityFieldModifier.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiSphericalCollider.cpp"
+					RelativePath=".\src\obj\NiPSysGravityModifier.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiSpotLight.cpp"
+					RelativePath=".\src\obj\NiPSysGravityStrengthCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiStencilProperty.cpp"
+					RelativePath=".\src\obj\NiPSysGrowFadeModifier.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiStringExtraData.cpp"
+					RelativePath=".\src\obj\NiPSysInitialRotAngleCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiStringPalette.cpp"
+					RelativePath=".\src\obj\NiPSysInitialRotAngleVarCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiStringsExtraData.cpp"
+					RelativePath=".\src\obj\NiPSysInitialRotSpeedCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiSwitchNode.cpp"
+					RelativePath=".\src\obj\NiPSysInitialRotSpeedVarCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiTextKeyExtraData.cpp"
+					RelativePath=".\src\obj\NiPSysMeshEmitter.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiTexture.cpp"
+					RelativePath=".\src\obj\NiPSysMeshUpdateModifier.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiTextureEffect.cpp"
+					RelativePath=".\src\obj\NiPSysModifier.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiTextureModeProperty.cpp"
+					RelativePath=".\src\obj\NiPSysModifierActiveCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiTextureProperty.cpp"
+					RelativePath=".\src\obj\NiPSysModifierBoolCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiTextureTransformController.cpp"
+					RelativePath=".\src\obj\NiPSysModifierCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiTexturingProperty.cpp"
+					RelativePath=".\src\obj\NiPSysModifierFloatCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiTimeController.cpp"
+					RelativePath=".\src\obj\NiPSysPlanarCollider.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiTransformController.cpp"
+					RelativePath=".\src\obj\NiPSysPositionModifier.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiTransformData.cpp"
+					RelativePath=".\src\obj\NiPSysRadialFieldModifier.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiTransformInterpolator.cpp"
+					RelativePath=".\src\obj\NiPSysResetOnLoopCtlr.cpp"
 					>
 				</File>
 				<File
-					RelativePath=".\src\obj\NiTransparentProperty.cpp"
+					RelativePath=".\src\obj\NiPSysRotationModifier.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiPSysSpawnModifier.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiPSysSphereEmitter.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiPSysSphericalCollider.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiPSysTrailEmitter.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiPSysTurbulenceFieldModifier.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiPSysUpdateCtlr.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiPSysVolumeEmitter.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiPSysVortexFieldModifier.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiRangeLODData.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiRawImageData.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiRenderObject.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiRollController.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiRoom.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiRoomGroup.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiRotatingParticles.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiRotatingParticlesData.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiScreenElements.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiScreenElementsData.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiScreenLODData.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiSequence.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiSequenceData.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiSequenceStreamHelper.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiShadeProperty.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiShadowGenerator.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiSingleInterpController.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiSkinData.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiSkinInstance.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiSkinningLODController.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiSkinningMeshModifier.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiSkinPartition.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiSortAdjustNode.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiSourceCubeMap.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiSourceTexture.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiSpecularProperty.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiSphericalCollider.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiSpotLight.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiStencilProperty.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiStringExtraData.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiStringPalette.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiStringsExtraData.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiSwitchNode.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiTextKeyExtraData.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiTexture.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiTextureEffect.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiTextureModeProperty.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiTextureProperty.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiTextureTransformController.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiTexturingProperty.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiTimeController.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiTransformController.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiTransformData.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiTransformEvaluator.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiTransformInterpolator.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\obj\NiTransparentProperty.cpp"
 					>
 				</File>
 				<File
@@ -2060,6 +2472,22 @@
 					RelativePath=".\src\gen\AVObject.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\gen\bhkCMSD_Shape.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\gen\bhkCMSD_Something.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\gen\bhkCMSDContainer.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\gen\bhkCMSDData.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\gen\BodyPartList.cpp"
 					>
@@ -2076,6 +2504,10 @@
 					RelativePath=".\src\gen\BoxBV.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\gen\BSPackedAdditionalDataBlock.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\gen\BSSegmentedTriangle.cpp"
 					>
@@ -2084,6 +2516,14 @@
 					RelativePath=".\src\gen\BSTreadTransfInfo.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\gen\BSTreadTransform.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\gen\BSTreadTransformData.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\gen\BSTreadTransfSubInfo.cpp"
 					>
@@ -2124,6 +2564,10 @@
 					RelativePath=".\src\gen\DecalVectorArray.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\gen\ElementReference.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\gen\enums.cpp"
 					>
@@ -2132,6 +2576,14 @@
 					RelativePath=".\src\gen\ExportInfo.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\gen\ExtraMeshDataEpicMickey.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\gen\ExtraMeshDataEpicMickey2.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\gen\Footer.cpp"
 					>
@@ -2168,6 +2620,14 @@
 					RelativePath=".\src\gen\MatchGroup.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\gen\MaterialData.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\gen\MeshData.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\gen\MipMap.cpp"
 					>
@@ -2180,6 +2640,14 @@
 					RelativePath=".\src\gen\MorphWeight.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\gen\MotorDescriptor.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\src\gen\MTransform.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\gen\MultiTextureElement.cpp"
 					>
@@ -2216,6 +2684,10 @@
 					RelativePath=".\src\gen\Polygon.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\gen\QTransform.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\gen\QuaternionXYZW.cpp"
 					>
@@ -2224,10 +2696,18 @@
 					RelativePath=".\src\gen\RagDollDescriptor.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\gen\Region.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\gen\register.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\gen\SemanticData.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\gen\ShaderTexDesc.cpp"
 					>
@@ -2240,6 +2720,10 @@
 					RelativePath=".\src\gen\SkinPartition.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\gen\SkinPartitionUnknownItem1.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\gen\SkinShape.cpp"
 					>
@@ -2248,6 +2732,10 @@
 					RelativePath=".\src\gen\SkinShapeGroup.cpp"
 					>
 				</File>
+				<File
+					RelativePath=".\src\gen\SkinTransform.cpp"
+					>
+				</File>
 				<File
 					RelativePath=".\src\gen\SkinWeight.cpp"
 					>
@@ -2390,6 +2878,10 @@
 			<Filter
 				Name="obj"
 				>
+				<File
+					RelativePath=".\include\obj\AbstractAdditionalGeometryData.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\ATextureRenderData.h"
 					>
@@ -2402,6 +2894,14 @@
 					RelativePath=".\include\obj\bhkAabbPhantom.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\bhkBallAndSocketConstraint.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\bhkBallSocketConstraintChain.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\bhkBlendCollisionObject.h"
 					>
@@ -2430,6 +2930,14 @@
 					RelativePath=".\include\obj\bhkCollisionObject.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\bhkCompressedMeshShape.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\bhkCompressedMeshShapeData.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\bhkConstraint.h"
 					>
@@ -2474,6 +2982,10 @@
 					RelativePath=".\include\obj\bhkMalleableConstraint.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\bhkMeshShape.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\bhkMoppBvTreeShape.h"
 					>
@@ -2574,10 +3086,18 @@
 					RelativePath=".\include\obj\BSAnimNotes.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\BSBehaviorGraphExtraData.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\BSBlastNode.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\BSBoneLODExtraData.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\BSBound.h"
 					>
@@ -2602,6 +3122,18 @@
 					RelativePath=".\include\obj\BSDistantTreeShaderProperty.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\BSEffectShaderProperty.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\BSEffectShaderPropertyColorController.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\BSEffectShaderPropertyFloatController.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\BSFadeNode.h"
 					>
@@ -2614,10 +3146,42 @@
 					RelativePath=".\include\obj\BSFurnitureMarker.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\BSFurnitureMarkerNode.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\BSInvMarker.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\BSKeyframeController.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\BSLagBoneController.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\BSLeafAnimNode.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\BSLightingShaderProperty.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\BSLightingShaderPropertyColorController.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\BSLightingShaderPropertyFloatController.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\BSLODTriShape.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\BSMasterParticleSystem.h"
 					>
@@ -2642,26 +3206,62 @@
 					RelativePath=".\include\obj\BSMultiBoundNode.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\BSMultiBoundOBB.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\BSMultiBoundSphere.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\BSNiAlphaPropertyTestRefController.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\BSOrderedNode.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\BSPackedAdditionalGeometryData.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\BSParentVelocityModifier.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\BSProceduralLightningController.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\BSPSysArrayEmitter.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\BSPSysHavokUpdateModifier.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\BSPSysInheritVelocityModifier.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\BSPSysLODModifier.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\BSPSysMultiTargetEmitterCtlr.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\BSPSysRecycleBoundModifier.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\BSPSysScaleModifier.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\BSPSysSimpleColorModifier.h"
 					>
@@ -2670,6 +3270,10 @@
 					RelativePath=".\include\obj\BSPSysStripUpdateModifier.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\BSPSysSubTexModifier.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\BSRefractionFirePeriodController.h"
 					>
@@ -2678,6 +3282,10 @@
 					RelativePath=".\include\obj\BSRefractionStrengthController.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\BSRotAccumTransfInterpolator.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\BSSegmentedTriShape.h"
 					>
@@ -2699,7 +3307,11 @@
 					>
 				</File>
 				<File
-					RelativePath=".\include\obj\BSShaderTextureSet.h"
+					RelativePath=".\include\obj\BSShaderTextureSet.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\BSSkyShaderProperty.h"
 					>
 				</File>
 				<File
@@ -2714,6 +3326,10 @@
 					RelativePath=".\include\obj\BSTreadTransfInterpolator.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\BSTreeNode.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\BSValueNode.h"
 					>
@@ -2722,6 +3338,10 @@
 					RelativePath=".\include\obj\BSWArray.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\BSWaterShaderProperty.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\BSWindModifier.h"
 					>
@@ -2730,6 +3350,10 @@
 					RelativePath=".\include\obj\BSXFlags.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\CStreamableAssetData.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\DistantLODShaderProperty.h"
 					>
@@ -2934,6 +3558,10 @@
 					RelativePath=".\include\obj\NiBSplineCompPoint3Interpolator.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiBSplineCompTransformEvaluator.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiBSplineCompTransformInterpolator.h"
 					>
@@ -2998,6 +3626,10 @@
 					RelativePath=".\include\obj\NiControllerSequence.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiDataStream.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiDefaultAVObjectPalette.h"
 					>
@@ -3062,6 +3694,10 @@
 					RelativePath=".\include\obj\NiFogProperty.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiFurSpringController.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiGeometry.h"
 					>
@@ -3082,6 +3718,10 @@
 					RelativePath=".\include\obj\NiImage.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiInstancingMeshModifier.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiIntegerExtraData.h"
 					>
@@ -3158,6 +3798,18 @@
 					RelativePath=".\include\obj\NiMaterialProperty.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiMesh.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiMeshHWInstance.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiMeshModifier.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiMeshParticleSystem.h"
 					>
@@ -3178,6 +3830,14 @@
 					RelativePath=".\include\obj\NiMorpherController.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiMorphMeshModifier.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiMorphWeightsController.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiMultiTargetTransformController.h"
 					>
@@ -3334,14 +3994,170 @@
 					RelativePath=".\include\obj\NiProperty.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiPSBombForce.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSBoundUpdater.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSBoxEmitter.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSCylinderEmitter.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSDragForce.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSEmitParticlesCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSEmitterDeclinationCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSEmitterDeclinationVarCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSEmitterLifeSpanCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSEmitterPlanarAngleCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSEmitterPlanarAngleVarCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSEmitterRadiusCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSEmitterRotAngleCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSEmitterRotAngleVarCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSEmitterRotSpeedCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSEmitterRotSpeedVarCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSEmitterSpeedCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSFacingQuadGenerator.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSForceActiveCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSGravityForce.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSGravityStrengthCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSMeshEmitter.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSMeshParticleSystem.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSParticleSystem.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSPlanarCollider.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSResetOnLoopCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSSimulator.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSSimulatorCollidersStep.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSSimulatorFinalStep.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSSimulatorForcesStep.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSSimulatorGeneralStep.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSSimulatorMeshAlignStep.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSSimulatorStep.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSSpawner.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSSphereEmitter.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSSphericalCollider.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiPSysAgeDeathModifier.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiPSysAirFieldAirFrictionCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSysAirFieldInheritVelocityCtlr.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiPSysAirFieldModifier.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiPSysAirFieldSpreadCtlr.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiPSysBombModifier.h"
 					>
@@ -3410,14 +4226,30 @@
 					RelativePath=".\include\obj\NiPSysEmitterLifeSpanCtlr.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiPSysEmitterPlanarAngleCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSysEmitterPlanarAngleVarCtlr.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiPSysEmitterSpeedCtlr.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiPSysFieldAttenuationCtlr.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiPSysFieldMagnitudeCtlr.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiPSysFieldMaxDistanceCtlr.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiPSysFieldModifier.h"
 					>
@@ -3438,6 +4270,22 @@
 					RelativePath=".\include\obj\NiPSysGrowFadeModifier.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiPSysInitialRotAngleCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSysInitialRotAngleVarCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSysInitialRotSpeedCtlr.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiPSysInitialRotSpeedVarCtlr.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiPSysMeshEmitter.h"
 					>
@@ -3474,6 +4322,10 @@
 					RelativePath=".\include\obj\NiPSysPositionModifier.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiPSysRadialFieldModifier.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiPSysResetOnLoopCtlr.h"
 					>
@@ -3522,6 +4374,10 @@
 					RelativePath=".\include\obj\NiRawImageData.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiRenderObject.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiRollController.h"
 					>
@@ -3558,6 +4414,10 @@
 					RelativePath=".\include\obj\NiSequence.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiSequenceData.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiSequenceStreamHelper.h"
 					>
@@ -3566,6 +4426,10 @@
 					RelativePath=".\include\obj\NiShadeProperty.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiShadowGenerator.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiSingleInterpController.h"
 					>
@@ -3578,6 +4442,14 @@
 					RelativePath=".\include\obj\NiSkinInstance.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiSkinningLODController.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\obj\NiSkinningMeshModifier.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiSkinPartition.h"
 					>
@@ -3666,6 +4538,10 @@
 					RelativePath=".\include\obj\NiTransformData.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\obj\NiTransformEvaluator.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\obj\NiTransformInterpolator.h"
 					>
@@ -3782,6 +4658,22 @@
 					RelativePath=".\include\gen\AVObject.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\gen\bhkCMSD_Shape.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\gen\bhkCMSD_Something.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\gen\bhkCMSDContainer.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\gen\bhkCMSDData.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\gen\BodyPartList.h"
 					>
@@ -3798,6 +4690,10 @@
 					RelativePath=".\include\gen\BoxBV.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\gen\BSPackedAdditionalDataBlock.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\gen\BSSegmentedTriangle.h"
 					>
@@ -3806,6 +4702,14 @@
 					RelativePath=".\include\gen\BSTreadTransfInfo.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\gen\BSTreadTransform.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\gen\BSTreadTransformData.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\gen\BSTreadTransfSubInfo.h"
 					>
@@ -3842,6 +4746,10 @@
 					RelativePath=".\include\gen\DecalVectorArray.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\gen\ElementReference.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\gen\enums.h"
 					>
@@ -3854,6 +4762,14 @@
 					RelativePath=".\include\gen\ExportInfo.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\gen\ExtraMeshDataEpicMickey.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\gen\ExtraMeshDataEpicMickey2.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\gen\Footer.h"
 					>
@@ -3894,6 +4810,14 @@
 					RelativePath=".\include\gen\MatchGroup.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\gen\MaterialData.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\gen\MeshData.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\gen\MipMap.h"
 					>
@@ -3906,6 +4830,14 @@
 					RelativePath=".\include\gen\MorphWeight.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\gen\MotorDescriptor.h"
+					>
+				</File>
+				<File
+					RelativePath=".\include\gen\MTransform.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\gen\MultiTextureElement.h"
 					>
@@ -3942,6 +4874,10 @@
 					RelativePath=".\include\gen\Polygon.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\gen\QTransform.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\gen\QuaternionXYZW.h"
 					>
@@ -3950,10 +4886,18 @@
 					RelativePath=".\include\gen\RagDollDescriptor.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\gen\Region.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\gen\RotationKeyArray.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\gen\SemanticData.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\gen\ShaderTexDesc.h"
 					>
@@ -3966,6 +4910,10 @@
 					RelativePath=".\include\gen\SkinPartition.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\gen\SkinPartitionUnknownItem1.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\gen\SkinShape.h"
 					>
@@ -3974,6 +4922,10 @@
 					RelativePath=".\include\gen\SkinShapeGroup.h"
 					>
 				</File>
+				<File
+					RelativePath=".\include\gen\SkinTransform.h"
+					>
+				</File>
 				<File
 					RelativePath=".\include\gen\SkinWeight.h"
 					>
diff --git a/src/nif_math.cpp b/src/nif_math.cpp
index 561d7ad36e82d808478879f76ffe63a979b4afd1..3233233dc5b50f03f47e0e4f01f48b0aa9f46e8c 100644
--- a/src/nif_math.cpp
+++ b/src/nif_math.cpp
@@ -57,6 +57,12 @@ Vector3 Vector3::operator+( const Vector3 & rh) const {
 	return v;
 }
 
+Vector3 Vector3::operator+( const float & rh) const {
+	Vector3 v(*this);
+	v += rh;
+	return v;
+}
+
 Vector3 & Vector3::operator+=( const Vector3 & rh ) {
 	x += rh.x;
 	y += rh.y;
@@ -65,12 +71,26 @@ Vector3 & Vector3::operator+=( const Vector3 & rh ) {
 	return *this;
 }
 
+Vector3 & Vector3::operator+=( const float & rh ) {
+	x += rh;
+	y += rh;
+	z += rh;
+
+	return *this;
+}
+
 Vector3 Vector3::operator-( const Vector3 & rh) const {
 	Vector3 v(*this);
 	v -= rh;
 	return v;
 }
 
+Vector3 Vector3::operator-( const float & rh) const {
+	Vector3 v(*this);
+	v -= rh;
+	return v;
+}
+
 Vector3 & Vector3::operator-=( const Vector3 & rh ) {
 	x -= rh.x;
 	y -= rh.y;
@@ -79,6 +99,14 @@ Vector3 & Vector3::operator-=( const Vector3 & rh ) {
 	return *this;
 }
 
+Vector3 & Vector3::operator-=( const float & rh ) {
+	x -= rh;
+	y -= rh;
+	z -= rh;
+
+	return *this;
+}
+
 Vector3 Vector3::operator*( const float & rh) const {
 	Vector3 v(*this);
 	v *= rh;
diff --git a/src/obj/NiBoneLODController.cpp b/src/obj/NiBoneLODController.cpp
index d259d3fab8b3b95efcfd09536bbe7dedbd24ffcd..e1ba5db07d67058213246eca9ebb77fff23084d7 100644
--- a/src/obj/NiBoneLODController.cpp
+++ b/src/obj/NiBoneLODController.cpp
@@ -544,5 +544,43 @@ void NiBoneLODController::ClearNodeGroups() {
    numNodeGroups2 = int(nodeGroups.size());
 }
 
+bool NiBoneLODController::AddShapeToGroup( Ref<NiTriBasedGeom > shape ) {
+    vector<Ref<NiTriBasedGeom > >& shapes = shapeGroups2;
+    vector<Ref<NiTriBasedGeom > >::iterator itr = std::find(shapes.begin(), shapes.end(), shape);
+    if (itr == shapes.end()) {
+	shapes.push_back(shape);
+	numShapeGroups2++;
+
+	return true;
+    }
+
+    return false;
+}
+
+bool NiBoneLODController::RemoveShapeFromGroup( Ref<NiTriBasedGeom > shape ) {
+    vector<Ref<NiTriBasedGeom > >& shapes = shapeGroups2;
+    vector<Ref<NiTriBasedGeom > >::iterator itr = std::find(shapes.begin(), shapes.end(), shape);
+    if (itr != shapes.end()) {
+	shapes.erase(itr);
+	numShapeGroups2--;
+
+	return true;
+    }
+
+    return false;
+}
+
+bool NiBoneLODController::ReplaceShapeInGroup( Ref<NiTriBasedGeom > newshape, Ref<NiTriBasedGeom > oldshape ) {
+    vector<Ref<NiTriBasedGeom > >& shapes = shapeGroups2;
+    vector<Ref<NiTriBasedGeom > >::iterator itr = std::find(shapes.begin(), shapes.end(), oldshape);
+    if (itr != shapes.end()) {
+	*itr = newshape;
+
+	return true;
+    }
+
+    return false;
+}
+
 
 //--END CUSTOM CODE--//
diff --git a/src/obj/NiDefaultAVObjectPalette.cpp b/src/obj/NiDefaultAVObjectPalette.cpp
index 8265a53629d3ae04b19d38cd71f77bf240fd6b9c..567cfb59d65cfe7809d366891f332949b734d7be 100644
--- a/src/obj/NiDefaultAVObjectPalette.cpp
+++ b/src/obj/NiDefaultAVObjectPalette.cpp
@@ -167,4 +167,43 @@ void NiDefaultAVObjectPalette::SetObjs( const vector<Ref<NiAVObject> >& value )
    }
 }
 
+bool NiDefaultAVObjectPalette::AddObj( Ref<NiAVObject > obj ) {
+  for (vector<AVObject>::iterator itr = objs.begin(); itr != objs.end(); ++itr) {
+    if ( (*itr).avObject == obj ) {
+      return false;
+    }
+  }
+
+  struct AVObject avo;
+  avo.name = obj->GetName();
+  avo.avObject = obj;
+
+  objs.push_back(avo);
+  numObjs++;
+
+  return false;
+}
+
+bool NiDefaultAVObjectPalette::RemoveObj( Ref<NiAVObject > obj ) {
+  for (vector<AVObject>::iterator itr = objs.begin(); itr != objs.end(); ++itr) {
+    if ( (*itr).avObject == obj ) {
+      objs.erase(itr);
+      numObjs--;
+
+      return true;
+    }
+  }
+
+  return false;
+}
+
+void NiDefaultAVObjectPalette::ReplaceObj( const Ref<NiAVObject> newobj, const Ref<NiAVObject> oldobj ) {
+  for (vector<AVObject>::iterator itr = objs.begin(); itr != objs.end(); ++itr) {
+    if ( (*itr).avObject == oldobj ) {
+      (*itr).name = newobj->GetName();
+      (*itr).avObject = newobj;
+    }
+  }
+}
+
 //--END CUSTOM CODE--//
diff --git a/src/obj/NiGeometry.cpp b/src/obj/NiGeometry.cpp
index c39a191bdc07fede1584d6cd26f6d13305869180..a4f5a0ebd4f85f20ba55ff63811b8270b8258609 100644
--- a/src/obj/NiGeometry.cpp
+++ b/src/obj/NiGeometry.cpp
@@ -319,6 +319,10 @@ Ref<NiSkinInstance> NiGeometry::GetSkinInstance() const {
 	return skinInstance;
 }
 
+void NiGeometry::SetSkinInstance(Ref<NiSkinInstance> skin) {
+	skinInstance = skin;
+}
+
 void NiGeometry::BindSkin( vector< Ref<NiNode> >& bone_nodes ) {
    BindSkinWith(bone_nodes, NULL);
 }
diff --git a/src/obj/NiMultiTargetTransformController.cpp b/src/obj/NiMultiTargetTransformController.cpp
index 1f9fa47c83229434af6fa4d773925bf803d8946f..1f53caf21fbd67bf0781c2aa4bb1e54f6669608d 100644
--- a/src/obj/NiMultiTargetTransformController.cpp
+++ b/src/obj/NiMultiTargetTransformController.cpp
@@ -165,4 +165,43 @@ void NiMultiTargetTransformController::SetExtraTargets( const vector< Ref<NiAVOb
    extraTargets.erase(std::remove(extraTargets.begin(), extraTargets.end(), (NiAVObject*)NULL), extraTargets.end());
 }
 
+bool NiMultiTargetTransformController::AddExtraTarget( NiAVObject *target ) {
+  vector<NiAVObject *>& targets = extraTargets;
+  vector<NiAVObject *>::iterator itr = std::find(targets.begin(), targets.end(), target);
+  if (itr == targets.end()) {
+    targets.push_back(target);
+    numExtraTargets++;
+
+    return true;
+  }
+
+  return false;
+}
+
+bool NiMultiTargetTransformController::RemoveExtraTarget( NiAVObject *target ) {
+  vector<NiAVObject *>& targets = extraTargets;
+  vector<NiAVObject *>::iterator itr = std::find(targets.begin(), targets.end(), target);
+  if (itr == targets.end()) {
+    targets.erase(itr);
+    numExtraTargets--;
+
+    return true;
+  }
+
+  return false;
+}
+
+bool NiMultiTargetTransformController::ReplaceExtraTarget( NiAVObject *newtarget, NiAVObject *oldtarget ) {
+  vector<NiAVObject *>& targets = extraTargets;
+  vector<NiAVObject *>::iterator itr = std::find(targets.begin(), targets.end(), oldtarget);
+  if (itr != targets.end()) {
+    *itr = newtarget;
+
+    return true;
+  }
+
+  return false;
+}
+
+
 //--END CUSTOM CODE--//
diff --git a/src/obj/NiPSysMeshEmitter.cpp b/src/obj/NiPSysMeshEmitter.cpp
index 2bd4ca59483ce3b7e84fb9cb5b689f7abe357250..f7cfa8c1af22b88dbec78316498618b888cb3274 100644
--- a/src/obj/NiPSysMeshEmitter.cpp
+++ b/src/obj/NiPSysMeshEmitter.cpp
@@ -8,6 +8,7 @@ All rights reserved.  Please see niflib.h for license. */
 //-----------------------------------NOTICE----------------------------------//
 
 //--BEGIN FILE HEAD CUSTOM CODE--//
+#include <algorithm>
 //--END CUSTOM CODE--//
 
 #include "../../include/FixLink.h"
@@ -154,4 +155,43 @@ std::list<NiObject *> NiPSysMeshEmitter::GetPtrs() const {
 }
 
 //--BEGIN MISC CUSTOM CODE--//
+
+bool NiPSysMeshEmitter::AddEmitterMesh( Ref<NiTriBasedGeom > mesh ) {
+  vector<Ref<NiTriBasedGeom > >& meshes = emitterMeshes;
+  vector<Ref<NiTriBasedGeom > >::iterator itr = std::find(meshes.begin(), meshes.end(), mesh);
+  if (itr == meshes.end()) {
+    meshes.push_back(mesh);
+    numEmitterMeshes++;
+
+    return true;
+  }
+
+  return false;
+}
+
+bool NiPSysMeshEmitter::RemoveEmitterMesh( Ref<NiTriBasedGeom > mesh ) {
+  vector<Ref<NiTriBasedGeom > >& meshes = emitterMeshes;
+  vector<Ref<NiTriBasedGeom > >::iterator itr = std::find(meshes.begin(), meshes.end(), mesh);
+  if (itr == meshes.end()) {
+    meshes.erase(itr);
+    numEmitterMeshes--;
+
+    return true;
+  }
+
+  return false;
+}
+
+bool NiPSysMeshEmitter::ReplaceEmitterMesh( Ref<NiTriBasedGeom > newmesh, Ref<NiTriBasedGeom > oldmesh ) {
+  vector<Ref<NiTriBasedGeom > >& meshes = emitterMeshes;
+  vector<Ref<NiTriBasedGeom > >::iterator itr = std::find(meshes.begin(), meshes.end(), oldmesh);
+  if (itr != meshes.end()) {
+    *itr = newmesh;
+
+    return true;
+  }
+
+  return false;
+}
+
 //--END CUSTOM CODE--//
diff --git a/src/obj/NiSkinData.cpp b/src/obj/NiSkinData.cpp
index 4577b768bc7d166b2bd33123ce7d08e1a69bd274..4d25f0ef608404acc7a15c5919ad95fe7d9e474f 100644
--- a/src/obj/NiSkinData.cpp
+++ b/src/obj/NiSkinData.cpp
@@ -278,6 +278,15 @@ void NiSkinData::SetBoneWeights( unsigned int bone_index, const vector<SkinWeigh
     boneList[bone_index].boundingSphereRadius = radius;
 }
 
+void NiSkinData::SetBoneWeights( unsigned int bone_index, const vector<SkinWeight> & weights ) {
+	if ( bone_index > boneList.size() ) {
+		throw runtime_error( "The specified bone index was larger than the number of bones in this NiSkinData." );
+	}
+
+	hasVertexWeights = true;
+	boneList[bone_index].vertexWeights = weights;
+}
+
 Matrix44 NiSkinData::GetOverallTransform() const {
 	return Matrix44( skinTransform.translation, skinTransform.rotation, skinTransform.scale );
 }
diff --git a/src/obj/bhkConvexVerticesShape.cpp b/src/obj/bhkConvexVerticesShape.cpp
index 8091cef98414cf8f4d4fbd473b33337a523a34bb..970f707ac1d25a904fded17312ae8a8686ce5890 100644
--- a/src/obj/bhkConvexVerticesShape.cpp
+++ b/src/obj/bhkConvexVerticesShape.cpp
@@ -198,12 +198,13 @@ vector<float> bhkConvexVerticesShape::GetDistToCenter() const
 
 void bhkConvexVerticesShape::SetVertices( const vector<Vector3> & in )
 {
-	int size = in.size();
+	size_t size = in.size();
 	vertices.resize(size);
-	for (int i=0; i<size; ++i)
+	for (size_t i=0; i<size; ++i)
 	{
 		Vector4 &f = vertices[i];
 		const Vector3 &v = in[i];
+
 		f[0] = v.x;
 		f[1] = v.y;
 		f[2] = v.z;
@@ -213,12 +214,13 @@ void bhkConvexVerticesShape::SetVertices( const vector<Vector3> & in )
 
 void bhkConvexVerticesShape::SetNormals( const vector<Vector3> & in )
 {
-	int size = in.size();
+	size_t size = in.size();
 	normals.resize(size);
-	for (int i=0; i<size; ++i)
+	for (size_t i=0; i<size; ++i)
 	{
 		Vector4 &f = normals[i];
 		const Vector3 &v = in[i];
+
 		f[0] = v.x;
 		f[1] = v.y;
 		f[2] = v.z;
@@ -231,11 +233,13 @@ void bhkConvexVerticesShape::SetDistToCenter( const vector<float> & in )
 	if ( in.size() != normals.size() ) {
 		throw runtime_error("Distance vector size does not match normal size.");
 	}
-	int size = in.size();
+
+	size_t size = in.size();
 	normals.resize(size);
-	for (int i=0; i<size; ++i)
+	for (size_t i=0; i<size; ++i)
 	{
 		Vector4 &f = normals[i];
+
 		f[3] = in[i];
 	}
 }
diff --git a/src/obj/hkPackedNiTriStripsData.cpp b/src/obj/hkPackedNiTriStripsData.cpp
index 553cdf966f5a9509830dbeb9b3ada0fba727e9c8..124957f445fb9daeffad8e2c7a423b9a301e3913 100644
--- a/src/obj/hkPackedNiTriStripsData.cpp
+++ b/src/obj/hkPackedNiTriStripsData.cpp
@@ -205,6 +205,18 @@ vector<Triangle> hkPackedNiTriStripsData::GetTriangles() const {
 	return good_triangles;
 }
 
+vector<hkTriangle> hkPackedNiTriStripsData::GetHavokTriangles() const {
+	//Remove any bad triangles
+	vector<hkTriangle> good_triangles;
+	for ( unsigned i = 0; i < triangles.size(); ++i ) {
+		const hkTriangle & t = triangles[i];
+		if ( t.triangle.v1 != t.triangle.v2 && t.triangle.v2 != t.triangle.v3 && t.triangle.v1 != t.triangle.v3 ) {
+			good_triangles.push_back(t);
+		}
+	}
+	return good_triangles;
+}
+
 vector<Vector3> hkPackedNiTriStripsData::GetNormals() const {
 	//Remove any bad triangles
 	vector<Vector3> good_normals;
@@ -243,6 +255,13 @@ void hkPackedNiTriStripsData::SetTriangles( const vector<Triangle> & in ) {
 	}
 }
 
+void hkPackedNiTriStripsData::SetHavokTriangles( const vector<hkTriangle> & in ) {
+	if ( in.size() > 65535 || in.size() < 0 ) {
+		throw runtime_error("Invalid Face Count: must be between 0 and 65535.");
+	}
+	triangles = in;
+}
+
 void hkPackedNiTriStripsData::SetNormals( const vector<Vector3> & in ) {
 	if ( triangles.size() != in.size()) {
 		throw runtime_error("Invalid Face Count: normal count must be same as face count.");