diff --git a/niflib.vcproj b/niflib.vcproj
index 5208b8886129061561fa2dfbfaa3352d35049946..b97b4fea44cdb4130c6f685cae5176a703a3b725 100644
--- a/niflib.vcproj
+++ b/niflib.vcproj
@@ -164,18 +164,9 @@
 				<File
 					RelativePath=".\obj\AbhkShapeCollection.cpp">
 				</File>
-				<File
-					RelativePath=".\obj\ABlendInterpolator.cpp">
-				</File>
 				<File
 					RelativePath=".\obj\ABoneLODController.cpp">
 				</File>
-				<File
-					RelativePath=".\obj\ABSplineCompInterpolator.cpp">
-				</File>
-				<File
-					RelativePath=".\obj\AInterpolator.cpp">
-				</File>
 				<File
 					RelativePath=".\obj\AKeyedData.cpp">
 				</File>
@@ -188,15 +179,6 @@
 				<File
 					RelativePath=".\obj\APSysData.cpp">
 				</File>
-				<File
-					RelativePath=".\obj\APSysEmitter.cpp">
-				</File>
-				<File
-					RelativePath=".\obj\APSysModifier.cpp">
-				</File>
-				<File
-					RelativePath=".\obj\APSysVolumeEmitter.cpp">
-				</File>
 				<File
 					RelativePath=".\obj\AvoidNode.cpp">
 				</File>
@@ -353,6 +335,9 @@
 				<File
 					RelativePath=".\obj\NiBlendFloatInterpolator.cpp">
 				</File>
+				<File
+					RelativePath=".\obj\NiBlendInterpolator.cpp">
+				</File>
 				<File
 					RelativePath=".\obj\NiBlendPoint3Interpolator.cpp">
 				</File>
@@ -401,6 +386,9 @@
 				<File
 					RelativePath=".\obj\NiBSplineData.cpp">
 				</File>
+				<File
+					RelativePath=".\obj\NiBSplineInterpolator.cpp">
+				</File>
 				<File
 					RelativePath=".\obj\NiCamera.cpp">
 				</File>
@@ -470,6 +458,9 @@
 				<File
 					RelativePath=".\obj\NiIntegersExtraData.cpp">
 				</File>
+				<File
+					RelativePath=".\obj\NiInterpolator.cpp">
+				</File>
 				<File
 					RelativePath=".\obj\NiKeyframeController.cpp">
 				</File>
@@ -608,6 +599,9 @@
 				<File
 					RelativePath=".\obj\NiPSysDragModifier.cpp">
 				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitter.cpp">
+				</File>
 				<File
 					RelativePath=".\obj\NiPSysEmitterCtlr.cpp">
 				</File>
@@ -644,6 +638,9 @@
 				<File
 					RelativePath=".\obj\NiPSysMeshUpdateModifier.cpp">
 				</File>
+				<File
+					RelativePath=".\obj\NiPSysModifier.cpp">
+				</File>
 				<File
 					RelativePath=".\obj\NiPSysModifierActiveCtlr.cpp">
 				</File>
@@ -668,6 +665,9 @@
 				<File
 					RelativePath=".\obj\NiPSysUpdateCtlr.cpp">
 				</File>
+				<File
+					RelativePath=".\obj\NiPSysVolumeEmitter.cpp">
+				</File>
 				<File
 					RelativePath=".\obj\NiRangeLODData.cpp">
 				</File>
@@ -749,6 +749,9 @@
 				<File
 					RelativePath=".\obj\NiTriBasedGeom.cpp">
 				</File>
+				<File
+					RelativePath=".\obj\NiTriBasedGeomData.cpp">
+				</File>
 				<File
 					RelativePath=".\obj\NiTriShape.cpp">
 				</File>
@@ -791,9 +794,6 @@
 				<File
 					RelativePath=".\obj\RootCollisionNode.cpp">
 				</File>
-				<File
-					RelativePath=".\obj\TriBasedGeomData.cpp">
-				</File>
 				<File
 					RelativePath=".\obj\Type.cpp">
 				</File>
@@ -827,18 +827,9 @@
 				<File
 					RelativePath=".\obj\AbhkShapeCollection.h">
 				</File>
-				<File
-					RelativePath=".\obj\ABlendInterpolator.h">
-				</File>
 				<File
 					RelativePath=".\obj\ABoneLODController.h">
 				</File>
-				<File
-					RelativePath=".\obj\ABSplineCompInterpolator.h">
-				</File>
-				<File
-					RelativePath=".\obj\AInterpolator.h">
-				</File>
 				<File
 					RelativePath=".\obj\AKeyedData.h">
 				</File>
@@ -851,15 +842,6 @@
 				<File
 					RelativePath=".\obj\APSysData.h">
 				</File>
-				<File
-					RelativePath=".\obj\APSysEmitter.h">
-				</File>
-				<File
-					RelativePath=".\obj\APSysModifier.h">
-				</File>
-				<File
-					RelativePath=".\obj\APSysVolumeEmitter.h">
-				</File>
 				<File
 					RelativePath=".\obj\AvoidNode.h">
 				</File>
@@ -1016,6 +998,9 @@
 				<File
 					RelativePath=".\obj\NiBlendFloatInterpolator.h">
 				</File>
+				<File
+					RelativePath=".\obj\NiBlendInterpolator.h">
+				</File>
 				<File
 					RelativePath=".\obj\NiBlendPoint3Interpolator.h">
 				</File>
@@ -1064,6 +1049,9 @@
 				<File
 					RelativePath=".\obj\NiBSplineData.h">
 				</File>
+				<File
+					RelativePath=".\obj\NiBSplineInterpolator.h">
+				</File>
 				<File
 					RelativePath=".\obj\NiCamera.h">
 				</File>
@@ -1133,6 +1121,9 @@
 				<File
 					RelativePath=".\obj\NiIntegersExtraData.h">
 				</File>
+				<File
+					RelativePath=".\obj\NiInterpolator.h">
+				</File>
 				<File
 					RelativePath=".\obj\NiKeyframeController.h">
 				</File>
@@ -1271,6 +1262,9 @@
 				<File
 					RelativePath=".\obj\NiPSysDragModifier.h">
 				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitter.h">
+				</File>
 				<File
 					RelativePath=".\obj\NiPSysEmitterCtlr.h">
 				</File>
@@ -1307,6 +1301,9 @@
 				<File
 					RelativePath=".\obj\NiPSysMeshUpdateModifier.h">
 				</File>
+				<File
+					RelativePath=".\obj\NiPSysModifier.h">
+				</File>
 				<File
 					RelativePath=".\obj\NiPSysModifierActiveCtlr.h">
 				</File>
@@ -1331,6 +1328,9 @@
 				<File
 					RelativePath=".\obj\NiPSysUpdateCtlr.h">
 				</File>
+				<File
+					RelativePath=".\obj\NiPSysVolumeEmitter.h">
+				</File>
 				<File
 					RelativePath=".\obj\NiRangeLODData.h">
 				</File>
@@ -1412,6 +1412,9 @@
 				<File
 					RelativePath=".\obj\NiTriBasedGeom.h">
 				</File>
+				<File
+					RelativePath=".\obj\NiTriBasedGeomData.h">
+				</File>
 				<File
 					RelativePath=".\obj\NiTriShape.h">
 				</File>
@@ -1457,9 +1460,6 @@
 				<File
 					RelativePath=".\obj\RootCollisionNode.h">
 				</File>
-				<File
-					RelativePath=".\obj\TriBasedGeomData.h">
-				</File>
 				<File
 					RelativePath=".\obj\Type.h">
 				</File>
diff --git a/obj/ABoneLODController.cpp b/obj/ABoneLODController.cpp
index 428762c9e53c6ba86286a938bf05c11c99a2291d..eff66caf608b1db551d74033d731d5a92206f4ac 100644
--- a/obj/ABoneLODController.cpp
+++ b/obj/ABoneLODController.cpp
@@ -12,18 +12,22 @@ ABoneLODController::ABoneLODController() A_BONE_L_O_D_CONTROLLER_CONSTRUCT {}
 ABoneLODController::~ABoneLODController() {}
 
 void ABoneLODController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	A_BONE_L_O_D_CONTROLLER_READ
+  A_BONE_L_O_D_CONTROLLER_READ
 }
 
 void ABoneLODController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	A_BONE_L_O_D_CONTROLLER_WRITE
+  A_BONE_L_O_D_CONTROLLER_WRITE
 }
 
 string ABoneLODController::asString( bool verbose ) const {
-	A_BONE_L_O_D_CONTROLLER_STRING
+  A_BONE_L_O_D_CONTROLLER_STRING
 }
 
 void ABoneLODController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	A_BONE_L_O_D_CONTROLLER_FIXLINKS
+  A_BONE_L_O_D_CONTROLLER_FIXLINKS
 }
 
+const Type & ABoneLODController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/ABoneLODController.h b/obj/ABoneLODController.h
index d3bf71e4916b716382f34fc5f6169a498d586c18..d8f643d6bcd8595a49baa668ea8f0e1907b33e0a 100644
--- a/obj/ABoneLODController.h
+++ b/obj/ABoneLODController.h
@@ -16,16 +16,17 @@ typedef Ref<ABoneLODController> ABoneLODControllerRef;
 
 class ABoneLODController : public A_BONE_L_O_D_CONTROLLER_PARENT {
 public:
-	ABoneLODController();
-	~ABoneLODController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	A_BONE_L_O_D_CONTROLLER_MEMBERS
+  ABoneLODController();
+  ~ABoneLODController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  A_BONE_L_O_D_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/AKeyedData.cpp b/obj/AKeyedData.cpp
index 1842b0106bfbc051d4f69350e01b7ba7beadec59..d424b2a1c45c268de06037beac9d20d8047da166 100644
--- a/obj/AKeyedData.cpp
+++ b/obj/AKeyedData.cpp
@@ -11,18 +11,22 @@ AKeyedData::AKeyedData() A_KEYED_DATA_CONSTRUCT {}
 AKeyedData::~AKeyedData() {}
 
 void AKeyedData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	A_KEYED_DATA_READ
+  A_KEYED_DATA_READ
 }
 
 void AKeyedData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	A_KEYED_DATA_WRITE
+  A_KEYED_DATA_WRITE
 }
 
 string AKeyedData::asString( bool verbose ) const {
-	A_KEYED_DATA_STRING
+  A_KEYED_DATA_STRING
 }
 
 void AKeyedData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	A_KEYED_DATA_FIXLINKS
+  A_KEYED_DATA_FIXLINKS
 }
 
+const Type & AKeyedData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/AKeyedData.h b/obj/AKeyedData.h
index 9e8d853b56fe577fd51d4322ad115732df2036e3..da0486e94fc93a58badd3ed025b39b31cff836da 100644
--- a/obj/AKeyedData.h
+++ b/obj/AKeyedData.h
@@ -16,16 +16,17 @@ typedef Ref<AKeyedData> AKeyedDataRef;
 
 class AKeyedData : public A_KEYED_DATA_PARENT {
 public:
-	AKeyedData();
-	~AKeyedData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	A_KEYED_DATA_MEMBERS
+  AKeyedData();
+  ~AKeyedData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  A_KEYED_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/APSysCtlr.cpp b/obj/APSysCtlr.cpp
index 7d9fef2fb39743d184d9ed4d7fad60a532537bb0..c7f87dcc0bc4c2b58940ecfdec9f5ebd02e4ae00 100644
--- a/obj/APSysCtlr.cpp
+++ b/obj/APSysCtlr.cpp
@@ -11,18 +11,22 @@ APSysCtlr::APSysCtlr() A_P_SYS_CTLR_CONSTRUCT {}
 APSysCtlr::~APSysCtlr() {}
 
 void APSysCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	A_P_SYS_CTLR_READ
+  A_P_SYS_CTLR_READ
 }
 
 void APSysCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	A_P_SYS_CTLR_WRITE
+  A_P_SYS_CTLR_WRITE
 }
 
 string APSysCtlr::asString( bool verbose ) const {
-	A_P_SYS_CTLR_STRING
+  A_P_SYS_CTLR_STRING
 }
 
 void APSysCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	A_P_SYS_CTLR_FIXLINKS
+  A_P_SYS_CTLR_FIXLINKS
 }
 
+const Type & APSysCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/APSysCtlr.h b/obj/APSysCtlr.h
index 2571c5b1b9802310842279856fb024e8a36566f7..50f13b9643ba9727ce07d9f779ab8b8cfa6d5d4e 100644
--- a/obj/APSysCtlr.h
+++ b/obj/APSysCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<APSysCtlr> APSysCtlrRef;
 
 class APSysCtlr : public A_P_SYS_CTLR_PARENT {
 public:
-	APSysCtlr();
-	~APSysCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	A_P_SYS_CTLR_MEMBERS
+  APSysCtlr();
+  ~APSysCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  A_P_SYS_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/APSysData.cpp b/obj/APSysData.cpp
index a236847a779899e6c265f4ab10efd14d55cfd494..e884dceb9d50babeb924b7f6fa7c0adfa83408db 100644
--- a/obj/APSysData.cpp
+++ b/obj/APSysData.cpp
@@ -10,18 +10,23 @@ APSysData::APSysData() A_P_SYS_DATA_CONSTRUCT {}
 
 APSysData::~APSysData() {}
 
-void APSysData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	A_P_SYS_DATA_WRITE
+void APSysData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
+  A_P_SYS_DATA_READ
 }
 
-void APSysData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	A_P_SYS_DATA_READ
+void APSysData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+  A_P_SYS_DATA_WRITE
 }
 
 string APSysData::asString( bool verbose ) const {
-	A_P_SYS_DATA_STRING
+  A_P_SYS_DATA_STRING
 }
 
 void APSysData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	A_P_SYS_DATA_FIXLINKS
+  A_P_SYS_DATA_FIXLINKS
 }
+
+const Type & APSysData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/APSysData.h b/obj/APSysData.h
index ea9614bc00bc81f97aaf758da44dacdfaf4e1d73..ae108c0c987bf12316e2a79a04457e8c6e92b4fd 100644
--- a/obj/APSysData.h
+++ b/obj/APSysData.h
@@ -16,16 +16,17 @@ typedef Ref<APSysData> APSysDataRef;
 
 class APSysData : public A_P_SYS_DATA_PARENT {
 public:
-	APSysData();
-	~APSysData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	A_P_SYS_DATA_MEMBERS
+  APSysData();
+  ~APSysData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  A_P_SYS_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/AParticleModifier.cpp b/obj/AParticleModifier.cpp
index 093de45be1248459d835423cc57e4007d9a22d8a..0a43663f954814ddf30995610fc1e8b26aad1d05 100644
--- a/obj/AParticleModifier.cpp
+++ b/obj/AParticleModifier.cpp
@@ -2,6 +2,8 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "AParticleModifier.h"
+#include "AParticleModifier.h"
+#include "NiParticleSystemController.h"
 
 //Definition of TYPE constant
 const Type AParticleModifier::TYPE("AParticleModifier", &A_PARTICLE_MODIFIER_PARENT::TYPE );
@@ -11,18 +13,22 @@ AParticleModifier::AParticleModifier() A_PARTICLE_MODIFIER_CONSTRUCT {}
 AParticleModifier::~AParticleModifier() {}
 
 void AParticleModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	A_PARTICLE_MODIFIER_READ
+  A_PARTICLE_MODIFIER_READ
 }
 
 void AParticleModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	A_PARTICLE_MODIFIER_WRITE
+  A_PARTICLE_MODIFIER_WRITE
 }
 
 string AParticleModifier::asString( bool verbose ) const {
-	A_PARTICLE_MODIFIER_STRING
+  A_PARTICLE_MODIFIER_STRING
 }
 
 void AParticleModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	A_PARTICLE_MODIFIER_FIXLINKS
+  A_PARTICLE_MODIFIER_FIXLINKS
 }
 
+const Type & AParticleModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/AParticleModifier.h b/obj/AParticleModifier.h
index 9b4209928eeadad8c0ac3184025d9086afec31ea..a5242c631dc2a326ee9921cd29fa7e919cb9dad1 100644
--- a/obj/AParticleModifier.h
+++ b/obj/AParticleModifier.h
@@ -16,16 +16,17 @@ typedef Ref<AParticleModifier> AParticleModifierRef;
 
 class AParticleModifier : public A_PARTICLE_MODIFIER_PARENT {
 public:
-	AParticleModifier();
-	~AParticleModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	A_PARTICLE_MODIFIER_MEMBERS
+  AParticleModifier();
+  ~AParticleModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  A_PARTICLE_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/AbhkConstraint.cpp b/obj/AbhkConstraint.cpp
index cbdcd829f2001c23d13700cd53f281a18ce2ca20..2aafdbadc07bb9a10aba48b0f0d0160ff7dad514 100644
--- a/obj/AbhkConstraint.cpp
+++ b/obj/AbhkConstraint.cpp
@@ -12,18 +12,22 @@ AbhkConstraint::AbhkConstraint() ABHK_CONSTRAINT_CONSTRUCT {}
 AbhkConstraint::~AbhkConstraint() {}
 
 void AbhkConstraint::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	ABHK_CONSTRAINT_READ
+  ABHK_CONSTRAINT_READ
 }
 
 void AbhkConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	ABHK_CONSTRAINT_WRITE
+  ABHK_CONSTRAINT_WRITE
 }
 
 string AbhkConstraint::asString( bool verbose ) const {
-	ABHK_CONSTRAINT_STRING
+  ABHK_CONSTRAINT_STRING
 }
 
 void AbhkConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	ABHK_CONSTRAINT_FIXLINKS
+  ABHK_CONSTRAINT_FIXLINKS
 }
 
+const Type & AbhkConstraint::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/AbhkConstraint.h b/obj/AbhkConstraint.h
index bef5385a94b50db4bb70c9e8466cca85b54f9244..ae055189c794ee01fcab4d4c674c482fe030ad4d 100644
--- a/obj/AbhkConstraint.h
+++ b/obj/AbhkConstraint.h
@@ -16,16 +16,17 @@ typedef Ref<AbhkConstraint> AbhkConstraintRef;
 
 class AbhkConstraint : public ABHK_CONSTRAINT_PARENT {
 public:
-	AbhkConstraint();
-	~AbhkConstraint();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	ABHK_CONSTRAINT_MEMBERS
+  AbhkConstraint();
+  ~AbhkConstraint();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  ABHK_CONSTRAINT_MEMBERS
 };
+
 #endif
diff --git a/obj/AbhkRagdollConstraint.cpp b/obj/AbhkRagdollConstraint.cpp
index 9035893ceeae8312564b9a838630e14328775c08..27361421e9f1715861612396559df03531b91cfc 100644
--- a/obj/AbhkRagdollConstraint.cpp
+++ b/obj/AbhkRagdollConstraint.cpp
@@ -11,18 +11,22 @@ AbhkRagdollConstraint::AbhkRagdollConstraint() ABHK_RAGDOLL_CONSTRAINT_CONSTRUCT
 AbhkRagdollConstraint::~AbhkRagdollConstraint() {}
 
 void AbhkRagdollConstraint::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	ABHK_RAGDOLL_CONSTRAINT_READ
+  ABHK_RAGDOLL_CONSTRAINT_READ
 }
 
 void AbhkRagdollConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	ABHK_RAGDOLL_CONSTRAINT_WRITE
+  ABHK_RAGDOLL_CONSTRAINT_WRITE
 }
 
 string AbhkRagdollConstraint::asString( bool verbose ) const {
-	ABHK_RAGDOLL_CONSTRAINT_STRING
+  ABHK_RAGDOLL_CONSTRAINT_STRING
 }
 
 void AbhkRagdollConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	ABHK_RAGDOLL_CONSTRAINT_FIXLINKS
+  ABHK_RAGDOLL_CONSTRAINT_FIXLINKS
 }
 
+const Type & AbhkRagdollConstraint::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/AbhkRagdollConstraint.h b/obj/AbhkRagdollConstraint.h
index a9dd2bfce05b64f1e34b5296ce7614bb5c69b0a1..ddb7ae365c030396b8edaa4c7e3254ea1cca9d5d 100644
--- a/obj/AbhkRagdollConstraint.h
+++ b/obj/AbhkRagdollConstraint.h
@@ -16,16 +16,17 @@ typedef Ref<AbhkRagdollConstraint> AbhkRagdollConstraintRef;
 
 class AbhkRagdollConstraint : public ABHK_RAGDOLL_CONSTRAINT_PARENT {
 public:
-	AbhkRagdollConstraint();
-	~AbhkRagdollConstraint();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	ABHK_RAGDOLL_CONSTRAINT_MEMBERS
+  AbhkRagdollConstraint();
+  ~AbhkRagdollConstraint();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  ABHK_RAGDOLL_CONSTRAINT_MEMBERS
 };
+
 #endif
diff --git a/obj/AbhkShapeCollection.cpp b/obj/AbhkShapeCollection.cpp
index 31cee5a888b612961c1a954b1b972c4bc78fb03a..b29bd86cceba526dc61cc5651bcf69c9f5e7a257 100644
--- a/obj/AbhkShapeCollection.cpp
+++ b/obj/AbhkShapeCollection.cpp
@@ -11,18 +11,22 @@ AbhkShapeCollection::AbhkShapeCollection() ABHK_SHAPE_COLLECTION_CONSTRUCT {}
 AbhkShapeCollection::~AbhkShapeCollection() {}
 
 void AbhkShapeCollection::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	ABHK_SHAPE_COLLECTION_READ
+  ABHK_SHAPE_COLLECTION_READ
 }
 
 void AbhkShapeCollection::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	ABHK_SHAPE_COLLECTION_WRITE
+  ABHK_SHAPE_COLLECTION_WRITE
 }
 
 string AbhkShapeCollection::asString( bool verbose ) const {
-	ABHK_SHAPE_COLLECTION_STRING
+  ABHK_SHAPE_COLLECTION_STRING
 }
 
 void AbhkShapeCollection::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	ABHK_SHAPE_COLLECTION_FIXLINKS
+  ABHK_SHAPE_COLLECTION_FIXLINKS
 }
 
+const Type & AbhkShapeCollection::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/AbhkShapeCollection.h b/obj/AbhkShapeCollection.h
index 964c3cbcc31da543dba334ed29d3cc711c2b397e..6c8f80137740b9ee33fd1d230f4f3222990611f0 100644
--- a/obj/AbhkShapeCollection.h
+++ b/obj/AbhkShapeCollection.h
@@ -16,16 +16,17 @@ typedef Ref<AbhkShapeCollection> AbhkShapeCollectionRef;
 
 class AbhkShapeCollection : public ABHK_SHAPE_COLLECTION_PARENT {
 public:
-	AbhkShapeCollection();
-	~AbhkShapeCollection();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	ABHK_SHAPE_COLLECTION_MEMBERS
+  AbhkShapeCollection();
+  ~AbhkShapeCollection();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  ABHK_SHAPE_COLLECTION_MEMBERS
 };
+
 #endif
diff --git a/obj/AvoidNode.cpp b/obj/AvoidNode.cpp
index 40c272d622429fad2bafc3f1fa9c1f2c4cf68259..c00db870d1f68860773363bfdf994e7ba385adc0 100644
--- a/obj/AvoidNode.cpp
+++ b/obj/AvoidNode.cpp
@@ -11,18 +11,22 @@ AvoidNode::AvoidNode() AVOID_NODE_CONSTRUCT {}
 AvoidNode::~AvoidNode() {}
 
 void AvoidNode::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	AVOID_NODE_READ
+  AVOID_NODE_READ
 }
 
 void AvoidNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	AVOID_NODE_WRITE
+  AVOID_NODE_WRITE
 }
 
 string AvoidNode::asString( bool verbose ) const {
-	AVOID_NODE_STRING
+  AVOID_NODE_STRING
 }
 
 void AvoidNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	AVOID_NODE_FIXLINKS
+  AVOID_NODE_FIXLINKS
 }
 
+const Type & AvoidNode::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/AvoidNode.h b/obj/AvoidNode.h
index a191a1cd4534e92e9e3d8a21c7ed0b3d153503e5..ef9d98040a80b01a1652cd5df0136a40fda44db7 100644
--- a/obj/AvoidNode.h
+++ b/obj/AvoidNode.h
@@ -16,16 +16,17 @@ typedef Ref<AvoidNode> AvoidNodeRef;
 
 class AvoidNode : public AVOID_NODE_PARENT {
 public:
-	AvoidNode();
-	~AvoidNode();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	AVOID_NODE_MEMBERS
+  AvoidNode();
+  ~AvoidNode();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  AVOID_NODE_MEMBERS
 };
+
 #endif
diff --git a/obj/BSBound.cpp b/obj/BSBound.cpp
index 7f59897bf65f9c0d0c6b4738ac707b602f3e0b23..2ba3486ee8fde5917d6a6c11d3f1ba5e5e16b772 100644
--- a/obj/BSBound.cpp
+++ b/obj/BSBound.cpp
@@ -11,18 +11,22 @@ BSBound::BSBound() B_S_BOUND_CONSTRUCT {}
 BSBound::~BSBound() {}
 
 void BSBound::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	B_S_BOUND_READ
+  B_S_BOUND_READ
 }
 
 void BSBound::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	B_S_BOUND_WRITE
+  B_S_BOUND_WRITE
 }
 
 string BSBound::asString( bool verbose ) const {
-	B_S_BOUND_STRING
+  B_S_BOUND_STRING
 }
 
 void BSBound::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	B_S_BOUND_FIXLINKS
+  B_S_BOUND_FIXLINKS
 }
 
+const Type & BSBound::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/BSBound.h b/obj/BSBound.h
index decf637f012358ad0b64a4ea010fc66ca418e973..d8b7e66789a5182d51d0ebdd68bef7f8c785c7cd 100644
--- a/obj/BSBound.h
+++ b/obj/BSBound.h
@@ -16,16 +16,17 @@ typedef Ref<BSBound> BSBoundRef;
 
 class BSBound : public B_S_BOUND_PARENT {
 public:
-	BSBound();
-	~BSBound();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	B_S_BOUND_MEMBERS
+  BSBound();
+  ~BSBound();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  B_S_BOUND_MEMBERS
 };
+
 #endif
diff --git a/obj/BSFurnitureMarker.cpp b/obj/BSFurnitureMarker.cpp
index 3faf7dd0ca227bafdf5c313c77bfa26778ae48d3..3b97c0c90de83c9a1380e7617afd1cce1006aab4 100644
--- a/obj/BSFurnitureMarker.cpp
+++ b/obj/BSFurnitureMarker.cpp
@@ -11,18 +11,22 @@ BSFurnitureMarker::BSFurnitureMarker() B_S_FURNITURE_MARKER_CONSTRUCT {}
 BSFurnitureMarker::~BSFurnitureMarker() {}
 
 void BSFurnitureMarker::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	B_S_FURNITURE_MARKER_READ
+  B_S_FURNITURE_MARKER_READ
 }
 
 void BSFurnitureMarker::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	B_S_FURNITURE_MARKER_WRITE
+  B_S_FURNITURE_MARKER_WRITE
 }
 
 string BSFurnitureMarker::asString( bool verbose ) const {
-	B_S_FURNITURE_MARKER_STRING
+  B_S_FURNITURE_MARKER_STRING
 }
 
 void BSFurnitureMarker::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	B_S_FURNITURE_MARKER_FIXLINKS
+  B_S_FURNITURE_MARKER_FIXLINKS
 }
 
+const Type & BSFurnitureMarker::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/BSFurnitureMarker.h b/obj/BSFurnitureMarker.h
index 9b02868656a330b3025e5ace76a46fe686fbd659..0f8c8939be6cb9be6819f3c120d22aaebc8bf5e3 100644
--- a/obj/BSFurnitureMarker.h
+++ b/obj/BSFurnitureMarker.h
@@ -16,16 +16,17 @@ typedef Ref<BSFurnitureMarker> BSFurnitureMarkerRef;
 
 class BSFurnitureMarker : public B_S_FURNITURE_MARKER_PARENT {
 public:
-	BSFurnitureMarker();
-	~BSFurnitureMarker();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	B_S_FURNITURE_MARKER_MEMBERS
+  BSFurnitureMarker();
+  ~BSFurnitureMarker();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  B_S_FURNITURE_MARKER_MEMBERS
 };
+
 #endif
diff --git a/obj/BSKeyframeController.cpp b/obj/BSKeyframeController.cpp
index 161a4b733274475f62c7bdd6f6c949aa348ca416..d50f3af20070a75bcaaadcbc27e195087cc9fb9f 100644
--- a/obj/BSKeyframeController.cpp
+++ b/obj/BSKeyframeController.cpp
@@ -12,18 +12,22 @@ BSKeyframeController::BSKeyframeController() B_S_KEYFRAME_CONTROLLER_CONSTRUCT {
 BSKeyframeController::~BSKeyframeController() {}
 
 void BSKeyframeController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	B_S_KEYFRAME_CONTROLLER_READ
+  B_S_KEYFRAME_CONTROLLER_READ
 }
 
 void BSKeyframeController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	B_S_KEYFRAME_CONTROLLER_WRITE
+  B_S_KEYFRAME_CONTROLLER_WRITE
 }
 
 string BSKeyframeController::asString( bool verbose ) const {
-	B_S_KEYFRAME_CONTROLLER_STRING
+  B_S_KEYFRAME_CONTROLLER_STRING
 }
 
 void BSKeyframeController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	B_S_KEYFRAME_CONTROLLER_FIXLINKS
+  B_S_KEYFRAME_CONTROLLER_FIXLINKS
 }
 
+const Type & BSKeyframeController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/BSKeyframeController.h b/obj/BSKeyframeController.h
index 6334869dfe1e6569a4e41b1c3842032ba133cbf2..81be279826ae591df6546e378ce9e56f41e17258 100644
--- a/obj/BSKeyframeController.h
+++ b/obj/BSKeyframeController.h
@@ -16,16 +16,17 @@ typedef Ref<BSKeyframeController> BSKeyframeControllerRef;
 
 class BSKeyframeController : public B_S_KEYFRAME_CONTROLLER_PARENT {
 public:
-	BSKeyframeController();
-	~BSKeyframeController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	B_S_KEYFRAME_CONTROLLER_MEMBERS
+  BSKeyframeController();
+  ~BSKeyframeController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  B_S_KEYFRAME_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/BSPSysArrayEmitter.cpp b/obj/BSPSysArrayEmitter.cpp
index 478485a10caac9b8ed90ea7749370bc4d511f870..9292fecbf97976d5f281ce508da2d314a5145c93 100644
--- a/obj/BSPSysArrayEmitter.cpp
+++ b/obj/BSPSysArrayEmitter.cpp
@@ -11,18 +11,22 @@ BSPSysArrayEmitter::BSPSysArrayEmitter() B_S_P_SYS_ARRAY_EMITTER_CONSTRUCT {}
 BSPSysArrayEmitter::~BSPSysArrayEmitter() {}
 
 void BSPSysArrayEmitter::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	B_S_P_SYS_ARRAY_EMITTER_READ
+  B_S_P_SYS_ARRAY_EMITTER_READ
 }
 
 void BSPSysArrayEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	B_S_P_SYS_ARRAY_EMITTER_WRITE
+  B_S_P_SYS_ARRAY_EMITTER_WRITE
 }
 
 string BSPSysArrayEmitter::asString( bool verbose ) const {
-	B_S_P_SYS_ARRAY_EMITTER_STRING
+  B_S_P_SYS_ARRAY_EMITTER_STRING
 }
 
 void BSPSysArrayEmitter::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	B_S_P_SYS_ARRAY_EMITTER_FIXLINKS
+  B_S_P_SYS_ARRAY_EMITTER_FIXLINKS
 }
 
+const Type & BSPSysArrayEmitter::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/BSPSysArrayEmitter.h b/obj/BSPSysArrayEmitter.h
index 90991ce18a2554d113e29dc0bc1efac6e2e5c6e7..8e3f131f582bf4a68ca06db248d2a6d8bcd394fc 100644
--- a/obj/BSPSysArrayEmitter.h
+++ b/obj/BSPSysArrayEmitter.h
@@ -16,16 +16,17 @@ typedef Ref<BSPSysArrayEmitter> BSPSysArrayEmitterRef;
 
 class BSPSysArrayEmitter : public B_S_P_SYS_ARRAY_EMITTER_PARENT {
 public:
-	BSPSysArrayEmitter();
-	~BSPSysArrayEmitter();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	B_S_P_SYS_ARRAY_EMITTER_MEMBERS
+  BSPSysArrayEmitter();
+  ~BSPSysArrayEmitter();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  B_S_P_SYS_ARRAY_EMITTER_MEMBERS
 };
+
 #endif
diff --git a/obj/BSParentVelocityModifier.cpp b/obj/BSParentVelocityModifier.cpp
index fe6543cc3f07f37f861004f088874bd140d575cd..4eb2aa8681ee7e46301f3f3a4cd352a617a003e1 100644
--- a/obj/BSParentVelocityModifier.cpp
+++ b/obj/BSParentVelocityModifier.cpp
@@ -11,18 +11,22 @@ BSParentVelocityModifier::BSParentVelocityModifier() B_S_PARENT_VELOCITY_MODIFIE
 BSParentVelocityModifier::~BSParentVelocityModifier() {}
 
 void BSParentVelocityModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	B_S_PARENT_VELOCITY_MODIFIER_READ
+  B_S_PARENT_VELOCITY_MODIFIER_READ
 }
 
 void BSParentVelocityModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	B_S_PARENT_VELOCITY_MODIFIER_WRITE
+  B_S_PARENT_VELOCITY_MODIFIER_WRITE
 }
 
 string BSParentVelocityModifier::asString( bool verbose ) const {
-	B_S_PARENT_VELOCITY_MODIFIER_STRING
+  B_S_PARENT_VELOCITY_MODIFIER_STRING
 }
 
 void BSParentVelocityModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	B_S_PARENT_VELOCITY_MODIFIER_FIXLINKS
+  B_S_PARENT_VELOCITY_MODIFIER_FIXLINKS
 }
 
+const Type & BSParentVelocityModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/BSParentVelocityModifier.h b/obj/BSParentVelocityModifier.h
index 7af3ca644b39387db9d305a728d6c6e59b6701b4..f6ba99ffa48b1e23dd40c19e96a2b436922b3546 100644
--- a/obj/BSParentVelocityModifier.h
+++ b/obj/BSParentVelocityModifier.h
@@ -16,16 +16,17 @@ typedef Ref<BSParentVelocityModifier> BSParentVelocityModifierRef;
 
 class BSParentVelocityModifier : public B_S_PARENT_VELOCITY_MODIFIER_PARENT {
 public:
-	BSParentVelocityModifier();
-	~BSParentVelocityModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	B_S_PARENT_VELOCITY_MODIFIER_MEMBERS
+  BSParentVelocityModifier();
+  ~BSParentVelocityModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  B_S_PARENT_VELOCITY_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/BSXFlags.cpp b/obj/BSXFlags.cpp
index dc61e9cff03ad948413925f856e5e4ac06d0d5ad..b645d2e9f5ff8adb3d9e23b66c85a507c279629d 100644
--- a/obj/BSXFlags.cpp
+++ b/obj/BSXFlags.cpp
@@ -11,18 +11,22 @@ BSXFlags::BSXFlags() B_S_X_FLAGS_CONSTRUCT {}
 BSXFlags::~BSXFlags() {}
 
 void BSXFlags::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	B_S_X_FLAGS_READ
+  B_S_X_FLAGS_READ
 }
 
 void BSXFlags::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	B_S_X_FLAGS_WRITE
+  B_S_X_FLAGS_WRITE
 }
 
 string BSXFlags::asString( bool verbose ) const {
-	B_S_X_FLAGS_STRING
+  B_S_X_FLAGS_STRING
 }
 
 void BSXFlags::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	B_S_X_FLAGS_FIXLINKS
+  B_S_X_FLAGS_FIXLINKS
 }
 
+const Type & BSXFlags::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/BSXFlags.h b/obj/BSXFlags.h
index df2e9a2cd8cc79c84beba2e9c9378f2764a64d93..bd7c6f2c79f7e00fea37d6dfb0ae365c3f4e9460 100644
--- a/obj/BSXFlags.h
+++ b/obj/BSXFlags.h
@@ -16,16 +16,17 @@ typedef Ref<BSXFlags> BSXFlagsRef;
 
 class BSXFlags : public B_S_X_FLAGS_PARENT {
 public:
-	BSXFlags();
-	~BSXFlags();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	B_S_X_FLAGS_MEMBERS
+  BSXFlags();
+  ~BSXFlags();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  B_S_X_FLAGS_MEMBERS
 };
+
 #endif
diff --git a/obj/FxButton.cpp b/obj/FxButton.cpp
index 4d0ffe340230d5ab04e26a68ae95c798b5fca0de..f9b5b1a2b9f9213a9fdb4e330bd07c9c69181785 100644
--- a/obj/FxButton.cpp
+++ b/obj/FxButton.cpp
@@ -11,18 +11,22 @@ FxButton::FxButton() FX_BUTTON_CONSTRUCT {}
 FxButton::~FxButton() {}
 
 void FxButton::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	FX_BUTTON_READ
+  FX_BUTTON_READ
 }
 
 void FxButton::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	FX_BUTTON_WRITE
+  FX_BUTTON_WRITE
 }
 
 string FxButton::asString( bool verbose ) const {
-	FX_BUTTON_STRING
+  FX_BUTTON_STRING
 }
 
 void FxButton::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	FX_BUTTON_FIXLINKS
+  FX_BUTTON_FIXLINKS
 }
 
+const Type & FxButton::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/FxButton.h b/obj/FxButton.h
index ad99d6f1d2cf37dcf1e40723665aa6bd8c76274c..ed67c2cface518e5c0462672475776ce09853379 100644
--- a/obj/FxButton.h
+++ b/obj/FxButton.h
@@ -16,16 +16,17 @@ typedef Ref<FxButton> FxButtonRef;
 
 class FxButton : public FX_BUTTON_PARENT {
 public:
-	FxButton();
-	~FxButton();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	FX_BUTTON_MEMBERS
+  FxButton();
+  ~FxButton();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  FX_BUTTON_MEMBERS
 };
+
 #endif
diff --git a/obj/FxRadioButton.cpp b/obj/FxRadioButton.cpp
index 3cca3cec29944ad70b6f51a355b6a4d2de9cd79d..073cd74acbf6554d0342fbb0a6fb4875468e96b2 100644
--- a/obj/FxRadioButton.cpp
+++ b/obj/FxRadioButton.cpp
@@ -2,6 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "FxRadioButton.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type FxRadioButton::TYPE("FxRadioButton", &FX_RADIO_BUTTON_PARENT::TYPE );
@@ -11,18 +12,22 @@ FxRadioButton::FxRadioButton() FX_RADIO_BUTTON_CONSTRUCT {}
 FxRadioButton::~FxRadioButton() {}
 
 void FxRadioButton::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	FX_RADIO_BUTTON_READ
+  FX_RADIO_BUTTON_READ
 }
 
 void FxRadioButton::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	FX_RADIO_BUTTON_WRITE
+  FX_RADIO_BUTTON_WRITE
 }
 
 string FxRadioButton::asString( bool verbose ) const {
-	FX_RADIO_BUTTON_STRING
+  FX_RADIO_BUTTON_STRING
 }
 
 void FxRadioButton::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	FX_RADIO_BUTTON_FIXLINKS
+  FX_RADIO_BUTTON_FIXLINKS
 }
 
+const Type & FxRadioButton::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/FxRadioButton.h b/obj/FxRadioButton.h
index 21c4fe5a0d86a76cf8cc3250f63a7e47ef9184d2..b5acc826205cb665abea3c83d160d7f2d2f6d937 100644
--- a/obj/FxRadioButton.h
+++ b/obj/FxRadioButton.h
@@ -16,16 +16,17 @@ typedef Ref<FxRadioButton> FxRadioButtonRef;
 
 class FxRadioButton : public FX_RADIO_BUTTON_PARENT {
 public:
-	FxRadioButton();
-	~FxRadioButton();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	FX_RADIO_BUTTON_MEMBERS
+  FxRadioButton();
+  ~FxRadioButton();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  FX_RADIO_BUTTON_MEMBERS
 };
+
 #endif
diff --git a/obj/FxWidget.cpp b/obj/FxWidget.cpp
index 760d9113770fc204d04bade5f96b6e7ba1268346..a4dad88e59d109050276f095d3413f7159c04d81 100644
--- a/obj/FxWidget.cpp
+++ b/obj/FxWidget.cpp
@@ -11,18 +11,22 @@ FxWidget::FxWidget() FX_WIDGET_CONSTRUCT {}
 FxWidget::~FxWidget() {}
 
 void FxWidget::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	FX_WIDGET_READ
+  FX_WIDGET_READ
 }
 
 void FxWidget::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	FX_WIDGET_WRITE
+  FX_WIDGET_WRITE
 }
 
 string FxWidget::asString( bool verbose ) const {
-	FX_WIDGET_STRING
+  FX_WIDGET_STRING
 }
 
 void FxWidget::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	FX_WIDGET_FIXLINKS
+  FX_WIDGET_FIXLINKS
 }
 
+const Type & FxWidget::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/FxWidget.h b/obj/FxWidget.h
index f8cd7af46b7a03fc26036e269f8ad9117da6a2f9..8d45e2492aca60ab716ede1fe3b2ef46e1fca37d 100644
--- a/obj/FxWidget.h
+++ b/obj/FxWidget.h
@@ -16,16 +16,17 @@ typedef Ref<FxWidget> FxWidgetRef;
 
 class FxWidget : public FX_WIDGET_PARENT {
 public:
-	FxWidget();
-	~FxWidget();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	FX_WIDGET_MEMBERS
+  FxWidget();
+  ~FxWidget();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  FX_WIDGET_MEMBERS
 };
+
 #endif
diff --git a/obj/NiAlphaController.cpp b/obj/NiAlphaController.cpp
index f062db5fbf2233275e96c97040f34503fd587711..bae2299d06b51be5c744a8be35ddf29e8ed4bf8a 100644
--- a/obj/NiAlphaController.cpp
+++ b/obj/NiAlphaController.cpp
@@ -12,18 +12,22 @@ NiAlphaController::NiAlphaController() NI_ALPHA_CONTROLLER_CONSTRUCT {}
 NiAlphaController::~NiAlphaController() {}
 
 void NiAlphaController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_ALPHA_CONTROLLER_READ
+  NI_ALPHA_CONTROLLER_READ
 }
 
 void NiAlphaController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_ALPHA_CONTROLLER_WRITE
+  NI_ALPHA_CONTROLLER_WRITE
 }
 
 string NiAlphaController::asString( bool verbose ) const {
-	NI_ALPHA_CONTROLLER_STRING
+  NI_ALPHA_CONTROLLER_STRING
 }
 
 void NiAlphaController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_ALPHA_CONTROLLER_FIXLINKS
+  NI_ALPHA_CONTROLLER_FIXLINKS
 }
 
+const Type & NiAlphaController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiAlphaController.h b/obj/NiAlphaController.h
index ada6350343391c09c3d042c437418e7b7ed8a5fe..2b0f86a683c5e43ab6bca4a6c00d02afbb1bb838 100644
--- a/obj/NiAlphaController.h
+++ b/obj/NiAlphaController.h
@@ -16,16 +16,17 @@ typedef Ref<NiAlphaController> NiAlphaControllerRef;
 
 class NiAlphaController : public NI_ALPHA_CONTROLLER_PARENT {
 public:
-	NiAlphaController();
-	~NiAlphaController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_ALPHA_CONTROLLER_MEMBERS
+  NiAlphaController();
+  ~NiAlphaController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_ALPHA_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiAlphaProperty.cpp b/obj/NiAlphaProperty.cpp
index accc565913cf8732f8aea40ee755ed86359eebf7..d5d012ec50d45e3f4e03b6e08c37f4f806db8a5b 100644
--- a/obj/NiAlphaProperty.cpp
+++ b/obj/NiAlphaProperty.cpp
@@ -11,18 +11,22 @@ NiAlphaProperty::NiAlphaProperty() NI_ALPHA_PROPERTY_CONSTRUCT {}
 NiAlphaProperty::~NiAlphaProperty() {}
 
 void NiAlphaProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_ALPHA_PROPERTY_READ
+  NI_ALPHA_PROPERTY_READ
 }
 
 void NiAlphaProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_ALPHA_PROPERTY_WRITE
+  NI_ALPHA_PROPERTY_WRITE
 }
 
 string NiAlphaProperty::asString( bool verbose ) const {
-	NI_ALPHA_PROPERTY_STRING
+  NI_ALPHA_PROPERTY_STRING
 }
 
 void NiAlphaProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_ALPHA_PROPERTY_FIXLINKS
+  NI_ALPHA_PROPERTY_FIXLINKS
 }
 
+const Type & NiAlphaProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiAlphaProperty.h b/obj/NiAlphaProperty.h
index ab48fd3fa8743dbe3520aca8ab83e85fa10c0be7..95b9735a83c0bd514d47db5ba78a41a2d9821fd6 100644
--- a/obj/NiAlphaProperty.h
+++ b/obj/NiAlphaProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiAlphaProperty> NiAlphaPropertyRef;
 
 class NiAlphaProperty : public NI_ALPHA_PROPERTY_PARENT {
 public:
-	NiAlphaProperty();
-	~NiAlphaProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_ALPHA_PROPERTY_MEMBERS
+  NiAlphaProperty();
+  ~NiAlphaProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_ALPHA_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiAmbientLight.cpp b/obj/NiAmbientLight.cpp
index 7893a148032151e7d796486413d348053fbc45c5..554f4b573d91d0783945262be9ce7636680108f1 100644
--- a/obj/NiAmbientLight.cpp
+++ b/obj/NiAmbientLight.cpp
@@ -11,18 +11,22 @@ NiAmbientLight::NiAmbientLight() NI_AMBIENT_LIGHT_CONSTRUCT {}
 NiAmbientLight::~NiAmbientLight() {}
 
 void NiAmbientLight::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_AMBIENT_LIGHT_READ
+  NI_AMBIENT_LIGHT_READ
 }
 
 void NiAmbientLight::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_AMBIENT_LIGHT_WRITE
+  NI_AMBIENT_LIGHT_WRITE
 }
 
 string NiAmbientLight::asString( bool verbose ) const {
-	NI_AMBIENT_LIGHT_STRING
+  NI_AMBIENT_LIGHT_STRING
 }
 
 void NiAmbientLight::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_AMBIENT_LIGHT_FIXLINKS
+  NI_AMBIENT_LIGHT_FIXLINKS
 }
 
+const Type & NiAmbientLight::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiAmbientLight.h b/obj/NiAmbientLight.h
index d103433d2507d2ad77fa180814c2fb17a5a61dac..56d2b34075892cbfceb3dd5449314ded836a8c9a 100644
--- a/obj/NiAmbientLight.h
+++ b/obj/NiAmbientLight.h
@@ -16,16 +16,17 @@ typedef Ref<NiAmbientLight> NiAmbientLightRef;
 
 class NiAmbientLight : public NI_AMBIENT_LIGHT_PARENT {
 public:
-	NiAmbientLight();
-	~NiAmbientLight();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_AMBIENT_LIGHT_MEMBERS
+  NiAmbientLight();
+  ~NiAmbientLight();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_AMBIENT_LIGHT_MEMBERS
 };
+
 #endif
diff --git a/obj/NiAutoNormalParticles.cpp b/obj/NiAutoNormalParticles.cpp
index e45aff161d59e7067af091821266a63e8b832590..c6501647f2cef86dfa2ecf64f23d1f02c814cf72 100644
--- a/obj/NiAutoNormalParticles.cpp
+++ b/obj/NiAutoNormalParticles.cpp
@@ -11,18 +11,22 @@ NiAutoNormalParticles::NiAutoNormalParticles() NI_AUTO_NORMAL_PARTICLES_CONSTRUC
 NiAutoNormalParticles::~NiAutoNormalParticles() {}
 
 void NiAutoNormalParticles::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_AUTO_NORMAL_PARTICLES_READ
+  NI_AUTO_NORMAL_PARTICLES_READ
 }
 
 void NiAutoNormalParticles::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_AUTO_NORMAL_PARTICLES_WRITE
+  NI_AUTO_NORMAL_PARTICLES_WRITE
 }
 
 string NiAutoNormalParticles::asString( bool verbose ) const {
-	NI_AUTO_NORMAL_PARTICLES_STRING
+  NI_AUTO_NORMAL_PARTICLES_STRING
 }
 
 void NiAutoNormalParticles::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_AUTO_NORMAL_PARTICLES_FIXLINKS
+  NI_AUTO_NORMAL_PARTICLES_FIXLINKS
 }
 
+const Type & NiAutoNormalParticles::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiAutoNormalParticles.h b/obj/NiAutoNormalParticles.h
index deaa3f62e3272651a1a9717cc2d2f6dcf3ee3d4b..0a491854acc366c68e1a2cd006a769c58c68a956 100644
--- a/obj/NiAutoNormalParticles.h
+++ b/obj/NiAutoNormalParticles.h
@@ -16,16 +16,17 @@ typedef Ref<NiAutoNormalParticles> NiAutoNormalParticlesRef;
 
 class NiAutoNormalParticles : public NI_AUTO_NORMAL_PARTICLES_PARENT {
 public:
-	NiAutoNormalParticles();
-	~NiAutoNormalParticles();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_AUTO_NORMAL_PARTICLES_MEMBERS
+  NiAutoNormalParticles();
+  ~NiAutoNormalParticles();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_AUTO_NORMAL_PARTICLES_MEMBERS
 };
+
 #endif
diff --git a/obj/NiAutoNormalParticlesData.cpp b/obj/NiAutoNormalParticlesData.cpp
index 6ec779c0bc42a3d30a5d96cc755059f227bef369..dd13be310a6baf7caa7890f56070e504672eba63 100644
--- a/obj/NiAutoNormalParticlesData.cpp
+++ b/obj/NiAutoNormalParticlesData.cpp
@@ -11,18 +11,22 @@ NiAutoNormalParticlesData::NiAutoNormalParticlesData() NI_AUTO_NORMAL_PARTICLES_
 NiAutoNormalParticlesData::~NiAutoNormalParticlesData() {}
 
 void NiAutoNormalParticlesData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_AUTO_NORMAL_PARTICLES_DATA_READ
+  NI_AUTO_NORMAL_PARTICLES_DATA_READ
 }
 
 void NiAutoNormalParticlesData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_AUTO_NORMAL_PARTICLES_DATA_WRITE
+  NI_AUTO_NORMAL_PARTICLES_DATA_WRITE
 }
 
 string NiAutoNormalParticlesData::asString( bool verbose ) const {
-	NI_AUTO_NORMAL_PARTICLES_DATA_STRING
+  NI_AUTO_NORMAL_PARTICLES_DATA_STRING
 }
 
 void NiAutoNormalParticlesData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_AUTO_NORMAL_PARTICLES_DATA_FIXLINKS
+  NI_AUTO_NORMAL_PARTICLES_DATA_FIXLINKS
 }
 
+const Type & NiAutoNormalParticlesData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiAutoNormalParticlesData.h b/obj/NiAutoNormalParticlesData.h
index eede0d39a18edf8f18760f1434440a964922257f..9ea6ee7949a28ddbab7aed75f9fcec5b12eabc2b 100644
--- a/obj/NiAutoNormalParticlesData.h
+++ b/obj/NiAutoNormalParticlesData.h
@@ -16,16 +16,17 @@ typedef Ref<NiAutoNormalParticlesData> NiAutoNormalParticlesDataRef;
 
 class NiAutoNormalParticlesData : public NI_AUTO_NORMAL_PARTICLES_DATA_PARENT {
 public:
-	NiAutoNormalParticlesData();
-	~NiAutoNormalParticlesData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_AUTO_NORMAL_PARTICLES_DATA_MEMBERS
+  NiAutoNormalParticlesData();
+  ~NiAutoNormalParticlesData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_AUTO_NORMAL_PARTICLES_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSAnimationNode.cpp b/obj/NiBSAnimationNode.cpp
index 18d28310424a4388d1261d6d13de9c0c85997502..4e86331b9d793b18d9de3c8002371071b929de61 100644
--- a/obj/NiBSAnimationNode.cpp
+++ b/obj/NiBSAnimationNode.cpp
@@ -11,18 +11,22 @@ NiBSAnimationNode::NiBSAnimationNode() NI_B_S_ANIMATION_NODE_CONSTRUCT {}
 NiBSAnimationNode::~NiBSAnimationNode() {}
 
 void NiBSAnimationNode::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_S_ANIMATION_NODE_READ
+  NI_B_S_ANIMATION_NODE_READ
 }
 
 void NiBSAnimationNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_S_ANIMATION_NODE_WRITE
+  NI_B_S_ANIMATION_NODE_WRITE
 }
 
 string NiBSAnimationNode::asString( bool verbose ) const {
-	NI_B_S_ANIMATION_NODE_STRING
+  NI_B_S_ANIMATION_NODE_STRING
 }
 
 void NiBSAnimationNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_S_ANIMATION_NODE_FIXLINKS
+  NI_B_S_ANIMATION_NODE_FIXLINKS
 }
 
+const Type & NiBSAnimationNode::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSAnimationNode.h b/obj/NiBSAnimationNode.h
index e44e58fb9debde2fdb7dd71cdd2077b81fccc4cf..1c843c10b0b9cce1d7816f28e46ef89b05af893b 100644
--- a/obj/NiBSAnimationNode.h
+++ b/obj/NiBSAnimationNode.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSAnimationNode> NiBSAnimationNodeRef;
 
 class NiBSAnimationNode : public NI_B_S_ANIMATION_NODE_PARENT {
 public:
-	NiBSAnimationNode();
-	~NiBSAnimationNode();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_S_ANIMATION_NODE_MEMBERS
+  NiBSAnimationNode();
+  ~NiBSAnimationNode();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_S_ANIMATION_NODE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSBoneLODController.cpp b/obj/NiBSBoneLODController.cpp
index 61396fe3bc4a40b476a5c61de1a2da3aae51df42..1357052a3707d676188edc0374e3e6b0c543d10f 100644
--- a/obj/NiBSBoneLODController.cpp
+++ b/obj/NiBSBoneLODController.cpp
@@ -11,18 +11,22 @@ NiBSBoneLODController::NiBSBoneLODController() NI_B_S_BONE_L_O_D_CONTROLLER_CONS
 NiBSBoneLODController::~NiBSBoneLODController() {}
 
 void NiBSBoneLODController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_S_BONE_L_O_D_CONTROLLER_READ
+  NI_B_S_BONE_L_O_D_CONTROLLER_READ
 }
 
 void NiBSBoneLODController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_S_BONE_L_O_D_CONTROLLER_WRITE
+  NI_B_S_BONE_L_O_D_CONTROLLER_WRITE
 }
 
 string NiBSBoneLODController::asString( bool verbose ) const {
-	NI_B_S_BONE_L_O_D_CONTROLLER_STRING
+  NI_B_S_BONE_L_O_D_CONTROLLER_STRING
 }
 
 void NiBSBoneLODController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_S_BONE_L_O_D_CONTROLLER_FIXLINKS
+  NI_B_S_BONE_L_O_D_CONTROLLER_FIXLINKS
 }
 
+const Type & NiBSBoneLODController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSBoneLODController.h b/obj/NiBSBoneLODController.h
index 1178d1f7889771256b15f18ae8be30d37427ada6..297124cbeda14cc85cedb55cd793e8958c3a73d0 100644
--- a/obj/NiBSBoneLODController.h
+++ b/obj/NiBSBoneLODController.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSBoneLODController> NiBSBoneLODControllerRef;
 
 class NiBSBoneLODController : public NI_B_S_BONE_L_O_D_CONTROLLER_PARENT {
 public:
-	NiBSBoneLODController();
-	~NiBSBoneLODController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_S_BONE_L_O_D_CONTROLLER_MEMBERS
+  NiBSBoneLODController();
+  ~NiBSBoneLODController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_S_BONE_L_O_D_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSPArrayController.cpp b/obj/NiBSPArrayController.cpp
index 7d5dd483acbf0505b32bdbcd8580e8240e261ccc..de0bab9dbee8ef331383959ed8992ca04f6d08ea 100644
--- a/obj/NiBSPArrayController.cpp
+++ b/obj/NiBSPArrayController.cpp
@@ -11,18 +11,22 @@ NiBSPArrayController::NiBSPArrayController() NI_B_S_P_ARRAY_CONTROLLER_CONSTRUCT
 NiBSPArrayController::~NiBSPArrayController() {}
 
 void NiBSPArrayController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_S_P_ARRAY_CONTROLLER_READ
+  NI_B_S_P_ARRAY_CONTROLLER_READ
 }
 
 void NiBSPArrayController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_S_P_ARRAY_CONTROLLER_WRITE
+  NI_B_S_P_ARRAY_CONTROLLER_WRITE
 }
 
 string NiBSPArrayController::asString( bool verbose ) const {
-	NI_B_S_P_ARRAY_CONTROLLER_STRING
+  NI_B_S_P_ARRAY_CONTROLLER_STRING
 }
 
 void NiBSPArrayController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_S_P_ARRAY_CONTROLLER_FIXLINKS
+  NI_B_S_P_ARRAY_CONTROLLER_FIXLINKS
 }
 
+const Type & NiBSPArrayController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSPArrayController.h b/obj/NiBSPArrayController.h
index f9bd868b274186594bee66889bbfcbd8eeb123bf..ca4cb7cbf9d06a70ee390a02f8eafb95519392b8 100644
--- a/obj/NiBSPArrayController.h
+++ b/obj/NiBSPArrayController.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSPArrayController> NiBSPArrayControllerRef;
 
 class NiBSPArrayController : public NI_B_S_P_ARRAY_CONTROLLER_PARENT {
 public:
-	NiBSPArrayController();
-	~NiBSPArrayController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_S_P_ARRAY_CONTROLLER_MEMBERS
+  NiBSPArrayController();
+  ~NiBSPArrayController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_S_P_ARRAY_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSParticleNode.cpp b/obj/NiBSParticleNode.cpp
index 6142006a0cac83b9e63937f664de1a5010c90d3c..81167de3e55f3ba180db27d916dcf47a0da9671c 100644
--- a/obj/NiBSParticleNode.cpp
+++ b/obj/NiBSParticleNode.cpp
@@ -11,18 +11,22 @@ NiBSParticleNode::NiBSParticleNode() NI_B_S_PARTICLE_NODE_CONSTRUCT {}
 NiBSParticleNode::~NiBSParticleNode() {}
 
 void NiBSParticleNode::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_S_PARTICLE_NODE_READ
+  NI_B_S_PARTICLE_NODE_READ
 }
 
 void NiBSParticleNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_S_PARTICLE_NODE_WRITE
+  NI_B_S_PARTICLE_NODE_WRITE
 }
 
 string NiBSParticleNode::asString( bool verbose ) const {
-	NI_B_S_PARTICLE_NODE_STRING
+  NI_B_S_PARTICLE_NODE_STRING
 }
 
 void NiBSParticleNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_S_PARTICLE_NODE_FIXLINKS
+  NI_B_S_PARTICLE_NODE_FIXLINKS
 }
 
+const Type & NiBSParticleNode::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSParticleNode.h b/obj/NiBSParticleNode.h
index 118ec0fe5e7cc88768d05cce65ccff6b275bc3a4..03d7c8029475db2e1f597abff9f68756df15a89a 100644
--- a/obj/NiBSParticleNode.h
+++ b/obj/NiBSParticleNode.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSParticleNode> NiBSParticleNodeRef;
 
 class NiBSParticleNode : public NI_B_S_PARTICLE_NODE_PARENT {
 public:
-	NiBSParticleNode();
-	~NiBSParticleNode();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_S_PARTICLE_NODE_MEMBERS
+  NiBSParticleNode();
+  ~NiBSParticleNode();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_S_PARTICLE_NODE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSplineBasisData.cpp b/obj/NiBSplineBasisData.cpp
index 38431c2ced7ee7be2d14ef8d89e8d1bac25e2356..192f3f3acadc7423770b97969192037a6a83eee1 100644
--- a/obj/NiBSplineBasisData.cpp
+++ b/obj/NiBSplineBasisData.cpp
@@ -11,18 +11,22 @@ NiBSplineBasisData::NiBSplineBasisData() NI_B_SPLINE_BASIS_DATA_CONSTRUCT {}
 NiBSplineBasisData::~NiBSplineBasisData() {}
 
 void NiBSplineBasisData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_BASIS_DATA_READ
+  NI_B_SPLINE_BASIS_DATA_READ
 }
 
 void NiBSplineBasisData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_SPLINE_BASIS_DATA_WRITE
+  NI_B_SPLINE_BASIS_DATA_WRITE
 }
 
 string NiBSplineBasisData::asString( bool verbose ) const {
-	NI_B_SPLINE_BASIS_DATA_STRING
+  NI_B_SPLINE_BASIS_DATA_STRING
 }
 
 void NiBSplineBasisData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_BASIS_DATA_FIXLINKS
+  NI_B_SPLINE_BASIS_DATA_FIXLINKS
 }
 
+const Type & NiBSplineBasisData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSplineBasisData.h b/obj/NiBSplineBasisData.h
index 2fef2585d93498cd589b0956630fecff355f54a4..4faa427fdd6c7621db50534c19ad5f0df26993ac 100644
--- a/obj/NiBSplineBasisData.h
+++ b/obj/NiBSplineBasisData.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSplineBasisData> NiBSplineBasisDataRef;
 
 class NiBSplineBasisData : public NI_B_SPLINE_BASIS_DATA_PARENT {
 public:
-	NiBSplineBasisData();
-	~NiBSplineBasisData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_SPLINE_BASIS_DATA_MEMBERS
+  NiBSplineBasisData();
+  ~NiBSplineBasisData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_SPLINE_BASIS_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSplineCompFloatInterpolator.cpp b/obj/NiBSplineCompFloatInterpolator.cpp
index b6ea194e313b788300592e2f39d92c1c503e3b7f..a571b08c01c2a41fe11620bded9ee34f108439ff 100644
--- a/obj/NiBSplineCompFloatInterpolator.cpp
+++ b/obj/NiBSplineCompFloatInterpolator.cpp
@@ -11,18 +11,22 @@ NiBSplineCompFloatInterpolator::NiBSplineCompFloatInterpolator() NI_B_SPLINE_COM
 NiBSplineCompFloatInterpolator::~NiBSplineCompFloatInterpolator() {}
 
 void NiBSplineCompFloatInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_READ
+  NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_READ
 }
 
 void NiBSplineCompFloatInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_WRITE
+  NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_WRITE
 }
 
 string NiBSplineCompFloatInterpolator::asString( bool verbose ) const {
-	NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_STRING
+  NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_STRING
 }
 
 void NiBSplineCompFloatInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_FIXLINKS
+  NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBSplineCompFloatInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSplineCompFloatInterpolator.h b/obj/NiBSplineCompFloatInterpolator.h
index 9bc6210d28553d60354a7db716ee813b84496ef8..1514e3ecb2091523218a4926ab67d32e72ad2571 100644
--- a/obj/NiBSplineCompFloatInterpolator.h
+++ b/obj/NiBSplineCompFloatInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSplineCompFloatInterpolator> NiBSplineCompFloatInterpolatorRef;
 
 class NiBSplineCompFloatInterpolator : public NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_PARENT {
 public:
-	NiBSplineCompFloatInterpolator();
-	~NiBSplineCompFloatInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_MEMBERS
+  NiBSplineCompFloatInterpolator();
+  ~NiBSplineCompFloatInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSplineCompPoint3Interpolator.cpp b/obj/NiBSplineCompPoint3Interpolator.cpp
index f7e868f6ac33cfbc56e411ce36cf571e55dc42cd..8f40b4be56884036a98c1865064d308bc5c27cae 100644
--- a/obj/NiBSplineCompPoint3Interpolator.cpp
+++ b/obj/NiBSplineCompPoint3Interpolator.cpp
@@ -3,6 +3,7 @@ All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiBSplineCompPoint3Interpolator.h"
 #include "NiBSplineData.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type NiBSplineCompPoint3Interpolator::TYPE("NiBSplineCompPoint3Interpolator", &NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENT::TYPE );
@@ -12,18 +13,22 @@ NiBSplineCompPoint3Interpolator::NiBSplineCompPoint3Interpolator() NI_B_SPLINE_C
 NiBSplineCompPoint3Interpolator::~NiBSplineCompPoint3Interpolator() {}
 
 void NiBSplineCompPoint3Interpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_READ
+  NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_READ
 }
 
 void NiBSplineCompPoint3Interpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_WRITE
+  NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_WRITE
 }
 
 string NiBSplineCompPoint3Interpolator::asString( bool verbose ) const {
-	NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_STRING
+  NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_STRING
 }
 
 void NiBSplineCompPoint3Interpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_FIXLINKS
+  NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBSplineCompPoint3Interpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSplineCompPoint3Interpolator.h b/obj/NiBSplineCompPoint3Interpolator.h
index 8e852cc700be005e1205a1d36c93360cbd2cf3e3..a7117b31f9b36727bb291860397fe98617e4fd2e 100644
--- a/obj/NiBSplineCompPoint3Interpolator.h
+++ b/obj/NiBSplineCompPoint3Interpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSplineCompPoint3Interpolator> NiBSplineCompPoint3InterpolatorRef;
 
 class NiBSplineCompPoint3Interpolator : public NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENT {
 public:
-	NiBSplineCompPoint3Interpolator();
-	~NiBSplineCompPoint3Interpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_MEMBERS
+  NiBSplineCompPoint3Interpolator();
+  ~NiBSplineCompPoint3Interpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSplineCompTransformInterpolator.cpp b/obj/NiBSplineCompTransformInterpolator.cpp
index c36b6de12c890ae3dbad1402ecbb108ec6088cf2..e5227acdfee9ee4f961b0bb50236ff7ec952d3b7 100644
--- a/obj/NiBSplineCompTransformInterpolator.cpp
+++ b/obj/NiBSplineCompTransformInterpolator.cpp
@@ -13,18 +13,22 @@ NiBSplineCompTransformInterpolator::NiBSplineCompTransformInterpolator() NI_B_SP
 NiBSplineCompTransformInterpolator::~NiBSplineCompTransformInterpolator() {}
 
 void NiBSplineCompTransformInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_READ
+  NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_READ
 }
 
 void NiBSplineCompTransformInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_WRITE
+  NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_WRITE
 }
 
 string NiBSplineCompTransformInterpolator::asString( bool verbose ) const {
-	NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_STRING
+  NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_STRING
 }
 
 void NiBSplineCompTransformInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_FIXLINKS
+  NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBSplineCompTransformInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSplineCompTransformInterpolator.h b/obj/NiBSplineCompTransformInterpolator.h
index 151fc381ee802d7746b44e1340b9f56df491c031..dc64647f754fa3f398e38030be5a8c6cc6d44bf9 100644
--- a/obj/NiBSplineCompTransformInterpolator.h
+++ b/obj/NiBSplineCompTransformInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSplineCompTransformInterpolator> NiBSplineCompTransformInterpolat
 
 class NiBSplineCompTransformInterpolator : public NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_PARENT {
 public:
-	NiBSplineCompTransformInterpolator();
-	~NiBSplineCompTransformInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_MEMBERS
+  NiBSplineCompTransformInterpolator();
+  ~NiBSplineCompTransformInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSplineData.cpp b/obj/NiBSplineData.cpp
index 808b982110bafa6686c0a05465c568bce65fae1b..4c2626caa39f25afad47215452696829ebf718ec 100644
--- a/obj/NiBSplineData.cpp
+++ b/obj/NiBSplineData.cpp
@@ -11,18 +11,22 @@ NiBSplineData::NiBSplineData() NI_B_SPLINE_DATA_CONSTRUCT {}
 NiBSplineData::~NiBSplineData() {}
 
 void NiBSplineData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_DATA_READ
+  NI_B_SPLINE_DATA_READ
 }
 
 void NiBSplineData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_SPLINE_DATA_WRITE
+  NI_B_SPLINE_DATA_WRITE
 }
 
 string NiBSplineData::asString( bool verbose ) const {
-	NI_B_SPLINE_DATA_STRING
+  NI_B_SPLINE_DATA_STRING
 }
 
 void NiBSplineData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_DATA_FIXLINKS
+  NI_B_SPLINE_DATA_FIXLINKS
 }
 
+const Type & NiBSplineData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSplineData.h b/obj/NiBSplineData.h
index 30fa5d81e1ae74e9dec1078b2d74efed97f32872..59ca0af5e82704dc8d10467779f6d17e9b1d9a78 100644
--- a/obj/NiBSplineData.h
+++ b/obj/NiBSplineData.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSplineData> NiBSplineDataRef;
 
 class NiBSplineData : public NI_B_SPLINE_DATA_PARENT {
 public:
-	NiBSplineData();
-	~NiBSplineData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_SPLINE_DATA_MEMBERS
+  NiBSplineData();
+  ~NiBSplineData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_SPLINE_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBillboardNode.cpp b/obj/NiBillboardNode.cpp
index e28e70d42371a30202e23579639407becb2e2fab..defe4afb1621ac158c12a9598b7bfdf38412db54 100644
--- a/obj/NiBillboardNode.cpp
+++ b/obj/NiBillboardNode.cpp
@@ -11,18 +11,22 @@ NiBillboardNode::NiBillboardNode() NI_BILLBOARD_NODE_CONSTRUCT {}
 NiBillboardNode::~NiBillboardNode() {}
 
 void NiBillboardNode::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BILLBOARD_NODE_READ
+  NI_BILLBOARD_NODE_READ
 }
 
 void NiBillboardNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BILLBOARD_NODE_WRITE
+  NI_BILLBOARD_NODE_WRITE
 }
 
 string NiBillboardNode::asString( bool verbose ) const {
-	NI_BILLBOARD_NODE_STRING
+  NI_BILLBOARD_NODE_STRING
 }
 
 void NiBillboardNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BILLBOARD_NODE_FIXLINKS
+  NI_BILLBOARD_NODE_FIXLINKS
 }
 
+const Type & NiBillboardNode::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBillboardNode.h b/obj/NiBillboardNode.h
index 6751c4433275ea2eb06aa66546e00271b82e23d3..5cbcd89d09cdf0b24d8c5c73ed120f43ac1c7dcc 100644
--- a/obj/NiBillboardNode.h
+++ b/obj/NiBillboardNode.h
@@ -16,16 +16,17 @@ typedef Ref<NiBillboardNode> NiBillboardNodeRef;
 
 class NiBillboardNode : public NI_BILLBOARD_NODE_PARENT {
 public:
-	NiBillboardNode();
-	~NiBillboardNode();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BILLBOARD_NODE_MEMBERS
+  NiBillboardNode();
+  ~NiBillboardNode();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BILLBOARD_NODE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBinaryExtraData.cpp b/obj/NiBinaryExtraData.cpp
index 9de23e567f765029f27d0f7b40b00e0709f42eeb..575c8dea912908768ba6c6fa7eb3e6d56f3dcd9f 100644
--- a/obj/NiBinaryExtraData.cpp
+++ b/obj/NiBinaryExtraData.cpp
@@ -11,18 +11,22 @@ NiBinaryExtraData::NiBinaryExtraData() NI_BINARY_EXTRA_DATA_CONSTRUCT {}
 NiBinaryExtraData::~NiBinaryExtraData() {}
 
 void NiBinaryExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BINARY_EXTRA_DATA_READ
+  NI_BINARY_EXTRA_DATA_READ
 }
 
 void NiBinaryExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BINARY_EXTRA_DATA_WRITE
+  NI_BINARY_EXTRA_DATA_WRITE
 }
 
 string NiBinaryExtraData::asString( bool verbose ) const {
-	NI_BINARY_EXTRA_DATA_STRING
+  NI_BINARY_EXTRA_DATA_STRING
 }
 
 void NiBinaryExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BINARY_EXTRA_DATA_FIXLINKS
+  NI_BINARY_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiBinaryExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBinaryExtraData.h b/obj/NiBinaryExtraData.h
index 04d6b49ab4c220d24c6b5b83de1bede24ea4335c..8bc84c3c0a7b1561a2ba4905e81a055ac4d04b16 100644
--- a/obj/NiBinaryExtraData.h
+++ b/obj/NiBinaryExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiBinaryExtraData> NiBinaryExtraDataRef;
 
 class NiBinaryExtraData : public NI_BINARY_EXTRA_DATA_PARENT {
 public:
-	NiBinaryExtraData();
-	~NiBinaryExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BINARY_EXTRA_DATA_MEMBERS
+  NiBinaryExtraData();
+  ~NiBinaryExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BINARY_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBlendBoolInterpolator.cpp b/obj/NiBlendBoolInterpolator.cpp
index a87ad030b7853401bf8dd2f47ee73ad6a3d16dbe..0b75115dc97a08d6eb1882f1e757b553f49aba52 100644
--- a/obj/NiBlendBoolInterpolator.cpp
+++ b/obj/NiBlendBoolInterpolator.cpp
@@ -11,18 +11,22 @@ NiBlendBoolInterpolator::NiBlendBoolInterpolator() NI_BLEND_BOOL_INTERPOLATOR_CO
 NiBlendBoolInterpolator::~NiBlendBoolInterpolator() {}
 
 void NiBlendBoolInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BLEND_BOOL_INTERPOLATOR_READ
+  NI_BLEND_BOOL_INTERPOLATOR_READ
 }
 
 void NiBlendBoolInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BLEND_BOOL_INTERPOLATOR_WRITE
+  NI_BLEND_BOOL_INTERPOLATOR_WRITE
 }
 
 string NiBlendBoolInterpolator::asString( bool verbose ) const {
-	NI_BLEND_BOOL_INTERPOLATOR_STRING
+  NI_BLEND_BOOL_INTERPOLATOR_STRING
 }
 
 void NiBlendBoolInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BLEND_BOOL_INTERPOLATOR_FIXLINKS
+  NI_BLEND_BOOL_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBlendBoolInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBlendBoolInterpolator.h b/obj/NiBlendBoolInterpolator.h
index d47b2d67a7b23d6565013c55777049fdb1b17560..7251878499123276bf7546482f2915f82deb704e 100644
--- a/obj/NiBlendBoolInterpolator.h
+++ b/obj/NiBlendBoolInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBlendBoolInterpolator> NiBlendBoolInterpolatorRef;
 
 class NiBlendBoolInterpolator : public NI_BLEND_BOOL_INTERPOLATOR_PARENT {
 public:
-	NiBlendBoolInterpolator();
-	~NiBlendBoolInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BLEND_BOOL_INTERPOLATOR_MEMBERS
+  NiBlendBoolInterpolator();
+  ~NiBlendBoolInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BLEND_BOOL_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBlendFloatInterpolator.cpp b/obj/NiBlendFloatInterpolator.cpp
index 2ee837450d3a690e6278c86337399152508fc5ab..ec86bf06bd6a852a494fb6d2054f8fb65480784e 100644
--- a/obj/NiBlendFloatInterpolator.cpp
+++ b/obj/NiBlendFloatInterpolator.cpp
@@ -11,18 +11,22 @@ NiBlendFloatInterpolator::NiBlendFloatInterpolator() NI_BLEND_FLOAT_INTERPOLATOR
 NiBlendFloatInterpolator::~NiBlendFloatInterpolator() {}
 
 void NiBlendFloatInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BLEND_FLOAT_INTERPOLATOR_READ
+  NI_BLEND_FLOAT_INTERPOLATOR_READ
 }
 
 void NiBlendFloatInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BLEND_FLOAT_INTERPOLATOR_WRITE
+  NI_BLEND_FLOAT_INTERPOLATOR_WRITE
 }
 
 string NiBlendFloatInterpolator::asString( bool verbose ) const {
-	NI_BLEND_FLOAT_INTERPOLATOR_STRING
+  NI_BLEND_FLOAT_INTERPOLATOR_STRING
 }
 
 void NiBlendFloatInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BLEND_FLOAT_INTERPOLATOR_FIXLINKS
+  NI_BLEND_FLOAT_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBlendFloatInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBlendFloatInterpolator.h b/obj/NiBlendFloatInterpolator.h
index e9d98d850b1acd51850d2e49d008c5e6fd898367..4c4b2e3d0e4097fdb4689ee15de23c6785962fe0 100644
--- a/obj/NiBlendFloatInterpolator.h
+++ b/obj/NiBlendFloatInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBlendFloatInterpolator> NiBlendFloatInterpolatorRef;
 
 class NiBlendFloatInterpolator : public NI_BLEND_FLOAT_INTERPOLATOR_PARENT {
 public:
-	NiBlendFloatInterpolator();
-	~NiBlendFloatInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BLEND_FLOAT_INTERPOLATOR_MEMBERS
+  NiBlendFloatInterpolator();
+  ~NiBlendFloatInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BLEND_FLOAT_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBlendInterpolator.cpp b/obj/NiBlendInterpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..bb031de56b2c6cbcd15fdbb41c8392b6920f4914
--- /dev/null
+++ b/obj/NiBlendInterpolator.cpp
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBlendInterpolator.h"
+
+//Definition of TYPE constant
+const Type NiBlendInterpolator::TYPE("NiBlendInterpolator", &NI_BLEND_INTERPOLATOR_PARENT::TYPE );
+
+NiBlendInterpolator::NiBlendInterpolator() NI_BLEND_INTERPOLATOR_CONSTRUCT {}
+
+NiBlendInterpolator::~NiBlendInterpolator() {}
+
+void NiBlendInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
+  NI_BLEND_INTERPOLATOR_READ
+}
+
+void NiBlendInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+  NI_BLEND_INTERPOLATOR_WRITE
+}
+
+string NiBlendInterpolator::asString( bool verbose ) const {
+  NI_BLEND_INTERPOLATOR_STRING
+}
+
+void NiBlendInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
+  NI_BLEND_INTERPOLATOR_FIXLINKS
+}
+
+const Type & NiBlendInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBlendInterpolator.h b/obj/NiBlendInterpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..2060ef25ac1cbfe5705c7f59cad9bbfdecbb7690
--- /dev/null
+++ b/obj/NiBlendInterpolator.h
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBLENDINTERPOLATOR_H_
+#define _NIBLENDINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_BLEND_INTERPOLATOR_INCLUDE
+
+/*
+ * NiBlendInterpolator
+ */
+
+class NiBlendInterpolator;
+typedef Ref<NiBlendInterpolator> NiBlendInterpolatorRef;
+
+class NiBlendInterpolator : public NI_BLEND_INTERPOLATOR_PARENT {
+public:
+  NiBlendInterpolator();
+  ~NiBlendInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BLEND_INTERPOLATOR_MEMBERS
+};
+
+#endif
diff --git a/obj/NiBlendPoint3Interpolator.cpp b/obj/NiBlendPoint3Interpolator.cpp
index c6cb473c150d8e438e75a969069355e395404a53..a251dd679f83bc9006c2b467226aed9d3d219569 100644
--- a/obj/NiBlendPoint3Interpolator.cpp
+++ b/obj/NiBlendPoint3Interpolator.cpp
@@ -11,18 +11,22 @@ NiBlendPoint3Interpolator::NiBlendPoint3Interpolator() NI_BLEND_POINT3_INTERPOLA
 NiBlendPoint3Interpolator::~NiBlendPoint3Interpolator() {}
 
 void NiBlendPoint3Interpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BLEND_POINT3_INTERPOLATOR_READ
+  NI_BLEND_POINT3_INTERPOLATOR_READ
 }
 
 void NiBlendPoint3Interpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BLEND_POINT3_INTERPOLATOR_WRITE
+  NI_BLEND_POINT3_INTERPOLATOR_WRITE
 }
 
 string NiBlendPoint3Interpolator::asString( bool verbose ) const {
-	NI_BLEND_POINT3_INTERPOLATOR_STRING
+  NI_BLEND_POINT3_INTERPOLATOR_STRING
 }
 
 void NiBlendPoint3Interpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BLEND_POINT3_INTERPOLATOR_FIXLINKS
+  NI_BLEND_POINT3_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBlendPoint3Interpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBlendPoint3Interpolator.h b/obj/NiBlendPoint3Interpolator.h
index 9d710c76a08c456c5b948c9fd64cd9e2f0a83a2c..c3cdb09cc2722385b2803023048ece14e7e1a065 100644
--- a/obj/NiBlendPoint3Interpolator.h
+++ b/obj/NiBlendPoint3Interpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBlendPoint3Interpolator> NiBlendPoint3InterpolatorRef;
 
 class NiBlendPoint3Interpolator : public NI_BLEND_POINT3_INTERPOLATOR_PARENT {
 public:
-	NiBlendPoint3Interpolator();
-	~NiBlendPoint3Interpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BLEND_POINT3_INTERPOLATOR_MEMBERS
+  NiBlendPoint3Interpolator();
+  ~NiBlendPoint3Interpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BLEND_POINT3_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBlendTransformInterpolator.cpp b/obj/NiBlendTransformInterpolator.cpp
index 6e15b4cea278437e960a20218fc8ea18cdf63f71..ab874da443cff80e21195e0abd923d15d33f4aed 100644
--- a/obj/NiBlendTransformInterpolator.cpp
+++ b/obj/NiBlendTransformInterpolator.cpp
@@ -11,18 +11,22 @@ NiBlendTransformInterpolator::NiBlendTransformInterpolator() NI_BLEND_TRANSFORM_
 NiBlendTransformInterpolator::~NiBlendTransformInterpolator() {}
 
 void NiBlendTransformInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BLEND_TRANSFORM_INTERPOLATOR_READ
+  NI_BLEND_TRANSFORM_INTERPOLATOR_READ
 }
 
 void NiBlendTransformInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BLEND_TRANSFORM_INTERPOLATOR_WRITE
+  NI_BLEND_TRANSFORM_INTERPOLATOR_WRITE
 }
 
 string NiBlendTransformInterpolator::asString( bool verbose ) const {
-	NI_BLEND_TRANSFORM_INTERPOLATOR_STRING
+  NI_BLEND_TRANSFORM_INTERPOLATOR_STRING
 }
 
 void NiBlendTransformInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BLEND_TRANSFORM_INTERPOLATOR_FIXLINKS
+  NI_BLEND_TRANSFORM_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBlendTransformInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBlendTransformInterpolator.h b/obj/NiBlendTransformInterpolator.h
index cde286429b7bdced21e49a18c8ea30bfe3dd0037..a3664341f3ade7a4d5c33de2158fb3a3ff393018 100644
--- a/obj/NiBlendTransformInterpolator.h
+++ b/obj/NiBlendTransformInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBlendTransformInterpolator> NiBlendTransformInterpolatorRef;
 
 class NiBlendTransformInterpolator : public NI_BLEND_TRANSFORM_INTERPOLATOR_PARENT {
 public:
-	NiBlendTransformInterpolator();
-	~NiBlendTransformInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BLEND_TRANSFORM_INTERPOLATOR_MEMBERS
+  NiBlendTransformInterpolator();
+  ~NiBlendTransformInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BLEND_TRANSFORM_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBoneLODController.cpp b/obj/NiBoneLODController.cpp
index 44fd2fbb1b41443ab11319c6f30bd9471905a3e0..69e6e4da5a0e9c3274b24dcd6147009c2d9758ee 100644
--- a/obj/NiBoneLODController.cpp
+++ b/obj/NiBoneLODController.cpp
@@ -4,6 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #include "NiBoneLODController.h"
 #include "NiTriShape.h"
 #include "NiSkinInstance.h"
+#include "NiTriShape.h"
 
 //Definition of TYPE constant
 const Type NiBoneLODController::TYPE("NiBoneLODController", &NI_BONE_L_O_D_CONTROLLER_PARENT::TYPE );
@@ -13,18 +14,22 @@ NiBoneLODController::NiBoneLODController() NI_BONE_L_O_D_CONTROLLER_CONSTRUCT {}
 NiBoneLODController::~NiBoneLODController() {}
 
 void NiBoneLODController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BONE_L_O_D_CONTROLLER_READ
+  NI_BONE_L_O_D_CONTROLLER_READ
 }
 
 void NiBoneLODController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BONE_L_O_D_CONTROLLER_WRITE
+  NI_BONE_L_O_D_CONTROLLER_WRITE
 }
 
 string NiBoneLODController::asString( bool verbose ) const {
-	NI_BONE_L_O_D_CONTROLLER_STRING
+  NI_BONE_L_O_D_CONTROLLER_STRING
 }
 
 void NiBoneLODController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BONE_L_O_D_CONTROLLER_FIXLINKS
+  NI_BONE_L_O_D_CONTROLLER_FIXLINKS
 }
 
+const Type & NiBoneLODController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBoneLODController.h b/obj/NiBoneLODController.h
index eb094d45a3ad7adb779a5bb0eb6c2e846348a36f..076ad27dd643062c89748a882ce8966e760bb951 100644
--- a/obj/NiBoneLODController.h
+++ b/obj/NiBoneLODController.h
@@ -16,16 +16,17 @@ typedef Ref<NiBoneLODController> NiBoneLODControllerRef;
 
 class NiBoneLODController : public NI_BONE_L_O_D_CONTROLLER_PARENT {
 public:
-	NiBoneLODController();
-	~NiBoneLODController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BONE_L_O_D_CONTROLLER_MEMBERS
+  NiBoneLODController();
+  ~NiBoneLODController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BONE_L_O_D_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBoolData.cpp b/obj/NiBoolData.cpp
index 70889a8ef31c8655ea3b8ccacb85d9fce423a03b..0baae004acd179950e5c4e35a1d453a8218ab535 100644
--- a/obj/NiBoolData.cpp
+++ b/obj/NiBoolData.cpp
@@ -11,18 +11,22 @@ NiBoolData::NiBoolData() NI_BOOL_DATA_CONSTRUCT {}
 NiBoolData::~NiBoolData() {}
 
 void NiBoolData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BOOL_DATA_READ
+  NI_BOOL_DATA_READ
 }
 
 void NiBoolData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BOOL_DATA_WRITE
+  NI_BOOL_DATA_WRITE
 }
 
 string NiBoolData::asString( bool verbose ) const {
-	NI_BOOL_DATA_STRING
+  NI_BOOL_DATA_STRING
 }
 
 void NiBoolData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BOOL_DATA_FIXLINKS
+  NI_BOOL_DATA_FIXLINKS
 }
 
+const Type & NiBoolData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBoolData.h b/obj/NiBoolData.h
index d2ba5e2dae3e4d0e0702999b60c13050d5f660fe..4cb10367f15a0c4eb7ab4a820dc4d65a86bb9cc8 100644
--- a/obj/NiBoolData.h
+++ b/obj/NiBoolData.h
@@ -16,16 +16,17 @@ typedef Ref<NiBoolData> NiBoolDataRef;
 
 class NiBoolData : public NI_BOOL_DATA_PARENT {
 public:
-	NiBoolData();
-	~NiBoolData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BOOL_DATA_MEMBERS
+  NiBoolData();
+  ~NiBoolData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BOOL_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBoolInterpolator.cpp b/obj/NiBoolInterpolator.cpp
index 8a9beaa0640f30c1ea906649d1a96eeaa9c4c7f7..ec3608f3de81b96025a9ca34deef5e93705ad6d3 100644
--- a/obj/NiBoolInterpolator.cpp
+++ b/obj/NiBoolInterpolator.cpp
@@ -12,18 +12,22 @@ NiBoolInterpolator::NiBoolInterpolator() NI_BOOL_INTERPOLATOR_CONSTRUCT {}
 NiBoolInterpolator::~NiBoolInterpolator() {}
 
 void NiBoolInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BOOL_INTERPOLATOR_READ
+  NI_BOOL_INTERPOLATOR_READ
 }
 
 void NiBoolInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BOOL_INTERPOLATOR_WRITE
+  NI_BOOL_INTERPOLATOR_WRITE
 }
 
 string NiBoolInterpolator::asString( bool verbose ) const {
-	NI_BOOL_INTERPOLATOR_STRING
+  NI_BOOL_INTERPOLATOR_STRING
 }
 
 void NiBoolInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BOOL_INTERPOLATOR_FIXLINKS
+  NI_BOOL_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBoolInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBoolInterpolator.h b/obj/NiBoolInterpolator.h
index fef53453ad0f12baf893cf64fb20f3c2d92e3a83..8079e9901b88308d640d763d0e8c761dd554dd8e 100644
--- a/obj/NiBoolInterpolator.h
+++ b/obj/NiBoolInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBoolInterpolator> NiBoolInterpolatorRef;
 
 class NiBoolInterpolator : public NI_BOOL_INTERPOLATOR_PARENT {
 public:
-	NiBoolInterpolator();
-	~NiBoolInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BOOL_INTERPOLATOR_MEMBERS
+  NiBoolInterpolator();
+  ~NiBoolInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BOOL_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBoolTimelineInterpolator.cpp b/obj/NiBoolTimelineInterpolator.cpp
index 281345d6bcf2f36a0204e5c3ca67200086a383b9..eaa3b137521b2acf0fa4a3dcb06e595da04fafd8 100644
--- a/obj/NiBoolTimelineInterpolator.cpp
+++ b/obj/NiBoolTimelineInterpolator.cpp
@@ -12,18 +12,22 @@ NiBoolTimelineInterpolator::NiBoolTimelineInterpolator() NI_BOOL_TIMELINE_INTERP
 NiBoolTimelineInterpolator::~NiBoolTimelineInterpolator() {}
 
 void NiBoolTimelineInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BOOL_TIMELINE_INTERPOLATOR_READ
+  NI_BOOL_TIMELINE_INTERPOLATOR_READ
 }
 
 void NiBoolTimelineInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BOOL_TIMELINE_INTERPOLATOR_WRITE
+  NI_BOOL_TIMELINE_INTERPOLATOR_WRITE
 }
 
 string NiBoolTimelineInterpolator::asString( bool verbose ) const {
-	NI_BOOL_TIMELINE_INTERPOLATOR_STRING
+  NI_BOOL_TIMELINE_INTERPOLATOR_STRING
 }
 
 void NiBoolTimelineInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BOOL_TIMELINE_INTERPOLATOR_FIXLINKS
+  NI_BOOL_TIMELINE_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBoolTimelineInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBoolTimelineInterpolator.h b/obj/NiBoolTimelineInterpolator.h
index f2b59580520d3cd5bd6c022b9715d9102df60776..738263a4877432efa93f7ed66ccc75d96ccea254 100644
--- a/obj/NiBoolTimelineInterpolator.h
+++ b/obj/NiBoolTimelineInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBoolTimelineInterpolator> NiBoolTimelineInterpolatorRef;
 
 class NiBoolTimelineInterpolator : public NI_BOOL_TIMELINE_INTERPOLATOR_PARENT {
 public:
-	NiBoolTimelineInterpolator();
-	~NiBoolTimelineInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BOOL_TIMELINE_INTERPOLATOR_MEMBERS
+  NiBoolTimelineInterpolator();
+  ~NiBoolTimelineInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BOOL_TIMELINE_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBooleanExtraData.cpp b/obj/NiBooleanExtraData.cpp
index dca4aebc502d252ec54b41e753146f1aea932211..1e8be0a5b9306c2e74396708556ab843ae6082ee 100644
--- a/obj/NiBooleanExtraData.cpp
+++ b/obj/NiBooleanExtraData.cpp
@@ -11,18 +11,22 @@ NiBooleanExtraData::NiBooleanExtraData() NI_BOOLEAN_EXTRA_DATA_CONSTRUCT {}
 NiBooleanExtraData::~NiBooleanExtraData() {}
 
 void NiBooleanExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BOOLEAN_EXTRA_DATA_READ
+  NI_BOOLEAN_EXTRA_DATA_READ
 }
 
 void NiBooleanExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BOOLEAN_EXTRA_DATA_WRITE
+  NI_BOOLEAN_EXTRA_DATA_WRITE
 }
 
 string NiBooleanExtraData::asString( bool verbose ) const {
-	NI_BOOLEAN_EXTRA_DATA_STRING
+  NI_BOOLEAN_EXTRA_DATA_STRING
 }
 
 void NiBooleanExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BOOLEAN_EXTRA_DATA_FIXLINKS
+  NI_BOOLEAN_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiBooleanExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBooleanExtraData.h b/obj/NiBooleanExtraData.h
index 057ad1b7a520067990c882de22b39f246d27c5d6..d26a2eb50659c0855783e683de8cb204804a10dd 100644
--- a/obj/NiBooleanExtraData.h
+++ b/obj/NiBooleanExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiBooleanExtraData> NiBooleanExtraDataRef;
 
 class NiBooleanExtraData : public NI_BOOLEAN_EXTRA_DATA_PARENT {
 public:
-	NiBooleanExtraData();
-	~NiBooleanExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BOOLEAN_EXTRA_DATA_MEMBERS
+  NiBooleanExtraData();
+  ~NiBooleanExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BOOLEAN_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiCamera.cpp b/obj/NiCamera.cpp
index 6b77ced40b1ce27572381a97757a62b00758a57a..84b0ad2d0c744081dd67a1c930ffd75d23b9acf4 100644
--- a/obj/NiCamera.cpp
+++ b/obj/NiCamera.cpp
@@ -2,6 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiCamera.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type NiCamera::TYPE("NiCamera", &NI_CAMERA_PARENT::TYPE );
@@ -11,18 +12,22 @@ NiCamera::NiCamera() NI_CAMERA_CONSTRUCT {}
 NiCamera::~NiCamera() {}
 
 void NiCamera::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_CAMERA_READ
+  NI_CAMERA_READ
 }
 
 void NiCamera::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_CAMERA_WRITE
+  NI_CAMERA_WRITE
 }
 
 string NiCamera::asString( bool verbose ) const {
-	NI_CAMERA_STRING
+  NI_CAMERA_STRING
 }
 
 void NiCamera::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_CAMERA_FIXLINKS
+  NI_CAMERA_FIXLINKS
 }
 
+const Type & NiCamera::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiCamera.h b/obj/NiCamera.h
index 7d0fd27f04b9ea09a922fc43c844c175290d3677..d480a43986ba1c659ad03e81b59369145e9ee564 100644
--- a/obj/NiCamera.h
+++ b/obj/NiCamera.h
@@ -16,16 +16,17 @@ typedef Ref<NiCamera> NiCameraRef;
 
 class NiCamera : public NI_CAMERA_PARENT {
 public:
-	NiCamera();
-	~NiCamera();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_CAMERA_MEMBERS
+  NiCamera();
+  ~NiCamera();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_CAMERA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiCollisionData.cpp b/obj/NiCollisionData.cpp
index c8630bec73b17a330c56d6c2972edec28b89d21b..d392e31f5abf99e4c70dd3213d15bdd950313919 100644
--- a/obj/NiCollisionData.cpp
+++ b/obj/NiCollisionData.cpp
@@ -12,18 +12,22 @@ NiCollisionData::NiCollisionData() NI_COLLISION_DATA_CONSTRUCT {}
 NiCollisionData::~NiCollisionData() {}
 
 void NiCollisionData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_COLLISION_DATA_READ
+  NI_COLLISION_DATA_READ
 }
 
 void NiCollisionData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_COLLISION_DATA_WRITE
+  NI_COLLISION_DATA_WRITE
 }
 
 string NiCollisionData::asString( bool verbose ) const {
-	NI_COLLISION_DATA_STRING
+  NI_COLLISION_DATA_STRING
 }
 
 void NiCollisionData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_COLLISION_DATA_FIXLINKS
+  NI_COLLISION_DATA_FIXLINKS
 }
 
+const Type & NiCollisionData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiCollisionData.h b/obj/NiCollisionData.h
index ab7377448b9db96f646e057186d6cf11bf01bd92..7b3124e18058fac29bb0bf74306431f987a095a0 100644
--- a/obj/NiCollisionData.h
+++ b/obj/NiCollisionData.h
@@ -16,16 +16,17 @@ typedef Ref<NiCollisionData> NiCollisionDataRef;
 
 class NiCollisionData : public NI_COLLISION_DATA_PARENT {
 public:
-	NiCollisionData();
-	~NiCollisionData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_COLLISION_DATA_MEMBERS
+  NiCollisionData();
+  ~NiCollisionData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_COLLISION_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiCollisionObject.cpp b/obj/NiCollisionObject.cpp
index 6c193ad69b98fdd598c943e361ea280b0294f7fc..10a4483adccaa6cd126a50dbfe049bd6cffbad40 100644
--- a/obj/NiCollisionObject.cpp
+++ b/obj/NiCollisionObject.cpp
@@ -2,6 +2,8 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiCollisionObject.h"
+#include "NiAVObject.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type NiCollisionObject::TYPE("NiCollisionObject", &NI_COLLISION_OBJECT_PARENT::TYPE );
@@ -11,19 +13,23 @@ NiCollisionObject::NiCollisionObject() NI_COLLISION_OBJECT_CONSTRUCT {}
 NiCollisionObject::~NiCollisionObject() {}
 
 void NiCollisionObject::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_COLLISION_OBJECT_READ
+  NI_COLLISION_OBJECT_READ
 }
 
 void NiCollisionObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_COLLISION_OBJECT_WRITE
+  NI_COLLISION_OBJECT_WRITE
 }
 
 string NiCollisionObject::asString( bool verbose ) const {
-	NI_COLLISION_OBJECT_STRING
+  NI_COLLISION_OBJECT_STRING
 }
 
 void NiCollisionObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_COLLISION_OBJECT_FIXLINKS
+  NI_COLLISION_OBJECT_FIXLINKS
 }
 
-NiAVObject * NiCollisionObject::Parent() const { return NULL; };
+const Type & NiCollisionObject::GetType() const {
+  return TYPE;
+};
+
+NiAVObject * NiCollisionObject::Parent() const { return NULL; }
diff --git a/obj/NiCollisionObject.h b/obj/NiCollisionObject.h
index 4e47208a71c68698b6e7aade091dd6cff4d6126d..3a57ef22df60457bed17c82419e386c5bced475c 100644
--- a/obj/NiCollisionObject.h
+++ b/obj/NiCollisionObject.h
@@ -6,7 +6,6 @@ All rights reserved.  Please see niflib.h for licence. */
 
 #include "xml_extract.h"
 #include NI_COLLISION_OBJECT_INCLUDE
-#include "NiAVObject.h"
 
 /*
  * NiCollisionObject
@@ -17,18 +16,18 @@ typedef Ref<NiCollisionObject> NiCollisionObjectRef;
 
 class NiCollisionObject : public NI_COLLISION_OBJECT_PARENT {
 public:
-	NiCollisionObject();
-	~NiCollisionObject();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-	
-	NiAVObject * Parent() const;
-private:
-	NI_COLLISION_OBJECT_MEMBERS
+  NiCollisionObject();
+  ~NiCollisionObject();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NiAVObject * NiCollisionObject::Parent() const;
+  NI_COLLISION_OBJECT_MEMBERS
 };
+
 #endif
diff --git a/obj/NiColorData.cpp b/obj/NiColorData.cpp
index b48a1963152bc7ddabbef114a4a4b315f62bcac7..b4ce5fa81c6814f07c3e79c87e1c43348f3b1708 100644
--- a/obj/NiColorData.cpp
+++ b/obj/NiColorData.cpp
@@ -11,18 +11,22 @@ NiColorData::NiColorData() NI_COLOR_DATA_CONSTRUCT {}
 NiColorData::~NiColorData() {}
 
 void NiColorData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_COLOR_DATA_READ
+  NI_COLOR_DATA_READ
 }
 
 void NiColorData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_COLOR_DATA_WRITE
+  NI_COLOR_DATA_WRITE
 }
 
 string NiColorData::asString( bool verbose ) const {
-	NI_COLOR_DATA_STRING
+  NI_COLOR_DATA_STRING
 }
 
 void NiColorData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_COLOR_DATA_FIXLINKS
+  NI_COLOR_DATA_FIXLINKS
 }
 
+const Type & NiColorData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiColorData.h b/obj/NiColorData.h
index 59775b7600a493243c41fdaa1818fa63c191b06e..524a33464e07304b196cbd04d4584dcc81eb5f5f 100644
--- a/obj/NiColorData.h
+++ b/obj/NiColorData.h
@@ -16,16 +16,17 @@ typedef Ref<NiColorData> NiColorDataRef;
 
 class NiColorData : public NI_COLOR_DATA_PARENT {
 public:
-	NiColorData();
-	~NiColorData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_COLOR_DATA_MEMBERS
+  NiColorData();
+  ~NiColorData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_COLOR_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiColorExtraData.cpp b/obj/NiColorExtraData.cpp
index 67f5707f8065243fbff64ac5a09a2082597b73f1..bc434c06536f803af2d2bdbf106169c798361299 100644
--- a/obj/NiColorExtraData.cpp
+++ b/obj/NiColorExtraData.cpp
@@ -11,18 +11,22 @@ NiColorExtraData::NiColorExtraData() NI_COLOR_EXTRA_DATA_CONSTRUCT {}
 NiColorExtraData::~NiColorExtraData() {}
 
 void NiColorExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_COLOR_EXTRA_DATA_READ
+  NI_COLOR_EXTRA_DATA_READ
 }
 
 void NiColorExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_COLOR_EXTRA_DATA_WRITE
+  NI_COLOR_EXTRA_DATA_WRITE
 }
 
 string NiColorExtraData::asString( bool verbose ) const {
-	NI_COLOR_EXTRA_DATA_STRING
+  NI_COLOR_EXTRA_DATA_STRING
 }
 
 void NiColorExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_COLOR_EXTRA_DATA_FIXLINKS
+  NI_COLOR_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiColorExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiColorExtraData.h b/obj/NiColorExtraData.h
index a88d6865362fcd52967734a3f2ab0bc2f53283e7..b3723598e3062dcef0812ea270e5a3b4e3a4624e 100644
--- a/obj/NiColorExtraData.h
+++ b/obj/NiColorExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiColorExtraData> NiColorExtraDataRef;
 
 class NiColorExtraData : public NI_COLOR_EXTRA_DATA_PARENT {
 public:
-	NiColorExtraData();
-	~NiColorExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_COLOR_EXTRA_DATA_MEMBERS
+  NiColorExtraData();
+  ~NiColorExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_COLOR_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiControllerManager.cpp b/obj/NiControllerManager.cpp
index 4e3974ba90fc9ceb13451e6398af039d3dbe67c0..06564a4ec119632e541a975c5471d0f6366ee91f 100644
--- a/obj/NiControllerManager.cpp
+++ b/obj/NiControllerManager.cpp
@@ -13,18 +13,22 @@ NiControllerManager::NiControllerManager() NI_CONTROLLER_MANAGER_CONSTRUCT {}
 NiControllerManager::~NiControllerManager() {}
 
 void NiControllerManager::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_CONTROLLER_MANAGER_READ
+  NI_CONTROLLER_MANAGER_READ
 }
 
 void NiControllerManager::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_CONTROLLER_MANAGER_WRITE
+  NI_CONTROLLER_MANAGER_WRITE
 }
 
 string NiControllerManager::asString( bool verbose ) const {
-	NI_CONTROLLER_MANAGER_STRING
+  NI_CONTROLLER_MANAGER_STRING
 }
 
 void NiControllerManager::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_CONTROLLER_MANAGER_FIXLINKS
+  NI_CONTROLLER_MANAGER_FIXLINKS
 }
 
+const Type & NiControllerManager::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiControllerManager.h b/obj/NiControllerManager.h
index c06deffd3232f115b5898d3abcd8799038a201df..7f60f6620f96117109623968821b5ddc334f0386 100644
--- a/obj/NiControllerManager.h
+++ b/obj/NiControllerManager.h
@@ -16,16 +16,17 @@ typedef Ref<NiControllerManager> NiControllerManagerRef;
 
 class NiControllerManager : public NI_CONTROLLER_MANAGER_PARENT {
 public:
-	NiControllerManager();
-	~NiControllerManager();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_CONTROLLER_MANAGER_MEMBERS
+  NiControllerManager();
+  ~NiControllerManager();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_CONTROLLER_MANAGER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiControllerSequence.cpp b/obj/NiControllerSequence.cpp
index e2ec7e47b4b51beb04f0dbc0c248067fb38f47cd..4d5c53a3689342f97495f5558ab54e6b7b4555b8 100644
--- a/obj/NiControllerSequence.cpp
+++ b/obj/NiControllerSequence.cpp
@@ -2,10 +2,13 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiControllerSequence.h"
-#include "AInterpolator.h"
+#include "NiInterpolator.h"
+#include "NiStringPalette.h"
+#include "NiInterpolator.h"
 #include "NiStringPalette.h"
 #include "NiTextKeyExtraData.h"
 #include "NiControllerManager.h"
+#include "NiStringPalette.h"
 
 //Definition of TYPE constant
 const Type NiControllerSequence::TYPE("NiControllerSequence", &NI_CONTROLLER_SEQUENCE_PARENT::TYPE );
@@ -15,20 +18,23 @@ NiControllerSequence::NiControllerSequence() NI_CONTROLLER_SEQUENCE_CONSTRUCT {}
 NiControllerSequence::~NiControllerSequence() {}
 
 void NiControllerSequence::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_CONTROLLER_SEQUENCE_READ
+  NI_CONTROLLER_SEQUENCE_READ
 }
 
 void NiControllerSequence::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_CONTROLLER_SEQUENCE_WRITE
+  NI_CONTROLLER_SEQUENCE_WRITE
 }
 
 string NiControllerSequence::asString( bool verbose ) const {
-	NI_CONTROLLER_SEQUENCE_STRING
+  NI_CONTROLLER_SEQUENCE_STRING
 }
 
 void NiControllerSequence::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_CONTROLLER_SEQUENCE_FIXLINKS
+  NI_CONTROLLER_SEQUENCE_FIXLINKS
 }
 
-NiControllerManager * NiControllerSequence::Parent() const { return NULL; }
+const Type & NiControllerSequence::GetType() const {
+  return TYPE;
+};
 
+NiControllerManager * NiControllerSequence::Parent() const { return NULL; }
diff --git a/obj/NiControllerSequence.h b/obj/NiControllerSequence.h
index 776ac60defba243954e8bfaffac4b88b660d7a87..2c20b0bf8037a119167eff1b7b0075033ff6199a 100644
--- a/obj/NiControllerSequence.h
+++ b/obj/NiControllerSequence.h
@@ -16,18 +16,18 @@ typedef Ref<NiControllerSequence> NiControllerSequenceRef;
 
 class NiControllerSequence : public NI_CONTROLLER_SEQUENCE_PARENT {
 public:
-	NiControllerSequence();
-	~NiControllerSequence();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-	
-	NiControllerManager * Parent() const;
-private:
-	NI_CONTROLLER_SEQUENCE_MEMBERS
+  NiControllerSequence();
+  ~NiControllerSequence();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NiControllerManager * NiControllerSequence::Parent() const;
+  NI_CONTROLLER_SEQUENCE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiDefaultAVObjectPalette.cpp b/obj/NiDefaultAVObjectPalette.cpp
index 18a66462131451c25d0df2f2029da886c1281ca2..af652750e4934d058bc9a44b688b4c269129e482 100644
--- a/obj/NiDefaultAVObjectPalette.cpp
+++ b/obj/NiDefaultAVObjectPalette.cpp
@@ -12,18 +12,22 @@ NiDefaultAVObjectPalette::NiDefaultAVObjectPalette() NI_DEFAULT_A_V_OBJECT_PALET
 NiDefaultAVObjectPalette::~NiDefaultAVObjectPalette() {}
 
 void NiDefaultAVObjectPalette::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_DEFAULT_A_V_OBJECT_PALETTE_READ
+  NI_DEFAULT_A_V_OBJECT_PALETTE_READ
 }
 
 void NiDefaultAVObjectPalette::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_DEFAULT_A_V_OBJECT_PALETTE_WRITE
+  NI_DEFAULT_A_V_OBJECT_PALETTE_WRITE
 }
 
 string NiDefaultAVObjectPalette::asString( bool verbose ) const {
-	NI_DEFAULT_A_V_OBJECT_PALETTE_STRING
+  NI_DEFAULT_A_V_OBJECT_PALETTE_STRING
 }
 
 void NiDefaultAVObjectPalette::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_DEFAULT_A_V_OBJECT_PALETTE_FIXLINKS
+  NI_DEFAULT_A_V_OBJECT_PALETTE_FIXLINKS
 }
 
+const Type & NiDefaultAVObjectPalette::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiDefaultAVObjectPalette.h b/obj/NiDefaultAVObjectPalette.h
index 0c03034f7c03dff4b5a5e0de6ab941a929168f3c..9a6b98021ffe6e673b9495d717909224be63234a 100644
--- a/obj/NiDefaultAVObjectPalette.h
+++ b/obj/NiDefaultAVObjectPalette.h
@@ -16,16 +16,17 @@ typedef Ref<NiDefaultAVObjectPalette> NiDefaultAVObjectPaletteRef;
 
 class NiDefaultAVObjectPalette : public NI_DEFAULT_A_V_OBJECT_PALETTE_PARENT {
 public:
-	NiDefaultAVObjectPalette();
-	~NiDefaultAVObjectPalette();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_DEFAULT_A_V_OBJECT_PALETTE_MEMBERS
+  NiDefaultAVObjectPalette();
+  ~NiDefaultAVObjectPalette();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_DEFAULT_A_V_OBJECT_PALETTE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiDirectionalLight.cpp b/obj/NiDirectionalLight.cpp
index b4066a1317a1eaf31a4a0cf70a26589f09593ca5..1a52183d284e2b1bd2d35909cbbf827d4c5f23c0 100644
--- a/obj/NiDirectionalLight.cpp
+++ b/obj/NiDirectionalLight.cpp
@@ -11,18 +11,22 @@ NiDirectionalLight::NiDirectionalLight() NI_DIRECTIONAL_LIGHT_CONSTRUCT {}
 NiDirectionalLight::~NiDirectionalLight() {}
 
 void NiDirectionalLight::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_DIRECTIONAL_LIGHT_READ
+  NI_DIRECTIONAL_LIGHT_READ
 }
 
 void NiDirectionalLight::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_DIRECTIONAL_LIGHT_WRITE
+  NI_DIRECTIONAL_LIGHT_WRITE
 }
 
 string NiDirectionalLight::asString( bool verbose ) const {
-	NI_DIRECTIONAL_LIGHT_STRING
+  NI_DIRECTIONAL_LIGHT_STRING
 }
 
 void NiDirectionalLight::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_DIRECTIONAL_LIGHT_FIXLINKS
+  NI_DIRECTIONAL_LIGHT_FIXLINKS
 }
 
+const Type & NiDirectionalLight::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiDirectionalLight.h b/obj/NiDirectionalLight.h
index fc0829dd18989ee07ca865432042d1f68232891b..d9af432f6c97d343757977370d9b25bc1ec33594 100644
--- a/obj/NiDirectionalLight.h
+++ b/obj/NiDirectionalLight.h
@@ -16,16 +16,17 @@ typedef Ref<NiDirectionalLight> NiDirectionalLightRef;
 
 class NiDirectionalLight : public NI_DIRECTIONAL_LIGHT_PARENT {
 public:
-	NiDirectionalLight();
-	~NiDirectionalLight();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_DIRECTIONAL_LIGHT_MEMBERS
+  NiDirectionalLight();
+  ~NiDirectionalLight();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_DIRECTIONAL_LIGHT_MEMBERS
 };
+
 #endif
diff --git a/obj/NiDitherProperty.cpp b/obj/NiDitherProperty.cpp
index d067ca3d32dcaf8b4d3181ae2076f81928f19774..0cd930c2977765430e58c9c301af39cf0f41618a 100644
--- a/obj/NiDitherProperty.cpp
+++ b/obj/NiDitherProperty.cpp
@@ -11,18 +11,22 @@ NiDitherProperty::NiDitherProperty() NI_DITHER_PROPERTY_CONSTRUCT {}
 NiDitherProperty::~NiDitherProperty() {}
 
 void NiDitherProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_DITHER_PROPERTY_READ
+  NI_DITHER_PROPERTY_READ
 }
 
 void NiDitherProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_DITHER_PROPERTY_WRITE
+  NI_DITHER_PROPERTY_WRITE
 }
 
 string NiDitherProperty::asString( bool verbose ) const {
-	NI_DITHER_PROPERTY_STRING
+  NI_DITHER_PROPERTY_STRING
 }
 
 void NiDitherProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_DITHER_PROPERTY_FIXLINKS
+  NI_DITHER_PROPERTY_FIXLINKS
 }
 
+const Type & NiDitherProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiDitherProperty.h b/obj/NiDitherProperty.h
index 2c7c186974c208d1423ec0b745288d5dc9769701..baaa5095d95328c11864e0ee1d7d5e96ed939bc6 100644
--- a/obj/NiDitherProperty.h
+++ b/obj/NiDitherProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiDitherProperty> NiDitherPropertyRef;
 
 class NiDitherProperty : public NI_DITHER_PROPERTY_PARENT {
 public:
-	NiDitherProperty();
-	~NiDitherProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_DITHER_PROPERTY_MEMBERS
+  NiDitherProperty();
+  ~NiDitherProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_DITHER_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiDynamicEffect.cpp b/obj/NiDynamicEffect.cpp
index 205a65c0eaf80b8087d95b8eb6298d807b873507..c44a73de8416b6f8ae7554081f2eb27607fc6e1f 100644
--- a/obj/NiDynamicEffect.cpp
+++ b/obj/NiDynamicEffect.cpp
@@ -2,6 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiDynamicEffect.h"
+#include "NiAVObject.h"
 
 //Definition of TYPE constant
 const Type NiDynamicEffect::TYPE("NiDynamicEffect", &NI_DYNAMIC_EFFECT_PARENT::TYPE );
@@ -11,18 +12,22 @@ NiDynamicEffect::NiDynamicEffect() NI_DYNAMIC_EFFECT_CONSTRUCT {}
 NiDynamicEffect::~NiDynamicEffect() {}
 
 void NiDynamicEffect::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_DYNAMIC_EFFECT_READ
+  NI_DYNAMIC_EFFECT_READ
 }
 
 void NiDynamicEffect::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_DYNAMIC_EFFECT_WRITE
+  NI_DYNAMIC_EFFECT_WRITE
 }
 
 string NiDynamicEffect::asString( bool verbose ) const {
-	NI_DYNAMIC_EFFECT_STRING
+  NI_DYNAMIC_EFFECT_STRING
 }
 
 void NiDynamicEffect::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_DYNAMIC_EFFECT_FIXLINKS
+  NI_DYNAMIC_EFFECT_FIXLINKS
 }
 
+const Type & NiDynamicEffect::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiDynamicEffect.h b/obj/NiDynamicEffect.h
index b0ddadba58b9577b2640aa9a2ce5eac4dd3c6b5d..e5ce766126da6cb4a926a9a4d3c7c0dadfbaa162 100644
--- a/obj/NiDynamicEffect.h
+++ b/obj/NiDynamicEffect.h
@@ -16,16 +16,17 @@ typedef Ref<NiDynamicEffect> NiDynamicEffectRef;
 
 class NiDynamicEffect : public NI_DYNAMIC_EFFECT_PARENT {
 public:
-	NiDynamicEffect();
-	~NiDynamicEffect();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_DYNAMIC_EFFECT_MEMBERS
+  NiDynamicEffect();
+  ~NiDynamicEffect();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_DYNAMIC_EFFECT_MEMBERS
 };
+
 #endif
diff --git a/obj/NiExtraData.cpp b/obj/NiExtraData.cpp
index d05d976d8fd3feace671482e356425a75db8e93a..1f108e0b2900839adcda2d9401024e11e46de399 100644
--- a/obj/NiExtraData.cpp
+++ b/obj/NiExtraData.cpp
@@ -1,6 +1,7 @@
 /* Copyright (c) 2006, NIF File Format Library and Tools
 All rights reserved.  Please see niflib.h for licence. */
 
+#include "NiExtraData.h"
 #include "NiExtraData.h"
 
 //Definition of TYPE constant
@@ -11,18 +12,22 @@ NiExtraData::NiExtraData() NI_EXTRA_DATA_CONSTRUCT {}
 NiExtraData::~NiExtraData() {}
 
 void NiExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_EXTRA_DATA_READ
+  NI_EXTRA_DATA_READ
 }
 
 void NiExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_EXTRA_DATA_WRITE
+  NI_EXTRA_DATA_WRITE
 }
 
 string NiExtraData::asString( bool verbose ) const {
-	NI_EXTRA_DATA_STRING
+  NI_EXTRA_DATA_STRING
 }
 
 void NiExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_EXTRA_DATA_FIXLINKS
+  NI_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiExtraData.h b/obj/NiExtraData.h
index d0121f81628ed0b391c3aa487566b04db3418784..b4ffa7227e1a67e32b90412f0690cce4772ad57c 100644
--- a/obj/NiExtraData.h
+++ b/obj/NiExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiExtraData> NiExtraDataRef;
 
 class NiExtraData : public NI_EXTRA_DATA_PARENT {
 public:
-	NiExtraData();
-	~NiExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_EXTRA_DATA_MEMBERS
+  NiExtraData();
+  ~NiExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiFlipController.cpp b/obj/NiFlipController.cpp
index fa24f710ef9bc76bbab717e3e695451e34e8bc13..5c967fa5d28d767557d92f268c9a6c6b744178ce 100644
--- a/obj/NiFlipController.cpp
+++ b/obj/NiFlipController.cpp
@@ -12,18 +12,22 @@ NiFlipController::NiFlipController() NI_FLIP_CONTROLLER_CONSTRUCT {}
 NiFlipController::~NiFlipController() {}
 
 void NiFlipController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_FLIP_CONTROLLER_READ
+  NI_FLIP_CONTROLLER_READ
 }
 
 void NiFlipController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_FLIP_CONTROLLER_WRITE
+  NI_FLIP_CONTROLLER_WRITE
 }
 
 string NiFlipController::asString( bool verbose ) const {
-	NI_FLIP_CONTROLLER_STRING
+  NI_FLIP_CONTROLLER_STRING
 }
 
 void NiFlipController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_FLIP_CONTROLLER_FIXLINKS
+  NI_FLIP_CONTROLLER_FIXLINKS
 }
 
+const Type & NiFlipController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiFlipController.h b/obj/NiFlipController.h
index a11ef7a07d56f8fe6c6635d1dd85edfe42710a47..17b23150256fdb5f297ddcfa0032f741d29371a5 100644
--- a/obj/NiFlipController.h
+++ b/obj/NiFlipController.h
@@ -16,16 +16,17 @@ typedef Ref<NiFlipController> NiFlipControllerRef;
 
 class NiFlipController : public NI_FLIP_CONTROLLER_PARENT {
 public:
-	NiFlipController();
-	~NiFlipController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_FLIP_CONTROLLER_MEMBERS
+  NiFlipController();
+  ~NiFlipController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_FLIP_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiFloatData.cpp b/obj/NiFloatData.cpp
index 762ad7305adf579e6d2c39a5a7ba38a978b7a888..5fe838a4b046c1e241f503d4319f35b73d7e015e 100644
--- a/obj/NiFloatData.cpp
+++ b/obj/NiFloatData.cpp
@@ -11,18 +11,22 @@ NiFloatData::NiFloatData() NI_FLOAT_DATA_CONSTRUCT {}
 NiFloatData::~NiFloatData() {}
 
 void NiFloatData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOAT_DATA_READ
+  NI_FLOAT_DATA_READ
 }
 
 void NiFloatData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_FLOAT_DATA_WRITE
+  NI_FLOAT_DATA_WRITE
 }
 
 string NiFloatData::asString( bool verbose ) const {
-	NI_FLOAT_DATA_STRING
+  NI_FLOAT_DATA_STRING
 }
 
 void NiFloatData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOAT_DATA_FIXLINKS
+  NI_FLOAT_DATA_FIXLINKS
 }
 
+const Type & NiFloatData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiFloatData.h b/obj/NiFloatData.h
index f5ec9ea8be79270ec6610b47d6e912f2ed898c81..296533675bf3067abf5ff9385fd9444620b6ad39 100644
--- a/obj/NiFloatData.h
+++ b/obj/NiFloatData.h
@@ -16,16 +16,17 @@ typedef Ref<NiFloatData> NiFloatDataRef;
 
 class NiFloatData : public NI_FLOAT_DATA_PARENT {
 public:
-	NiFloatData();
-	~NiFloatData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_FLOAT_DATA_MEMBERS
+  NiFloatData();
+  ~NiFloatData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_FLOAT_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiFloatExtraData.cpp b/obj/NiFloatExtraData.cpp
index 05ee96a8ab083d5b6dd2e7f4f7ce7c691894f79b..3a5cc36eec6ace1935fe0d7653ceca0683c16517 100644
--- a/obj/NiFloatExtraData.cpp
+++ b/obj/NiFloatExtraData.cpp
@@ -11,18 +11,22 @@ NiFloatExtraData::NiFloatExtraData() NI_FLOAT_EXTRA_DATA_CONSTRUCT {}
 NiFloatExtraData::~NiFloatExtraData() {}
 
 void NiFloatExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOAT_EXTRA_DATA_READ
+  NI_FLOAT_EXTRA_DATA_READ
 }
 
 void NiFloatExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_FLOAT_EXTRA_DATA_WRITE
+  NI_FLOAT_EXTRA_DATA_WRITE
 }
 
 string NiFloatExtraData::asString( bool verbose ) const {
-	NI_FLOAT_EXTRA_DATA_STRING
+  NI_FLOAT_EXTRA_DATA_STRING
 }
 
 void NiFloatExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOAT_EXTRA_DATA_FIXLINKS
+  NI_FLOAT_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiFloatExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiFloatExtraData.h b/obj/NiFloatExtraData.h
index d5b783f6a0fb2658849a5a0f1353e5da0f0e0362..4c60bc0d64f9c2c2211a64eb1f6499f2523347de 100644
--- a/obj/NiFloatExtraData.h
+++ b/obj/NiFloatExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiFloatExtraData> NiFloatExtraDataRef;
 
 class NiFloatExtraData : public NI_FLOAT_EXTRA_DATA_PARENT {
 public:
-	NiFloatExtraData();
-	~NiFloatExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_FLOAT_EXTRA_DATA_MEMBERS
+  NiFloatExtraData();
+  ~NiFloatExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_FLOAT_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiFloatExtraDataController.cpp b/obj/NiFloatExtraDataController.cpp
index e06ece2eae3b8b4f7f631c00526ee10b4055423f..546290d6d96f8121bb719c6d7afdfde9446a9843 100644
--- a/obj/NiFloatExtraDataController.cpp
+++ b/obj/NiFloatExtraDataController.cpp
@@ -2,6 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiFloatExtraDataController.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type NiFloatExtraDataController::TYPE("NiFloatExtraDataController", &NI_FLOAT_EXTRA_DATA_CONTROLLER_PARENT::TYPE );
@@ -11,18 +12,22 @@ NiFloatExtraDataController::NiFloatExtraDataController() NI_FLOAT_EXTRA_DATA_CON
 NiFloatExtraDataController::~NiFloatExtraDataController() {}
 
 void NiFloatExtraDataController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOAT_EXTRA_DATA_CONTROLLER_READ
+  NI_FLOAT_EXTRA_DATA_CONTROLLER_READ
 }
 
 void NiFloatExtraDataController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_FLOAT_EXTRA_DATA_CONTROLLER_WRITE
+  NI_FLOAT_EXTRA_DATA_CONTROLLER_WRITE
 }
 
 string NiFloatExtraDataController::asString( bool verbose ) const {
-	NI_FLOAT_EXTRA_DATA_CONTROLLER_STRING
+  NI_FLOAT_EXTRA_DATA_CONTROLLER_STRING
 }
 
 void NiFloatExtraDataController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOAT_EXTRA_DATA_CONTROLLER_FIXLINKS
+  NI_FLOAT_EXTRA_DATA_CONTROLLER_FIXLINKS
 }
 
+const Type & NiFloatExtraDataController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiFloatExtraDataController.h b/obj/NiFloatExtraDataController.h
index cfb8706bbc23e6075d6c8c669a6ba83da89b29bf..2990d7d277c7aae67ec5fd2844109c64e02404f3 100644
--- a/obj/NiFloatExtraDataController.h
+++ b/obj/NiFloatExtraDataController.h
@@ -16,16 +16,17 @@ typedef Ref<NiFloatExtraDataController> NiFloatExtraDataControllerRef;
 
 class NiFloatExtraDataController : public NI_FLOAT_EXTRA_DATA_CONTROLLER_PARENT {
 public:
-	NiFloatExtraDataController();
-	~NiFloatExtraDataController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_FLOAT_EXTRA_DATA_CONTROLLER_MEMBERS
+  NiFloatExtraDataController();
+  ~NiFloatExtraDataController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_FLOAT_EXTRA_DATA_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiFloatInterpolator.cpp b/obj/NiFloatInterpolator.cpp
index d8111d4ab00ae5fa50dd63298c453bf621fee338..81457d0e46bb6283a99c2e0b6ad88efcdfd1e4fb 100644
--- a/obj/NiFloatInterpolator.cpp
+++ b/obj/NiFloatInterpolator.cpp
@@ -12,18 +12,22 @@ NiFloatInterpolator::NiFloatInterpolator() NI_FLOAT_INTERPOLATOR_CONSTRUCT {}
 NiFloatInterpolator::~NiFloatInterpolator() {}
 
 void NiFloatInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOAT_INTERPOLATOR_READ
+  NI_FLOAT_INTERPOLATOR_READ
 }
 
 void NiFloatInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_FLOAT_INTERPOLATOR_WRITE
+  NI_FLOAT_INTERPOLATOR_WRITE
 }
 
 string NiFloatInterpolator::asString( bool verbose ) const {
-	NI_FLOAT_INTERPOLATOR_STRING
+  NI_FLOAT_INTERPOLATOR_STRING
 }
 
 void NiFloatInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOAT_INTERPOLATOR_FIXLINKS
+  NI_FLOAT_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiFloatInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiFloatInterpolator.h b/obj/NiFloatInterpolator.h
index 1d87fcccbeb98b35549024e3f53a25d821aec013..b834578970f161b087f702b28be66e4ca81be243 100644
--- a/obj/NiFloatInterpolator.h
+++ b/obj/NiFloatInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiFloatInterpolator> NiFloatInterpolatorRef;
 
 class NiFloatInterpolator : public NI_FLOAT_INTERPOLATOR_PARENT {
 public:
-	NiFloatInterpolator();
-	~NiFloatInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_FLOAT_INTERPOLATOR_MEMBERS
+  NiFloatInterpolator();
+  ~NiFloatInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_FLOAT_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiFloatsExtraData.cpp b/obj/NiFloatsExtraData.cpp
index b2223fb1f13caa4b5087762ca45aa1870fd87f75..cc2a67facbcadaba451e6b9d4c67795f6bdaf678 100644
--- a/obj/NiFloatsExtraData.cpp
+++ b/obj/NiFloatsExtraData.cpp
@@ -11,18 +11,22 @@ NiFloatsExtraData::NiFloatsExtraData() NI_FLOATS_EXTRA_DATA_CONSTRUCT {}
 NiFloatsExtraData::~NiFloatsExtraData() {}
 
 void NiFloatsExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOATS_EXTRA_DATA_READ
+  NI_FLOATS_EXTRA_DATA_READ
 }
 
 void NiFloatsExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_FLOATS_EXTRA_DATA_WRITE
+  NI_FLOATS_EXTRA_DATA_WRITE
 }
 
 string NiFloatsExtraData::asString( bool verbose ) const {
-	NI_FLOATS_EXTRA_DATA_STRING
+  NI_FLOATS_EXTRA_DATA_STRING
 }
 
 void NiFloatsExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOATS_EXTRA_DATA_FIXLINKS
+  NI_FLOATS_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiFloatsExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiFloatsExtraData.h b/obj/NiFloatsExtraData.h
index cd93658953d5f9534c2dd4840044001e82981aef..f5129e0590ef75139ec9a5f84884e904e7ce16e1 100644
--- a/obj/NiFloatsExtraData.h
+++ b/obj/NiFloatsExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiFloatsExtraData> NiFloatsExtraDataRef;
 
 class NiFloatsExtraData : public NI_FLOATS_EXTRA_DATA_PARENT {
 public:
-	NiFloatsExtraData();
-	~NiFloatsExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_FLOATS_EXTRA_DATA_MEMBERS
+  NiFloatsExtraData();
+  ~NiFloatsExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_FLOATS_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiFogProperty.cpp b/obj/NiFogProperty.cpp
index 3f4e577a1517aa142337cfb9f16b0d88d30bf1a0..24f5f2fd36b131b5f41aa8d0f12fb9ff934d55c4 100644
--- a/obj/NiFogProperty.cpp
+++ b/obj/NiFogProperty.cpp
@@ -11,18 +11,22 @@ NiFogProperty::NiFogProperty() NI_FOG_PROPERTY_CONSTRUCT {}
 NiFogProperty::~NiFogProperty() {}
 
 void NiFogProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_FOG_PROPERTY_READ
+  NI_FOG_PROPERTY_READ
 }
 
 void NiFogProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_FOG_PROPERTY_WRITE
+  NI_FOG_PROPERTY_WRITE
 }
 
 string NiFogProperty::asString( bool verbose ) const {
-	NI_FOG_PROPERTY_STRING
+  NI_FOG_PROPERTY_STRING
 }
 
 void NiFogProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_FOG_PROPERTY_FIXLINKS
+  NI_FOG_PROPERTY_FIXLINKS
 }
 
+const Type & NiFogProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiFogProperty.h b/obj/NiFogProperty.h
index e1e7d8b171aa0332fda3117049f7aa40152074ab..6900d3ffd052d28d82b699a770ad50a23e43b819 100644
--- a/obj/NiFogProperty.h
+++ b/obj/NiFogProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiFogProperty> NiFogPropertyRef;
 
 class NiFogProperty : public NI_FOG_PROPERTY_PARENT {
 public:
-	NiFogProperty();
-	~NiFogProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_FOG_PROPERTY_MEMBERS
+  NiFogProperty();
+  ~NiFogProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_FOG_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiGeomMorpherController.cpp b/obj/NiGeomMorpherController.cpp
index d820bdf98f97dd34938d019afe594c24e3160241..b243a84fbc5d604028bb74f8210c00ac6247268b 100644
--- a/obj/NiGeomMorpherController.cpp
+++ b/obj/NiGeomMorpherController.cpp
@@ -3,7 +3,7 @@ All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiGeomMorpherController.h"
 #include "NiMorphData.h"
-#include "AInterpolator.h"
+#include "NiInterpolator.h"
 
 //Definition of TYPE constant
 const Type NiGeomMorpherController::TYPE("NiGeomMorpherController", &NI_GEOM_MORPHER_CONTROLLER_PARENT::TYPE );
@@ -13,18 +13,22 @@ NiGeomMorpherController::NiGeomMorpherController() NI_GEOM_MORPHER_CONTROLLER_CO
 NiGeomMorpherController::~NiGeomMorpherController() {}
 
 void NiGeomMorpherController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_GEOM_MORPHER_CONTROLLER_READ
+  NI_GEOM_MORPHER_CONTROLLER_READ
 }
 
 void NiGeomMorpherController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_GEOM_MORPHER_CONTROLLER_WRITE
+  NI_GEOM_MORPHER_CONTROLLER_WRITE
 }
 
 string NiGeomMorpherController::asString( bool verbose ) const {
-	NI_GEOM_MORPHER_CONTROLLER_STRING
+  NI_GEOM_MORPHER_CONTROLLER_STRING
 }
 
 void NiGeomMorpherController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_GEOM_MORPHER_CONTROLLER_FIXLINKS
+  NI_GEOM_MORPHER_CONTROLLER_FIXLINKS
 }
 
+const Type & NiGeomMorpherController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiGeomMorpherController.h b/obj/NiGeomMorpherController.h
index aaaabde88820d481f9adaf09e6c2e057b0bde720..a0d63e40bf796c6fb291db5d81de3cb2080ed51e 100644
--- a/obj/NiGeomMorpherController.h
+++ b/obj/NiGeomMorpherController.h
@@ -16,16 +16,17 @@ typedef Ref<NiGeomMorpherController> NiGeomMorpherControllerRef;
 
 class NiGeomMorpherController : public NI_GEOM_MORPHER_CONTROLLER_PARENT {
 public:
-	NiGeomMorpherController();
-	~NiGeomMorpherController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_GEOM_MORPHER_CONTROLLER_MEMBERS
+  NiGeomMorpherController();
+  ~NiGeomMorpherController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_GEOM_MORPHER_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiGravity.cpp b/obj/NiGravity.cpp
index 63c962025432d386919909ccdd6bd735bbb37313..f7eea5d9ef2eb2aa509855f40992cc00ee0def87 100644
--- a/obj/NiGravity.cpp
+++ b/obj/NiGravity.cpp
@@ -11,18 +11,22 @@ NiGravity::NiGravity() NI_GRAVITY_CONSTRUCT {}
 NiGravity::~NiGravity() {}
 
 void NiGravity::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_GRAVITY_READ
+  NI_GRAVITY_READ
 }
 
 void NiGravity::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_GRAVITY_WRITE
+  NI_GRAVITY_WRITE
 }
 
 string NiGravity::asString( bool verbose ) const {
-	NI_GRAVITY_STRING
+  NI_GRAVITY_STRING
 }
 
 void NiGravity::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_GRAVITY_FIXLINKS
+  NI_GRAVITY_FIXLINKS
 }
 
+const Type & NiGravity::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiGravity.h b/obj/NiGravity.h
index f7fa054f8aebfb5eb58f2b464d4772c302eeb6e5..05c131b8e01ae661879cc16feb3b7b61bbf790e4 100644
--- a/obj/NiGravity.h
+++ b/obj/NiGravity.h
@@ -16,16 +16,17 @@ typedef Ref<NiGravity> NiGravityRef;
 
 class NiGravity : public NI_GRAVITY_PARENT {
 public:
-	NiGravity();
-	~NiGravity();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_GRAVITY_MEMBERS
+  NiGravity();
+  ~NiGravity();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_GRAVITY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiIntegerExtraData.cpp b/obj/NiIntegerExtraData.cpp
index 3626d51d9b30ea3bc2b0bb0690cd6fd966eac70b..66d9c0754c86f61ac15c3e8c74f78b9cee565e46 100644
--- a/obj/NiIntegerExtraData.cpp
+++ b/obj/NiIntegerExtraData.cpp
@@ -11,18 +11,22 @@ NiIntegerExtraData::NiIntegerExtraData() NI_INTEGER_EXTRA_DATA_CONSTRUCT {}
 NiIntegerExtraData::~NiIntegerExtraData() {}
 
 void NiIntegerExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_INTEGER_EXTRA_DATA_READ
+  NI_INTEGER_EXTRA_DATA_READ
 }
 
 void NiIntegerExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_INTEGER_EXTRA_DATA_WRITE
+  NI_INTEGER_EXTRA_DATA_WRITE
 }
 
 string NiIntegerExtraData::asString( bool verbose ) const {
-	NI_INTEGER_EXTRA_DATA_STRING
+  NI_INTEGER_EXTRA_DATA_STRING
 }
 
 void NiIntegerExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_INTEGER_EXTRA_DATA_FIXLINKS
+  NI_INTEGER_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiIntegerExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiIntegerExtraData.h b/obj/NiIntegerExtraData.h
index 649ab0186b36d88f806165d93c51de6eaa74e506..6825a69d3f67215cb232ca7be0916609e2ae2836 100644
--- a/obj/NiIntegerExtraData.h
+++ b/obj/NiIntegerExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiIntegerExtraData> NiIntegerExtraDataRef;
 
 class NiIntegerExtraData : public NI_INTEGER_EXTRA_DATA_PARENT {
 public:
-	NiIntegerExtraData();
-	~NiIntegerExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_INTEGER_EXTRA_DATA_MEMBERS
+  NiIntegerExtraData();
+  ~NiIntegerExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_INTEGER_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiIntegersExtraData.cpp b/obj/NiIntegersExtraData.cpp
index 7ea093845d93c222699855b7dc052c060bf1183c..d084a35ea7642a61f2159f877a2c4c36a73c149d 100644
--- a/obj/NiIntegersExtraData.cpp
+++ b/obj/NiIntegersExtraData.cpp
@@ -11,18 +11,22 @@ NiIntegersExtraData::NiIntegersExtraData() NI_INTEGERS_EXTRA_DATA_CONSTRUCT {}
 NiIntegersExtraData::~NiIntegersExtraData() {}
 
 void NiIntegersExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_INTEGERS_EXTRA_DATA_READ
+  NI_INTEGERS_EXTRA_DATA_READ
 }
 
 void NiIntegersExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_INTEGERS_EXTRA_DATA_WRITE
+  NI_INTEGERS_EXTRA_DATA_WRITE
 }
 
 string NiIntegersExtraData::asString( bool verbose ) const {
-	NI_INTEGERS_EXTRA_DATA_STRING
+  NI_INTEGERS_EXTRA_DATA_STRING
 }
 
 void NiIntegersExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_INTEGERS_EXTRA_DATA_FIXLINKS
+  NI_INTEGERS_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiIntegersExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiIntegersExtraData.h b/obj/NiIntegersExtraData.h
index 8c691654290c97ef2ce1a4c736de87df0de05a57..a3beb6bf586ee9db8173cefb0fff1602ad699b43 100644
--- a/obj/NiIntegersExtraData.h
+++ b/obj/NiIntegersExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiIntegersExtraData> NiIntegersExtraDataRef;
 
 class NiIntegersExtraData : public NI_INTEGERS_EXTRA_DATA_PARENT {
 public:
-	NiIntegersExtraData();
-	~NiIntegersExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_INTEGERS_EXTRA_DATA_MEMBERS
+  NiIntegersExtraData();
+  ~NiIntegersExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_INTEGERS_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiInterpolator.cpp b/obj/NiInterpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3ed20dd4b272ba241fef425488aced1e04be9fb6
--- /dev/null
+++ b/obj/NiInterpolator.cpp
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiInterpolator.h"
+
+//Definition of TYPE constant
+const Type NiInterpolator::TYPE("NiInterpolator", &NI_INTERPOLATOR_PARENT::TYPE );
+
+NiInterpolator::NiInterpolator() NI_INTERPOLATOR_CONSTRUCT {}
+
+NiInterpolator::~NiInterpolator() {}
+
+void NiInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
+  NI_INTERPOLATOR_READ
+}
+
+void NiInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+  NI_INTERPOLATOR_WRITE
+}
+
+string NiInterpolator::asString( bool verbose ) const {
+  NI_INTERPOLATOR_STRING
+}
+
+void NiInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
+  NI_INTERPOLATOR_FIXLINKS
+}
+
+const Type & NiInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiInterpolator.h b/obj/NiInterpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..0e63601436079c77e773d30f1e86f7e98adf9020
--- /dev/null
+++ b/obj/NiInterpolator.h
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIINTERPOLATOR_H_
+#define _NIINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_INTERPOLATOR_INCLUDE
+
+/*
+ * NiInterpolator
+ */
+
+class NiInterpolator;
+typedef Ref<NiInterpolator> NiInterpolatorRef;
+
+class NiInterpolator : public NI_INTERPOLATOR_PARENT {
+public:
+  NiInterpolator();
+  ~NiInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_INTERPOLATOR_MEMBERS
+};
+
+#endif
diff --git a/obj/NiKeyframeController.cpp b/obj/NiKeyframeController.cpp
index a7981352ab973d92691105fb3925d7432f0260b8..ab08ddbeb8dabb2cb2d32cdebf2b23a192ca68c4 100644
--- a/obj/NiKeyframeController.cpp
+++ b/obj/NiKeyframeController.cpp
@@ -12,18 +12,22 @@ NiKeyframeController::NiKeyframeController() NI_KEYFRAME_CONTROLLER_CONSTRUCT {}
 NiKeyframeController::~NiKeyframeController() {}
 
 void NiKeyframeController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_KEYFRAME_CONTROLLER_READ
+  NI_KEYFRAME_CONTROLLER_READ
 }
 
 void NiKeyframeController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_KEYFRAME_CONTROLLER_WRITE
+  NI_KEYFRAME_CONTROLLER_WRITE
 }
 
 string NiKeyframeController::asString( bool verbose ) const {
-	NI_KEYFRAME_CONTROLLER_STRING
+  NI_KEYFRAME_CONTROLLER_STRING
 }
 
 void NiKeyframeController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_KEYFRAME_CONTROLLER_FIXLINKS
+  NI_KEYFRAME_CONTROLLER_FIXLINKS
 }
 
+const Type & NiKeyframeController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiKeyframeController.h b/obj/NiKeyframeController.h
index d668a5a4b670b4ef13e4ae3cb467e399bed81fe5..74366c72e86cdadbd2b25812479e181fb5d2e45a 100644
--- a/obj/NiKeyframeController.h
+++ b/obj/NiKeyframeController.h
@@ -16,16 +16,17 @@ typedef Ref<NiKeyframeController> NiKeyframeControllerRef;
 
 class NiKeyframeController : public NI_KEYFRAME_CONTROLLER_PARENT {
 public:
-	NiKeyframeController();
-	~NiKeyframeController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_KEYFRAME_CONTROLLER_MEMBERS
+  NiKeyframeController();
+  ~NiKeyframeController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_KEYFRAME_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiKeyframeData.cpp b/obj/NiKeyframeData.cpp
index d8e787488711c483beef49e33e5c1fe736003bb5..81f43815830252bbcb2c8753335cb430c939cae1 100644
--- a/obj/NiKeyframeData.cpp
+++ b/obj/NiKeyframeData.cpp
@@ -11,18 +11,22 @@ NiKeyframeData::NiKeyframeData() NI_KEYFRAME_DATA_CONSTRUCT {}
 NiKeyframeData::~NiKeyframeData() {}
 
 void NiKeyframeData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_KEYFRAME_DATA_READ
+  NI_KEYFRAME_DATA_READ
 }
 
 void NiKeyframeData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_KEYFRAME_DATA_WRITE
+  NI_KEYFRAME_DATA_WRITE
 }
 
 string NiKeyframeData::asString( bool verbose ) const {
-	NI_KEYFRAME_DATA_STRING
+  NI_KEYFRAME_DATA_STRING
 }
 
 void NiKeyframeData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_KEYFRAME_DATA_FIXLINKS
+  NI_KEYFRAME_DATA_FIXLINKS
 }
 
+const Type & NiKeyframeData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiKeyframeData.h b/obj/NiKeyframeData.h
index 31232938c1382a82bf2847644797fee5233ec4e2..0bd678905c3b43f1268df40f3e7c0aa1964c5ca8 100644
--- a/obj/NiKeyframeData.h
+++ b/obj/NiKeyframeData.h
@@ -16,16 +16,17 @@ typedef Ref<NiKeyframeData> NiKeyframeDataRef;
 
 class NiKeyframeData : public NI_KEYFRAME_DATA_PARENT {
 public:
-	NiKeyframeData();
-	~NiKeyframeData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_KEYFRAME_DATA_MEMBERS
+  NiKeyframeData();
+  ~NiKeyframeData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_KEYFRAME_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiLODNode.cpp b/obj/NiLODNode.cpp
index 02b4d471bd0291002dc9a93d24c292f1f3b77850..bc146935c361640452008ba1c3e79ca5ee3ee940 100644
--- a/obj/NiLODNode.cpp
+++ b/obj/NiLODNode.cpp
@@ -12,18 +12,22 @@ NiLODNode::NiLODNode() NI_L_O_D_NODE_CONSTRUCT {}
 NiLODNode::~NiLODNode() {}
 
 void NiLODNode::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_L_O_D_NODE_READ
+  NI_L_O_D_NODE_READ
 }
 
 void NiLODNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_L_O_D_NODE_WRITE
+  NI_L_O_D_NODE_WRITE
 }
 
 string NiLODNode::asString( bool verbose ) const {
-	NI_L_O_D_NODE_STRING
+  NI_L_O_D_NODE_STRING
 }
 
 void NiLODNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_L_O_D_NODE_FIXLINKS
+  NI_L_O_D_NODE_FIXLINKS
 }
 
+const Type & NiLODNode::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiLODNode.h b/obj/NiLODNode.h
index 0dcb618d9eaa1e15f64e3ddf474a066eb998f073..bc7913a71fd5ae4fab4b6f42f5a1fd8436d9f379 100644
--- a/obj/NiLODNode.h
+++ b/obj/NiLODNode.h
@@ -16,16 +16,17 @@ typedef Ref<NiLODNode> NiLODNodeRef;
 
 class NiLODNode : public NI_L_O_D_NODE_PARENT {
 public:
-	NiLODNode();
-	~NiLODNode();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_L_O_D_NODE_MEMBERS
+  NiLODNode();
+  ~NiLODNode();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_L_O_D_NODE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiLight.cpp b/obj/NiLight.cpp
index d48b6d73b082ef5b9336e0f3d27a9b62fc5523f4..d27ecbbe39abf6f7b59abdfea48ea514e2a4cc7b 100644
--- a/obj/NiLight.cpp
+++ b/obj/NiLight.cpp
@@ -11,18 +11,22 @@ NiLight::NiLight() NI_LIGHT_CONSTRUCT {}
 NiLight::~NiLight() {}
 
 void NiLight::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_LIGHT_READ
+  NI_LIGHT_READ
 }
 
 void NiLight::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_LIGHT_WRITE
+  NI_LIGHT_WRITE
 }
 
 string NiLight::asString( bool verbose ) const {
-	NI_LIGHT_STRING
+  NI_LIGHT_STRING
 }
 
 void NiLight::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_LIGHT_FIXLINKS
+  NI_LIGHT_FIXLINKS
 }
 
+const Type & NiLight::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiLight.h b/obj/NiLight.h
index bd8a36314e9acfff381c3ea0143aa17406c358ed..28eb8b5e287859010ff6798cd088be85e3f0976f 100644
--- a/obj/NiLight.h
+++ b/obj/NiLight.h
@@ -16,16 +16,17 @@ typedef Ref<NiLight> NiLightRef;
 
 class NiLight : public NI_LIGHT_PARENT {
 public:
-	NiLight();
-	~NiLight();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_LIGHT_MEMBERS
+  NiLight();
+  ~NiLight();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_LIGHT_MEMBERS
 };
+
 #endif
diff --git a/obj/NiLightColorController.cpp b/obj/NiLightColorController.cpp
index 6c909195e9f286f1317b6a9be9c714877dd0b755..c8a05ce863017ec8618052ba4e501cc66f9d95b0 100644
--- a/obj/NiLightColorController.cpp
+++ b/obj/NiLightColorController.cpp
@@ -13,18 +13,22 @@ NiLightColorController::NiLightColorController() NI_LIGHT_COLOR_CONTROLLER_CONST
 NiLightColorController::~NiLightColorController() {}
 
 void NiLightColorController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_LIGHT_COLOR_CONTROLLER_READ
+  NI_LIGHT_COLOR_CONTROLLER_READ
 }
 
 void NiLightColorController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_LIGHT_COLOR_CONTROLLER_WRITE
+  NI_LIGHT_COLOR_CONTROLLER_WRITE
 }
 
 string NiLightColorController::asString( bool verbose ) const {
-	NI_LIGHT_COLOR_CONTROLLER_STRING
+  NI_LIGHT_COLOR_CONTROLLER_STRING
 }
 
 void NiLightColorController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_LIGHT_COLOR_CONTROLLER_FIXLINKS
+  NI_LIGHT_COLOR_CONTROLLER_FIXLINKS
 }
 
+const Type & NiLightColorController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiLightColorController.h b/obj/NiLightColorController.h
index 0f53d25925d0700d3cacf893df38b80319085daa..dc0ff09f8c888b215332d8533df9a4aa62528d89 100644
--- a/obj/NiLightColorController.h
+++ b/obj/NiLightColorController.h
@@ -16,16 +16,17 @@ typedef Ref<NiLightColorController> NiLightColorControllerRef;
 
 class NiLightColorController : public NI_LIGHT_COLOR_CONTROLLER_PARENT {
 public:
-	NiLightColorController();
-	~NiLightColorController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_LIGHT_COLOR_CONTROLLER_MEMBERS
+  NiLightColorController();
+  ~NiLightColorController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_LIGHT_COLOR_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiLightDimmerController.cpp b/obj/NiLightDimmerController.cpp
index f5d000fe690a2d21ac501a092b95d10a3f61bf7a..c0fb13f6582a598ed12ac1390bcc0f5872aff96c 100644
--- a/obj/NiLightDimmerController.cpp
+++ b/obj/NiLightDimmerController.cpp
@@ -2,7 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiLightDimmerController.h"
-#include "AInterpolator.h"
+#include "NiInterpolator.h"
 
 //Definition of TYPE constant
 const Type NiLightDimmerController::TYPE("NiLightDimmerController", &NI_LIGHT_DIMMER_CONTROLLER_PARENT::TYPE );
@@ -12,18 +12,22 @@ NiLightDimmerController::NiLightDimmerController() NI_LIGHT_DIMMER_CONTROLLER_CO
 NiLightDimmerController::~NiLightDimmerController() {}
 
 void NiLightDimmerController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_LIGHT_DIMMER_CONTROLLER_READ
+  NI_LIGHT_DIMMER_CONTROLLER_READ
 }
 
 void NiLightDimmerController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_LIGHT_DIMMER_CONTROLLER_WRITE
+  NI_LIGHT_DIMMER_CONTROLLER_WRITE
 }
 
 string NiLightDimmerController::asString( bool verbose ) const {
-	NI_LIGHT_DIMMER_CONTROLLER_STRING
+  NI_LIGHT_DIMMER_CONTROLLER_STRING
 }
 
 void NiLightDimmerController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_LIGHT_DIMMER_CONTROLLER_FIXLINKS
+  NI_LIGHT_DIMMER_CONTROLLER_FIXLINKS
 }
 
+const Type & NiLightDimmerController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiLightDimmerController.h b/obj/NiLightDimmerController.h
index ee4e0a0c9c47eb3f77e30aef64f40f7fa97c0413..3a69464a406251c772b7e9707afe148479b2e22a 100644
--- a/obj/NiLightDimmerController.h
+++ b/obj/NiLightDimmerController.h
@@ -16,16 +16,17 @@ typedef Ref<NiLightDimmerController> NiLightDimmerControllerRef;
 
 class NiLightDimmerController : public NI_LIGHT_DIMMER_CONTROLLER_PARENT {
 public:
-	NiLightDimmerController();
-	~NiLightDimmerController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_LIGHT_DIMMER_CONTROLLER_MEMBERS
+  NiLightDimmerController();
+  ~NiLightDimmerController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_LIGHT_DIMMER_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiLookAtController.cpp b/obj/NiLookAtController.cpp
index 0d5eace187016cebe5fbf58ab495b0c8991ad84d..0c7ca42139b913e2094676e7bdcdf8bc969a8f2c 100644
--- a/obj/NiLookAtController.cpp
+++ b/obj/NiLookAtController.cpp
@@ -12,18 +12,22 @@ NiLookAtController::NiLookAtController() NI_LOOK_AT_CONTROLLER_CONSTRUCT {}
 NiLookAtController::~NiLookAtController() {}
 
 void NiLookAtController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_LOOK_AT_CONTROLLER_READ
+  NI_LOOK_AT_CONTROLLER_READ
 }
 
 void NiLookAtController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_LOOK_AT_CONTROLLER_WRITE
+  NI_LOOK_AT_CONTROLLER_WRITE
 }
 
 string NiLookAtController::asString( bool verbose ) const {
-	NI_LOOK_AT_CONTROLLER_STRING
+  NI_LOOK_AT_CONTROLLER_STRING
 }
 
 void NiLookAtController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_LOOK_AT_CONTROLLER_FIXLINKS
+  NI_LOOK_AT_CONTROLLER_FIXLINKS
 }
 
+const Type & NiLookAtController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiLookAtController.h b/obj/NiLookAtController.h
index c88f0fcc87770dbccf62a1088630bdccf410b25b..4ca230d5cb3749fa8013b08c98060c99636e97a4 100644
--- a/obj/NiLookAtController.h
+++ b/obj/NiLookAtController.h
@@ -16,16 +16,17 @@ typedef Ref<NiLookAtController> NiLookAtControllerRef;
 
 class NiLookAtController : public NI_LOOK_AT_CONTROLLER_PARENT {
 public:
-	NiLookAtController();
-	~NiLookAtController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_LOOK_AT_CONTROLLER_MEMBERS
+  NiLookAtController();
+  ~NiLookAtController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_LOOK_AT_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiLookAtInterpolator.cpp b/obj/NiLookAtInterpolator.cpp
index 6593f9ca9f3db5238c8c644fda1bb138de36fc1f..b4f5660cd5bbb3f310a28942bba8dcd484b70a0e 100644
--- a/obj/NiLookAtInterpolator.cpp
+++ b/obj/NiLookAtInterpolator.cpp
@@ -5,6 +5,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #include "NiNode.h"
 #include "NiPoint3Interpolator.h"
 #include "NiFloatInterpolator.h"
+#include "NiFloatInterpolator.h"
 
 //Definition of TYPE constant
 const Type NiLookAtInterpolator::TYPE("NiLookAtInterpolator", &NI_LOOK_AT_INTERPOLATOR_PARENT::TYPE );
@@ -14,18 +15,22 @@ NiLookAtInterpolator::NiLookAtInterpolator() NI_LOOK_AT_INTERPOLATOR_CONSTRUCT {
 NiLookAtInterpolator::~NiLookAtInterpolator() {}
 
 void NiLookAtInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_LOOK_AT_INTERPOLATOR_READ
+  NI_LOOK_AT_INTERPOLATOR_READ
 }
 
 void NiLookAtInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_LOOK_AT_INTERPOLATOR_WRITE
+  NI_LOOK_AT_INTERPOLATOR_WRITE
 }
 
 string NiLookAtInterpolator::asString( bool verbose ) const {
-	NI_LOOK_AT_INTERPOLATOR_STRING
+  NI_LOOK_AT_INTERPOLATOR_STRING
 }
 
 void NiLookAtInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_LOOK_AT_INTERPOLATOR_FIXLINKS
+  NI_LOOK_AT_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiLookAtInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiLookAtInterpolator.h b/obj/NiLookAtInterpolator.h
index 4b5232efcfd93d014eb57db77d2673666284f5ec..a4c7db0db53b227358e0a07a1f8ea23972662638 100644
--- a/obj/NiLookAtInterpolator.h
+++ b/obj/NiLookAtInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiLookAtInterpolator> NiLookAtInterpolatorRef;
 
 class NiLookAtInterpolator : public NI_LOOK_AT_INTERPOLATOR_PARENT {
 public:
-	NiLookAtInterpolator();
-	~NiLookAtInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_LOOK_AT_INTERPOLATOR_MEMBERS
+  NiLookAtInterpolator();
+  ~NiLookAtInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_LOOK_AT_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiMaterialColorController.cpp b/obj/NiMaterialColorController.cpp
index 9cd0d4a221dbf9cec0d2b24c304da22d39ebefe0..bb5f9deea4cfad1d84a1beb49f4eec1d709dc155 100644
--- a/obj/NiMaterialColorController.cpp
+++ b/obj/NiMaterialColorController.cpp
@@ -2,7 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiMaterialColorController.h"
-#include "NiColorData.h"
+#include "NiPosData.h"
 
 //Definition of TYPE constant
 const Type NiMaterialColorController::TYPE("NiMaterialColorController", &NI_MATERIAL_COLOR_CONTROLLER_PARENT::TYPE );
@@ -12,18 +12,22 @@ NiMaterialColorController::NiMaterialColorController() NI_MATERIAL_COLOR_CONTROL
 NiMaterialColorController::~NiMaterialColorController() {}
 
 void NiMaterialColorController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_MATERIAL_COLOR_CONTROLLER_READ
+  NI_MATERIAL_COLOR_CONTROLLER_READ
 }
 
 void NiMaterialColorController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_MATERIAL_COLOR_CONTROLLER_WRITE
+  NI_MATERIAL_COLOR_CONTROLLER_WRITE
 }
 
 string NiMaterialColorController::asString( bool verbose ) const {
-	NI_MATERIAL_COLOR_CONTROLLER_STRING
+  NI_MATERIAL_COLOR_CONTROLLER_STRING
 }
 
 void NiMaterialColorController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_MATERIAL_COLOR_CONTROLLER_FIXLINKS
+  NI_MATERIAL_COLOR_CONTROLLER_FIXLINKS
 }
 
+const Type & NiMaterialColorController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiMaterialColorController.h b/obj/NiMaterialColorController.h
index 87c754e0b2deee2139107d0016c847c69eabe133..25d11d9a2e2f70f528643e438da2bf2af0f4574c 100644
--- a/obj/NiMaterialColorController.h
+++ b/obj/NiMaterialColorController.h
@@ -16,16 +16,17 @@ typedef Ref<NiMaterialColorController> NiMaterialColorControllerRef;
 
 class NiMaterialColorController : public NI_MATERIAL_COLOR_CONTROLLER_PARENT {
 public:
-	NiMaterialColorController();
-	~NiMaterialColorController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_MATERIAL_COLOR_CONTROLLER_MEMBERS
+  NiMaterialColorController();
+  ~NiMaterialColorController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_MATERIAL_COLOR_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiMaterialProperty.cpp b/obj/NiMaterialProperty.cpp
index a3fa3d5473fd09413d8de8a850ce283585a266bb..c0eb9f1aa86bca512cfbeac3a5a47e47e66bba33 100644
--- a/obj/NiMaterialProperty.cpp
+++ b/obj/NiMaterialProperty.cpp
@@ -11,18 +11,22 @@ NiMaterialProperty::NiMaterialProperty() NI_MATERIAL_PROPERTY_CONSTRUCT {}
 NiMaterialProperty::~NiMaterialProperty() {}
 
 void NiMaterialProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_MATERIAL_PROPERTY_READ
+  NI_MATERIAL_PROPERTY_READ
 }
 
 void NiMaterialProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_MATERIAL_PROPERTY_WRITE
+  NI_MATERIAL_PROPERTY_WRITE
 }
 
 string NiMaterialProperty::asString( bool verbose ) const {
-	NI_MATERIAL_PROPERTY_STRING
+  NI_MATERIAL_PROPERTY_STRING
 }
 
 void NiMaterialProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_MATERIAL_PROPERTY_FIXLINKS
+  NI_MATERIAL_PROPERTY_FIXLINKS
 }
 
+const Type & NiMaterialProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiMaterialProperty.h b/obj/NiMaterialProperty.h
index ce098d1c33ed3ffc5ce9cdb3e1f1245e6f51a591..10141d9409daf3940853f318f3e64bc2929f405c 100644
--- a/obj/NiMaterialProperty.h
+++ b/obj/NiMaterialProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiMaterialProperty> NiMaterialPropertyRef;
 
 class NiMaterialProperty : public NI_MATERIAL_PROPERTY_PARENT {
 public:
-	NiMaterialProperty();
-	~NiMaterialProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_MATERIAL_PROPERTY_MEMBERS
+  NiMaterialProperty();
+  ~NiMaterialProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_MATERIAL_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiMeshPSysData.cpp b/obj/NiMeshPSysData.cpp
index 734ce96ebabd291325296eedc0f9ca4a7a86d0d4..c5f1f7ba207e0efae04647f02d8b272443ac7a51 100644
--- a/obj/NiMeshPSysData.cpp
+++ b/obj/NiMeshPSysData.cpp
@@ -3,6 +3,7 @@ All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiMeshPSysData.h"
 #include "AParticleModifier.h"
+#include "AParticleModifier.h"
 #include "NiNode.h"
 
 //Definition of TYPE constant
@@ -13,18 +14,22 @@ NiMeshPSysData::NiMeshPSysData() NI_MESH_P_SYS_DATA_CONSTRUCT {}
 NiMeshPSysData::~NiMeshPSysData() {}
 
 void NiMeshPSysData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_MESH_P_SYS_DATA_READ
+  NI_MESH_P_SYS_DATA_READ
 }
 
 void NiMeshPSysData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_MESH_P_SYS_DATA_WRITE
+  NI_MESH_P_SYS_DATA_WRITE
 }
 
 string NiMeshPSysData::asString( bool verbose ) const {
-	NI_MESH_P_SYS_DATA_STRING
+  NI_MESH_P_SYS_DATA_STRING
 }
 
 void NiMeshPSysData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_MESH_P_SYS_DATA_FIXLINKS
+  NI_MESH_P_SYS_DATA_FIXLINKS
 }
 
+const Type & NiMeshPSysData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiMeshPSysData.h b/obj/NiMeshPSysData.h
index 025825367e70336133459f61b7e5e3bf74b4609f..bc21f854559a75295f3b190cc1b1953065c60ee1 100644
--- a/obj/NiMeshPSysData.h
+++ b/obj/NiMeshPSysData.h
@@ -16,16 +16,17 @@ typedef Ref<NiMeshPSysData> NiMeshPSysDataRef;
 
 class NiMeshPSysData : public NI_MESH_P_SYS_DATA_PARENT {
 public:
-	NiMeshPSysData();
-	~NiMeshPSysData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_MESH_P_SYS_DATA_MEMBERS
+  NiMeshPSysData();
+  ~NiMeshPSysData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_MESH_P_SYS_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiMeshParticleSystem.cpp b/obj/NiMeshParticleSystem.cpp
index b500461293e6ec14b73b26f40c805f9c97a57b28..de5c97e1fceaee25b11fb39760b65eccac448706 100644
--- a/obj/NiMeshParticleSystem.cpp
+++ b/obj/NiMeshParticleSystem.cpp
@@ -11,18 +11,22 @@ NiMeshParticleSystem::NiMeshParticleSystem() NI_MESH_PARTICLE_SYSTEM_CONSTRUCT {
 NiMeshParticleSystem::~NiMeshParticleSystem() {}
 
 void NiMeshParticleSystem::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_MESH_PARTICLE_SYSTEM_READ
+  NI_MESH_PARTICLE_SYSTEM_READ
 }
 
 void NiMeshParticleSystem::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_MESH_PARTICLE_SYSTEM_WRITE
+  NI_MESH_PARTICLE_SYSTEM_WRITE
 }
 
 string NiMeshParticleSystem::asString( bool verbose ) const {
-	NI_MESH_PARTICLE_SYSTEM_STRING
+  NI_MESH_PARTICLE_SYSTEM_STRING
 }
 
 void NiMeshParticleSystem::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_MESH_PARTICLE_SYSTEM_FIXLINKS
+  NI_MESH_PARTICLE_SYSTEM_FIXLINKS
 }
 
+const Type & NiMeshParticleSystem::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiMeshParticleSystem.h b/obj/NiMeshParticleSystem.h
index 3e4bc50fc6cd1315e9d9a13e9ee2181fe8bafde2..faa88934c9303766068467ed7299c42ea2ea05ef 100644
--- a/obj/NiMeshParticleSystem.h
+++ b/obj/NiMeshParticleSystem.h
@@ -16,16 +16,17 @@ typedef Ref<NiMeshParticleSystem> NiMeshParticleSystemRef;
 
 class NiMeshParticleSystem : public NI_MESH_PARTICLE_SYSTEM_PARENT {
 public:
-	NiMeshParticleSystem();
-	~NiMeshParticleSystem();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_MESH_PARTICLE_SYSTEM_MEMBERS
+  NiMeshParticleSystem();
+  ~NiMeshParticleSystem();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_MESH_PARTICLE_SYSTEM_MEMBERS
 };
+
 #endif
diff --git a/obj/NiMorphData.cpp b/obj/NiMorphData.cpp
index 0c9ec92ddeaee9deb686e0f3c22f06736e74a647..53b6816cdf62ff90c870ecd276fd718a6dead239 100644
--- a/obj/NiMorphData.cpp
+++ b/obj/NiMorphData.cpp
@@ -11,18 +11,22 @@ NiMorphData::NiMorphData() NI_MORPH_DATA_CONSTRUCT {}
 NiMorphData::~NiMorphData() {}
 
 void NiMorphData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_MORPH_DATA_READ
+  NI_MORPH_DATA_READ
 }
 
 void NiMorphData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_MORPH_DATA_WRITE
+  NI_MORPH_DATA_WRITE
 }
 
 string NiMorphData::asString( bool verbose ) const {
-	NI_MORPH_DATA_STRING
+  NI_MORPH_DATA_STRING
 }
 
 void NiMorphData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_MORPH_DATA_FIXLINKS
+  NI_MORPH_DATA_FIXLINKS
 }
 
+const Type & NiMorphData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiMorphData.h b/obj/NiMorphData.h
index 09e5eb28f7919dec2f3e86d6891d9028861ec39e..c1c78586f4ab04cdfcbaf08c4a88aeb15a7ccad2 100644
--- a/obj/NiMorphData.h
+++ b/obj/NiMorphData.h
@@ -16,16 +16,17 @@ typedef Ref<NiMorphData> NiMorphDataRef;
 
 class NiMorphData : public NI_MORPH_DATA_PARENT {
 public:
-	NiMorphData();
-	~NiMorphData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_MORPH_DATA_MEMBERS
+  NiMorphData();
+  ~NiMorphData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_MORPH_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiMultiTargetTransformController.cpp b/obj/NiMultiTargetTransformController.cpp
index 31d858acd73449a407727ca8dcc0ab2cd7ccf4f6..6dbfa704534ae9760a04cf70f74fc768e7b29039 100644
--- a/obj/NiMultiTargetTransformController.cpp
+++ b/obj/NiMultiTargetTransformController.cpp
@@ -12,18 +12,22 @@ NiMultiTargetTransformController::NiMultiTargetTransformController() NI_MULTI_TA
 NiMultiTargetTransformController::~NiMultiTargetTransformController() {}
 
 void NiMultiTargetTransformController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_MULTI_TARGET_TRANSFORM_CONTROLLER_READ
+  NI_MULTI_TARGET_TRANSFORM_CONTROLLER_READ
 }
 
 void NiMultiTargetTransformController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_MULTI_TARGET_TRANSFORM_CONTROLLER_WRITE
+  NI_MULTI_TARGET_TRANSFORM_CONTROLLER_WRITE
 }
 
 string NiMultiTargetTransformController::asString( bool verbose ) const {
-	NI_MULTI_TARGET_TRANSFORM_CONTROLLER_STRING
+  NI_MULTI_TARGET_TRANSFORM_CONTROLLER_STRING
 }
 
 void NiMultiTargetTransformController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_MULTI_TARGET_TRANSFORM_CONTROLLER_FIXLINKS
+  NI_MULTI_TARGET_TRANSFORM_CONTROLLER_FIXLINKS
 }
 
+const Type & NiMultiTargetTransformController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiMultiTargetTransformController.h b/obj/NiMultiTargetTransformController.h
index 333cd7f4a54c0149821819296539bb8757bdf0a2..f0ca9f5a70c137ac906c9eee0d8a5443f1ec711f 100644
--- a/obj/NiMultiTargetTransformController.h
+++ b/obj/NiMultiTargetTransformController.h
@@ -16,16 +16,17 @@ typedef Ref<NiMultiTargetTransformController> NiMultiTargetTransformControllerRe
 
 class NiMultiTargetTransformController : public NI_MULTI_TARGET_TRANSFORM_CONTROLLER_PARENT {
 public:
-	NiMultiTargetTransformController();
-	~NiMultiTargetTransformController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_MULTI_TARGET_TRANSFORM_CONTROLLER_MEMBERS
+  NiMultiTargetTransformController();
+  ~NiMultiTargetTransformController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_MULTI_TARGET_TRANSFORM_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiNode.cpp b/obj/NiNode.cpp
index 071c71bd9fe58844e47a65dde49677039b61985d..358c6ab62f9005c884b403c75bd789551492f5cf 100644
--- a/obj/NiNode.cpp
+++ b/obj/NiNode.cpp
@@ -2,6 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiNode.h"
+#include "NiAVObject.h"
 #include "NiDynamicEffect.h"
 
 //Definition of TYPE constant
@@ -12,17 +13,22 @@ NiNode::NiNode() NI_NODE_CONSTRUCT {}
 NiNode::~NiNode() {}
 
 void NiNode::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_NODE_READ
+  NI_NODE_READ
 }
 
 void NiNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_NODE_WRITE
+  NI_NODE_WRITE
 }
 
 string NiNode::asString( bool verbose ) const {
-	NI_NODE_STRING
+  NI_NODE_STRING
 }
 
 void NiNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_NODE_FIXLINKS
+  NI_NODE_FIXLINKS
 }
+
+const Type & NiNode::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiNode.h b/obj/NiNode.h
index b05bb4d586bd9fe5fca8e477bafe775c420378ed..d3db19114c389176ae5d24cbef976da84eb9a3e5 100644
--- a/obj/NiNode.h
+++ b/obj/NiNode.h
@@ -8,7 +8,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #include NI_NODE_INCLUDE
 
 /*
- * NiNode - A basic scene graph node.  Can have children.
+ * NiNode
  */
 
 class NiNode;
@@ -16,19 +16,17 @@ typedef Ref<NiNode> NiNodeRef;
 
 class NiNode : public NI_NODE_PARENT {
 public:
-	NiNode();
-	~NiNode();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-
-	//TODO:  Add functions to get and set children and store a list of NiObjectNET references
-private:
-	NI_NODE_MEMBERS
+  NiNode();
+  ~NiNode();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_NODE_MEMBERS
 };
 
-#endif
\ No newline at end of file
+#endif
diff --git a/obj/NiPSysAgeDeathModifier.cpp b/obj/NiPSysAgeDeathModifier.cpp
index c3aabdc792b99dcb06a6b35e3c4decd084336751..fd702f07aeb89064bbb0323df86c7e9900530e38 100644
--- a/obj/NiPSysAgeDeathModifier.cpp
+++ b/obj/NiPSysAgeDeathModifier.cpp
@@ -12,18 +12,22 @@ NiPSysAgeDeathModifier::NiPSysAgeDeathModifier() NI_P_SYS_AGE_DEATH_MODIFIER_CON
 NiPSysAgeDeathModifier::~NiPSysAgeDeathModifier() {}
 
 void NiPSysAgeDeathModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_AGE_DEATH_MODIFIER_READ
+  NI_P_SYS_AGE_DEATH_MODIFIER_READ
 }
 
 void NiPSysAgeDeathModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_AGE_DEATH_MODIFIER_WRITE
+  NI_P_SYS_AGE_DEATH_MODIFIER_WRITE
 }
 
 string NiPSysAgeDeathModifier::asString( bool verbose ) const {
-	NI_P_SYS_AGE_DEATH_MODIFIER_STRING
+  NI_P_SYS_AGE_DEATH_MODIFIER_STRING
 }
 
 void NiPSysAgeDeathModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_AGE_DEATH_MODIFIER_FIXLINKS
+  NI_P_SYS_AGE_DEATH_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysAgeDeathModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysAgeDeathModifier.h b/obj/NiPSysAgeDeathModifier.h
index bce0f31306d90a19f0fd4926d4f94e4bd71fe64b..04c9e24555538eeee4024cd47a288f99c7d0d5e0 100644
--- a/obj/NiPSysAgeDeathModifier.h
+++ b/obj/NiPSysAgeDeathModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysAgeDeathModifier> NiPSysAgeDeathModifierRef;
 
 class NiPSysAgeDeathModifier : public NI_P_SYS_AGE_DEATH_MODIFIER_PARENT {
 public:
-	NiPSysAgeDeathModifier();
-	~NiPSysAgeDeathModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_AGE_DEATH_MODIFIER_MEMBERS
+  NiPSysAgeDeathModifier();
+  ~NiPSysAgeDeathModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_AGE_DEATH_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysBombModifier.cpp b/obj/NiPSysBombModifier.cpp
index 28771d4a731c7a035fa3b1ad1fc16c9bf7f185fb..a0e49b533c52eaeebd94c00150d5adabb0a10e32 100644
--- a/obj/NiPSysBombModifier.cpp
+++ b/obj/NiPSysBombModifier.cpp
@@ -12,18 +12,22 @@ NiPSysBombModifier::NiPSysBombModifier() NI_P_SYS_BOMB_MODIFIER_CONSTRUCT {}
 NiPSysBombModifier::~NiPSysBombModifier() {}
 
 void NiPSysBombModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_BOMB_MODIFIER_READ
+  NI_P_SYS_BOMB_MODIFIER_READ
 }
 
 void NiPSysBombModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_BOMB_MODIFIER_WRITE
+  NI_P_SYS_BOMB_MODIFIER_WRITE
 }
 
 string NiPSysBombModifier::asString( bool verbose ) const {
-	NI_P_SYS_BOMB_MODIFIER_STRING
+  NI_P_SYS_BOMB_MODIFIER_STRING
 }
 
 void NiPSysBombModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_BOMB_MODIFIER_FIXLINKS
+  NI_P_SYS_BOMB_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysBombModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysBombModifier.h b/obj/NiPSysBombModifier.h
index 87306ce48691540fd19dda2526f1ff2ca5e0152c..6b0fb601dc03eee250d06aaab9d1cb7f0bea1240 100644
--- a/obj/NiPSysBombModifier.h
+++ b/obj/NiPSysBombModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysBombModifier> NiPSysBombModifierRef;
 
 class NiPSysBombModifier : public NI_P_SYS_BOMB_MODIFIER_PARENT {
 public:
-	NiPSysBombModifier();
-	~NiPSysBombModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_BOMB_MODIFIER_MEMBERS
+  NiPSysBombModifier();
+  ~NiPSysBombModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_BOMB_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysBoundUpdateModifier.cpp b/obj/NiPSysBoundUpdateModifier.cpp
index 60e068d3e0ab8e50e576f74aa0c40f6dca2fe51e..d34e7447add416b6d033d8cd7116b6dc644e6b47 100644
--- a/obj/NiPSysBoundUpdateModifier.cpp
+++ b/obj/NiPSysBoundUpdateModifier.cpp
@@ -11,18 +11,22 @@ NiPSysBoundUpdateModifier::NiPSysBoundUpdateModifier() NI_P_SYS_BOUND_UPDATE_MOD
 NiPSysBoundUpdateModifier::~NiPSysBoundUpdateModifier() {}
 
 void NiPSysBoundUpdateModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_BOUND_UPDATE_MODIFIER_READ
+  NI_P_SYS_BOUND_UPDATE_MODIFIER_READ
 }
 
 void NiPSysBoundUpdateModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_BOUND_UPDATE_MODIFIER_WRITE
+  NI_P_SYS_BOUND_UPDATE_MODIFIER_WRITE
 }
 
 string NiPSysBoundUpdateModifier::asString( bool verbose ) const {
-	NI_P_SYS_BOUND_UPDATE_MODIFIER_STRING
+  NI_P_SYS_BOUND_UPDATE_MODIFIER_STRING
 }
 
 void NiPSysBoundUpdateModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_BOUND_UPDATE_MODIFIER_FIXLINKS
+  NI_P_SYS_BOUND_UPDATE_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysBoundUpdateModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysBoundUpdateModifier.h b/obj/NiPSysBoundUpdateModifier.h
index da98d7c68f8eeb326667638fb17f5dbdc09eea8f..77ac0d2372a2f59dc960197b7bc14af4ab587869 100644
--- a/obj/NiPSysBoundUpdateModifier.h
+++ b/obj/NiPSysBoundUpdateModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysBoundUpdateModifier> NiPSysBoundUpdateModifierRef;
 
 class NiPSysBoundUpdateModifier : public NI_P_SYS_BOUND_UPDATE_MODIFIER_PARENT {
 public:
-	NiPSysBoundUpdateModifier();
-	~NiPSysBoundUpdateModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_BOUND_UPDATE_MODIFIER_MEMBERS
+  NiPSysBoundUpdateModifier();
+  ~NiPSysBoundUpdateModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_BOUND_UPDATE_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysBoxEmitter.cpp b/obj/NiPSysBoxEmitter.cpp
index 5241c2fda89f5612c10e5308c6e87c2deb11e719..153b5c87c2d4a339d8da0a315423fd784bf03d46 100644
--- a/obj/NiPSysBoxEmitter.cpp
+++ b/obj/NiPSysBoxEmitter.cpp
@@ -11,18 +11,22 @@ NiPSysBoxEmitter::NiPSysBoxEmitter() NI_P_SYS_BOX_EMITTER_CONSTRUCT {}
 NiPSysBoxEmitter::~NiPSysBoxEmitter() {}
 
 void NiPSysBoxEmitter::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_BOX_EMITTER_READ
+  NI_P_SYS_BOX_EMITTER_READ
 }
 
 void NiPSysBoxEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_BOX_EMITTER_WRITE
+  NI_P_SYS_BOX_EMITTER_WRITE
 }
 
 string NiPSysBoxEmitter::asString( bool verbose ) const {
-	NI_P_SYS_BOX_EMITTER_STRING
+  NI_P_SYS_BOX_EMITTER_STRING
 }
 
 void NiPSysBoxEmitter::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_BOX_EMITTER_FIXLINKS
+  NI_P_SYS_BOX_EMITTER_FIXLINKS
 }
 
+const Type & NiPSysBoxEmitter::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysBoxEmitter.h b/obj/NiPSysBoxEmitter.h
index d6f731a45d7d6d006e20f8811dc1512e37eaa729..d92bd9b072ae31529e5b3518d8d6cbc30e65d328 100644
--- a/obj/NiPSysBoxEmitter.h
+++ b/obj/NiPSysBoxEmitter.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysBoxEmitter> NiPSysBoxEmitterRef;
 
 class NiPSysBoxEmitter : public NI_P_SYS_BOX_EMITTER_PARENT {
 public:
-	NiPSysBoxEmitter();
-	~NiPSysBoxEmitter();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_BOX_EMITTER_MEMBERS
+  NiPSysBoxEmitter();
+  ~NiPSysBoxEmitter();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_BOX_EMITTER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysColliderManager.cpp b/obj/NiPSysColliderManager.cpp
index cdb70b3a3fa481a2ac08766ab512d2b01547a60a..f3b7b0ca8fd43ae3433cad83f392364112285531 100644
--- a/obj/NiPSysColliderManager.cpp
+++ b/obj/NiPSysColliderManager.cpp
@@ -12,18 +12,22 @@ NiPSysColliderManager::NiPSysColliderManager() NI_P_SYS_COLLIDER_MANAGER_CONSTRU
 NiPSysColliderManager::~NiPSysColliderManager() {}
 
 void NiPSysColliderManager::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_COLLIDER_MANAGER_READ
+  NI_P_SYS_COLLIDER_MANAGER_READ
 }
 
 void NiPSysColliderManager::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_COLLIDER_MANAGER_WRITE
+  NI_P_SYS_COLLIDER_MANAGER_WRITE
 }
 
 string NiPSysColliderManager::asString( bool verbose ) const {
-	NI_P_SYS_COLLIDER_MANAGER_STRING
+  NI_P_SYS_COLLIDER_MANAGER_STRING
 }
 
 void NiPSysColliderManager::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_COLLIDER_MANAGER_FIXLINKS
+  NI_P_SYS_COLLIDER_MANAGER_FIXLINKS
 }
 
+const Type & NiPSysColliderManager::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysColliderManager.h b/obj/NiPSysColliderManager.h
index 10062ef87124d4136618d01617694230380af419..ad9fdd33709239e72615315c91340a93feabcabd 100644
--- a/obj/NiPSysColliderManager.h
+++ b/obj/NiPSysColliderManager.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysColliderManager> NiPSysColliderManagerRef;
 
 class NiPSysColliderManager : public NI_P_SYS_COLLIDER_MANAGER_PARENT {
 public:
-	NiPSysColliderManager();
-	~NiPSysColliderManager();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_COLLIDER_MANAGER_MEMBERS
+  NiPSysColliderManager();
+  ~NiPSysColliderManager();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_COLLIDER_MANAGER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysColorModifier.cpp b/obj/NiPSysColorModifier.cpp
index 8e95aa013a6ad8da9be0253f69db3fd00cda6334..418332d19b93436dbb02f3a42ad53e6bd6015de0 100644
--- a/obj/NiPSysColorModifier.cpp
+++ b/obj/NiPSysColorModifier.cpp
@@ -2,7 +2,6 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiPSysColorModifier.h"
-#include "NiNode.h"
 #include "NiColorData.h"
 
 //Definition of TYPE constant
@@ -13,18 +12,22 @@ NiPSysColorModifier::NiPSysColorModifier() NI_P_SYS_COLOR_MODIFIER_CONSTRUCT {}
 NiPSysColorModifier::~NiPSysColorModifier() {}
 
 void NiPSysColorModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_COLOR_MODIFIER_READ
+  NI_P_SYS_COLOR_MODIFIER_READ
 }
 
 void NiPSysColorModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_COLOR_MODIFIER_WRITE
+  NI_P_SYS_COLOR_MODIFIER_WRITE
 }
 
 string NiPSysColorModifier::asString( bool verbose ) const {
-	NI_P_SYS_COLOR_MODIFIER_STRING
+  NI_P_SYS_COLOR_MODIFIER_STRING
 }
 
 void NiPSysColorModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_COLOR_MODIFIER_FIXLINKS
+  NI_P_SYS_COLOR_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysColorModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysColorModifier.h b/obj/NiPSysColorModifier.h
index 5dfb188802b3293343682bee993167b3ecc533bf..1a17930f498edba594307eea0768ee62405459cf 100644
--- a/obj/NiPSysColorModifier.h
+++ b/obj/NiPSysColorModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysColorModifier> NiPSysColorModifierRef;
 
 class NiPSysColorModifier : public NI_P_SYS_COLOR_MODIFIER_PARENT {
 public:
-	NiPSysColorModifier();
-	~NiPSysColorModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_COLOR_MODIFIER_MEMBERS
+  NiPSysColorModifier();
+  ~NiPSysColorModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_COLOR_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysCylinderEmitter.cpp b/obj/NiPSysCylinderEmitter.cpp
index 58f9d3c894f96734ea6419e8a3baffb3c3a19cb6..2af131071854eff1f342dd5dcf38b9e48685fa0e 100644
--- a/obj/NiPSysCylinderEmitter.cpp
+++ b/obj/NiPSysCylinderEmitter.cpp
@@ -11,18 +11,22 @@ NiPSysCylinderEmitter::NiPSysCylinderEmitter() NI_P_SYS_CYLINDER_EMITTER_CONSTRU
 NiPSysCylinderEmitter::~NiPSysCylinderEmitter() {}
 
 void NiPSysCylinderEmitter::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_CYLINDER_EMITTER_READ
+  NI_P_SYS_CYLINDER_EMITTER_READ
 }
 
 void NiPSysCylinderEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_CYLINDER_EMITTER_WRITE
+  NI_P_SYS_CYLINDER_EMITTER_WRITE
 }
 
 string NiPSysCylinderEmitter::asString( bool verbose ) const {
-	NI_P_SYS_CYLINDER_EMITTER_STRING
+  NI_P_SYS_CYLINDER_EMITTER_STRING
 }
 
 void NiPSysCylinderEmitter::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_CYLINDER_EMITTER_FIXLINKS
+  NI_P_SYS_CYLINDER_EMITTER_FIXLINKS
 }
 
+const Type & NiPSysCylinderEmitter::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysCylinderEmitter.h b/obj/NiPSysCylinderEmitter.h
index 5e329abb245deada25b8b69e58877d040f0ba67c..e9dbf125d70b8ef9ccbcb0acf248a6a8f7f3f731 100644
--- a/obj/NiPSysCylinderEmitter.h
+++ b/obj/NiPSysCylinderEmitter.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysCylinderEmitter> NiPSysCylinderEmitterRef;
 
 class NiPSysCylinderEmitter : public NI_P_SYS_CYLINDER_EMITTER_PARENT {
 public:
-	NiPSysCylinderEmitter();
-	~NiPSysCylinderEmitter();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_CYLINDER_EMITTER_MEMBERS
+  NiPSysCylinderEmitter();
+  ~NiPSysCylinderEmitter();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_CYLINDER_EMITTER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysData.cpp b/obj/NiPSysData.cpp
index df14c5a985a57e3cb4f9d8cc8b22029b2e1d3e48..6bc5fecf096a02686125a36087c1e44e6ee7132e 100644
--- a/obj/NiPSysData.cpp
+++ b/obj/NiPSysData.cpp
@@ -11,18 +11,22 @@ NiPSysData::NiPSysData() NI_P_SYS_DATA_CONSTRUCT {}
 NiPSysData::~NiPSysData() {}
 
 void NiPSysData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_DATA_READ
+  NI_P_SYS_DATA_READ
 }
 
 void NiPSysData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_DATA_WRITE
+  NI_P_SYS_DATA_WRITE
 }
 
 string NiPSysData::asString( bool verbose ) const {
-	NI_P_SYS_DATA_STRING
+  NI_P_SYS_DATA_STRING
 }
 
 void NiPSysData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_DATA_FIXLINKS
+  NI_P_SYS_DATA_FIXLINKS
 }
 
+const Type & NiPSysData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysData.h b/obj/NiPSysData.h
index 8d8eb90b77d44f8dcf0d83c5b702a36851bd59d5..074caa20a362ceffd9326193e547265bcc706551 100644
--- a/obj/NiPSysData.h
+++ b/obj/NiPSysData.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysData> NiPSysDataRef;
 
 class NiPSysData : public NI_P_SYS_DATA_PARENT {
 public:
-	NiPSysData();
-	~NiPSysData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_DATA_MEMBERS
+  NiPSysData();
+  ~NiPSysData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysDragModifier.cpp b/obj/NiPSysDragModifier.cpp
index eab96c68b495460e08d8b5266ad1851650f2d87d..29e369aa1d05aa5b6aae78a84311d59a76df6564 100644
--- a/obj/NiPSysDragModifier.cpp
+++ b/obj/NiPSysDragModifier.cpp
@@ -2,6 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiPSysDragModifier.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type NiPSysDragModifier::TYPE("NiPSysDragModifier", &NI_P_SYS_DRAG_MODIFIER_PARENT::TYPE );
@@ -11,18 +12,22 @@ NiPSysDragModifier::NiPSysDragModifier() NI_P_SYS_DRAG_MODIFIER_CONSTRUCT {}
 NiPSysDragModifier::~NiPSysDragModifier() {}
 
 void NiPSysDragModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_DRAG_MODIFIER_READ
+  NI_P_SYS_DRAG_MODIFIER_READ
 }
 
 void NiPSysDragModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_DRAG_MODIFIER_WRITE
+  NI_P_SYS_DRAG_MODIFIER_WRITE
 }
 
 string NiPSysDragModifier::asString( bool verbose ) const {
-	NI_P_SYS_DRAG_MODIFIER_STRING
+  NI_P_SYS_DRAG_MODIFIER_STRING
 }
 
 void NiPSysDragModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_DRAG_MODIFIER_FIXLINKS
+  NI_P_SYS_DRAG_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysDragModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysDragModifier.h b/obj/NiPSysDragModifier.h
index 263992b37348475d2b7d3753728a91cf50753415..74ff091662eecc195f0cfa08100d73e14881a0cc 100644
--- a/obj/NiPSysDragModifier.h
+++ b/obj/NiPSysDragModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysDragModifier> NiPSysDragModifierRef;
 
 class NiPSysDragModifier : public NI_P_SYS_DRAG_MODIFIER_PARENT {
 public:
-	NiPSysDragModifier();
-	~NiPSysDragModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_DRAG_MODIFIER_MEMBERS
+  NiPSysDragModifier();
+  ~NiPSysDragModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_DRAG_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysEmitter.cpp b/obj/NiPSysEmitter.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..48615f37559e78b56dffc1d9528ef7ebb3bfcc6e
--- /dev/null
+++ b/obj/NiPSysEmitter.cpp
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysEmitter.h"
+
+//Definition of TYPE constant
+const Type NiPSysEmitter::TYPE("NiPSysEmitter", &NI_P_SYS_EMITTER_PARENT::TYPE );
+
+NiPSysEmitter::NiPSysEmitter() NI_P_SYS_EMITTER_CONSTRUCT {}
+
+NiPSysEmitter::~NiPSysEmitter() {}
+
+void NiPSysEmitter::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
+  NI_P_SYS_EMITTER_READ
+}
+
+void NiPSysEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+  NI_P_SYS_EMITTER_WRITE
+}
+
+string NiPSysEmitter::asString( bool verbose ) const {
+  NI_P_SYS_EMITTER_STRING
+}
+
+void NiPSysEmitter::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
+  NI_P_SYS_EMITTER_FIXLINKS
+}
+
+const Type & NiPSysEmitter::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysEmitter.h b/obj/NiPSysEmitter.h
new file mode 100644
index 0000000000000000000000000000000000000000..d426a0b1c9bdd636f2f8e4dbf69988776aa357cf
--- /dev/null
+++ b/obj/NiPSysEmitter.h
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSEMITTER_H_
+#define _NIPSYSEMITTER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_EMITTER_INCLUDE
+
+/*
+ * NiPSysEmitter
+ */
+
+class NiPSysEmitter;
+typedef Ref<NiPSysEmitter> NiPSysEmitterRef;
+
+class NiPSysEmitter : public NI_P_SYS_EMITTER_PARENT {
+public:
+  NiPSysEmitter();
+  ~NiPSysEmitter();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_EMITTER_MEMBERS
+};
+
+#endif
diff --git a/obj/NiPSysEmitterCtlr.cpp b/obj/NiPSysEmitterCtlr.cpp
index 2bfb6f63fbb0f54e24812650328ba3c52f8f4f2d..f387ba84ddcf7a010ab6e9ea10a282e0437ece51 100644
--- a/obj/NiPSysEmitterCtlr.cpp
+++ b/obj/NiPSysEmitterCtlr.cpp
@@ -2,8 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiPSysEmitterCtlr.h"
-#include "NiPSysData.h"
-#include "AInterpolator.h"
+#include "NiInterpolator.h"
 
 //Definition of TYPE constant
 const Type NiPSysEmitterCtlr::TYPE("NiPSysEmitterCtlr", &NI_P_SYS_EMITTER_CTLR_PARENT::TYPE );
@@ -13,18 +12,22 @@ NiPSysEmitterCtlr::NiPSysEmitterCtlr() NI_P_SYS_EMITTER_CTLR_CONSTRUCT {}
 NiPSysEmitterCtlr::~NiPSysEmitterCtlr() {}
 
 void NiPSysEmitterCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_CTLR_READ
+  NI_P_SYS_EMITTER_CTLR_READ
 }
 
 void NiPSysEmitterCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_EMITTER_CTLR_WRITE
+  NI_P_SYS_EMITTER_CTLR_WRITE
 }
 
 string NiPSysEmitterCtlr::asString( bool verbose ) const {
-	NI_P_SYS_EMITTER_CTLR_STRING
+  NI_P_SYS_EMITTER_CTLR_STRING
 }
 
 void NiPSysEmitterCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_CTLR_FIXLINKS
+  NI_P_SYS_EMITTER_CTLR_FIXLINKS
 }
 
+const Type & NiPSysEmitterCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysEmitterCtlr.h b/obj/NiPSysEmitterCtlr.h
index dbfc1c638ae6755d1186f2da4991cbda6fc70523..6ade1d003e73b5e753eb0be279ee7256478bf3bc 100644
--- a/obj/NiPSysEmitterCtlr.h
+++ b/obj/NiPSysEmitterCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysEmitterCtlr> NiPSysEmitterCtlrRef;
 
 class NiPSysEmitterCtlr : public NI_P_SYS_EMITTER_CTLR_PARENT {
 public:
-	NiPSysEmitterCtlr();
-	~NiPSysEmitterCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_EMITTER_CTLR_MEMBERS
+  NiPSysEmitterCtlr();
+  ~NiPSysEmitterCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_EMITTER_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysEmitterCtlrData.cpp b/obj/NiPSysEmitterCtlrData.cpp
index f3def5b2baa9b0d97504058197ce6d54a123fed0..c6046af72d10e940e7175c475f46e156be4da0ef 100644
--- a/obj/NiPSysEmitterCtlrData.cpp
+++ b/obj/NiPSysEmitterCtlrData.cpp
@@ -11,18 +11,22 @@ NiPSysEmitterCtlrData::NiPSysEmitterCtlrData() NI_P_SYS_EMITTER_CTLR_DATA_CONSTR
 NiPSysEmitterCtlrData::~NiPSysEmitterCtlrData() {}
 
 void NiPSysEmitterCtlrData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_CTLR_DATA_READ
+  NI_P_SYS_EMITTER_CTLR_DATA_READ
 }
 
 void NiPSysEmitterCtlrData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_EMITTER_CTLR_DATA_WRITE
+  NI_P_SYS_EMITTER_CTLR_DATA_WRITE
 }
 
 string NiPSysEmitterCtlrData::asString( bool verbose ) const {
-	NI_P_SYS_EMITTER_CTLR_DATA_STRING
+  NI_P_SYS_EMITTER_CTLR_DATA_STRING
 }
 
 void NiPSysEmitterCtlrData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_CTLR_DATA_FIXLINKS
+  NI_P_SYS_EMITTER_CTLR_DATA_FIXLINKS
 }
 
+const Type & NiPSysEmitterCtlrData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysEmitterCtlrData.h b/obj/NiPSysEmitterCtlrData.h
index fb8448f5756d6db560b657a973bb9db66a605bb4..cfa39a789b665e55138a6f32d4ce23a3152bf115 100644
--- a/obj/NiPSysEmitterCtlrData.h
+++ b/obj/NiPSysEmitterCtlrData.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysEmitterCtlrData> NiPSysEmitterCtlrDataRef;
 
 class NiPSysEmitterCtlrData : public NI_P_SYS_EMITTER_CTLR_DATA_PARENT {
 public:
-	NiPSysEmitterCtlrData();
-	~NiPSysEmitterCtlrData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_EMITTER_CTLR_DATA_MEMBERS
+  NiPSysEmitterCtlrData();
+  ~NiPSysEmitterCtlrData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_EMITTER_CTLR_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysEmitterDeclinationCtlr.cpp b/obj/NiPSysEmitterDeclinationCtlr.cpp
index b28117fc13a2c69829dfe139f08ab72b7acaf246..b74f989d0b5708fb3d91eef396d94c60b9f03f88 100644
--- a/obj/NiPSysEmitterDeclinationCtlr.cpp
+++ b/obj/NiPSysEmitterDeclinationCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysEmitterDeclinationCtlr::NiPSysEmitterDeclinationCtlr() NI_P_SYS_EMITTER_DE
 NiPSysEmitterDeclinationCtlr::~NiPSysEmitterDeclinationCtlr() {}
 
 void NiPSysEmitterDeclinationCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_DECLINATION_CTLR_READ
+  NI_P_SYS_EMITTER_DECLINATION_CTLR_READ
 }
 
 void NiPSysEmitterDeclinationCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_EMITTER_DECLINATION_CTLR_WRITE
+  NI_P_SYS_EMITTER_DECLINATION_CTLR_WRITE
 }
 
 string NiPSysEmitterDeclinationCtlr::asString( bool verbose ) const {
-	NI_P_SYS_EMITTER_DECLINATION_CTLR_STRING
+  NI_P_SYS_EMITTER_DECLINATION_CTLR_STRING
 }
 
 void NiPSysEmitterDeclinationCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_DECLINATION_CTLR_FIXLINKS
+  NI_P_SYS_EMITTER_DECLINATION_CTLR_FIXLINKS
 }
 
+const Type & NiPSysEmitterDeclinationCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysEmitterDeclinationCtlr.h b/obj/NiPSysEmitterDeclinationCtlr.h
index 9ff3bb2997ca026b3fae9e0693f66d3f292de1a8..09c9b08e9af17201223b20e2da07aaf47e93d83e 100644
--- a/obj/NiPSysEmitterDeclinationCtlr.h
+++ b/obj/NiPSysEmitterDeclinationCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysEmitterDeclinationCtlr> NiPSysEmitterDeclinationCtlrRef;
 
 class NiPSysEmitterDeclinationCtlr : public NI_P_SYS_EMITTER_DECLINATION_CTLR_PARENT {
 public:
-	NiPSysEmitterDeclinationCtlr();
-	~NiPSysEmitterDeclinationCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_EMITTER_DECLINATION_CTLR_MEMBERS
+  NiPSysEmitterDeclinationCtlr();
+  ~NiPSysEmitterDeclinationCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_EMITTER_DECLINATION_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysEmitterDeclinationVarCtlr.cpp b/obj/NiPSysEmitterDeclinationVarCtlr.cpp
index b20c03acf19d350efe9f151801230dbda3fd408d..1f7bd010b6f73c4e7b76828996fb4e4482e3aaf8 100644
--- a/obj/NiPSysEmitterDeclinationVarCtlr.cpp
+++ b/obj/NiPSysEmitterDeclinationVarCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysEmitterDeclinationVarCtlr::NiPSysEmitterDeclinationVarCtlr() NI_P_SYS_EMIT
 NiPSysEmitterDeclinationVarCtlr::~NiPSysEmitterDeclinationVarCtlr() {}
 
 void NiPSysEmitterDeclinationVarCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_READ
+  NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_READ
 }
 
 void NiPSysEmitterDeclinationVarCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_WRITE
+  NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_WRITE
 }
 
 string NiPSysEmitterDeclinationVarCtlr::asString( bool verbose ) const {
-	NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_STRING
+  NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_STRING
 }
 
 void NiPSysEmitterDeclinationVarCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_FIXLINKS
+  NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_FIXLINKS
 }
 
+const Type & NiPSysEmitterDeclinationVarCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysEmitterDeclinationVarCtlr.h b/obj/NiPSysEmitterDeclinationVarCtlr.h
index c0e7c15cfd468653f9cd669044c7bc73e86010dc..251a1b2fe1531c2a6037847534636c493c8e575d 100644
--- a/obj/NiPSysEmitterDeclinationVarCtlr.h
+++ b/obj/NiPSysEmitterDeclinationVarCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysEmitterDeclinationVarCtlr> NiPSysEmitterDeclinationVarCtlrRef;
 
 class NiPSysEmitterDeclinationVarCtlr : public NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_PARENT {
 public:
-	NiPSysEmitterDeclinationVarCtlr();
-	~NiPSysEmitterDeclinationVarCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_MEMBERS
+  NiPSysEmitterDeclinationVarCtlr();
+  ~NiPSysEmitterDeclinationVarCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysEmitterInitialRadiusCtlr.cpp b/obj/NiPSysEmitterInitialRadiusCtlr.cpp
index 852770091fe6a570e50fe0f309e67155d2de4f99..61cc5699424e831a9429770f6317f2cbf57a4e23 100644
--- a/obj/NiPSysEmitterInitialRadiusCtlr.cpp
+++ b/obj/NiPSysEmitterInitialRadiusCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysEmitterInitialRadiusCtlr::NiPSysEmitterInitialRadiusCtlr() NI_P_SYS_EMITTE
 NiPSysEmitterInitialRadiusCtlr::~NiPSysEmitterInitialRadiusCtlr() {}
 
 void NiPSysEmitterInitialRadiusCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_READ
+  NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_READ
 }
 
 void NiPSysEmitterInitialRadiusCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_WRITE
+  NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_WRITE
 }
 
 string NiPSysEmitterInitialRadiusCtlr::asString( bool verbose ) const {
-	NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_STRING
+  NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_STRING
 }
 
 void NiPSysEmitterInitialRadiusCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_FIXLINKS
+  NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_FIXLINKS
 }
 
+const Type & NiPSysEmitterInitialRadiusCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysEmitterInitialRadiusCtlr.h b/obj/NiPSysEmitterInitialRadiusCtlr.h
index 2ba0839b957d6f24e92fc7e5c113682cca7846ac..473fa1cceb5f6d6c83110800ce71b52fc0fa69ab 100644
--- a/obj/NiPSysEmitterInitialRadiusCtlr.h
+++ b/obj/NiPSysEmitterInitialRadiusCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysEmitterInitialRadiusCtlr> NiPSysEmitterInitialRadiusCtlrRef;
 
 class NiPSysEmitterInitialRadiusCtlr : public NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_PARENT {
 public:
-	NiPSysEmitterInitialRadiusCtlr();
-	~NiPSysEmitterInitialRadiusCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_MEMBERS
+  NiPSysEmitterInitialRadiusCtlr();
+  ~NiPSysEmitterInitialRadiusCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysEmitterLifeSpanCtlr.cpp b/obj/NiPSysEmitterLifeSpanCtlr.cpp
index 9403050e9898ea64af4141d802b389855bce4f5d..c64e90d1f858bcf4a9f417dfad782dd10f6d6989 100644
--- a/obj/NiPSysEmitterLifeSpanCtlr.cpp
+++ b/obj/NiPSysEmitterLifeSpanCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysEmitterLifeSpanCtlr::NiPSysEmitterLifeSpanCtlr() NI_P_SYS_EMITTER_LIFE_SPA
 NiPSysEmitterLifeSpanCtlr::~NiPSysEmitterLifeSpanCtlr() {}
 
 void NiPSysEmitterLifeSpanCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_READ
+  NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_READ
 }
 
 void NiPSysEmitterLifeSpanCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_WRITE
+  NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_WRITE
 }
 
 string NiPSysEmitterLifeSpanCtlr::asString( bool verbose ) const {
-	NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_STRING
+  NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_STRING
 }
 
 void NiPSysEmitterLifeSpanCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_FIXLINKS
+  NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_FIXLINKS
 }
 
+const Type & NiPSysEmitterLifeSpanCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysEmitterLifeSpanCtlr.h b/obj/NiPSysEmitterLifeSpanCtlr.h
index 7c8a5332139607eb00bd56b3694bfb30d47da4fa..121044bf169f03f9fa406c05fff3dddd848618c6 100644
--- a/obj/NiPSysEmitterLifeSpanCtlr.h
+++ b/obj/NiPSysEmitterLifeSpanCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysEmitterLifeSpanCtlr> NiPSysEmitterLifeSpanCtlrRef;
 
 class NiPSysEmitterLifeSpanCtlr : public NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_PARENT {
 public:
-	NiPSysEmitterLifeSpanCtlr();
-	~NiPSysEmitterLifeSpanCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_MEMBERS
+  NiPSysEmitterLifeSpanCtlr();
+  ~NiPSysEmitterLifeSpanCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysEmitterSpeedCtlr.cpp b/obj/NiPSysEmitterSpeedCtlr.cpp
index 36ddd3cc91eb2c5e5ed5c86b760a934f7de80089..73a5685dde4fdf06a1d57a8b643e841e8bb9cc74 100644
--- a/obj/NiPSysEmitterSpeedCtlr.cpp
+++ b/obj/NiPSysEmitterSpeedCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysEmitterSpeedCtlr::NiPSysEmitterSpeedCtlr() NI_P_SYS_EMITTER_SPEED_CTLR_CON
 NiPSysEmitterSpeedCtlr::~NiPSysEmitterSpeedCtlr() {}
 
 void NiPSysEmitterSpeedCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_SPEED_CTLR_READ
+  NI_P_SYS_EMITTER_SPEED_CTLR_READ
 }
 
 void NiPSysEmitterSpeedCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_EMITTER_SPEED_CTLR_WRITE
+  NI_P_SYS_EMITTER_SPEED_CTLR_WRITE
 }
 
 string NiPSysEmitterSpeedCtlr::asString( bool verbose ) const {
-	NI_P_SYS_EMITTER_SPEED_CTLR_STRING
+  NI_P_SYS_EMITTER_SPEED_CTLR_STRING
 }
 
 void NiPSysEmitterSpeedCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_SPEED_CTLR_FIXLINKS
+  NI_P_SYS_EMITTER_SPEED_CTLR_FIXLINKS
 }
 
+const Type & NiPSysEmitterSpeedCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysEmitterSpeedCtlr.h b/obj/NiPSysEmitterSpeedCtlr.h
index 94c8ab04c4a190e24d0f7d994726ad21777ba9f1..7aa0c6cdef206c96323366c007d876231c26e294 100644
--- a/obj/NiPSysEmitterSpeedCtlr.h
+++ b/obj/NiPSysEmitterSpeedCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysEmitterSpeedCtlr> NiPSysEmitterSpeedCtlrRef;
 
 class NiPSysEmitterSpeedCtlr : public NI_P_SYS_EMITTER_SPEED_CTLR_PARENT {
 public:
-	NiPSysEmitterSpeedCtlr();
-	~NiPSysEmitterSpeedCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_EMITTER_SPEED_CTLR_MEMBERS
+  NiPSysEmitterSpeedCtlr();
+  ~NiPSysEmitterSpeedCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_EMITTER_SPEED_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysGravityModifier.cpp b/obj/NiPSysGravityModifier.cpp
index 829d49a191d996c88a7cae9b763e3f5a2ef856ba..34e8775ea36d0b1067999926e1c8d3b5f3352de0 100644
--- a/obj/NiPSysGravityModifier.cpp
+++ b/obj/NiPSysGravityModifier.cpp
@@ -12,18 +12,22 @@ NiPSysGravityModifier::NiPSysGravityModifier() NI_P_SYS_GRAVITY_MODIFIER_CONSTRU
 NiPSysGravityModifier::~NiPSysGravityModifier() {}
 
 void NiPSysGravityModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_GRAVITY_MODIFIER_READ
+  NI_P_SYS_GRAVITY_MODIFIER_READ
 }
 
 void NiPSysGravityModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_GRAVITY_MODIFIER_WRITE
+  NI_P_SYS_GRAVITY_MODIFIER_WRITE
 }
 
 string NiPSysGravityModifier::asString( bool verbose ) const {
-	NI_P_SYS_GRAVITY_MODIFIER_STRING
+  NI_P_SYS_GRAVITY_MODIFIER_STRING
 }
 
 void NiPSysGravityModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_GRAVITY_MODIFIER_FIXLINKS
+  NI_P_SYS_GRAVITY_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysGravityModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysGravityModifier.h b/obj/NiPSysGravityModifier.h
index 1c21bfd94a01fb82e06054bedaf0bef8f2bb0522..3392550d004c73f872c537ebcff18d216c38ebeb 100644
--- a/obj/NiPSysGravityModifier.h
+++ b/obj/NiPSysGravityModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysGravityModifier> NiPSysGravityModifierRef;
 
 class NiPSysGravityModifier : public NI_P_SYS_GRAVITY_MODIFIER_PARENT {
 public:
-	NiPSysGravityModifier();
-	~NiPSysGravityModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_GRAVITY_MODIFIER_MEMBERS
+  NiPSysGravityModifier();
+  ~NiPSysGravityModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_GRAVITY_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysGravityStrengthCtlr.cpp b/obj/NiPSysGravityStrengthCtlr.cpp
index 35a74c9fec979915456c9ff40dfa5c4ce036c3ec..5f08a5a55427bdc9922cb554aece2e1c20cff4c0 100644
--- a/obj/NiPSysGravityStrengthCtlr.cpp
+++ b/obj/NiPSysGravityStrengthCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysGravityStrengthCtlr::NiPSysGravityStrengthCtlr() NI_P_SYS_GRAVITY_STRENGTH
 NiPSysGravityStrengthCtlr::~NiPSysGravityStrengthCtlr() {}
 
 void NiPSysGravityStrengthCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_GRAVITY_STRENGTH_CTLR_READ
+  NI_P_SYS_GRAVITY_STRENGTH_CTLR_READ
 }
 
 void NiPSysGravityStrengthCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_GRAVITY_STRENGTH_CTLR_WRITE
+  NI_P_SYS_GRAVITY_STRENGTH_CTLR_WRITE
 }
 
 string NiPSysGravityStrengthCtlr::asString( bool verbose ) const {
-	NI_P_SYS_GRAVITY_STRENGTH_CTLR_STRING
+  NI_P_SYS_GRAVITY_STRENGTH_CTLR_STRING
 }
 
 void NiPSysGravityStrengthCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_GRAVITY_STRENGTH_CTLR_FIXLINKS
+  NI_P_SYS_GRAVITY_STRENGTH_CTLR_FIXLINKS
 }
 
+const Type & NiPSysGravityStrengthCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysGravityStrengthCtlr.h b/obj/NiPSysGravityStrengthCtlr.h
index 6f12368b937308800da277e047d3f5060970c134..b8df3f292847aebf429087c18ac665e73320027d 100644
--- a/obj/NiPSysGravityStrengthCtlr.h
+++ b/obj/NiPSysGravityStrengthCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysGravityStrengthCtlr> NiPSysGravityStrengthCtlrRef;
 
 class NiPSysGravityStrengthCtlr : public NI_P_SYS_GRAVITY_STRENGTH_CTLR_PARENT {
 public:
-	NiPSysGravityStrengthCtlr();
-	~NiPSysGravityStrengthCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_GRAVITY_STRENGTH_CTLR_MEMBERS
+  NiPSysGravityStrengthCtlr();
+  ~NiPSysGravityStrengthCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_GRAVITY_STRENGTH_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysGrowFadeModifier.cpp b/obj/NiPSysGrowFadeModifier.cpp
index 831e875adb57a4ef29ae74d6d0e3d4a2841afe04..4e9d51d8af9df6fb3cc3620f62d19aa2f8cf3f37 100644
--- a/obj/NiPSysGrowFadeModifier.cpp
+++ b/obj/NiPSysGrowFadeModifier.cpp
@@ -11,18 +11,22 @@ NiPSysGrowFadeModifier::NiPSysGrowFadeModifier() NI_P_SYS_GROW_FADE_MODIFIER_CON
 NiPSysGrowFadeModifier::~NiPSysGrowFadeModifier() {}
 
 void NiPSysGrowFadeModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_GROW_FADE_MODIFIER_READ
+  NI_P_SYS_GROW_FADE_MODIFIER_READ
 }
 
 void NiPSysGrowFadeModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_GROW_FADE_MODIFIER_WRITE
+  NI_P_SYS_GROW_FADE_MODIFIER_WRITE
 }
 
 string NiPSysGrowFadeModifier::asString( bool verbose ) const {
-	NI_P_SYS_GROW_FADE_MODIFIER_STRING
+  NI_P_SYS_GROW_FADE_MODIFIER_STRING
 }
 
 void NiPSysGrowFadeModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_GROW_FADE_MODIFIER_FIXLINKS
+  NI_P_SYS_GROW_FADE_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysGrowFadeModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysGrowFadeModifier.h b/obj/NiPSysGrowFadeModifier.h
index 76aaa8dca8d875e1fba93d671c93b34696dc5c83..0513e54df23e1a174c6cc9e436a6b06c61c23b1c 100644
--- a/obj/NiPSysGrowFadeModifier.h
+++ b/obj/NiPSysGrowFadeModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysGrowFadeModifier> NiPSysGrowFadeModifierRef;
 
 class NiPSysGrowFadeModifier : public NI_P_SYS_GROW_FADE_MODIFIER_PARENT {
 public:
-	NiPSysGrowFadeModifier();
-	~NiPSysGrowFadeModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_GROW_FADE_MODIFIER_MEMBERS
+  NiPSysGrowFadeModifier();
+  ~NiPSysGrowFadeModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_GROW_FADE_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysMeshEmitter.cpp b/obj/NiPSysMeshEmitter.cpp
index d1fa7d712d3f061a032691ad6bab1fd29c525ecc..606e161e05b2c69ab9674fd41135f250e737a434 100644
--- a/obj/NiPSysMeshEmitter.cpp
+++ b/obj/NiPSysMeshEmitter.cpp
@@ -12,18 +12,22 @@ NiPSysMeshEmitter::NiPSysMeshEmitter() NI_P_SYS_MESH_EMITTER_CONSTRUCT {}
 NiPSysMeshEmitter::~NiPSysMeshEmitter() {}
 
 void NiPSysMeshEmitter::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_MESH_EMITTER_READ
+  NI_P_SYS_MESH_EMITTER_READ
 }
 
 void NiPSysMeshEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_MESH_EMITTER_WRITE
+  NI_P_SYS_MESH_EMITTER_WRITE
 }
 
 string NiPSysMeshEmitter::asString( bool verbose ) const {
-	NI_P_SYS_MESH_EMITTER_STRING
+  NI_P_SYS_MESH_EMITTER_STRING
 }
 
 void NiPSysMeshEmitter::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_MESH_EMITTER_FIXLINKS
+  NI_P_SYS_MESH_EMITTER_FIXLINKS
 }
 
+const Type & NiPSysMeshEmitter::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysMeshEmitter.h b/obj/NiPSysMeshEmitter.h
index c0a6afab477d586d5126874387458c5b77b41b52..dd440d53f19ebb3f6e5f341ae6d1830a289820d3 100644
--- a/obj/NiPSysMeshEmitter.h
+++ b/obj/NiPSysMeshEmitter.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysMeshEmitter> NiPSysMeshEmitterRef;
 
 class NiPSysMeshEmitter : public NI_P_SYS_MESH_EMITTER_PARENT {
 public:
-	NiPSysMeshEmitter();
-	~NiPSysMeshEmitter();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_MESH_EMITTER_MEMBERS
+  NiPSysMeshEmitter();
+  ~NiPSysMeshEmitter();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_MESH_EMITTER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysMeshUpdateModifier.cpp b/obj/NiPSysMeshUpdateModifier.cpp
index 80796190235d5a99e5ff5cd667a4db9bfb11aae8..0c068e05b6c96c3ff85f5dbb6f7c4882a0410b46 100644
--- a/obj/NiPSysMeshUpdateModifier.cpp
+++ b/obj/NiPSysMeshUpdateModifier.cpp
@@ -12,18 +12,22 @@ NiPSysMeshUpdateModifier::NiPSysMeshUpdateModifier() NI_P_SYS_MESH_UPDATE_MODIFI
 NiPSysMeshUpdateModifier::~NiPSysMeshUpdateModifier() {}
 
 void NiPSysMeshUpdateModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_MESH_UPDATE_MODIFIER_READ
+  NI_P_SYS_MESH_UPDATE_MODIFIER_READ
 }
 
 void NiPSysMeshUpdateModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_MESH_UPDATE_MODIFIER_WRITE
+  NI_P_SYS_MESH_UPDATE_MODIFIER_WRITE
 }
 
 string NiPSysMeshUpdateModifier::asString( bool verbose ) const {
-	NI_P_SYS_MESH_UPDATE_MODIFIER_STRING
+  NI_P_SYS_MESH_UPDATE_MODIFIER_STRING
 }
 
 void NiPSysMeshUpdateModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_MESH_UPDATE_MODIFIER_FIXLINKS
+  NI_P_SYS_MESH_UPDATE_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysMeshUpdateModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysMeshUpdateModifier.h b/obj/NiPSysMeshUpdateModifier.h
index 1ba78588e6152b3d80ebf61dc90b4f7852d14643..820ebe9f8640802af0b1ac692e0fb136661b651f 100644
--- a/obj/NiPSysMeshUpdateModifier.h
+++ b/obj/NiPSysMeshUpdateModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysMeshUpdateModifier> NiPSysMeshUpdateModifierRef;
 
 class NiPSysMeshUpdateModifier : public NI_P_SYS_MESH_UPDATE_MODIFIER_PARENT {
 public:
-	NiPSysMeshUpdateModifier();
-	~NiPSysMeshUpdateModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_MESH_UPDATE_MODIFIER_MEMBERS
+  NiPSysMeshUpdateModifier();
+  ~NiPSysMeshUpdateModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_MESH_UPDATE_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysModifier.cpp b/obj/NiPSysModifier.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d2384f684943c37e01bc48a86d480d92c6669978
--- /dev/null
+++ b/obj/NiPSysModifier.cpp
@@ -0,0 +1,33 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysModifier.h"
+#include "NiParticleSystem.h"
+
+//Definition of TYPE constant
+const Type NiPSysModifier::TYPE("NiPSysModifier", &NI_P_SYS_MODIFIER_PARENT::TYPE );
+
+NiPSysModifier::NiPSysModifier() NI_P_SYS_MODIFIER_CONSTRUCT {}
+
+NiPSysModifier::~NiPSysModifier() {}
+
+void NiPSysModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
+  NI_P_SYS_MODIFIER_READ
+}
+
+void NiPSysModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+  NI_P_SYS_MODIFIER_WRITE
+}
+
+string NiPSysModifier::asString( bool verbose ) const {
+  NI_P_SYS_MODIFIER_STRING
+}
+
+void NiPSysModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
+  NI_P_SYS_MODIFIER_FIXLINKS
+}
+
+const Type & NiPSysModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysModifier.h b/obj/NiPSysModifier.h
new file mode 100644
index 0000000000000000000000000000000000000000..0464aa9b98df17bf8eef30de760ccf4d28af33f4
--- /dev/null
+++ b/obj/NiPSysModifier.h
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSMODIFIER_H_
+#define _NIPSYSMODIFIER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_MODIFIER_INCLUDE
+
+/*
+ * NiPSysModifier
+ */
+
+class NiPSysModifier;
+typedef Ref<NiPSysModifier> NiPSysModifierRef;
+
+class NiPSysModifier : public NI_P_SYS_MODIFIER_PARENT {
+public:
+  NiPSysModifier();
+  ~NiPSysModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_MODIFIER_MEMBERS
+};
+
+#endif
diff --git a/obj/NiPSysModifierActiveCtlr.cpp b/obj/NiPSysModifierActiveCtlr.cpp
index 7b170e9fb2704e1914f2bafc34fc65ed753dea6a..6fdad4f70d98dc14f3e403e8897bad9b49624939 100644
--- a/obj/NiPSysModifierActiveCtlr.cpp
+++ b/obj/NiPSysModifierActiveCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysModifierActiveCtlr::NiPSysModifierActiveCtlr() NI_P_SYS_MODIFIER_ACTIVE_CT
 NiPSysModifierActiveCtlr::~NiPSysModifierActiveCtlr() {}
 
 void NiPSysModifierActiveCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_MODIFIER_ACTIVE_CTLR_READ
+  NI_P_SYS_MODIFIER_ACTIVE_CTLR_READ
 }
 
 void NiPSysModifierActiveCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_MODIFIER_ACTIVE_CTLR_WRITE
+  NI_P_SYS_MODIFIER_ACTIVE_CTLR_WRITE
 }
 
 string NiPSysModifierActiveCtlr::asString( bool verbose ) const {
-	NI_P_SYS_MODIFIER_ACTIVE_CTLR_STRING
+  NI_P_SYS_MODIFIER_ACTIVE_CTLR_STRING
 }
 
 void NiPSysModifierActiveCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_MODIFIER_ACTIVE_CTLR_FIXLINKS
+  NI_P_SYS_MODIFIER_ACTIVE_CTLR_FIXLINKS
 }
 
+const Type & NiPSysModifierActiveCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysModifierActiveCtlr.h b/obj/NiPSysModifierActiveCtlr.h
index 599a4c2ae961da319c06f11a10542f4fa715cc01..1625d9ab7ba0cb0d974cffe3033ae7f468683e8d 100644
--- a/obj/NiPSysModifierActiveCtlr.h
+++ b/obj/NiPSysModifierActiveCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysModifierActiveCtlr> NiPSysModifierActiveCtlrRef;
 
 class NiPSysModifierActiveCtlr : public NI_P_SYS_MODIFIER_ACTIVE_CTLR_PARENT {
 public:
-	NiPSysModifierActiveCtlr();
-	~NiPSysModifierActiveCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_MODIFIER_ACTIVE_CTLR_MEMBERS
+  NiPSysModifierActiveCtlr();
+  ~NiPSysModifierActiveCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_MODIFIER_ACTIVE_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysPlanarCollider.cpp b/obj/NiPSysPlanarCollider.cpp
index 114b35fede94cb51563c62e630a7474de077fc1e..5b8453e6150f25a998bd55e4b2334868a3828948 100644
--- a/obj/NiPSysPlanarCollider.cpp
+++ b/obj/NiPSysPlanarCollider.cpp
@@ -3,6 +3,8 @@ All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiPSysPlanarCollider.h"
 #include "NiPSysSpawnModifier.h"
+#include "NiObject.h"
+#include "NiObject.h"
 #include "NiNode.h"
 
 //Definition of TYPE constant
@@ -13,18 +15,22 @@ NiPSysPlanarCollider::NiPSysPlanarCollider() NI_P_SYS_PLANAR_COLLIDER_CONSTRUCT
 NiPSysPlanarCollider::~NiPSysPlanarCollider() {}
 
 void NiPSysPlanarCollider::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_PLANAR_COLLIDER_READ
+  NI_P_SYS_PLANAR_COLLIDER_READ
 }
 
 void NiPSysPlanarCollider::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_PLANAR_COLLIDER_WRITE
+  NI_P_SYS_PLANAR_COLLIDER_WRITE
 }
 
 string NiPSysPlanarCollider::asString( bool verbose ) const {
-	NI_P_SYS_PLANAR_COLLIDER_STRING
+  NI_P_SYS_PLANAR_COLLIDER_STRING
 }
 
 void NiPSysPlanarCollider::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_PLANAR_COLLIDER_FIXLINKS
+  NI_P_SYS_PLANAR_COLLIDER_FIXLINKS
 }
 
+const Type & NiPSysPlanarCollider::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysPlanarCollider.h b/obj/NiPSysPlanarCollider.h
index 254e7090f404db060270009eaa428ab8f46d7e30..6058d18976423093215601f6eb23336075bf7c7a 100644
--- a/obj/NiPSysPlanarCollider.h
+++ b/obj/NiPSysPlanarCollider.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysPlanarCollider> NiPSysPlanarColliderRef;
 
 class NiPSysPlanarCollider : public NI_P_SYS_PLANAR_COLLIDER_PARENT {
 public:
-	NiPSysPlanarCollider();
-	~NiPSysPlanarCollider();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_PLANAR_COLLIDER_MEMBERS
+  NiPSysPlanarCollider();
+  ~NiPSysPlanarCollider();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_PLANAR_COLLIDER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysPositionModifier.cpp b/obj/NiPSysPositionModifier.cpp
index e240e051505ae7afcfd71cb8587367e0bb79bf2b..a040ac37e9a6eb6a2b4cd5623d686599dfeaccad 100644
--- a/obj/NiPSysPositionModifier.cpp
+++ b/obj/NiPSysPositionModifier.cpp
@@ -11,18 +11,22 @@ NiPSysPositionModifier::NiPSysPositionModifier() NI_P_SYS_POSITION_MODIFIER_CONS
 NiPSysPositionModifier::~NiPSysPositionModifier() {}
 
 void NiPSysPositionModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_POSITION_MODIFIER_READ
+  NI_P_SYS_POSITION_MODIFIER_READ
 }
 
 void NiPSysPositionModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_POSITION_MODIFIER_WRITE
+  NI_P_SYS_POSITION_MODIFIER_WRITE
 }
 
 string NiPSysPositionModifier::asString( bool verbose ) const {
-	NI_P_SYS_POSITION_MODIFIER_STRING
+  NI_P_SYS_POSITION_MODIFIER_STRING
 }
 
 void NiPSysPositionModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_POSITION_MODIFIER_FIXLINKS
+  NI_P_SYS_POSITION_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysPositionModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysPositionModifier.h b/obj/NiPSysPositionModifier.h
index 8c9562bfb95260c646417fb9d924fd8dc1e49b1e..a0426f38c8bf38ed31430d243b10f635ed0fe27f 100644
--- a/obj/NiPSysPositionModifier.h
+++ b/obj/NiPSysPositionModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysPositionModifier> NiPSysPositionModifierRef;
 
 class NiPSysPositionModifier : public NI_P_SYS_POSITION_MODIFIER_PARENT {
 public:
-	NiPSysPositionModifier();
-	~NiPSysPositionModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_POSITION_MODIFIER_MEMBERS
+  NiPSysPositionModifier();
+  ~NiPSysPositionModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_POSITION_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysResetOnLoopCtlr.cpp b/obj/NiPSysResetOnLoopCtlr.cpp
index 816b4ecb5351b57eef056655161ad5596c69fe12..da46bfaa4d0854b0555580d833ade50733aa7cd0 100644
--- a/obj/NiPSysResetOnLoopCtlr.cpp
+++ b/obj/NiPSysResetOnLoopCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysResetOnLoopCtlr::NiPSysResetOnLoopCtlr() NI_P_SYS_RESET_ON_LOOP_CTLR_CONST
 NiPSysResetOnLoopCtlr::~NiPSysResetOnLoopCtlr() {}
 
 void NiPSysResetOnLoopCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_RESET_ON_LOOP_CTLR_READ
+  NI_P_SYS_RESET_ON_LOOP_CTLR_READ
 }
 
 void NiPSysResetOnLoopCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_RESET_ON_LOOP_CTLR_WRITE
+  NI_P_SYS_RESET_ON_LOOP_CTLR_WRITE
 }
 
 string NiPSysResetOnLoopCtlr::asString( bool verbose ) const {
-	NI_P_SYS_RESET_ON_LOOP_CTLR_STRING
+  NI_P_SYS_RESET_ON_LOOP_CTLR_STRING
 }
 
 void NiPSysResetOnLoopCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_RESET_ON_LOOP_CTLR_FIXLINKS
+  NI_P_SYS_RESET_ON_LOOP_CTLR_FIXLINKS
 }
 
+const Type & NiPSysResetOnLoopCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysResetOnLoopCtlr.h b/obj/NiPSysResetOnLoopCtlr.h
index 6381974f554198eb7e80e0c2a110b008b1e80050..1fda6d06b993d5bcb7e1381fd4506989d128a459 100644
--- a/obj/NiPSysResetOnLoopCtlr.h
+++ b/obj/NiPSysResetOnLoopCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysResetOnLoopCtlr> NiPSysResetOnLoopCtlrRef;
 
 class NiPSysResetOnLoopCtlr : public NI_P_SYS_RESET_ON_LOOP_CTLR_PARENT {
 public:
-	NiPSysResetOnLoopCtlr();
-	~NiPSysResetOnLoopCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_RESET_ON_LOOP_CTLR_MEMBERS
+  NiPSysResetOnLoopCtlr();
+  ~NiPSysResetOnLoopCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_RESET_ON_LOOP_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysRotationModifier.cpp b/obj/NiPSysRotationModifier.cpp
index 79ea4473427480a07dcf24de97810b2f0e2d7f62..7fbb4b9a4be45055471f8701eb5a33b503c02961 100644
--- a/obj/NiPSysRotationModifier.cpp
+++ b/obj/NiPSysRotationModifier.cpp
@@ -11,18 +11,22 @@ NiPSysRotationModifier::NiPSysRotationModifier() NI_P_SYS_ROTATION_MODIFIER_CONS
 NiPSysRotationModifier::~NiPSysRotationModifier() {}
 
 void NiPSysRotationModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_ROTATION_MODIFIER_READ
+  NI_P_SYS_ROTATION_MODIFIER_READ
 }
 
 void NiPSysRotationModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_ROTATION_MODIFIER_WRITE
+  NI_P_SYS_ROTATION_MODIFIER_WRITE
 }
 
 string NiPSysRotationModifier::asString( bool verbose ) const {
-	NI_P_SYS_ROTATION_MODIFIER_STRING
+  NI_P_SYS_ROTATION_MODIFIER_STRING
 }
 
 void NiPSysRotationModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_ROTATION_MODIFIER_FIXLINKS
+  NI_P_SYS_ROTATION_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysRotationModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysRotationModifier.h b/obj/NiPSysRotationModifier.h
index f75816b63f854f3f6514a2576981859fee0f8950..7d0427f74239a73b4a6af0534ef0f92782fb2e22 100644
--- a/obj/NiPSysRotationModifier.h
+++ b/obj/NiPSysRotationModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysRotationModifier> NiPSysRotationModifierRef;
 
 class NiPSysRotationModifier : public NI_P_SYS_ROTATION_MODIFIER_PARENT {
 public:
-	NiPSysRotationModifier();
-	~NiPSysRotationModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_ROTATION_MODIFIER_MEMBERS
+  NiPSysRotationModifier();
+  ~NiPSysRotationModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_ROTATION_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysSpawnModifier.cpp b/obj/NiPSysSpawnModifier.cpp
index b8771d51a5abc3f090112a77ec4878ed7342cddd..500863d68337ed0cc3e2d482705a2acbd7ce5c2a 100644
--- a/obj/NiPSysSpawnModifier.cpp
+++ b/obj/NiPSysSpawnModifier.cpp
@@ -11,18 +11,22 @@ NiPSysSpawnModifier::NiPSysSpawnModifier() NI_P_SYS_SPAWN_MODIFIER_CONSTRUCT {}
 NiPSysSpawnModifier::~NiPSysSpawnModifier() {}
 
 void NiPSysSpawnModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_SPAWN_MODIFIER_READ
+  NI_P_SYS_SPAWN_MODIFIER_READ
 }
 
 void NiPSysSpawnModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_SPAWN_MODIFIER_WRITE
+  NI_P_SYS_SPAWN_MODIFIER_WRITE
 }
 
 string NiPSysSpawnModifier::asString( bool verbose ) const {
-	NI_P_SYS_SPAWN_MODIFIER_STRING
+  NI_P_SYS_SPAWN_MODIFIER_STRING
 }
 
 void NiPSysSpawnModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_SPAWN_MODIFIER_FIXLINKS
+  NI_P_SYS_SPAWN_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysSpawnModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysSpawnModifier.h b/obj/NiPSysSpawnModifier.h
index 86b3ddc313e6a048064de8cb3b535754e56d05b0..99535d0f2b82cd70aa18cec3921885e2691d76bb 100644
--- a/obj/NiPSysSpawnModifier.h
+++ b/obj/NiPSysSpawnModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysSpawnModifier> NiPSysSpawnModifierRef;
 
 class NiPSysSpawnModifier : public NI_P_SYS_SPAWN_MODIFIER_PARENT {
 public:
-	NiPSysSpawnModifier();
-	~NiPSysSpawnModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_SPAWN_MODIFIER_MEMBERS
+  NiPSysSpawnModifier();
+  ~NiPSysSpawnModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_SPAWN_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysSphereEmitter.cpp b/obj/NiPSysSphereEmitter.cpp
index 8a1232a0df9fbb3166bb904542dca428632f0ab0..71b0cd11cee000fa14897fb667f1813133b36817 100644
--- a/obj/NiPSysSphereEmitter.cpp
+++ b/obj/NiPSysSphereEmitter.cpp
@@ -11,18 +11,22 @@ NiPSysSphereEmitter::NiPSysSphereEmitter() NI_P_SYS_SPHERE_EMITTER_CONSTRUCT {}
 NiPSysSphereEmitter::~NiPSysSphereEmitter() {}
 
 void NiPSysSphereEmitter::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_SPHERE_EMITTER_READ
+  NI_P_SYS_SPHERE_EMITTER_READ
 }
 
 void NiPSysSphereEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_SPHERE_EMITTER_WRITE
+  NI_P_SYS_SPHERE_EMITTER_WRITE
 }
 
 string NiPSysSphereEmitter::asString( bool verbose ) const {
-	NI_P_SYS_SPHERE_EMITTER_STRING
+  NI_P_SYS_SPHERE_EMITTER_STRING
 }
 
 void NiPSysSphereEmitter::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_SPHERE_EMITTER_FIXLINKS
+  NI_P_SYS_SPHERE_EMITTER_FIXLINKS
 }
 
+const Type & NiPSysSphereEmitter::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysSphereEmitter.h b/obj/NiPSysSphereEmitter.h
index a76933425eecae4154bb54c8ab3973b02438d25c..e1fcfb0f1760b72efb30baa084a6c41029d84108 100644
--- a/obj/NiPSysSphereEmitter.h
+++ b/obj/NiPSysSphereEmitter.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysSphereEmitter> NiPSysSphereEmitterRef;
 
 class NiPSysSphereEmitter : public NI_P_SYS_SPHERE_EMITTER_PARENT {
 public:
-	NiPSysSphereEmitter();
-	~NiPSysSphereEmitter();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_SPHERE_EMITTER_MEMBERS
+  NiPSysSphereEmitter();
+  ~NiPSysSphereEmitter();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_SPHERE_EMITTER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysUpdateCtlr.cpp b/obj/NiPSysUpdateCtlr.cpp
index d018b6892f8dab8db4a7db625b79f90fe24b5768..264a513ec600863a998af25cf34d1bd6f0785699 100644
--- a/obj/NiPSysUpdateCtlr.cpp
+++ b/obj/NiPSysUpdateCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysUpdateCtlr::NiPSysUpdateCtlr() NI_P_SYS_UPDATE_CTLR_CONSTRUCT {}
 NiPSysUpdateCtlr::~NiPSysUpdateCtlr() {}
 
 void NiPSysUpdateCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_UPDATE_CTLR_READ
+  NI_P_SYS_UPDATE_CTLR_READ
 }
 
 void NiPSysUpdateCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_UPDATE_CTLR_WRITE
+  NI_P_SYS_UPDATE_CTLR_WRITE
 }
 
 string NiPSysUpdateCtlr::asString( bool verbose ) const {
-	NI_P_SYS_UPDATE_CTLR_STRING
+  NI_P_SYS_UPDATE_CTLR_STRING
 }
 
 void NiPSysUpdateCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_UPDATE_CTLR_FIXLINKS
+  NI_P_SYS_UPDATE_CTLR_FIXLINKS
 }
 
+const Type & NiPSysUpdateCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysUpdateCtlr.h b/obj/NiPSysUpdateCtlr.h
index 949c3f6aca1047689516420204281cde55adc97f..ed54b6ef0b5d4afdf162cd4961b558b3212ddfa7 100644
--- a/obj/NiPSysUpdateCtlr.h
+++ b/obj/NiPSysUpdateCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysUpdateCtlr> NiPSysUpdateCtlrRef;
 
 class NiPSysUpdateCtlr : public NI_P_SYS_UPDATE_CTLR_PARENT {
 public:
-	NiPSysUpdateCtlr();
-	~NiPSysUpdateCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_UPDATE_CTLR_MEMBERS
+  NiPSysUpdateCtlr();
+  ~NiPSysUpdateCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_UPDATE_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysVolumeEmitter.cpp b/obj/NiPSysVolumeEmitter.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..439a1a1e4edbbb423592f1b6bf3f37bda05367a9
--- /dev/null
+++ b/obj/NiPSysVolumeEmitter.cpp
@@ -0,0 +1,33 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysVolumeEmitter.h"
+#include "NiNode.h"
+
+//Definition of TYPE constant
+const Type NiPSysVolumeEmitter::TYPE("NiPSysVolumeEmitter", &NI_P_SYS_VOLUME_EMITTER_PARENT::TYPE );
+
+NiPSysVolumeEmitter::NiPSysVolumeEmitter() NI_P_SYS_VOLUME_EMITTER_CONSTRUCT {}
+
+NiPSysVolumeEmitter::~NiPSysVolumeEmitter() {}
+
+void NiPSysVolumeEmitter::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
+  NI_P_SYS_VOLUME_EMITTER_READ
+}
+
+void NiPSysVolumeEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+  NI_P_SYS_VOLUME_EMITTER_WRITE
+}
+
+string NiPSysVolumeEmitter::asString( bool verbose ) const {
+  NI_P_SYS_VOLUME_EMITTER_STRING
+}
+
+void NiPSysVolumeEmitter::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
+  NI_P_SYS_VOLUME_EMITTER_FIXLINKS
+}
+
+const Type & NiPSysVolumeEmitter::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysVolumeEmitter.h b/obj/NiPSysVolumeEmitter.h
new file mode 100644
index 0000000000000000000000000000000000000000..59c10addd39695e2cce02ffac3207cc1999f11a7
--- /dev/null
+++ b/obj/NiPSysVolumeEmitter.h
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSVOLUMEEMITTER_H_
+#define _NIPSYSVOLUMEEMITTER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_VOLUME_EMITTER_INCLUDE
+
+/*
+ * NiPSysVolumeEmitter
+ */
+
+class NiPSysVolumeEmitter;
+typedef Ref<NiPSysVolumeEmitter> NiPSysVolumeEmitterRef;
+
+class NiPSysVolumeEmitter : public NI_P_SYS_VOLUME_EMITTER_PARENT {
+public:
+  NiPSysVolumeEmitter();
+  ~NiPSysVolumeEmitter();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_VOLUME_EMITTER_MEMBERS
+};
+
+#endif
diff --git a/obj/NiPalette.cpp b/obj/NiPalette.cpp
index f6a4642f0b7be0fa2e8758056b5710468e315235..57736be11fa7ac31f79d7d93a266d75847734eff 100644
--- a/obj/NiPalette.cpp
+++ b/obj/NiPalette.cpp
@@ -11,18 +11,22 @@ NiPalette::NiPalette() NI_PALETTE_CONSTRUCT {}
 NiPalette::~NiPalette() {}
 
 void NiPalette::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PALETTE_READ
+  NI_PALETTE_READ
 }
 
 void NiPalette::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PALETTE_WRITE
+  NI_PALETTE_WRITE
 }
 
 string NiPalette::asString( bool verbose ) const {
-	NI_PALETTE_STRING
+  NI_PALETTE_STRING
 }
 
 void NiPalette::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PALETTE_FIXLINKS
+  NI_PALETTE_FIXLINKS
 }
 
+const Type & NiPalette::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPalette.h b/obj/NiPalette.h
index 83c3db92dcb878c5f533c90f65f7f0af821fcf84..6805d4f89f929f42c39b0c240e11748775857c91 100644
--- a/obj/NiPalette.h
+++ b/obj/NiPalette.h
@@ -16,16 +16,17 @@ typedef Ref<NiPalette> NiPaletteRef;
 
 class NiPalette : public NI_PALETTE_PARENT {
 public:
-	NiPalette();
-	~NiPalette();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PALETTE_MEMBERS
+  NiPalette();
+  ~NiPalette();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PALETTE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleBomb.cpp b/obj/NiParticleBomb.cpp
index 64cc38b305382750531ce4b3ad76224020ff095a..84901e514664bef2048b0ba718c34012e18f3a1e 100644
--- a/obj/NiParticleBomb.cpp
+++ b/obj/NiParticleBomb.cpp
@@ -11,18 +11,22 @@ NiParticleBomb::NiParticleBomb() NI_PARTICLE_BOMB_CONSTRUCT {}
 NiParticleBomb::~NiParticleBomb() {}
 
 void NiParticleBomb::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_BOMB_READ
+  NI_PARTICLE_BOMB_READ
 }
 
 void NiParticleBomb::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_BOMB_WRITE
+  NI_PARTICLE_BOMB_WRITE
 }
 
 string NiParticleBomb::asString( bool verbose ) const {
-	NI_PARTICLE_BOMB_STRING
+  NI_PARTICLE_BOMB_STRING
 }
 
 void NiParticleBomb::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_BOMB_FIXLINKS
+  NI_PARTICLE_BOMB_FIXLINKS
 }
 
+const Type & NiParticleBomb::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleBomb.h b/obj/NiParticleBomb.h
index 45302ae28bc26d894b43d128e3ab9ac2f2d0f9f6..43743c769d831d1b29e65d1317bd906abf4cefb3 100644
--- a/obj/NiParticleBomb.h
+++ b/obj/NiParticleBomb.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleBomb> NiParticleBombRef;
 
 class NiParticleBomb : public NI_PARTICLE_BOMB_PARENT {
 public:
-	NiParticleBomb();
-	~NiParticleBomb();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_BOMB_MEMBERS
+  NiParticleBomb();
+  ~NiParticleBomb();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_BOMB_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleColorModifier.cpp b/obj/NiParticleColorModifier.cpp
index 1d9f8be68da0c80f8688d5c46ff7e69937302be2..64e591edf10abfb39c1536e8010a43d1a4739937 100644
--- a/obj/NiParticleColorModifier.cpp
+++ b/obj/NiParticleColorModifier.cpp
@@ -12,18 +12,22 @@ NiParticleColorModifier::NiParticleColorModifier() NI_PARTICLE_COLOR_MODIFIER_CO
 NiParticleColorModifier::~NiParticleColorModifier() {}
 
 void NiParticleColorModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_COLOR_MODIFIER_READ
+  NI_PARTICLE_COLOR_MODIFIER_READ
 }
 
 void NiParticleColorModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_COLOR_MODIFIER_WRITE
+  NI_PARTICLE_COLOR_MODIFIER_WRITE
 }
 
 string NiParticleColorModifier::asString( bool verbose ) const {
-	NI_PARTICLE_COLOR_MODIFIER_STRING
+  NI_PARTICLE_COLOR_MODIFIER_STRING
 }
 
 void NiParticleColorModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_COLOR_MODIFIER_FIXLINKS
+  NI_PARTICLE_COLOR_MODIFIER_FIXLINKS
 }
 
+const Type & NiParticleColorModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleColorModifier.h b/obj/NiParticleColorModifier.h
index 8ff4d525ed19db94c0f3fc4e5e4c3317f6ae546a..2bb20433f8efafea7823061994db86e7933a944c 100644
--- a/obj/NiParticleColorModifier.h
+++ b/obj/NiParticleColorModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleColorModifier> NiParticleColorModifierRef;
 
 class NiParticleColorModifier : public NI_PARTICLE_COLOR_MODIFIER_PARENT {
 public:
-	NiParticleColorModifier();
-	~NiParticleColorModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_COLOR_MODIFIER_MEMBERS
+  NiParticleColorModifier();
+  ~NiParticleColorModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_COLOR_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleGrowFade.cpp b/obj/NiParticleGrowFade.cpp
index 407ccb6c95dde93eca3997cc5bb98851f256c152..a46ff9c2d69fc2192bf0befabd34019e36cd1c30 100644
--- a/obj/NiParticleGrowFade.cpp
+++ b/obj/NiParticleGrowFade.cpp
@@ -11,18 +11,22 @@ NiParticleGrowFade::NiParticleGrowFade() NI_PARTICLE_GROW_FADE_CONSTRUCT {}
 NiParticleGrowFade::~NiParticleGrowFade() {}
 
 void NiParticleGrowFade::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_GROW_FADE_READ
+  NI_PARTICLE_GROW_FADE_READ
 }
 
 void NiParticleGrowFade::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_GROW_FADE_WRITE
+  NI_PARTICLE_GROW_FADE_WRITE
 }
 
 string NiParticleGrowFade::asString( bool verbose ) const {
-	NI_PARTICLE_GROW_FADE_STRING
+  NI_PARTICLE_GROW_FADE_STRING
 }
 
 void NiParticleGrowFade::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_GROW_FADE_FIXLINKS
+  NI_PARTICLE_GROW_FADE_FIXLINKS
 }
 
+const Type & NiParticleGrowFade::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleGrowFade.h b/obj/NiParticleGrowFade.h
index 7dd38d8893b5d9f32499671fa670646272e19df2..b40c4c462d8dbf82df3821d4d09cb8e20c6b51ce 100644
--- a/obj/NiParticleGrowFade.h
+++ b/obj/NiParticleGrowFade.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleGrowFade> NiParticleGrowFadeRef;
 
 class NiParticleGrowFade : public NI_PARTICLE_GROW_FADE_PARENT {
 public:
-	NiParticleGrowFade();
-	~NiParticleGrowFade();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_GROW_FADE_MEMBERS
+  NiParticleGrowFade();
+  ~NiParticleGrowFade();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_GROW_FADE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleMeshModifier.cpp b/obj/NiParticleMeshModifier.cpp
index a74fdc4ffe285742ccf43913f9e38e8fabcb73e5..1f6d029c0db6d7257ca8341daccf818586ac2564 100644
--- a/obj/NiParticleMeshModifier.cpp
+++ b/obj/NiParticleMeshModifier.cpp
@@ -12,18 +12,22 @@ NiParticleMeshModifier::NiParticleMeshModifier() NI_PARTICLE_MESH_MODIFIER_CONST
 NiParticleMeshModifier::~NiParticleMeshModifier() {}
 
 void NiParticleMeshModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_MESH_MODIFIER_READ
+  NI_PARTICLE_MESH_MODIFIER_READ
 }
 
 void NiParticleMeshModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_MESH_MODIFIER_WRITE
+  NI_PARTICLE_MESH_MODIFIER_WRITE
 }
 
 string NiParticleMeshModifier::asString( bool verbose ) const {
-	NI_PARTICLE_MESH_MODIFIER_STRING
+  NI_PARTICLE_MESH_MODIFIER_STRING
 }
 
 void NiParticleMeshModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_MESH_MODIFIER_FIXLINKS
+  NI_PARTICLE_MESH_MODIFIER_FIXLINKS
 }
 
+const Type & NiParticleMeshModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleMeshModifier.h b/obj/NiParticleMeshModifier.h
index 2239fee95a9500074a15aca99e7045e7eeb899dc..f9cd5c20a95565a1f6b8d8b74f01d7eba01a2f92 100644
--- a/obj/NiParticleMeshModifier.h
+++ b/obj/NiParticleMeshModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleMeshModifier> NiParticleMeshModifierRef;
 
 class NiParticleMeshModifier : public NI_PARTICLE_MESH_MODIFIER_PARENT {
 public:
-	NiParticleMeshModifier();
-	~NiParticleMeshModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_MESH_MODIFIER_MEMBERS
+  NiParticleMeshModifier();
+  ~NiParticleMeshModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_MESH_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleMeshes.cpp b/obj/NiParticleMeshes.cpp
index 19cae84353dfd6f6383e76a761329f3fde2ecb6e..4f0e85f94a007fb908ee2e72f30bad261ca3d9db 100644
--- a/obj/NiParticleMeshes.cpp
+++ b/obj/NiParticleMeshes.cpp
@@ -11,18 +11,22 @@ NiParticleMeshes::NiParticleMeshes() NI_PARTICLE_MESHES_CONSTRUCT {}
 NiParticleMeshes::~NiParticleMeshes() {}
 
 void NiParticleMeshes::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_MESHES_READ
+  NI_PARTICLE_MESHES_READ
 }
 
 void NiParticleMeshes::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_MESHES_WRITE
+  NI_PARTICLE_MESHES_WRITE
 }
 
 string NiParticleMeshes::asString( bool verbose ) const {
-	NI_PARTICLE_MESHES_STRING
+  NI_PARTICLE_MESHES_STRING
 }
 
 void NiParticleMeshes::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_MESHES_FIXLINKS
+  NI_PARTICLE_MESHES_FIXLINKS
 }
 
+const Type & NiParticleMeshes::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleMeshes.h b/obj/NiParticleMeshes.h
index d9df9735acae638a4ffe7d3372a6cf3137a25375..e3398cb44c2fe50ce945619239199f0d3d95ec99 100644
--- a/obj/NiParticleMeshes.h
+++ b/obj/NiParticleMeshes.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleMeshes> NiParticleMeshesRef;
 
 class NiParticleMeshes : public NI_PARTICLE_MESHES_PARENT {
 public:
-	NiParticleMeshes();
-	~NiParticleMeshes();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_MESHES_MEMBERS
+  NiParticleMeshes();
+  ~NiParticleMeshes();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_MESHES_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleMeshesData.cpp b/obj/NiParticleMeshesData.cpp
index 0ab8c339c790a581cc796f8edc8c4a0bd66868f0..ca2d5c50b0eeee6267e11614fc24e4f96e8af0eb 100644
--- a/obj/NiParticleMeshesData.cpp
+++ b/obj/NiParticleMeshesData.cpp
@@ -12,18 +12,22 @@ NiParticleMeshesData::NiParticleMeshesData() NI_PARTICLE_MESHES_DATA_CONSTRUCT {
 NiParticleMeshesData::~NiParticleMeshesData() {}
 
 void NiParticleMeshesData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_MESHES_DATA_READ
+  NI_PARTICLE_MESHES_DATA_READ
 }
 
 void NiParticleMeshesData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_MESHES_DATA_WRITE
+  NI_PARTICLE_MESHES_DATA_WRITE
 }
 
 string NiParticleMeshesData::asString( bool verbose ) const {
-	NI_PARTICLE_MESHES_DATA_STRING
+  NI_PARTICLE_MESHES_DATA_STRING
 }
 
 void NiParticleMeshesData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_MESHES_DATA_FIXLINKS
+  NI_PARTICLE_MESHES_DATA_FIXLINKS
 }
 
+const Type & NiParticleMeshesData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleMeshesData.h b/obj/NiParticleMeshesData.h
index f60abf087129d5f780bdc466df669c2c759b4300..02577ba5542a3dfefffbe8fdb6c88859c3231345 100644
--- a/obj/NiParticleMeshesData.h
+++ b/obj/NiParticleMeshesData.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleMeshesData> NiParticleMeshesDataRef;
 
 class NiParticleMeshesData : public NI_PARTICLE_MESHES_DATA_PARENT {
 public:
-	NiParticleMeshesData();
-	~NiParticleMeshesData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_MESHES_DATA_MEMBERS
+  NiParticleMeshesData();
+  ~NiParticleMeshesData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_MESHES_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleRotation.cpp b/obj/NiParticleRotation.cpp
index 63152f36e64e7116be6db85de592fe2b054f9ea2..99995ee0a5e523c056a8c7fa1c7a604b5ccc2f36 100644
--- a/obj/NiParticleRotation.cpp
+++ b/obj/NiParticleRotation.cpp
@@ -11,18 +11,22 @@ NiParticleRotation::NiParticleRotation() NI_PARTICLE_ROTATION_CONSTRUCT {}
 NiParticleRotation::~NiParticleRotation() {}
 
 void NiParticleRotation::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_ROTATION_READ
+  NI_PARTICLE_ROTATION_READ
 }
 
 void NiParticleRotation::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_ROTATION_WRITE
+  NI_PARTICLE_ROTATION_WRITE
 }
 
 string NiParticleRotation::asString( bool verbose ) const {
-	NI_PARTICLE_ROTATION_STRING
+  NI_PARTICLE_ROTATION_STRING
 }
 
 void NiParticleRotation::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_ROTATION_FIXLINKS
+  NI_PARTICLE_ROTATION_FIXLINKS
 }
 
+const Type & NiParticleRotation::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleRotation.h b/obj/NiParticleRotation.h
index e32c0d54443ecd33cebe075bd30220efc6772f81..3d87fa1ebdc9371d753a9702b0d32296213fe5d5 100644
--- a/obj/NiParticleRotation.h
+++ b/obj/NiParticleRotation.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleRotation> NiParticleRotationRef;
 
 class NiParticleRotation : public NI_PARTICLE_ROTATION_PARENT {
 public:
-	NiParticleRotation();
-	~NiParticleRotation();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_ROTATION_MEMBERS
+  NiParticleRotation();
+  ~NiParticleRotation();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_ROTATION_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleSystem.cpp b/obj/NiParticleSystem.cpp
index c705b516f45622adf6dd732d5473cd2a6e93c187..793b7ab604517c6cd3e0929f028728debaa24d4e 100644
--- a/obj/NiParticleSystem.cpp
+++ b/obj/NiParticleSystem.cpp
@@ -2,8 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiParticleSystem.h"
-#include "AParticleModifier.h"
-#include "APSysModifier.h"
+#include "NiPSysModifier.h"
 
 //Definition of TYPE constant
 const Type NiParticleSystem::TYPE("NiParticleSystem", &NI_PARTICLE_SYSTEM_PARENT::TYPE );
@@ -13,18 +12,22 @@ NiParticleSystem::NiParticleSystem() NI_PARTICLE_SYSTEM_CONSTRUCT {}
 NiParticleSystem::~NiParticleSystem() {}
 
 void NiParticleSystem::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_SYSTEM_READ
+  NI_PARTICLE_SYSTEM_READ
 }
 
 void NiParticleSystem::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_SYSTEM_WRITE
+  NI_PARTICLE_SYSTEM_WRITE
 }
 
 string NiParticleSystem::asString( bool verbose ) const {
-	NI_PARTICLE_SYSTEM_STRING
+  NI_PARTICLE_SYSTEM_STRING
 }
 
 void NiParticleSystem::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_SYSTEM_FIXLINKS
+  NI_PARTICLE_SYSTEM_FIXLINKS
 }
 
+const Type & NiParticleSystem::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleSystem.h b/obj/NiParticleSystem.h
index 7bac9d78f5bf20dba52edf2d2cf7aa1cf48df434..4919bf6ab217f9342d57f953b00fb450d9d621d2 100644
--- a/obj/NiParticleSystem.h
+++ b/obj/NiParticleSystem.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleSystem> NiParticleSystemRef;
 
 class NiParticleSystem : public NI_PARTICLE_SYSTEM_PARENT {
 public:
-	NiParticleSystem();
-	~NiParticleSystem();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_SYSTEM_MEMBERS
+  NiParticleSystem();
+  ~NiParticleSystem();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_SYSTEM_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleSystemController.cpp b/obj/NiParticleSystemController.cpp
index ad6affc2af3c262f6a0aae836087a5fa294045d1..584c8ea0075c2286c98d68c678a5459612ea0060 100644
--- a/obj/NiParticleSystemController.cpp
+++ b/obj/NiParticleSystemController.cpp
@@ -2,7 +2,10 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiParticleSystemController.h"
+#include "NiObject.h"
+#include "NiObject.h"
 #include "AParticleModifier.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type NiParticleSystemController::TYPE("NiParticleSystemController", &NI_PARTICLE_SYSTEM_CONTROLLER_PARENT::TYPE );
@@ -12,18 +15,22 @@ NiParticleSystemController::NiParticleSystemController() NI_PARTICLE_SYSTEM_CONT
 NiParticleSystemController::~NiParticleSystemController() {}
 
 void NiParticleSystemController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_SYSTEM_CONTROLLER_READ
+  NI_PARTICLE_SYSTEM_CONTROLLER_READ
 }
 
 void NiParticleSystemController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_SYSTEM_CONTROLLER_WRITE
+  NI_PARTICLE_SYSTEM_CONTROLLER_WRITE
 }
 
 string NiParticleSystemController::asString( bool verbose ) const {
-	NI_PARTICLE_SYSTEM_CONTROLLER_STRING
+  NI_PARTICLE_SYSTEM_CONTROLLER_STRING
 }
 
 void NiParticleSystemController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_SYSTEM_CONTROLLER_FIXLINKS
+  NI_PARTICLE_SYSTEM_CONTROLLER_FIXLINKS
 }
 
+const Type & NiParticleSystemController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleSystemController.h b/obj/NiParticleSystemController.h
index 4027f2700d8895791d2645e1f346ac402c9bc4a3..098d3be7c87930db20cf9e5a710b09fe1349ab73 100644
--- a/obj/NiParticleSystemController.h
+++ b/obj/NiParticleSystemController.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleSystemController> NiParticleSystemControllerRef;
 
 class NiParticleSystemController : public NI_PARTICLE_SYSTEM_CONTROLLER_PARENT {
 public:
-	NiParticleSystemController();
-	~NiParticleSystemController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_SYSTEM_CONTROLLER_MEMBERS
+  NiParticleSystemController();
+  ~NiParticleSystemController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_SYSTEM_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticles.cpp b/obj/NiParticles.cpp
index 205ceab5dc6011311a1f038ae6ee04c80b65c9ad..a019293d73d24ee312f53a4eb6e124115e224f2c 100644
--- a/obj/NiParticles.cpp
+++ b/obj/NiParticles.cpp
@@ -11,18 +11,22 @@ NiParticles::NiParticles() NI_PARTICLES_CONSTRUCT {}
 NiParticles::~NiParticles() {}
 
 void NiParticles::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLES_READ
+  NI_PARTICLES_READ
 }
 
 void NiParticles::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLES_WRITE
+  NI_PARTICLES_WRITE
 }
 
 string NiParticles::asString( bool verbose ) const {
-	NI_PARTICLES_STRING
+  NI_PARTICLES_STRING
 }
 
 void NiParticles::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLES_FIXLINKS
+  NI_PARTICLES_FIXLINKS
 }
 
+const Type & NiParticles::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticles.h b/obj/NiParticles.h
index 0cc486b5968021cc09c75652a759be040b0afe57..065c591c73ebdda4d1f16426fb0c010ce25a841e 100644
--- a/obj/NiParticles.h
+++ b/obj/NiParticles.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticles> NiParticlesRef;
 
 class NiParticles : public NI_PARTICLES_PARENT {
 public:
-	NiParticles();
-	~NiParticles();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLES_MEMBERS
+  NiParticles();
+  ~NiParticles();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLES_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticlesData.cpp b/obj/NiParticlesData.cpp
index e04b1cde185b4761b187d6a7ad4e844662e412ba..486d1a746479579fd278680af7233786b47b2c9a 100644
--- a/obj/NiParticlesData.cpp
+++ b/obj/NiParticlesData.cpp
@@ -11,18 +11,22 @@ NiParticlesData::NiParticlesData() NI_PARTICLES_DATA_CONSTRUCT {}
 NiParticlesData::~NiParticlesData() {}
 
 void NiParticlesData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLES_DATA_READ
+  NI_PARTICLES_DATA_READ
 }
 
 void NiParticlesData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLES_DATA_WRITE
+  NI_PARTICLES_DATA_WRITE
 }
 
 string NiParticlesData::asString( bool verbose ) const {
-	NI_PARTICLES_DATA_STRING
+  NI_PARTICLES_DATA_STRING
 }
 
 void NiParticlesData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLES_DATA_FIXLINKS
+  NI_PARTICLES_DATA_FIXLINKS
 }
 
+const Type & NiParticlesData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticlesData.h b/obj/NiParticlesData.h
index 04683b1865d90bdf902056692a69953d50d1aec5..2dc6bd04da9ede34c2b34808f1e83d9005b73d6e 100644
--- a/obj/NiParticlesData.h
+++ b/obj/NiParticlesData.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticlesData> NiParticlesDataRef;
 
 class NiParticlesData : public NI_PARTICLES_DATA_PARENT {
 public:
-	NiParticlesData();
-	~NiParticlesData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLES_DATA_MEMBERS
+  NiParticlesData();
+  ~NiParticlesData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLES_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPathController.cpp b/obj/NiPathController.cpp
index 610169c359d20446bfa6983a09122585a75de534..0ab135dfcbbe75703cf9d6179937dac9d7c52403 100644
--- a/obj/NiPathController.cpp
+++ b/obj/NiPathController.cpp
@@ -13,18 +13,22 @@ NiPathController::NiPathController() NI_PATH_CONTROLLER_CONSTRUCT {}
 NiPathController::~NiPathController() {}
 
 void NiPathController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PATH_CONTROLLER_READ
+  NI_PATH_CONTROLLER_READ
 }
 
 void NiPathController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PATH_CONTROLLER_WRITE
+  NI_PATH_CONTROLLER_WRITE
 }
 
 string NiPathController::asString( bool verbose ) const {
-	NI_PATH_CONTROLLER_STRING
+  NI_PATH_CONTROLLER_STRING
 }
 
 void NiPathController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PATH_CONTROLLER_FIXLINKS
+  NI_PATH_CONTROLLER_FIXLINKS
 }
 
+const Type & NiPathController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPathController.h b/obj/NiPathController.h
index bf26ab6232b8087cf4c669f070b0214ea148af44..0685c85c9adae51798d4178136994cc85d095447 100644
--- a/obj/NiPathController.h
+++ b/obj/NiPathController.h
@@ -16,16 +16,17 @@ typedef Ref<NiPathController> NiPathControllerRef;
 
 class NiPathController : public NI_PATH_CONTROLLER_PARENT {
 public:
-	NiPathController();
-	~NiPathController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PATH_CONTROLLER_MEMBERS
+  NiPathController();
+  ~NiPathController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PATH_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPathInterpolator.cpp b/obj/NiPathInterpolator.cpp
index 6a4e66da76d304a8241353060e657ad04c73c15e..9d42f00fd2032a8d58efedb0f5db2e687fb070c2 100644
--- a/obj/NiPathInterpolator.cpp
+++ b/obj/NiPathInterpolator.cpp
@@ -13,18 +13,22 @@ NiPathInterpolator::NiPathInterpolator() NI_PATH_INTERPOLATOR_CONSTRUCT {}
 NiPathInterpolator::~NiPathInterpolator() {}
 
 void NiPathInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PATH_INTERPOLATOR_READ
+  NI_PATH_INTERPOLATOR_READ
 }
 
 void NiPathInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PATH_INTERPOLATOR_WRITE
+  NI_PATH_INTERPOLATOR_WRITE
 }
 
 string NiPathInterpolator::asString( bool verbose ) const {
-	NI_PATH_INTERPOLATOR_STRING
+  NI_PATH_INTERPOLATOR_STRING
 }
 
 void NiPathInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PATH_INTERPOLATOR_FIXLINKS
+  NI_PATH_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiPathInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPathInterpolator.h b/obj/NiPathInterpolator.h
index 7bc7db1417733d72fa26d1230d03d4375f5a017d..1a81119a2567bce30cf6fe67b21bf95f9ffc1c88 100644
--- a/obj/NiPathInterpolator.h
+++ b/obj/NiPathInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiPathInterpolator> NiPathInterpolatorRef;
 
 class NiPathInterpolator : public NI_PATH_INTERPOLATOR_PARENT {
 public:
-	NiPathInterpolator();
-	~NiPathInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PATH_INTERPOLATOR_MEMBERS
+  NiPathInterpolator();
+  ~NiPathInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PATH_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPixelData.cpp b/obj/NiPixelData.cpp
index 40d776d812916386053eb7e556d2f1a7889a2f24..64e1d2ca4db11b45c29f7cec32f9ce0f5086fc19 100644
--- a/obj/NiPixelData.cpp
+++ b/obj/NiPixelData.cpp
@@ -12,18 +12,22 @@ NiPixelData::NiPixelData() NI_PIXEL_DATA_CONSTRUCT {}
 NiPixelData::~NiPixelData() {}
 
 void NiPixelData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PIXEL_DATA_READ
+  NI_PIXEL_DATA_READ
 }
 
 void NiPixelData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PIXEL_DATA_WRITE
+  NI_PIXEL_DATA_WRITE
 }
 
 string NiPixelData::asString( bool verbose ) const {
-	NI_PIXEL_DATA_STRING
+  NI_PIXEL_DATA_STRING
 }
 
 void NiPixelData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PIXEL_DATA_FIXLINKS
+  NI_PIXEL_DATA_FIXLINKS
 }
 
+const Type & NiPixelData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPixelData.h b/obj/NiPixelData.h
index ded9779c8cfb667df2d2c85bc51b97f2a2b53c1b..dbe13d4605207b0d725631a32f657197a652a81e 100644
--- a/obj/NiPixelData.h
+++ b/obj/NiPixelData.h
@@ -16,16 +16,17 @@ typedef Ref<NiPixelData> NiPixelDataRef;
 
 class NiPixelData : public NI_PIXEL_DATA_PARENT {
 public:
-	NiPixelData();
-	~NiPixelData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PIXEL_DATA_MEMBERS
+  NiPixelData();
+  ~NiPixelData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PIXEL_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPlanarCollider.cpp b/obj/NiPlanarCollider.cpp
index 84ba909676c61424de4e7fc84786107acd2b5073..a24fcbfdde2a5347e67e2f3d0b68d0bf6da5ece0 100644
--- a/obj/NiPlanarCollider.cpp
+++ b/obj/NiPlanarCollider.cpp
@@ -11,18 +11,22 @@ NiPlanarCollider::NiPlanarCollider() NI_PLANAR_COLLIDER_CONSTRUCT {}
 NiPlanarCollider::~NiPlanarCollider() {}
 
 void NiPlanarCollider::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PLANAR_COLLIDER_READ
+  NI_PLANAR_COLLIDER_READ
 }
 
 void NiPlanarCollider::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PLANAR_COLLIDER_WRITE
+  NI_PLANAR_COLLIDER_WRITE
 }
 
 string NiPlanarCollider::asString( bool verbose ) const {
-	NI_PLANAR_COLLIDER_STRING
+  NI_PLANAR_COLLIDER_STRING
 }
 
 void NiPlanarCollider::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PLANAR_COLLIDER_FIXLINKS
+  NI_PLANAR_COLLIDER_FIXLINKS
 }
 
+const Type & NiPlanarCollider::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPlanarCollider.h b/obj/NiPlanarCollider.h
index a2ec91e7d70d235888bc210be10c6afda8b60027..001e594c6ebbee4aef90b4c5600138b2db3c77c2 100644
--- a/obj/NiPlanarCollider.h
+++ b/obj/NiPlanarCollider.h
@@ -16,16 +16,17 @@ typedef Ref<NiPlanarCollider> NiPlanarColliderRef;
 
 class NiPlanarCollider : public NI_PLANAR_COLLIDER_PARENT {
 public:
-	NiPlanarCollider();
-	~NiPlanarCollider();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PLANAR_COLLIDER_MEMBERS
+  NiPlanarCollider();
+  ~NiPlanarCollider();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PLANAR_COLLIDER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPoint3Interpolator.cpp b/obj/NiPoint3Interpolator.cpp
index 29e1d8b35dce577822bbe672bcf2af7d0ec67b56..c92e225da01d8a71f44a4164fae090a056cd7f49 100644
--- a/obj/NiPoint3Interpolator.cpp
+++ b/obj/NiPoint3Interpolator.cpp
@@ -12,18 +12,22 @@ NiPoint3Interpolator::NiPoint3Interpolator() NI_POINT3_INTERPOLATOR_CONSTRUCT {}
 NiPoint3Interpolator::~NiPoint3Interpolator() {}
 
 void NiPoint3Interpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_POINT3_INTERPOLATOR_READ
+  NI_POINT3_INTERPOLATOR_READ
 }
 
 void NiPoint3Interpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_POINT3_INTERPOLATOR_WRITE
+  NI_POINT3_INTERPOLATOR_WRITE
 }
 
 string NiPoint3Interpolator::asString( bool verbose ) const {
-	NI_POINT3_INTERPOLATOR_STRING
+  NI_POINT3_INTERPOLATOR_STRING
 }
 
 void NiPoint3Interpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_POINT3_INTERPOLATOR_FIXLINKS
+  NI_POINT3_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiPoint3Interpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPoint3Interpolator.h b/obj/NiPoint3Interpolator.h
index 4428935d870bdc75cb9215dc8529290c51862d24..646178246f9e005edaee3e301c193898e5530eac 100644
--- a/obj/NiPoint3Interpolator.h
+++ b/obj/NiPoint3Interpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiPoint3Interpolator> NiPoint3InterpolatorRef;
 
 class NiPoint3Interpolator : public NI_POINT3_INTERPOLATOR_PARENT {
 public:
-	NiPoint3Interpolator();
-	~NiPoint3Interpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_POINT3_INTERPOLATOR_MEMBERS
+  NiPoint3Interpolator();
+  ~NiPoint3Interpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_POINT3_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPointLight.cpp b/obj/NiPointLight.cpp
index 8b7b5f74f464c375c3f58e90547f221cf4ec1b7d..e03e1200a057e7ce24ce1e6afeca30060b40cf99 100644
--- a/obj/NiPointLight.cpp
+++ b/obj/NiPointLight.cpp
@@ -11,18 +11,22 @@ NiPointLight::NiPointLight() NI_POINT_LIGHT_CONSTRUCT {}
 NiPointLight::~NiPointLight() {}
 
 void NiPointLight::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_POINT_LIGHT_READ
+  NI_POINT_LIGHT_READ
 }
 
 void NiPointLight::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_POINT_LIGHT_WRITE
+  NI_POINT_LIGHT_WRITE
 }
 
 string NiPointLight::asString( bool verbose ) const {
-	NI_POINT_LIGHT_STRING
+  NI_POINT_LIGHT_STRING
 }
 
 void NiPointLight::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_POINT_LIGHT_FIXLINKS
+  NI_POINT_LIGHT_FIXLINKS
 }
 
+const Type & NiPointLight::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPointLight.h b/obj/NiPointLight.h
index d09878292a2a51f2826a1f58af14f827a7606187..bd6fc0d452d8a0a91d23676ceda2cf05f24a9674 100644
--- a/obj/NiPointLight.h
+++ b/obj/NiPointLight.h
@@ -16,16 +16,17 @@ typedef Ref<NiPointLight> NiPointLightRef;
 
 class NiPointLight : public NI_POINT_LIGHT_PARENT {
 public:
-	NiPointLight();
-	~NiPointLight();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_POINT_LIGHT_MEMBERS
+  NiPointLight();
+  ~NiPointLight();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_POINT_LIGHT_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPosData.cpp b/obj/NiPosData.cpp
index 1109f8a16c975402660f192fa78c5bf5d68025ea..b5e8ddb3f61058026c8dc6dfb1995ab0929c4f64 100644
--- a/obj/NiPosData.cpp
+++ b/obj/NiPosData.cpp
@@ -11,18 +11,22 @@ NiPosData::NiPosData() NI_POS_DATA_CONSTRUCT {}
 NiPosData::~NiPosData() {}
 
 void NiPosData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_POS_DATA_READ
+  NI_POS_DATA_READ
 }
 
 void NiPosData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_POS_DATA_WRITE
+  NI_POS_DATA_WRITE
 }
 
 string NiPosData::asString( bool verbose ) const {
-	NI_POS_DATA_STRING
+  NI_POS_DATA_STRING
 }
 
 void NiPosData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_POS_DATA_FIXLINKS
+  NI_POS_DATA_FIXLINKS
 }
 
+const Type & NiPosData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPosData.h b/obj/NiPosData.h
index 6e5409a358a6b42bc0d1e7d66b5c00b007f48f62..9d46cff554318e843555ba66c98db31879d630a0 100644
--- a/obj/NiPosData.h
+++ b/obj/NiPosData.h
@@ -16,16 +16,17 @@ typedef Ref<NiPosData> NiPosDataRef;
 
 class NiPosData : public NI_POS_DATA_PARENT {
 public:
-	NiPosData();
-	~NiPosData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_POS_DATA_MEMBERS
+  NiPosData();
+  ~NiPosData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_POS_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiProperty.cpp b/obj/NiProperty.cpp
index 4660cc5f17a44236f9acd62be46d7b7ced0bae83..f61c2321088e793226ffc9b3d507ceb8519add6c 100644
--- a/obj/NiProperty.cpp
+++ b/obj/NiProperty.cpp
@@ -11,18 +11,22 @@ NiProperty::NiProperty() NI_PROPERTY_CONSTRUCT {}
 NiProperty::~NiProperty() {}
 
 void NiProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PROPERTY_READ
+  NI_PROPERTY_READ
 }
 
 void NiProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PROPERTY_WRITE
+  NI_PROPERTY_WRITE
 }
 
 string NiProperty::asString( bool verbose ) const {
-	NI_PROPERTY_STRING
+  NI_PROPERTY_STRING
 }
 
 void NiProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PROPERTY_FIXLINKS
+  NI_PROPERTY_FIXLINKS
 }
 
+const Type & NiProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiProperty.h b/obj/NiProperty.h
index 7437faa602db4f4131627ddc825d2a056c34ff32..7547efb1c9ff2f59565be5d9e46111637da44409 100644
--- a/obj/NiProperty.h
+++ b/obj/NiProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiProperty> NiPropertyRef;
 
 class NiProperty : public NI_PROPERTY_PARENT {
 public:
-	NiProperty();
-	~NiProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PROPERTY_MEMBERS
+  NiProperty();
+  ~NiProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiRangeLODData.cpp b/obj/NiRangeLODData.cpp
index 3c49e0611ac953bed3b8237484f1a18f4dab8718..f9f45d42ce6b52687bb0d3e6a7dd9290018f13c4 100644
--- a/obj/NiRangeLODData.cpp
+++ b/obj/NiRangeLODData.cpp
@@ -11,18 +11,22 @@ NiRangeLODData::NiRangeLODData() NI_RANGE_L_O_D_DATA_CONSTRUCT {}
 NiRangeLODData::~NiRangeLODData() {}
 
 void NiRangeLODData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_RANGE_L_O_D_DATA_READ
+  NI_RANGE_L_O_D_DATA_READ
 }
 
 void NiRangeLODData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_RANGE_L_O_D_DATA_WRITE
+  NI_RANGE_L_O_D_DATA_WRITE
 }
 
 string NiRangeLODData::asString( bool verbose ) const {
-	NI_RANGE_L_O_D_DATA_STRING
+  NI_RANGE_L_O_D_DATA_STRING
 }
 
 void NiRangeLODData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_RANGE_L_O_D_DATA_FIXLINKS
+  NI_RANGE_L_O_D_DATA_FIXLINKS
 }
 
+const Type & NiRangeLODData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiRangeLODData.h b/obj/NiRangeLODData.h
index 822a806f44519e691eeb35b85ae224c064b5be03..7998e4edd8233a76c29c0ef5de6717bdb8e9f858 100644
--- a/obj/NiRangeLODData.h
+++ b/obj/NiRangeLODData.h
@@ -16,16 +16,17 @@ typedef Ref<NiRangeLODData> NiRangeLODDataRef;
 
 class NiRangeLODData : public NI_RANGE_L_O_D_DATA_PARENT {
 public:
-	NiRangeLODData();
-	~NiRangeLODData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_RANGE_L_O_D_DATA_MEMBERS
+  NiRangeLODData();
+  ~NiRangeLODData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_RANGE_L_O_D_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiRotatingParticles.cpp b/obj/NiRotatingParticles.cpp
index e1c382c962b7cef44c58949760a7dc9f39e82cfd..160cc663e65799fddd7db6b16aa28c3dc1cd0391 100644
--- a/obj/NiRotatingParticles.cpp
+++ b/obj/NiRotatingParticles.cpp
@@ -11,18 +11,22 @@ NiRotatingParticles::NiRotatingParticles() NI_ROTATING_PARTICLES_CONSTRUCT {}
 NiRotatingParticles::~NiRotatingParticles() {}
 
 void NiRotatingParticles::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_ROTATING_PARTICLES_READ
+  NI_ROTATING_PARTICLES_READ
 }
 
 void NiRotatingParticles::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_ROTATING_PARTICLES_WRITE
+  NI_ROTATING_PARTICLES_WRITE
 }
 
 string NiRotatingParticles::asString( bool verbose ) const {
-	NI_ROTATING_PARTICLES_STRING
+  NI_ROTATING_PARTICLES_STRING
 }
 
 void NiRotatingParticles::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_ROTATING_PARTICLES_FIXLINKS
+  NI_ROTATING_PARTICLES_FIXLINKS
 }
 
+const Type & NiRotatingParticles::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiRotatingParticles.h b/obj/NiRotatingParticles.h
index f0eb702fffb41fb07d5d3b78d428a4ebf5d73fad..3494f1578785a3dbdd196891d7bd80c1e63a7ba1 100644
--- a/obj/NiRotatingParticles.h
+++ b/obj/NiRotatingParticles.h
@@ -16,16 +16,17 @@ typedef Ref<NiRotatingParticles> NiRotatingParticlesRef;
 
 class NiRotatingParticles : public NI_ROTATING_PARTICLES_PARENT {
 public:
-	NiRotatingParticles();
-	~NiRotatingParticles();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_ROTATING_PARTICLES_MEMBERS
+  NiRotatingParticles();
+  ~NiRotatingParticles();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_ROTATING_PARTICLES_MEMBERS
 };
+
 #endif
diff --git a/obj/NiRotatingParticlesData.cpp b/obj/NiRotatingParticlesData.cpp
index bdd11fc420d57d53c41ae75942f13825fccf0f88..e91ccfba555aabd8a40e0eb87b09d3f8cb5d42c8 100644
--- a/obj/NiRotatingParticlesData.cpp
+++ b/obj/NiRotatingParticlesData.cpp
@@ -11,18 +11,22 @@ NiRotatingParticlesData::NiRotatingParticlesData() NI_ROTATING_PARTICLES_DATA_CO
 NiRotatingParticlesData::~NiRotatingParticlesData() {}
 
 void NiRotatingParticlesData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_ROTATING_PARTICLES_DATA_READ
+  NI_ROTATING_PARTICLES_DATA_READ
 }
 
 void NiRotatingParticlesData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_ROTATING_PARTICLES_DATA_WRITE
+  NI_ROTATING_PARTICLES_DATA_WRITE
 }
 
 string NiRotatingParticlesData::asString( bool verbose ) const {
-	NI_ROTATING_PARTICLES_DATA_STRING
+  NI_ROTATING_PARTICLES_DATA_STRING
 }
 
 void NiRotatingParticlesData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_ROTATING_PARTICLES_DATA_FIXLINKS
+  NI_ROTATING_PARTICLES_DATA_FIXLINKS
 }
 
+const Type & NiRotatingParticlesData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiRotatingParticlesData.h b/obj/NiRotatingParticlesData.h
index dd1ee84dc5665c3022323779ec4b3890523a6d27..42f61beed0ed85ac3ae8d8034a1212cb8411c15a 100644
--- a/obj/NiRotatingParticlesData.h
+++ b/obj/NiRotatingParticlesData.h
@@ -16,16 +16,17 @@ typedef Ref<NiRotatingParticlesData> NiRotatingParticlesDataRef;
 
 class NiRotatingParticlesData : public NI_ROTATING_PARTICLES_DATA_PARENT {
 public:
-	NiRotatingParticlesData();
-	~NiRotatingParticlesData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_ROTATING_PARTICLES_DATA_MEMBERS
+  NiRotatingParticlesData();
+  ~NiRotatingParticlesData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_ROTATING_PARTICLES_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiScreenLODData.cpp b/obj/NiScreenLODData.cpp
index ab3ae7c76312548320b2e097739fdeec37d63445..b12d948d4aa6fdd0d961a46b94e776c6a9d46fea 100644
--- a/obj/NiScreenLODData.cpp
+++ b/obj/NiScreenLODData.cpp
@@ -11,18 +11,22 @@ NiScreenLODData::NiScreenLODData() NI_SCREEN_L_O_D_DATA_CONSTRUCT {}
 NiScreenLODData::~NiScreenLODData() {}
 
 void NiScreenLODData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SCREEN_L_O_D_DATA_READ
+  NI_SCREEN_L_O_D_DATA_READ
 }
 
 void NiScreenLODData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SCREEN_L_O_D_DATA_WRITE
+  NI_SCREEN_L_O_D_DATA_WRITE
 }
 
 string NiScreenLODData::asString( bool verbose ) const {
-	NI_SCREEN_L_O_D_DATA_STRING
+  NI_SCREEN_L_O_D_DATA_STRING
 }
 
 void NiScreenLODData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SCREEN_L_O_D_DATA_FIXLINKS
+  NI_SCREEN_L_O_D_DATA_FIXLINKS
 }
 
+const Type & NiScreenLODData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiScreenLODData.h b/obj/NiScreenLODData.h
index a44524703a9a43cc3d7445d6854a9b16326c3e01..01866197bd3f719efef6e9626b78d39199b18564 100644
--- a/obj/NiScreenLODData.h
+++ b/obj/NiScreenLODData.h
@@ -16,16 +16,17 @@ typedef Ref<NiScreenLODData> NiScreenLODDataRef;
 
 class NiScreenLODData : public NI_SCREEN_L_O_D_DATA_PARENT {
 public:
-	NiScreenLODData();
-	~NiScreenLODData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SCREEN_L_O_D_DATA_MEMBERS
+  NiScreenLODData();
+  ~NiScreenLODData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SCREEN_L_O_D_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSequenceStreamHelper.cpp b/obj/NiSequenceStreamHelper.cpp
index d8f50b3b5a1f039feea937e48196cf76cc3a5563..0bc548dcaf755eab3457282561e25059ae6f90ab 100644
--- a/obj/NiSequenceStreamHelper.cpp
+++ b/obj/NiSequenceStreamHelper.cpp
@@ -11,18 +11,22 @@ NiSequenceStreamHelper::NiSequenceStreamHelper() NI_SEQUENCE_STREAM_HELPER_CONST
 NiSequenceStreamHelper::~NiSequenceStreamHelper() {}
 
 void NiSequenceStreamHelper::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SEQUENCE_STREAM_HELPER_READ
+  NI_SEQUENCE_STREAM_HELPER_READ
 }
 
 void NiSequenceStreamHelper::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SEQUENCE_STREAM_HELPER_WRITE
+  NI_SEQUENCE_STREAM_HELPER_WRITE
 }
 
 string NiSequenceStreamHelper::asString( bool verbose ) const {
-	NI_SEQUENCE_STREAM_HELPER_STRING
+  NI_SEQUENCE_STREAM_HELPER_STRING
 }
 
 void NiSequenceStreamHelper::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SEQUENCE_STREAM_HELPER_FIXLINKS
+  NI_SEQUENCE_STREAM_HELPER_FIXLINKS
 }
 
+const Type & NiSequenceStreamHelper::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiSequenceStreamHelper.h b/obj/NiSequenceStreamHelper.h
index 129e59193eb2bd91cb7164f5b4cb730d0b5ca8a8..f7343023f714d9613d23a1b304fb57cd6419042e 100644
--- a/obj/NiSequenceStreamHelper.h
+++ b/obj/NiSequenceStreamHelper.h
@@ -16,16 +16,17 @@ typedef Ref<NiSequenceStreamHelper> NiSequenceStreamHelperRef;
 
 class NiSequenceStreamHelper : public NI_SEQUENCE_STREAM_HELPER_PARENT {
 public:
-	NiSequenceStreamHelper();
-	~NiSequenceStreamHelper();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SEQUENCE_STREAM_HELPER_MEMBERS
+  NiSequenceStreamHelper();
+  ~NiSequenceStreamHelper();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SEQUENCE_STREAM_HELPER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiShadeProperty.cpp b/obj/NiShadeProperty.cpp
index d64f6da8ee177dfca381dbec74e2c99e62f71316..7880f07191008b0583b7549a029bf10b9d22ee21 100644
--- a/obj/NiShadeProperty.cpp
+++ b/obj/NiShadeProperty.cpp
@@ -11,18 +11,22 @@ NiShadeProperty::NiShadeProperty() NI_SHADE_PROPERTY_CONSTRUCT {}
 NiShadeProperty::~NiShadeProperty() {}
 
 void NiShadeProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SHADE_PROPERTY_READ
+  NI_SHADE_PROPERTY_READ
 }
 
 void NiShadeProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SHADE_PROPERTY_WRITE
+  NI_SHADE_PROPERTY_WRITE
 }
 
 string NiShadeProperty::asString( bool verbose ) const {
-	NI_SHADE_PROPERTY_STRING
+  NI_SHADE_PROPERTY_STRING
 }
 
 void NiShadeProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SHADE_PROPERTY_FIXLINKS
+  NI_SHADE_PROPERTY_FIXLINKS
 }
 
+const Type & NiShadeProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiShadeProperty.h b/obj/NiShadeProperty.h
index db0314e0629ec41acc7bffe1261d198392636299..f9f6ae132cc1a6b9b5b658f3619e0d9e395fd610 100644
--- a/obj/NiShadeProperty.h
+++ b/obj/NiShadeProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiShadeProperty> NiShadePropertyRef;
 
 class NiShadeProperty : public NI_SHADE_PROPERTY_PARENT {
 public:
-	NiShadeProperty();
-	~NiShadeProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SHADE_PROPERTY_MEMBERS
+  NiShadeProperty();
+  ~NiShadeProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SHADE_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSingleInterpolatorController.cpp b/obj/NiSingleInterpolatorController.cpp
index a4f33eda3bc60af082c4e9a1ee574cfce69d1701..912969aa24199b93b8124be3a54775488a15d897 100644
--- a/obj/NiSingleInterpolatorController.cpp
+++ b/obj/NiSingleInterpolatorController.cpp
@@ -2,7 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiSingleInterpolatorController.h"
-#include "AInterpolator.h"
+#include "NiInterpolator.h"
 
 //Definition of TYPE constant
 const Type NiSingleInterpolatorController::TYPE("NiSingleInterpolatorController", &NI_SINGLE_INTERPOLATOR_CONTROLLER_PARENT::TYPE );
@@ -12,18 +12,22 @@ NiSingleInterpolatorController::NiSingleInterpolatorController() NI_SINGLE_INTER
 NiSingleInterpolatorController::~NiSingleInterpolatorController() {}
 
 void NiSingleInterpolatorController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SINGLE_INTERPOLATOR_CONTROLLER_READ
+  NI_SINGLE_INTERPOLATOR_CONTROLLER_READ
 }
 
 void NiSingleInterpolatorController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SINGLE_INTERPOLATOR_CONTROLLER_WRITE
+  NI_SINGLE_INTERPOLATOR_CONTROLLER_WRITE
 }
 
 string NiSingleInterpolatorController::asString( bool verbose ) const {
-	NI_SINGLE_INTERPOLATOR_CONTROLLER_STRING
+  NI_SINGLE_INTERPOLATOR_CONTROLLER_STRING
 }
 
 void NiSingleInterpolatorController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SINGLE_INTERPOLATOR_CONTROLLER_FIXLINKS
+  NI_SINGLE_INTERPOLATOR_CONTROLLER_FIXLINKS
 }
 
+const Type & NiSingleInterpolatorController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiSingleInterpolatorController.h b/obj/NiSingleInterpolatorController.h
index 5c1b7f4707fd4633d3412285faf2b9f61099b78f..2a49c57ccc91ec8ba7c3eadff6405f24e3bbc612 100644
--- a/obj/NiSingleInterpolatorController.h
+++ b/obj/NiSingleInterpolatorController.h
@@ -16,16 +16,17 @@ typedef Ref<NiSingleInterpolatorController> NiSingleInterpolatorControllerRef;
 
 class NiSingleInterpolatorController : public NI_SINGLE_INTERPOLATOR_CONTROLLER_PARENT {
 public:
-	NiSingleInterpolatorController();
-	~NiSingleInterpolatorController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SINGLE_INTERPOLATOR_CONTROLLER_MEMBERS
+  NiSingleInterpolatorController();
+  ~NiSingleInterpolatorController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SINGLE_INTERPOLATOR_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSkinData.cpp b/obj/NiSkinData.cpp
index 9d93e36840b83c87731963cefcca2a81b8029eff..c1a8f534e2b86d4aa76fa2a791e27b32aab40cee 100644
--- a/obj/NiSkinData.cpp
+++ b/obj/NiSkinData.cpp
@@ -12,18 +12,22 @@ NiSkinData::NiSkinData() NI_SKIN_DATA_CONSTRUCT {}
 NiSkinData::~NiSkinData() {}
 
 void NiSkinData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SKIN_DATA_READ
+  NI_SKIN_DATA_READ
 }
 
 void NiSkinData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SKIN_DATA_WRITE
+  NI_SKIN_DATA_WRITE
 }
 
 string NiSkinData::asString( bool verbose ) const {
-	NI_SKIN_DATA_STRING
+  NI_SKIN_DATA_STRING
 }
 
 void NiSkinData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SKIN_DATA_FIXLINKS
+  NI_SKIN_DATA_FIXLINKS
 }
 
+const Type & NiSkinData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiSkinData.h b/obj/NiSkinData.h
index 236b6ce4f0e7825770c173c77b05235a8fdc5955..6ae509dce459ae4ecae36d65adf6cd5a92b8e851 100644
--- a/obj/NiSkinData.h
+++ b/obj/NiSkinData.h
@@ -16,16 +16,17 @@ typedef Ref<NiSkinData> NiSkinDataRef;
 
 class NiSkinData : public NI_SKIN_DATA_PARENT {
 public:
-	NiSkinData();
-	~NiSkinData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SKIN_DATA_MEMBERS
+  NiSkinData();
+  ~NiSkinData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SKIN_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSkinInstance.cpp b/obj/NiSkinInstance.cpp
index 69c71145ce990518a7838da91376f0d2f0b72d94..647de1f3f9d1d78320fc7b93c75ab32c8dea68aa 100644
--- a/obj/NiSkinInstance.cpp
+++ b/obj/NiSkinInstance.cpp
@@ -14,20 +14,23 @@ NiSkinInstance::NiSkinInstance() NI_SKIN_INSTANCE_CONSTRUCT {}
 NiSkinInstance::~NiSkinInstance() {}
 
 void NiSkinInstance::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SKIN_INSTANCE_READ
+  NI_SKIN_INSTANCE_READ
 }
 
 void NiSkinInstance::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SKIN_INSTANCE_WRITE
+  NI_SKIN_INSTANCE_WRITE
 }
 
 string NiSkinInstance::asString( bool verbose ) const {
-	NI_SKIN_INSTANCE_STRING
+  NI_SKIN_INSTANCE_STRING
 }
 
 void NiSkinInstance::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SKIN_INSTANCE_FIXLINKS
+  NI_SKIN_INSTANCE_FIXLINKS
 }
 
-NiNode * NiSkinInstance::SkeletonRoot() const { return NULL; }
+const Type & NiSkinInstance::GetType() const {
+  return TYPE;
+};
 
+NiNode * NiSkinInstance::SkeletonRoot() const { return NULL; }
diff --git a/obj/NiSkinInstance.h b/obj/NiSkinInstance.h
index d6f991e652042cc3687401bf41ea3edc0d6c5957..de8398997347b0ef5a49174fe4389ed80a43b845 100644
--- a/obj/NiSkinInstance.h
+++ b/obj/NiSkinInstance.h
@@ -16,18 +16,18 @@ typedef Ref<NiSkinInstance> NiSkinInstanceRef;
 
 class NiSkinInstance : public NI_SKIN_INSTANCE_PARENT {
 public:
-	NiSkinInstance();
-	~NiSkinInstance();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-	
-	NiNode * SkeletonRoot() const;
-private:
-	NI_SKIN_INSTANCE_MEMBERS
+  NiSkinInstance();
+  ~NiSkinInstance();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NiNode * NiSkinInstance::SkeletonRoot() const;
+  NI_SKIN_INSTANCE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSkinPartition.cpp b/obj/NiSkinPartition.cpp
index 0b968c8cd97f2ccba1d4c03da8b7ac1f4a6508da..793f957cde6f13f8d2fa72ff4d86969bc251bb4f 100644
--- a/obj/NiSkinPartition.cpp
+++ b/obj/NiSkinPartition.cpp
@@ -11,18 +11,22 @@ NiSkinPartition::NiSkinPartition() NI_SKIN_PARTITION_CONSTRUCT {}
 NiSkinPartition::~NiSkinPartition() {}
 
 void NiSkinPartition::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SKIN_PARTITION_READ
+  NI_SKIN_PARTITION_READ
 }
 
 void NiSkinPartition::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SKIN_PARTITION_WRITE
+  NI_SKIN_PARTITION_WRITE
 }
 
 string NiSkinPartition::asString( bool verbose ) const {
-	NI_SKIN_PARTITION_STRING
+  NI_SKIN_PARTITION_STRING
 }
 
 void NiSkinPartition::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SKIN_PARTITION_FIXLINKS
+  NI_SKIN_PARTITION_FIXLINKS
 }
 
+const Type & NiSkinPartition::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiSkinPartition.h b/obj/NiSkinPartition.h
index 38850604112109e74e4ba387b535f10f3f4d4938..3670b59c6498fd356b7f167515c425c885ea7f99 100644
--- a/obj/NiSkinPartition.h
+++ b/obj/NiSkinPartition.h
@@ -16,16 +16,17 @@ typedef Ref<NiSkinPartition> NiSkinPartitionRef;
 
 class NiSkinPartition : public NI_SKIN_PARTITION_PARENT {
 public:
-	NiSkinPartition();
-	~NiSkinPartition();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SKIN_PARTITION_MEMBERS
+  NiSkinPartition();
+  ~NiSkinPartition();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SKIN_PARTITION_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSourceTexture.cpp b/obj/NiSourceTexture.cpp
index 81151a29e921f17f5c5553a3b86e60ccd3cb7d59..6cf6d520f8e743f45ab8525b9916fcd1dec2665c 100644
--- a/obj/NiSourceTexture.cpp
+++ b/obj/NiSourceTexture.cpp
@@ -2,6 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiSourceTexture.h"
+#include "NiObject.h"
 #include "NiPixelData.h"
 
 //Definition of TYPE constant
@@ -12,18 +13,22 @@ NiSourceTexture::NiSourceTexture() NI_SOURCE_TEXTURE_CONSTRUCT {}
 NiSourceTexture::~NiSourceTexture() {}
 
 void NiSourceTexture::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SOURCE_TEXTURE_READ
+  NI_SOURCE_TEXTURE_READ
 }
 
 void NiSourceTexture::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SOURCE_TEXTURE_WRITE
+  NI_SOURCE_TEXTURE_WRITE
 }
 
 string NiSourceTexture::asString( bool verbose ) const {
-	NI_SOURCE_TEXTURE_STRING
+  NI_SOURCE_TEXTURE_STRING
 }
 
 void NiSourceTexture::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SOURCE_TEXTURE_FIXLINKS
+  NI_SOURCE_TEXTURE_FIXLINKS
 }
 
+const Type & NiSourceTexture::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiSourceTexture.h b/obj/NiSourceTexture.h
index 28670018ad8343a3a881c0148401b652b93fee82..b787a2e69cfc2448a51d320a96254a858d32e8a9 100644
--- a/obj/NiSourceTexture.h
+++ b/obj/NiSourceTexture.h
@@ -16,16 +16,17 @@ typedef Ref<NiSourceTexture> NiSourceTextureRef;
 
 class NiSourceTexture : public NI_SOURCE_TEXTURE_PARENT {
 public:
-	NiSourceTexture();
-	~NiSourceTexture();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SOURCE_TEXTURE_MEMBERS
+  NiSourceTexture();
+  ~NiSourceTexture();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SOURCE_TEXTURE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSpecularProperty.cpp b/obj/NiSpecularProperty.cpp
index b18100c7b4fa8e0930781d6378f6a97e9911a065..10449a6d2c20c8c65a9c10bc359713684a2bc73c 100644
--- a/obj/NiSpecularProperty.cpp
+++ b/obj/NiSpecularProperty.cpp
@@ -11,18 +11,22 @@ NiSpecularProperty::NiSpecularProperty() NI_SPECULAR_PROPERTY_CONSTRUCT {}
 NiSpecularProperty::~NiSpecularProperty() {}
 
 void NiSpecularProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SPECULAR_PROPERTY_READ
+  NI_SPECULAR_PROPERTY_READ
 }
 
 void NiSpecularProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SPECULAR_PROPERTY_WRITE
+  NI_SPECULAR_PROPERTY_WRITE
 }
 
 string NiSpecularProperty::asString( bool verbose ) const {
-	NI_SPECULAR_PROPERTY_STRING
+  NI_SPECULAR_PROPERTY_STRING
 }
 
 void NiSpecularProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SPECULAR_PROPERTY_FIXLINKS
+  NI_SPECULAR_PROPERTY_FIXLINKS
 }
 
+const Type & NiSpecularProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiSpecularProperty.h b/obj/NiSpecularProperty.h
index a47ff8c3dda5bc874a5d35ea3b9aff1c77996a24..85c57e1e95fad1278424ecd08389ba971a808503 100644
--- a/obj/NiSpecularProperty.h
+++ b/obj/NiSpecularProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiSpecularProperty> NiSpecularPropertyRef;
 
 class NiSpecularProperty : public NI_SPECULAR_PROPERTY_PARENT {
 public:
-	NiSpecularProperty();
-	~NiSpecularProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SPECULAR_PROPERTY_MEMBERS
+  NiSpecularProperty();
+  ~NiSpecularProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SPECULAR_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSphericalCollider.cpp b/obj/NiSphericalCollider.cpp
index a5c30c96549cd13ef411e0bfe9cab7828dda4eee..538e55aab8625e6149ecaa81dfd017d82c2c82d8 100644
--- a/obj/NiSphericalCollider.cpp
+++ b/obj/NiSphericalCollider.cpp
@@ -11,18 +11,22 @@ NiSphericalCollider::NiSphericalCollider() NI_SPHERICAL_COLLIDER_CONSTRUCT {}
 NiSphericalCollider::~NiSphericalCollider() {}
 
 void NiSphericalCollider::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SPHERICAL_COLLIDER_READ
+  NI_SPHERICAL_COLLIDER_READ
 }
 
 void NiSphericalCollider::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SPHERICAL_COLLIDER_WRITE
+  NI_SPHERICAL_COLLIDER_WRITE
 }
 
 string NiSphericalCollider::asString( bool verbose ) const {
-	NI_SPHERICAL_COLLIDER_STRING
+  NI_SPHERICAL_COLLIDER_STRING
 }
 
 void NiSphericalCollider::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SPHERICAL_COLLIDER_FIXLINKS
+  NI_SPHERICAL_COLLIDER_FIXLINKS
 }
 
+const Type & NiSphericalCollider::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiSphericalCollider.h b/obj/NiSphericalCollider.h
index 64f116ed5e1a2afbcf2da3dfd710cabe9598ad41..7b04d866ffbba6977460b225d7da2d3916d4b2e9 100644
--- a/obj/NiSphericalCollider.h
+++ b/obj/NiSphericalCollider.h
@@ -16,16 +16,17 @@ typedef Ref<NiSphericalCollider> NiSphericalColliderRef;
 
 class NiSphericalCollider : public NI_SPHERICAL_COLLIDER_PARENT {
 public:
-	NiSphericalCollider();
-	~NiSphericalCollider();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SPHERICAL_COLLIDER_MEMBERS
+  NiSphericalCollider();
+  ~NiSphericalCollider();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SPHERICAL_COLLIDER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSpotLight.cpp b/obj/NiSpotLight.cpp
index 15f439d15a729a15fbf76de92895feea8f2065e4..01485ffb0af7194ba6903af686ca3ca0261623db 100644
--- a/obj/NiSpotLight.cpp
+++ b/obj/NiSpotLight.cpp
@@ -11,18 +11,22 @@ NiSpotLight::NiSpotLight() NI_SPOT_LIGHT_CONSTRUCT {}
 NiSpotLight::~NiSpotLight() {}
 
 void NiSpotLight::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SPOT_LIGHT_READ
+  NI_SPOT_LIGHT_READ
 }
 
 void NiSpotLight::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SPOT_LIGHT_WRITE
+  NI_SPOT_LIGHT_WRITE
 }
 
 string NiSpotLight::asString( bool verbose ) const {
-	NI_SPOT_LIGHT_STRING
+  NI_SPOT_LIGHT_STRING
 }
 
 void NiSpotLight::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SPOT_LIGHT_FIXLINKS
+  NI_SPOT_LIGHT_FIXLINKS
 }
 
+const Type & NiSpotLight::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiSpotLight.h b/obj/NiSpotLight.h
index 5f73cc9ed50a19177b831bfbd13b8f36be6c31e3..27f8bf5c8ef4ca7c5a817e1561ce9ee394d60ca2 100644
--- a/obj/NiSpotLight.h
+++ b/obj/NiSpotLight.h
@@ -16,16 +16,17 @@ typedef Ref<NiSpotLight> NiSpotLightRef;
 
 class NiSpotLight : public NI_SPOT_LIGHT_PARENT {
 public:
-	NiSpotLight();
-	~NiSpotLight();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SPOT_LIGHT_MEMBERS
+  NiSpotLight();
+  ~NiSpotLight();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SPOT_LIGHT_MEMBERS
 };
+
 #endif
diff --git a/obj/NiStencilProperty.cpp b/obj/NiStencilProperty.cpp
index 93122a1862ca7a77d1ec7506066ffff70e791e57..74584898d218db4b77655165da03df407e53ac69 100644
--- a/obj/NiStencilProperty.cpp
+++ b/obj/NiStencilProperty.cpp
@@ -11,18 +11,22 @@ NiStencilProperty::NiStencilProperty() NI_STENCIL_PROPERTY_CONSTRUCT {}
 NiStencilProperty::~NiStencilProperty() {}
 
 void NiStencilProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_STENCIL_PROPERTY_READ
+  NI_STENCIL_PROPERTY_READ
 }
 
 void NiStencilProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_STENCIL_PROPERTY_WRITE
+  NI_STENCIL_PROPERTY_WRITE
 }
 
 string NiStencilProperty::asString( bool verbose ) const {
-	NI_STENCIL_PROPERTY_STRING
+  NI_STENCIL_PROPERTY_STRING
 }
 
 void NiStencilProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_STENCIL_PROPERTY_FIXLINKS
+  NI_STENCIL_PROPERTY_FIXLINKS
 }
 
+const Type & NiStencilProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiStencilProperty.h b/obj/NiStencilProperty.h
index b25291d1cee17e68c12546f0ae58678d74f47ed5..281ffa290110165a3296a36a1d3d1453b475d080 100644
--- a/obj/NiStencilProperty.h
+++ b/obj/NiStencilProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiStencilProperty> NiStencilPropertyRef;
 
 class NiStencilProperty : public NI_STENCIL_PROPERTY_PARENT {
 public:
-	NiStencilProperty();
-	~NiStencilProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_STENCIL_PROPERTY_MEMBERS
+  NiStencilProperty();
+  ~NiStencilProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_STENCIL_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiStringExtraData.cpp b/obj/NiStringExtraData.cpp
index ad40d005ebf180e9037151cb42bc17b392edefef..243abdb720f9564148683499da1beb3c865f81e0 100644
--- a/obj/NiStringExtraData.cpp
+++ b/obj/NiStringExtraData.cpp
@@ -11,20 +11,23 @@ NiStringExtraData::NiStringExtraData() NI_STRING_EXTRA_DATA_CONSTRUCT {}
 NiStringExtraData::~NiStringExtraData() {}
 
 void NiStringExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_STRING_EXTRA_DATA_READ
+  NI_STRING_EXTRA_DATA_READ
 }
 
 void NiStringExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_STRING_EXTRA_DATA_WRITE
+  NI_STRING_EXTRA_DATA_WRITE
 }
 
 string NiStringExtraData::asString( bool verbose ) const {
-	NI_STRING_EXTRA_DATA_STRING
+  NI_STRING_EXTRA_DATA_STRING
 }
 
 void NiStringExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_STRING_EXTRA_DATA_FIXLINKS
+  NI_STRING_EXTRA_DATA_FIXLINKS
 }
 
-uint NiStringExtraData::BytesRemaining() const { return 0; };
+const Type & NiStringExtraData::GetType() const {
+  return TYPE;
+};
 
+uint NiStringExtraData::BytesRemaining() const { return uint(); }
diff --git a/obj/NiStringExtraData.h b/obj/NiStringExtraData.h
index 123bf359985e4feb069dec41f7e8b9994737d9a5..2dc2d96d669aa179c8685eca23ecb0313ddf120a 100644
--- a/obj/NiStringExtraData.h
+++ b/obj/NiStringExtraData.h
@@ -16,18 +16,18 @@ typedef Ref<NiStringExtraData> NiStringExtraDataRef;
 
 class NiStringExtraData : public NI_STRING_EXTRA_DATA_PARENT {
 public:
-	NiStringExtraData();
-	~NiStringExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	uint BytesRemaining() const;
-
-	NI_STRING_EXTRA_DATA_MEMBERS
+  NiStringExtraData();
+  ~NiStringExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  uint BytesRemaining() const;
+  NI_STRING_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiStringPalette.cpp b/obj/NiStringPalette.cpp
index 2cc6d8d5e439439465bc1c15b7fb9577917e7db9..ca7b2c79b9981705d3fa3f22e332ab60fb7035ae 100644
--- a/obj/NiStringPalette.cpp
+++ b/obj/NiStringPalette.cpp
@@ -11,18 +11,22 @@ NiStringPalette::NiStringPalette() NI_STRING_PALETTE_CONSTRUCT {}
 NiStringPalette::~NiStringPalette() {}
 
 void NiStringPalette::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_STRING_PALETTE_READ
+  NI_STRING_PALETTE_READ
 }
 
 void NiStringPalette::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_STRING_PALETTE_WRITE
+  NI_STRING_PALETTE_WRITE
 }
 
 string NiStringPalette::asString( bool verbose ) const {
-	NI_STRING_PALETTE_STRING
+  NI_STRING_PALETTE_STRING
 }
 
 void NiStringPalette::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_STRING_PALETTE_FIXLINKS
+  NI_STRING_PALETTE_FIXLINKS
 }
 
+const Type & NiStringPalette::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiStringPalette.h b/obj/NiStringPalette.h
index db2a1524f10ff69fa6179c603eeaca87405ab1ce..383577dfc0af9ae809bc70da421a594472195962 100644
--- a/obj/NiStringPalette.h
+++ b/obj/NiStringPalette.h
@@ -16,16 +16,17 @@ typedef Ref<NiStringPalette> NiStringPaletteRef;
 
 class NiStringPalette : public NI_STRING_PALETTE_PARENT {
 public:
-	NiStringPalette();
-	~NiStringPalette();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_STRING_PALETTE_MEMBERS
+  NiStringPalette();
+  ~NiStringPalette();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_STRING_PALETTE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiStringsExtraData.cpp b/obj/NiStringsExtraData.cpp
index e576e797118a8594854fed6358f3df4d670fb996..2f5b00e6eb2d46aebebbe02768c4b405941cbd88 100644
--- a/obj/NiStringsExtraData.cpp
+++ b/obj/NiStringsExtraData.cpp
@@ -11,18 +11,22 @@ NiStringsExtraData::NiStringsExtraData() NI_STRINGS_EXTRA_DATA_CONSTRUCT {}
 NiStringsExtraData::~NiStringsExtraData() {}
 
 void NiStringsExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_STRINGS_EXTRA_DATA_READ
+  NI_STRINGS_EXTRA_DATA_READ
 }
 
 void NiStringsExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_STRINGS_EXTRA_DATA_WRITE
+  NI_STRINGS_EXTRA_DATA_WRITE
 }
 
 string NiStringsExtraData::asString( bool verbose ) const {
-	NI_STRINGS_EXTRA_DATA_STRING
+  NI_STRINGS_EXTRA_DATA_STRING
 }
 
 void NiStringsExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_STRINGS_EXTRA_DATA_FIXLINKS
+  NI_STRINGS_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiStringsExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiStringsExtraData.h b/obj/NiStringsExtraData.h
index 32dd987cb16d1f3ea07635414a7a431e4b467602..a55ee196148ab94654591a0d4320bea214e23131 100644
--- a/obj/NiStringsExtraData.h
+++ b/obj/NiStringsExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiStringsExtraData> NiStringsExtraDataRef;
 
 class NiStringsExtraData : public NI_STRINGS_EXTRA_DATA_PARENT {
 public:
-	NiStringsExtraData();
-	~NiStringsExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_STRINGS_EXTRA_DATA_MEMBERS
+  NiStringsExtraData();
+  ~NiStringsExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_STRINGS_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTextKeyExtraData.cpp b/obj/NiTextKeyExtraData.cpp
index aaa38c2f7684e91ede848374a30c02c0899c91de..0d1c16e83ebd10ca426b31646d6ce5f5d2a0548c 100644
--- a/obj/NiTextKeyExtraData.cpp
+++ b/obj/NiTextKeyExtraData.cpp
@@ -11,18 +11,22 @@ NiTextKeyExtraData::NiTextKeyExtraData() NI_TEXT_KEY_EXTRA_DATA_CONSTRUCT {}
 NiTextKeyExtraData::~NiTextKeyExtraData() {}
 
 void NiTextKeyExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TEXT_KEY_EXTRA_DATA_READ
+  NI_TEXT_KEY_EXTRA_DATA_READ
 }
 
 void NiTextKeyExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TEXT_KEY_EXTRA_DATA_WRITE
+  NI_TEXT_KEY_EXTRA_DATA_WRITE
 }
 
 string NiTextKeyExtraData::asString( bool verbose ) const {
-	NI_TEXT_KEY_EXTRA_DATA_STRING
+  NI_TEXT_KEY_EXTRA_DATA_STRING
 }
 
 void NiTextKeyExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TEXT_KEY_EXTRA_DATA_FIXLINKS
+  NI_TEXT_KEY_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiTextKeyExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTextKeyExtraData.h b/obj/NiTextKeyExtraData.h
index 2250a951b15a419ae317ac26576b9e4d2d3532bf..2b7fc0c1c05879ecb324fce8eacc5e4b61cc4842 100644
--- a/obj/NiTextKeyExtraData.h
+++ b/obj/NiTextKeyExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiTextKeyExtraData> NiTextKeyExtraDataRef;
 
 class NiTextKeyExtraData : public NI_TEXT_KEY_EXTRA_DATA_PARENT {
 public:
-	NiTextKeyExtraData();
-	~NiTextKeyExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TEXT_KEY_EXTRA_DATA_MEMBERS
+  NiTextKeyExtraData();
+  ~NiTextKeyExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TEXT_KEY_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTextureEffect.cpp b/obj/NiTextureEffect.cpp
index 5aff510b8d58805dc37455b0b088153544764dfe..314cb2f9e0af99fa1607c60a6409441fe8e120db 100644
--- a/obj/NiTextureEffect.cpp
+++ b/obj/NiTextureEffect.cpp
@@ -12,18 +12,22 @@ NiTextureEffect::NiTextureEffect() NI_TEXTURE_EFFECT_CONSTRUCT {}
 NiTextureEffect::~NiTextureEffect() {}
 
 void NiTextureEffect::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TEXTURE_EFFECT_READ
+  NI_TEXTURE_EFFECT_READ
 }
 
 void NiTextureEffect::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TEXTURE_EFFECT_WRITE
+  NI_TEXTURE_EFFECT_WRITE
 }
 
 string NiTextureEffect::asString( bool verbose ) const {
-	NI_TEXTURE_EFFECT_STRING
+  NI_TEXTURE_EFFECT_STRING
 }
 
 void NiTextureEffect::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TEXTURE_EFFECT_FIXLINKS
+  NI_TEXTURE_EFFECT_FIXLINKS
 }
 
+const Type & NiTextureEffect::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTextureEffect.h b/obj/NiTextureEffect.h
index 322ddc850d6bf2b9334a77ecc0e3eacfce9c89c1..33a7652fa6579955b5f720430949e64a777c8d72 100644
--- a/obj/NiTextureEffect.h
+++ b/obj/NiTextureEffect.h
@@ -16,16 +16,17 @@ typedef Ref<NiTextureEffect> NiTextureEffectRef;
 
 class NiTextureEffect : public NI_TEXTURE_EFFECT_PARENT {
 public:
-	NiTextureEffect();
-	~NiTextureEffect();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TEXTURE_EFFECT_MEMBERS
+  NiTextureEffect();
+  ~NiTextureEffect();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TEXTURE_EFFECT_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTextureTransformController.cpp b/obj/NiTextureTransformController.cpp
index 0e5b584d7decc7f239a4223fc3a5073a512f016f..9b908b3dd708de5997cc4e40ec19a78fb285a841 100644
--- a/obj/NiTextureTransformController.cpp
+++ b/obj/NiTextureTransformController.cpp
@@ -12,18 +12,22 @@ NiTextureTransformController::NiTextureTransformController() NI_TEXTURE_TRANSFOR
 NiTextureTransformController::~NiTextureTransformController() {}
 
 void NiTextureTransformController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TEXTURE_TRANSFORM_CONTROLLER_READ
+  NI_TEXTURE_TRANSFORM_CONTROLLER_READ
 }
 
 void NiTextureTransformController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TEXTURE_TRANSFORM_CONTROLLER_WRITE
+  NI_TEXTURE_TRANSFORM_CONTROLLER_WRITE
 }
 
 string NiTextureTransformController::asString( bool verbose ) const {
-	NI_TEXTURE_TRANSFORM_CONTROLLER_STRING
+  NI_TEXTURE_TRANSFORM_CONTROLLER_STRING
 }
 
 void NiTextureTransformController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TEXTURE_TRANSFORM_CONTROLLER_FIXLINKS
+  NI_TEXTURE_TRANSFORM_CONTROLLER_FIXLINKS
 }
 
+const Type & NiTextureTransformController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTextureTransformController.h b/obj/NiTextureTransformController.h
index 37b3414cb6a91be30284a42aec29013799bd434f..fc7952beab7cf71a268fbb7b73414ad6328447b7 100644
--- a/obj/NiTextureTransformController.h
+++ b/obj/NiTextureTransformController.h
@@ -16,16 +16,17 @@ typedef Ref<NiTextureTransformController> NiTextureTransformControllerRef;
 
 class NiTextureTransformController : public NI_TEXTURE_TRANSFORM_CONTROLLER_PARENT {
 public:
-	NiTextureTransformController();
-	~NiTextureTransformController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TEXTURE_TRANSFORM_CONTROLLER_MEMBERS
+  NiTextureTransformController();
+  ~NiTextureTransformController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TEXTURE_TRANSFORM_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTexturingProperty.cpp b/obj/NiTexturingProperty.cpp
index 55c316a694ffab5ece1b5ea88174bd780af36297..9dd359aab3b213b185f0e2b9cd1343aa8a264a5f 100644
--- a/obj/NiTexturingProperty.cpp
+++ b/obj/NiTexturingProperty.cpp
@@ -3,6 +3,14 @@ All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiTexturingProperty.h"
 #include "NiSourceTexture.h"
+#include "NiSourceTexture.h"
+#include "NiSourceTexture.h"
+#include "NiSourceTexture.h"
+#include "NiSourceTexture.h"
+#include "NiSourceTexture.h"
+#include "NiSourceTexture.h"
+#include "NiSourceTexture.h"
+#include "NiSourceTexture.h"
 
 //Definition of TYPE constant
 const Type NiTexturingProperty::TYPE("NiTexturingProperty", &NI_TEXTURING_PROPERTY_PARENT::TYPE );
@@ -12,18 +20,22 @@ NiTexturingProperty::NiTexturingProperty() NI_TEXTURING_PROPERTY_CONSTRUCT {}
 NiTexturingProperty::~NiTexturingProperty() {}
 
 void NiTexturingProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TEXTURING_PROPERTY_READ
+  NI_TEXTURING_PROPERTY_READ
 }
 
 void NiTexturingProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TEXTURING_PROPERTY_WRITE
+  NI_TEXTURING_PROPERTY_WRITE
 }
 
 string NiTexturingProperty::asString( bool verbose ) const {
-	NI_TEXTURING_PROPERTY_STRING
+  NI_TEXTURING_PROPERTY_STRING
 }
 
 void NiTexturingProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TEXTURING_PROPERTY_FIXLINKS
+  NI_TEXTURING_PROPERTY_FIXLINKS
 }
 
+const Type & NiTexturingProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTexturingProperty.h b/obj/NiTexturingProperty.h
index 729f6a593a66573d415e57613e4a11f18322aa7d..446bc9c80e81d2c4fc130c747b796d5b953cfccb 100644
--- a/obj/NiTexturingProperty.h
+++ b/obj/NiTexturingProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiTexturingProperty> NiTexturingPropertyRef;
 
 class NiTexturingProperty : public NI_TEXTURING_PROPERTY_PARENT {
 public:
-	NiTexturingProperty();
-	~NiTexturingProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TEXTURING_PROPERTY_MEMBERS
+  NiTexturingProperty();
+  ~NiTexturingProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TEXTURING_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTimeController.cpp b/obj/NiTimeController.cpp
index 4682e5ac0f1382979bda48d803a46cbde704b4ef..aa45580b520c714a9bfa0b676716d40874f01096 100644
--- a/obj/NiTimeController.cpp
+++ b/obj/NiTimeController.cpp
@@ -2,6 +2,8 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiTimeController.h"
+#include "NiTimeController.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type NiTimeController::TYPE("NiTimeController", &NI_TIME_CONTROLLER_PARENT::TYPE );
@@ -11,18 +13,22 @@ NiTimeController::NiTimeController() NI_TIME_CONTROLLER_CONSTRUCT {}
 NiTimeController::~NiTimeController() {}
 
 void NiTimeController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TIME_CONTROLLER_READ
+  NI_TIME_CONTROLLER_READ
 }
 
 void NiTimeController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TIME_CONTROLLER_WRITE
+  NI_TIME_CONTROLLER_WRITE
 }
 
 string NiTimeController::asString( bool verbose ) const {
-	NI_TIME_CONTROLLER_STRING
+  NI_TIME_CONTROLLER_STRING
 }
 
 void NiTimeController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TIME_CONTROLLER_FIXLINKS
+  NI_TIME_CONTROLLER_FIXLINKS
 }
 
+const Type & NiTimeController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTimeController.h b/obj/NiTimeController.h
index 3deedec3f3979983f45c30c95d136ff13a84cfd0..6cf80e130796076f50921c41f65b0a6ef83f8557 100644
--- a/obj/NiTimeController.h
+++ b/obj/NiTimeController.h
@@ -16,16 +16,17 @@ typedef Ref<NiTimeController> NiTimeControllerRef;
 
 class NiTimeController : public NI_TIME_CONTROLLER_PARENT {
 public:
-	NiTimeController();
-	~NiTimeController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TIME_CONTROLLER_MEMBERS
+  NiTimeController();
+  ~NiTimeController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TIME_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTransformController.cpp b/obj/NiTransformController.cpp
index c7db92cbba81c0043ce7547f3c5b2508bef1cbee..71fe32a7581aba7d012de0c3950a381b6c370a16 100644
--- a/obj/NiTransformController.cpp
+++ b/obj/NiTransformController.cpp
@@ -11,18 +11,22 @@ NiTransformController::NiTransformController() NI_TRANSFORM_CONTROLLER_CONSTRUCT
 NiTransformController::~NiTransformController() {}
 
 void NiTransformController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TRANSFORM_CONTROLLER_READ
+  NI_TRANSFORM_CONTROLLER_READ
 }
 
 void NiTransformController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TRANSFORM_CONTROLLER_WRITE
+  NI_TRANSFORM_CONTROLLER_WRITE
 }
 
 string NiTransformController::asString( bool verbose ) const {
-	NI_TRANSFORM_CONTROLLER_STRING
+  NI_TRANSFORM_CONTROLLER_STRING
 }
 
 void NiTransformController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TRANSFORM_CONTROLLER_FIXLINKS
+  NI_TRANSFORM_CONTROLLER_FIXLINKS
 }
 
+const Type & NiTransformController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTransformController.h b/obj/NiTransformController.h
index 5750565f6d131fe47d75b3b1ff952910d60308c8..f60e6f7dba601c1cae1b374460b115e2b27ea02f 100644
--- a/obj/NiTransformController.h
+++ b/obj/NiTransformController.h
@@ -16,16 +16,17 @@ typedef Ref<NiTransformController> NiTransformControllerRef;
 
 class NiTransformController : public NI_TRANSFORM_CONTROLLER_PARENT {
 public:
-	NiTransformController();
-	~NiTransformController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TRANSFORM_CONTROLLER_MEMBERS
+  NiTransformController();
+  ~NiTransformController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TRANSFORM_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTransformData.cpp b/obj/NiTransformData.cpp
index b757eae08914b420446593f002577dd940805bd9..c72ea40e3ffb4674ce46e364e36207734aa1f8f3 100644
--- a/obj/NiTransformData.cpp
+++ b/obj/NiTransformData.cpp
@@ -11,18 +11,22 @@ NiTransformData::NiTransformData() NI_TRANSFORM_DATA_CONSTRUCT {}
 NiTransformData::~NiTransformData() {}
 
 void NiTransformData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TRANSFORM_DATA_READ
+  NI_TRANSFORM_DATA_READ
 }
 
 void NiTransformData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TRANSFORM_DATA_WRITE
+  NI_TRANSFORM_DATA_WRITE
 }
 
 string NiTransformData::asString( bool verbose ) const {
-	NI_TRANSFORM_DATA_STRING
+  NI_TRANSFORM_DATA_STRING
 }
 
 void NiTransformData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TRANSFORM_DATA_FIXLINKS
+  NI_TRANSFORM_DATA_FIXLINKS
 }
 
+const Type & NiTransformData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTransformData.h b/obj/NiTransformData.h
index 99699723b2dee4c138949adebfc7fdbe8cdecbc7..64c348b0e9e2d69b298400ad341084668d7152e7 100644
--- a/obj/NiTransformData.h
+++ b/obj/NiTransformData.h
@@ -16,16 +16,17 @@ typedef Ref<NiTransformData> NiTransformDataRef;
 
 class NiTransformData : public NI_TRANSFORM_DATA_PARENT {
 public:
-	NiTransformData();
-	~NiTransformData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TRANSFORM_DATA_MEMBERS
+  NiTransformData();
+  ~NiTransformData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TRANSFORM_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTransformInterpolator.cpp b/obj/NiTransformInterpolator.cpp
index dcbb54e1707b9eac9dbbafbb26236747ef8b2b0c..d6018622ca219ad23fa9610afa0938b0da789498 100644
--- a/obj/NiTransformInterpolator.cpp
+++ b/obj/NiTransformInterpolator.cpp
@@ -12,18 +12,22 @@ NiTransformInterpolator::NiTransformInterpolator() NI_TRANSFORM_INTERPOLATOR_CON
 NiTransformInterpolator::~NiTransformInterpolator() {}
 
 void NiTransformInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TRANSFORM_INTERPOLATOR_READ
+  NI_TRANSFORM_INTERPOLATOR_READ
 }
 
 void NiTransformInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TRANSFORM_INTERPOLATOR_WRITE
+  NI_TRANSFORM_INTERPOLATOR_WRITE
 }
 
 string NiTransformInterpolator::asString( bool verbose ) const {
-	NI_TRANSFORM_INTERPOLATOR_STRING
+  NI_TRANSFORM_INTERPOLATOR_STRING
 }
 
 void NiTransformInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TRANSFORM_INTERPOLATOR_FIXLINKS
+  NI_TRANSFORM_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiTransformInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTransformInterpolator.h b/obj/NiTransformInterpolator.h
index bc71f0ec2d2d80cecd03e044a10732f7ca49714a..a4e7ebc6c61e6b4018d7b0d3ed00e57ce7ed206c 100644
--- a/obj/NiTransformInterpolator.h
+++ b/obj/NiTransformInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiTransformInterpolator> NiTransformInterpolatorRef;
 
 class NiTransformInterpolator : public NI_TRANSFORM_INTERPOLATOR_PARENT {
 public:
-	NiTransformInterpolator();
-	~NiTransformInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TRANSFORM_INTERPOLATOR_MEMBERS
+  NiTransformInterpolator();
+  ~NiTransformInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TRANSFORM_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTriBasedGeom.cpp b/obj/NiTriBasedGeom.cpp
index 9847528c61b3f931adde15aba1cc433caa2a4287..5de263877535215beaa2eb9defb7a3e4967995ea 100644
--- a/obj/NiTriBasedGeom.cpp
+++ b/obj/NiTriBasedGeom.cpp
@@ -2,8 +2,9 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiTriBasedGeom.h"
-#include "TriBasedGeomData.h"
+#include "NiTriBasedGeomData.h"
 #include "NiSkinInstance.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type NiTriBasedGeom::TYPE("NiTriBasedGeom", &NI_TRI_BASED_GEOM_PARENT::TYPE );
@@ -13,18 +14,22 @@ NiTriBasedGeom::NiTriBasedGeom() NI_TRI_BASED_GEOM_CONSTRUCT {}
 NiTriBasedGeom::~NiTriBasedGeom() {}
 
 void NiTriBasedGeom::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_BASED_GEOM_READ
+  NI_TRI_BASED_GEOM_READ
 }
 
 void NiTriBasedGeom::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TRI_BASED_GEOM_WRITE
+  NI_TRI_BASED_GEOM_WRITE
 }
 
 string NiTriBasedGeom::asString( bool verbose ) const {
-	NI_TRI_BASED_GEOM_STRING
+  NI_TRI_BASED_GEOM_STRING
 }
 
 void NiTriBasedGeom::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_BASED_GEOM_FIXLINKS
+  NI_TRI_BASED_GEOM_FIXLINKS
 }
 
+const Type & NiTriBasedGeom::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTriBasedGeom.h b/obj/NiTriBasedGeom.h
index ea565b1e022627084175672bb77f9e2ccdd14cfe..a5a6b2a81fe609dc49cee031466919cf6a15c0f5 100644
--- a/obj/NiTriBasedGeom.h
+++ b/obj/NiTriBasedGeom.h
@@ -16,19 +16,17 @@ typedef Ref<NiTriBasedGeom> NiTriBasedGeomRef;
 
 class NiTriBasedGeom : public NI_TRI_BASED_GEOM_PARENT {
 public:
-	NiTriBasedGeom();
-	~NiTriBasedGeom();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-	
-	Vector3 Center() const;
-	float Radius() const;
-private:
-	NI_TRI_BASED_GEOM_MEMBERS
+  NiTriBasedGeom();
+  ~NiTriBasedGeom();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TRI_BASED_GEOM_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTriBasedGeomData.cpp b/obj/NiTriBasedGeomData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..301194e833124ae0b631befc24593eea97a68e9c
--- /dev/null
+++ b/obj/NiTriBasedGeomData.cpp
@@ -0,0 +1,35 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiTriBasedGeomData.h"
+#include "NiObject.h"
+
+//Definition of TYPE constant
+const Type NiTriBasedGeomData::TYPE("NiTriBasedGeomData", &NI_TRI_BASED_GEOM_DATA_PARENT::TYPE );
+
+NiTriBasedGeomData::NiTriBasedGeomData() NI_TRI_BASED_GEOM_DATA_CONSTRUCT {}
+
+NiTriBasedGeomData::~NiTriBasedGeomData() {}
+
+void NiTriBasedGeomData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
+  NI_TRI_BASED_GEOM_DATA_READ
+}
+
+void NiTriBasedGeomData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+  NI_TRI_BASED_GEOM_DATA_WRITE
+}
+
+string NiTriBasedGeomData::asString( bool verbose ) const {
+  NI_TRI_BASED_GEOM_DATA_STRING
+}
+
+void NiTriBasedGeomData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
+  NI_TRI_BASED_GEOM_DATA_FIXLINKS
+}
+
+const Type & NiTriBasedGeomData::GetType() const {
+  return TYPE;
+};
+
+Vector3 NiTriBasedGeomData::Center() const { return Vector3(); }
+float NiTriBasedGeomData::Radius() const { return float(); }
diff --git a/obj/NiTriBasedGeomData.h b/obj/NiTriBasedGeomData.h
new file mode 100644
index 0000000000000000000000000000000000000000..5fd879fc39857019250ccf3d3ba2eff13decc269
--- /dev/null
+++ b/obj/NiTriBasedGeomData.h
@@ -0,0 +1,34 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NITRIBASEDGEOMDATA_H_
+#define _NITRIBASEDGEOMDATA_H_
+
+#include "xml_extract.h"
+#include NI_TRI_BASED_GEOM_DATA_INCLUDE
+
+/*
+ * NiTriBasedGeomData
+ */
+
+class NiTriBasedGeomData;
+typedef Ref<NiTriBasedGeomData> NiTriBasedGeomDataRef;
+
+class NiTriBasedGeomData : public NI_TRI_BASED_GEOM_DATA_PARENT {
+public:
+  NiTriBasedGeomData();
+  ~NiTriBasedGeomData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  Vector3 Center() const;
+  float Radius() const;
+  NI_TRI_BASED_GEOM_DATA_MEMBERS
+};
+
+#endif
diff --git a/obj/NiTriShape.cpp b/obj/NiTriShape.cpp
index ce25669506f9917bfe76cec06681156aeef7b287..ba347d606122b7029db9bf5f3b5f47764fa22a03 100644
--- a/obj/NiTriShape.cpp
+++ b/obj/NiTriShape.cpp
@@ -11,18 +11,22 @@ NiTriShape::NiTriShape() NI_TRI_SHAPE_CONSTRUCT {}
 NiTriShape::~NiTriShape() {}
 
 void NiTriShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_SHAPE_READ
+  NI_TRI_SHAPE_READ
 }
 
 void NiTriShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TRI_SHAPE_WRITE
+  NI_TRI_SHAPE_WRITE
 }
 
 string NiTriShape::asString( bool verbose ) const {
-	NI_TRI_SHAPE_STRING
+  NI_TRI_SHAPE_STRING
 }
 
 void NiTriShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_SHAPE_FIXLINKS
+  NI_TRI_SHAPE_FIXLINKS
 }
 
+const Type & NiTriShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTriShape.h b/obj/NiTriShape.h
index 899df250f564c6f6b765814af9ad7fba7f6a0d95..d0c2766af93ce3e5e3436e8c52ba4aac7a367b77 100644
--- a/obj/NiTriShape.h
+++ b/obj/NiTriShape.h
@@ -16,16 +16,17 @@ typedef Ref<NiTriShape> NiTriShapeRef;
 
 class NiTriShape : public NI_TRI_SHAPE_PARENT {
 public:
-	NiTriShape();
-	~NiTriShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TRI_SHAPE_MEMBERS
+  NiTriShape();
+  ~NiTriShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TRI_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTriShapeData.cpp b/obj/NiTriShapeData.cpp
index e9be9574ad9e48a541b695d0b5de2b0c1e491f4d..a14018c6e265a801fb5c4d2679a7c653cb86acf9 100644
--- a/obj/NiTriShapeData.cpp
+++ b/obj/NiTriShapeData.cpp
@@ -11,18 +11,22 @@ NiTriShapeData::NiTriShapeData() NI_TRI_SHAPE_DATA_CONSTRUCT {}
 NiTriShapeData::~NiTriShapeData() {}
 
 void NiTriShapeData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_SHAPE_DATA_READ
+  NI_TRI_SHAPE_DATA_READ
 }
 
 void NiTriShapeData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TRI_SHAPE_DATA_WRITE
+  NI_TRI_SHAPE_DATA_WRITE
 }
 
 string NiTriShapeData::asString( bool verbose ) const {
-	NI_TRI_SHAPE_DATA_STRING
+  NI_TRI_SHAPE_DATA_STRING
 }
 
 void NiTriShapeData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_SHAPE_DATA_FIXLINKS
+  NI_TRI_SHAPE_DATA_FIXLINKS
 }
 
+const Type & NiTriShapeData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTriShapeData.h b/obj/NiTriShapeData.h
index 8a17bc7ca702cae20b72b2e741b141302ba5d21d..758be0aef7798347f1487e5a53e780f319fadd69 100644
--- a/obj/NiTriShapeData.h
+++ b/obj/NiTriShapeData.h
@@ -16,16 +16,17 @@ typedef Ref<NiTriShapeData> NiTriShapeDataRef;
 
 class NiTriShapeData : public NI_TRI_SHAPE_DATA_PARENT {
 public:
-	NiTriShapeData();
-	~NiTriShapeData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TRI_SHAPE_DATA_MEMBERS
+  NiTriShapeData();
+  ~NiTriShapeData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TRI_SHAPE_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTriStrips.cpp b/obj/NiTriStrips.cpp
index 60cf1a290944d0a9cb03517ef7eeb0d5a7aa168f..72ce2d36e64b22055febe9bdc21031a36a3ed59b 100644
--- a/obj/NiTriStrips.cpp
+++ b/obj/NiTriStrips.cpp
@@ -11,18 +11,22 @@ NiTriStrips::NiTriStrips() NI_TRI_STRIPS_CONSTRUCT {}
 NiTriStrips::~NiTriStrips() {}
 
 void NiTriStrips::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_STRIPS_READ
+  NI_TRI_STRIPS_READ
 }
 
 void NiTriStrips::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TRI_STRIPS_WRITE
+  NI_TRI_STRIPS_WRITE
 }
 
 string NiTriStrips::asString( bool verbose ) const {
-	NI_TRI_STRIPS_STRING
+  NI_TRI_STRIPS_STRING
 }
 
 void NiTriStrips::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_STRIPS_FIXLINKS
+  NI_TRI_STRIPS_FIXLINKS
 }
 
+const Type & NiTriStrips::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTriStrips.h b/obj/NiTriStrips.h
index e4f93bb14beec20be0fcce1024b60b881ff0ee21..ca9542851ee677ebeb955290f7b9bc9ba1be0439 100644
--- a/obj/NiTriStrips.h
+++ b/obj/NiTriStrips.h
@@ -16,16 +16,17 @@ typedef Ref<NiTriStrips> NiTriStripsRef;
 
 class NiTriStrips : public NI_TRI_STRIPS_PARENT {
 public:
-	NiTriStrips();
-	~NiTriStrips();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TRI_STRIPS_MEMBERS
+  NiTriStrips();
+  ~NiTriStrips();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TRI_STRIPS_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTriStripsData.cpp b/obj/NiTriStripsData.cpp
index 54af6909d363f93eb5e3794b74ee2f1bbfe90666..2747b62db623edf29869e59527501e5404240acc 100644
--- a/obj/NiTriStripsData.cpp
+++ b/obj/NiTriStripsData.cpp
@@ -11,18 +11,22 @@ NiTriStripsData::NiTriStripsData() NI_TRI_STRIPS_DATA_CONSTRUCT {}
 NiTriStripsData::~NiTriStripsData() {}
 
 void NiTriStripsData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_STRIPS_DATA_READ
+  NI_TRI_STRIPS_DATA_READ
 }
 
 void NiTriStripsData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TRI_STRIPS_DATA_WRITE
+  NI_TRI_STRIPS_DATA_WRITE
 }
 
 string NiTriStripsData::asString( bool verbose ) const {
-	NI_TRI_STRIPS_DATA_STRING
+  NI_TRI_STRIPS_DATA_STRING
 }
 
 void NiTriStripsData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_STRIPS_DATA_FIXLINKS
+  NI_TRI_STRIPS_DATA_FIXLINKS
 }
 
+const Type & NiTriStripsData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTriStripsData.h b/obj/NiTriStripsData.h
index 3c380a0f01b2a03ba389b6116387f3e7f36b6772..148a9211c2fd7ebeea4fb2cceb471daec0834ba1 100644
--- a/obj/NiTriStripsData.h
+++ b/obj/NiTriStripsData.h
@@ -16,16 +16,17 @@ typedef Ref<NiTriStripsData> NiTriStripsDataRef;
 
 class NiTriStripsData : public NI_TRI_STRIPS_DATA_PARENT {
 public:
-	NiTriStripsData();
-	~NiTriStripsData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TRI_STRIPS_DATA_MEMBERS
+  NiTriStripsData();
+  ~NiTriStripsData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TRI_STRIPS_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiUVController.cpp b/obj/NiUVController.cpp
index 86f39c5f6ccc8ba10ccbba2648902187bc84737a..cf0b35fa019d3ea11630944e96c8847fba3471c9 100644
--- a/obj/NiUVController.cpp
+++ b/obj/NiUVController.cpp
@@ -12,18 +12,22 @@ NiUVController::NiUVController() NI_U_V_CONTROLLER_CONSTRUCT {}
 NiUVController::~NiUVController() {}
 
 void NiUVController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_U_V_CONTROLLER_READ
+  NI_U_V_CONTROLLER_READ
 }
 
 void NiUVController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_U_V_CONTROLLER_WRITE
+  NI_U_V_CONTROLLER_WRITE
 }
 
 string NiUVController::asString( bool verbose ) const {
-	NI_U_V_CONTROLLER_STRING
+  NI_U_V_CONTROLLER_STRING
 }
 
 void NiUVController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_U_V_CONTROLLER_FIXLINKS
+  NI_U_V_CONTROLLER_FIXLINKS
 }
 
+const Type & NiUVController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiUVController.h b/obj/NiUVController.h
index ecf9e137efe90939f9444cde32e23554652bd8b3..5295c14ca3a0b87f4815f53e91a796fe79df2996 100644
--- a/obj/NiUVController.h
+++ b/obj/NiUVController.h
@@ -16,16 +16,17 @@ typedef Ref<NiUVController> NiUVControllerRef;
 
 class NiUVController : public NI_U_V_CONTROLLER_PARENT {
 public:
-	NiUVController();
-	~NiUVController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_U_V_CONTROLLER_MEMBERS
+  NiUVController();
+  ~NiUVController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_U_V_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiUVData.cpp b/obj/NiUVData.cpp
index 632ded00fd5edf1f3e99fb705ee2706fc40145b6..da9cb229b370a3ed85a65c9cbdaa437f9a223b9c 100644
--- a/obj/NiUVData.cpp
+++ b/obj/NiUVData.cpp
@@ -11,18 +11,22 @@ NiUVData::NiUVData() NI_U_V_DATA_CONSTRUCT {}
 NiUVData::~NiUVData() {}
 
 void NiUVData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_U_V_DATA_READ
+  NI_U_V_DATA_READ
 }
 
 void NiUVData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_U_V_DATA_WRITE
+  NI_U_V_DATA_WRITE
 }
 
 string NiUVData::asString( bool verbose ) const {
-	NI_U_V_DATA_STRING
+  NI_U_V_DATA_STRING
 }
 
 void NiUVData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_U_V_DATA_FIXLINKS
+  NI_U_V_DATA_FIXLINKS
 }
 
+const Type & NiUVData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiUVData.h b/obj/NiUVData.h
index bbaf7c80351bd6164263e1fb7fe665020005d6ba..0fd3335d86203fb60408fb080980b365b53d9b87 100644
--- a/obj/NiUVData.h
+++ b/obj/NiUVData.h
@@ -16,16 +16,17 @@ typedef Ref<NiUVData> NiUVDataRef;
 
 class NiUVData : public NI_U_V_DATA_PARENT {
 public:
-	NiUVData();
-	~NiUVData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_U_V_DATA_MEMBERS
+  NiUVData();
+  ~NiUVData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_U_V_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiVectorExtraData.cpp b/obj/NiVectorExtraData.cpp
index 5e313be3dfffa65f86cb5cac78808694fdd01c24..5817ef3d41717602ba9c549411ff1661940b74c1 100644
--- a/obj/NiVectorExtraData.cpp
+++ b/obj/NiVectorExtraData.cpp
@@ -11,18 +11,22 @@ NiVectorExtraData::NiVectorExtraData() NI_VECTOR_EXTRA_DATA_CONSTRUCT {}
 NiVectorExtraData::~NiVectorExtraData() {}
 
 void NiVectorExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_VECTOR_EXTRA_DATA_READ
+  NI_VECTOR_EXTRA_DATA_READ
 }
 
 void NiVectorExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_VECTOR_EXTRA_DATA_WRITE
+  NI_VECTOR_EXTRA_DATA_WRITE
 }
 
 string NiVectorExtraData::asString( bool verbose ) const {
-	NI_VECTOR_EXTRA_DATA_STRING
+  NI_VECTOR_EXTRA_DATA_STRING
 }
 
 void NiVectorExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_VECTOR_EXTRA_DATA_FIXLINKS
+  NI_VECTOR_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiVectorExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiVectorExtraData.h b/obj/NiVectorExtraData.h
index dfaace002cd134bdd6d6db53dce568cdc5fd177c..8f393950a87c3ca04c23d3655e4fe2a328088cc8 100644
--- a/obj/NiVectorExtraData.h
+++ b/obj/NiVectorExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiVectorExtraData> NiVectorExtraDataRef;
 
 class NiVectorExtraData : public NI_VECTOR_EXTRA_DATA_PARENT {
 public:
-	NiVectorExtraData();
-	~NiVectorExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_VECTOR_EXTRA_DATA_MEMBERS
+  NiVectorExtraData();
+  ~NiVectorExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_VECTOR_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiVertWeightsExtraData.cpp b/obj/NiVertWeightsExtraData.cpp
index 03df727db2fe8d4bbdc12cc4cee9cc3d53dd6203..84297de5390fb8180d6e27838dbdb7ff2679711c 100644
--- a/obj/NiVertWeightsExtraData.cpp
+++ b/obj/NiVertWeightsExtraData.cpp
@@ -11,18 +11,22 @@ NiVertWeightsExtraData::NiVertWeightsExtraData() NI_VERT_WEIGHTS_EXTRA_DATA_CONS
 NiVertWeightsExtraData::~NiVertWeightsExtraData() {}
 
 void NiVertWeightsExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_VERT_WEIGHTS_EXTRA_DATA_READ
+  NI_VERT_WEIGHTS_EXTRA_DATA_READ
 }
 
 void NiVertWeightsExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_VERT_WEIGHTS_EXTRA_DATA_WRITE
+  NI_VERT_WEIGHTS_EXTRA_DATA_WRITE
 }
 
 string NiVertWeightsExtraData::asString( bool verbose ) const {
-	NI_VERT_WEIGHTS_EXTRA_DATA_STRING
+  NI_VERT_WEIGHTS_EXTRA_DATA_STRING
 }
 
 void NiVertWeightsExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_VERT_WEIGHTS_EXTRA_DATA_FIXLINKS
+  NI_VERT_WEIGHTS_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiVertWeightsExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiVertWeightsExtraData.h b/obj/NiVertWeightsExtraData.h
index f6dec1b7d319e9f1029887042cb6f95883407dda..1edcab94218e6d374bd47ad58fff23cfaf23c839 100644
--- a/obj/NiVertWeightsExtraData.h
+++ b/obj/NiVertWeightsExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiVertWeightsExtraData> NiVertWeightsExtraDataRef;
 
 class NiVertWeightsExtraData : public NI_VERT_WEIGHTS_EXTRA_DATA_PARENT {
 public:
-	NiVertWeightsExtraData();
-	~NiVertWeightsExtraData();
-	//Run-Time Type Information
-	static const Type
-		TYPE; virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_VERT_WEIGHTS_EXTRA_DATA_MEMBERS
+  NiVertWeightsExtraData();
+  ~NiVertWeightsExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_VERT_WEIGHTS_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiVertexColorProperty.cpp b/obj/NiVertexColorProperty.cpp
index 548646d8b8694fa531806637f73a9d926dc8626f..d25fb9fceb6c690da8f3d8aed78eebecd1e46aaf 100644
--- a/obj/NiVertexColorProperty.cpp
+++ b/obj/NiVertexColorProperty.cpp
@@ -11,18 +11,22 @@ NiVertexColorProperty::NiVertexColorProperty() NI_VERTEX_COLOR_PROPERTY_CONSTRUC
 NiVertexColorProperty::~NiVertexColorProperty() {}
 
 void NiVertexColorProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_VERTEX_COLOR_PROPERTY_READ
+  NI_VERTEX_COLOR_PROPERTY_READ
 }
 
 void NiVertexColorProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_VERTEX_COLOR_PROPERTY_WRITE
+  NI_VERTEX_COLOR_PROPERTY_WRITE
 }
 
 string NiVertexColorProperty::asString( bool verbose ) const {
-	NI_VERTEX_COLOR_PROPERTY_STRING
+  NI_VERTEX_COLOR_PROPERTY_STRING
 }
 
 void NiVertexColorProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_VERTEX_COLOR_PROPERTY_FIXLINKS
+  NI_VERTEX_COLOR_PROPERTY_FIXLINKS
 }
 
+const Type & NiVertexColorProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiVertexColorProperty.h b/obj/NiVertexColorProperty.h
index e2ffb801d526f41487b949744fa04e32d37e3d1a..18faa4091f0b54c6aaf0eb25b2a038fe13fe8b8b 100644
--- a/obj/NiVertexColorProperty.h
+++ b/obj/NiVertexColorProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiVertexColorProperty> NiVertexColorPropertyRef;
 
 class NiVertexColorProperty : public NI_VERTEX_COLOR_PROPERTY_PARENT {
 public:
-	NiVertexColorProperty();
-	~NiVertexColorProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_VERTEX_COLOR_PROPERTY_MEMBERS
+  NiVertexColorProperty();
+  ~NiVertexColorProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_VERTEX_COLOR_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiVisController.cpp b/obj/NiVisController.cpp
index ecafaa10d2aed2b67bbba2f9ee5d7931b0343c90..c6a14c87474e47f1da5b45e9d7980fea2fab4c4e 100644
--- a/obj/NiVisController.cpp
+++ b/obj/NiVisController.cpp
@@ -12,18 +12,22 @@ NiVisController::NiVisController() NI_VIS_CONTROLLER_CONSTRUCT {}
 NiVisController::~NiVisController() {}
 
 void NiVisController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_VIS_CONTROLLER_READ
+  NI_VIS_CONTROLLER_READ
 }
 
 void NiVisController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_VIS_CONTROLLER_WRITE
+  NI_VIS_CONTROLLER_WRITE
 }
 
 string NiVisController::asString( bool verbose ) const {
-	NI_VIS_CONTROLLER_STRING
+  NI_VIS_CONTROLLER_STRING
 }
 
 void NiVisController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_VIS_CONTROLLER_FIXLINKS
+  NI_VIS_CONTROLLER_FIXLINKS
 }
 
+const Type & NiVisController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiVisController.h b/obj/NiVisController.h
index e999ffeefa091da4a93cb1162c4263123ae17f11..8b4bf548900e4b3af29cd9c8f89409897a0c5f14 100644
--- a/obj/NiVisController.h
+++ b/obj/NiVisController.h
@@ -16,16 +16,17 @@ typedef Ref<NiVisController> NiVisControllerRef;
 
 class NiVisController : public NI_VIS_CONTROLLER_PARENT {
 public:
-	NiVisController();
-	~NiVisController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_VIS_CONTROLLER_MEMBERS
+  NiVisController();
+  ~NiVisController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_VIS_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiVisData.cpp b/obj/NiVisData.cpp
index 02c5e962dbb6e7bab0c0a9e8a3165c72a2176ed2..42bfb31c76d16310bb0cc4e301a1d12e3d9c53b8 100644
--- a/obj/NiVisData.cpp
+++ b/obj/NiVisData.cpp
@@ -11,18 +11,22 @@ NiVisData::NiVisData() NI_VIS_DATA_CONSTRUCT {}
 NiVisData::~NiVisData() {}
 
 void NiVisData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_VIS_DATA_READ
+  NI_VIS_DATA_READ
 }
 
 void NiVisData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_VIS_DATA_WRITE
+  NI_VIS_DATA_WRITE
 }
 
 string NiVisData::asString( bool verbose ) const {
-	NI_VIS_DATA_STRING
+  NI_VIS_DATA_STRING
 }
 
 void NiVisData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_VIS_DATA_FIXLINKS
+  NI_VIS_DATA_FIXLINKS
 }
 
+const Type & NiVisData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiVisData.h b/obj/NiVisData.h
index 6c2d61e00b415491736d7c4deabf69c823c611ed..2513bb3a0c34a241bad252c3c2d479c76a3775b5 100644
--- a/obj/NiVisData.h
+++ b/obj/NiVisData.h
@@ -16,16 +16,17 @@ typedef Ref<NiVisData> NiVisDataRef;
 
 class NiVisData : public NI_VIS_DATA_PARENT {
 public:
-	NiVisData();
-	~NiVisData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_VIS_DATA_MEMBERS
+  NiVisData();
+  ~NiVisData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_VIS_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiWireframeProperty.cpp b/obj/NiWireframeProperty.cpp
index f5aebaccabd69c4e3767a712b2889643548b4f7a..0bc5aa13b75f2c09d1cba7ae5025993d4af22058 100644
--- a/obj/NiWireframeProperty.cpp
+++ b/obj/NiWireframeProperty.cpp
@@ -11,18 +11,22 @@ NiWireframeProperty::NiWireframeProperty() NI_WIREFRAME_PROPERTY_CONSTRUCT {}
 NiWireframeProperty::~NiWireframeProperty() {}
 
 void NiWireframeProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_WIREFRAME_PROPERTY_READ
+  NI_WIREFRAME_PROPERTY_READ
 }
 
 void NiWireframeProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_WIREFRAME_PROPERTY_WRITE
+  NI_WIREFRAME_PROPERTY_WRITE
 }
 
 string NiWireframeProperty::asString( bool verbose ) const {
-	NI_WIREFRAME_PROPERTY_STRING
+  NI_WIREFRAME_PROPERTY_STRING
 }
 
 void NiWireframeProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_WIREFRAME_PROPERTY_FIXLINKS
+  NI_WIREFRAME_PROPERTY_FIXLINKS
 }
 
+const Type & NiWireframeProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiWireframeProperty.h b/obj/NiWireframeProperty.h
index beb29df0c75cf99ccd9dc3ae159de97d2f137abd..1d75b708ed6d1ae25645a935f94c2c0b34f8d3da 100644
--- a/obj/NiWireframeProperty.h
+++ b/obj/NiWireframeProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiWireframeProperty> NiWireframePropertyRef;
 
 class NiWireframeProperty : public NI_WIREFRAME_PROPERTY_PARENT {
 public:
-	NiWireframeProperty();
-	~NiWireframeProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_WIREFRAME_PROPERTY_MEMBERS
+  NiWireframeProperty();
+  ~NiWireframeProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_WIREFRAME_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiZBufferProperty.cpp b/obj/NiZBufferProperty.cpp
index 80b4882c2c69c79fb43660f5cb76c0be198bd651..f63ce68986c8f16d231638b7f483b12d4f10ef8b 100644
--- a/obj/NiZBufferProperty.cpp
+++ b/obj/NiZBufferProperty.cpp
@@ -11,18 +11,22 @@ NiZBufferProperty::NiZBufferProperty() NI_Z_BUFFER_PROPERTY_CONSTRUCT {}
 NiZBufferProperty::~NiZBufferProperty() {}
 
 void NiZBufferProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_Z_BUFFER_PROPERTY_READ
+  NI_Z_BUFFER_PROPERTY_READ
 }
 
 void NiZBufferProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_Z_BUFFER_PROPERTY_WRITE
+  NI_Z_BUFFER_PROPERTY_WRITE
 }
 
 string NiZBufferProperty::asString( bool verbose ) const {
-	NI_Z_BUFFER_PROPERTY_STRING
+  NI_Z_BUFFER_PROPERTY_STRING
 }
 
 void NiZBufferProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_Z_BUFFER_PROPERTY_FIXLINKS
+  NI_Z_BUFFER_PROPERTY_FIXLINKS
 }
 
+const Type & NiZBufferProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiZBufferProperty.h b/obj/NiZBufferProperty.h
index a7b0f99a6f620b25d860154c8db13e6627815eb4..b33487dd8fb3bdf9f9904186d176068d8153133d 100644
--- a/obj/NiZBufferProperty.h
+++ b/obj/NiZBufferProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiZBufferProperty> NiZBufferPropertyRef;
 
 class NiZBufferProperty : public NI_Z_BUFFER_PROPERTY_PARENT {
 public:
-	NiZBufferProperty();
-	~NiZBufferProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_Z_BUFFER_PROPERTY_MEMBERS
+  NiZBufferProperty();
+  ~NiZBufferProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_Z_BUFFER_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/RootCollisionNode.cpp b/obj/RootCollisionNode.cpp
index 4603f6b3bee5b6848b0d1d166efc8009e55e20ca..69f3766bde4f923d9b7f36bf5f81ed0cba636dc2 100644
--- a/obj/RootCollisionNode.cpp
+++ b/obj/RootCollisionNode.cpp
@@ -11,18 +11,22 @@ RootCollisionNode::RootCollisionNode() ROOT_COLLISION_NODE_CONSTRUCT {}
 RootCollisionNode::~RootCollisionNode() {}
 
 void RootCollisionNode::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	ROOT_COLLISION_NODE_READ
+  ROOT_COLLISION_NODE_READ
 }
 
 void RootCollisionNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	ROOT_COLLISION_NODE_WRITE
+  ROOT_COLLISION_NODE_WRITE
 }
 
 string RootCollisionNode::asString( bool verbose ) const {
-	ROOT_COLLISION_NODE_STRING
+  ROOT_COLLISION_NODE_STRING
 }
 
 void RootCollisionNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	ROOT_COLLISION_NODE_FIXLINKS
+  ROOT_COLLISION_NODE_FIXLINKS
 }
 
+const Type & RootCollisionNode::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/RootCollisionNode.h b/obj/RootCollisionNode.h
index efdea3c5c1c127fcc1d8e2ec130c3cccaaa4f112..42e1409b8039e9b854bfb8eb93d9b3368e6d5958 100644
--- a/obj/RootCollisionNode.h
+++ b/obj/RootCollisionNode.h
@@ -16,16 +16,17 @@ typedef Ref<RootCollisionNode> RootCollisionNodeRef;
 
 class RootCollisionNode : public ROOT_COLLISION_NODE_PARENT {
 public:
-	RootCollisionNode();
-	~RootCollisionNode();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	ROOT_COLLISION_NODE_MEMBERS
+  RootCollisionNode();
+  ~RootCollisionNode();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  ROOT_COLLISION_NODE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkBlendCollisionObject.cpp b/obj/bhkBlendCollisionObject.cpp
index 7adf02602220f25c071cd5e0186cad82dd482d11..486479fd05ed3abb55c8972ee4df3cb0a424b269 100644
--- a/obj/bhkBlendCollisionObject.cpp
+++ b/obj/bhkBlendCollisionObject.cpp
@@ -11,18 +11,22 @@ bhkBlendCollisionObject::bhkBlendCollisionObject() BHK_BLEND_COLLISION_OBJECT_CO
 bhkBlendCollisionObject::~bhkBlendCollisionObject() {}
 
 void bhkBlendCollisionObject::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_BLEND_COLLISION_OBJECT_READ
+  BHK_BLEND_COLLISION_OBJECT_READ
 }
 
 void bhkBlendCollisionObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_BLEND_COLLISION_OBJECT_WRITE
+  BHK_BLEND_COLLISION_OBJECT_WRITE
 }
 
 string bhkBlendCollisionObject::asString( bool verbose ) const {
-	BHK_BLEND_COLLISION_OBJECT_STRING
+  BHK_BLEND_COLLISION_OBJECT_STRING
 }
 
 void bhkBlendCollisionObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_BLEND_COLLISION_OBJECT_FIXLINKS
+  BHK_BLEND_COLLISION_OBJECT_FIXLINKS
 }
 
+const Type & bhkBlendCollisionObject::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkBlendCollisionObject.h b/obj/bhkBlendCollisionObject.h
index fa31c24f6e6c9f04c8e72db44189c7a207acede8..296cc796be4730aeb5791c71422ff23e9eab3ded 100644
--- a/obj/bhkBlendCollisionObject.h
+++ b/obj/bhkBlendCollisionObject.h
@@ -16,16 +16,17 @@ typedef Ref<bhkBlendCollisionObject> bhkBlendCollisionObjectRef;
 
 class bhkBlendCollisionObject : public BHK_BLEND_COLLISION_OBJECT_PARENT {
 public:
-	bhkBlendCollisionObject();
-	~bhkBlendCollisionObject();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_BLEND_COLLISION_OBJECT_MEMBERS
+  bhkBlendCollisionObject();
+  ~bhkBlendCollisionObject();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_BLEND_COLLISION_OBJECT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkBlendController.cpp b/obj/bhkBlendController.cpp
index 345c7a86f9e51a58fb6e2421d6f7e31c0ff5e45c..8643ed91760c85e23802aea6131421258aa0f1b4 100644
--- a/obj/bhkBlendController.cpp
+++ b/obj/bhkBlendController.cpp
@@ -11,18 +11,22 @@ bhkBlendController::bhkBlendController() BHK_BLEND_CONTROLLER_CONSTRUCT {}
 bhkBlendController::~bhkBlendController() {}
 
 void bhkBlendController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_BLEND_CONTROLLER_READ
+  BHK_BLEND_CONTROLLER_READ
 }
 
 void bhkBlendController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_BLEND_CONTROLLER_WRITE
+  BHK_BLEND_CONTROLLER_WRITE
 }
 
 string bhkBlendController::asString( bool verbose ) const {
-	BHK_BLEND_CONTROLLER_STRING
+  BHK_BLEND_CONTROLLER_STRING
 }
 
 void bhkBlendController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_BLEND_CONTROLLER_FIXLINKS
+  BHK_BLEND_CONTROLLER_FIXLINKS
 }
 
+const Type & bhkBlendController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkBlendController.h b/obj/bhkBlendController.h
index 133581a1a1fa5db81a7fb9c495dbf931c43d47de..445814ef7a945ad08684192e9b58500461d87f76 100644
--- a/obj/bhkBlendController.h
+++ b/obj/bhkBlendController.h
@@ -16,16 +16,17 @@ typedef Ref<bhkBlendController> bhkBlendControllerRef;
 
 class bhkBlendController : public BHK_BLEND_CONTROLLER_PARENT {
 public:
-	bhkBlendController();
-	~bhkBlendController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_BLEND_CONTROLLER_MEMBERS
+  bhkBlendController();
+  ~bhkBlendController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_BLEND_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkBoxShape.cpp b/obj/bhkBoxShape.cpp
index 254986845bbb63de567ab36cfabc53d80b6f9ee1..7effabb25d3f9ed3c380541e4d1cfdfa20bb9257 100644
--- a/obj/bhkBoxShape.cpp
+++ b/obj/bhkBoxShape.cpp
@@ -11,18 +11,22 @@ bhkBoxShape::bhkBoxShape() BHK_BOX_SHAPE_CONSTRUCT {}
 bhkBoxShape::~bhkBoxShape() {}
 
 void bhkBoxShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_BOX_SHAPE_READ
+  BHK_BOX_SHAPE_READ
 }
 
 void bhkBoxShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_BOX_SHAPE_WRITE
+  BHK_BOX_SHAPE_WRITE
 }
 
 string bhkBoxShape::asString( bool verbose ) const {
-	BHK_BOX_SHAPE_STRING
+  BHK_BOX_SHAPE_STRING
 }
 
 void bhkBoxShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_BOX_SHAPE_FIXLINKS
+  BHK_BOX_SHAPE_FIXLINKS
 }
 
+const Type & bhkBoxShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkBoxShape.h b/obj/bhkBoxShape.h
index c5c2ccbce0876558b681e056ac01da7ad8ea6da5..d9d5617188a3b9227d0002f31e4d6f9bd92f5b95 100644
--- a/obj/bhkBoxShape.h
+++ b/obj/bhkBoxShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkBoxShape> bhkBoxShapeRef;
 
 class bhkBoxShape : public BHK_BOX_SHAPE_PARENT {
 public:
-	bhkBoxShape();
-	~bhkBoxShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_BOX_SHAPE_MEMBERS
+  bhkBoxShape();
+  ~bhkBoxShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_BOX_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkCapsuleShape.cpp b/obj/bhkCapsuleShape.cpp
index f2f8549d23c82f35e1dd976d98db3be782ab480d..670118a8ac968ae6d5950ad95d9b2e4b878c1b6f 100644
--- a/obj/bhkCapsuleShape.cpp
+++ b/obj/bhkCapsuleShape.cpp
@@ -11,18 +11,22 @@ bhkCapsuleShape::bhkCapsuleShape() BHK_CAPSULE_SHAPE_CONSTRUCT {}
 bhkCapsuleShape::~bhkCapsuleShape() {}
 
 void bhkCapsuleShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_CAPSULE_SHAPE_READ
+  BHK_CAPSULE_SHAPE_READ
 }
 
 void bhkCapsuleShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_CAPSULE_SHAPE_WRITE
+  BHK_CAPSULE_SHAPE_WRITE
 }
 
 string bhkCapsuleShape::asString( bool verbose ) const {
-	BHK_CAPSULE_SHAPE_STRING
+  BHK_CAPSULE_SHAPE_STRING
 }
 
 void bhkCapsuleShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_CAPSULE_SHAPE_FIXLINKS
+  BHK_CAPSULE_SHAPE_FIXLINKS
 }
 
+const Type & bhkCapsuleShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkCapsuleShape.h b/obj/bhkCapsuleShape.h
index 7395e417b76a5d78965d9b4423a8f30f7708a07a..48fd4f6fc1b6f04937cfa4bff9685edba03d1524 100644
--- a/obj/bhkCapsuleShape.h
+++ b/obj/bhkCapsuleShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkCapsuleShape> bhkCapsuleShapeRef;
 
 class bhkCapsuleShape : public BHK_CAPSULE_SHAPE_PARENT {
 public:
-	bhkCapsuleShape();
-	~bhkCapsuleShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_CAPSULE_SHAPE_MEMBERS
+  bhkCapsuleShape();
+  ~bhkCapsuleShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_CAPSULE_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkCollisionObject.cpp b/obj/bhkCollisionObject.cpp
index 54a2bf10cdee9ef90926262b4974e88666b62a4a..b3f126d2813f24608008ddcb22c16a3b92cd6eb3 100644
--- a/obj/bhkCollisionObject.cpp
+++ b/obj/bhkCollisionObject.cpp
@@ -11,18 +11,22 @@ bhkCollisionObject::bhkCollisionObject() BHK_COLLISION_OBJECT_CONSTRUCT {}
 bhkCollisionObject::~bhkCollisionObject() {}
 
 void bhkCollisionObject::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_COLLISION_OBJECT_READ
+  BHK_COLLISION_OBJECT_READ
 }
 
 void bhkCollisionObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_COLLISION_OBJECT_WRITE
+  BHK_COLLISION_OBJECT_WRITE
 }
 
 string bhkCollisionObject::asString( bool verbose ) const {
-	BHK_COLLISION_OBJECT_STRING
+  BHK_COLLISION_OBJECT_STRING
 }
 
 void bhkCollisionObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_COLLISION_OBJECT_FIXLINKS
+  BHK_COLLISION_OBJECT_FIXLINKS
 }
 
+const Type & bhkCollisionObject::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkCollisionObject.h b/obj/bhkCollisionObject.h
index 7e99fcd571d891a122cfe5bd753cca134b1062b7..2180b85e397d8897fda1822a122c0e04d4695de8 100644
--- a/obj/bhkCollisionObject.h
+++ b/obj/bhkCollisionObject.h
@@ -16,16 +16,17 @@ typedef Ref<bhkCollisionObject> bhkCollisionObjectRef;
 
 class bhkCollisionObject : public BHK_COLLISION_OBJECT_PARENT {
 public:
-	bhkCollisionObject();
-	~bhkCollisionObject();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_COLLISION_OBJECT_MEMBERS
+  bhkCollisionObject();
+  ~bhkCollisionObject();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_COLLISION_OBJECT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkConvexShape.cpp b/obj/bhkConvexShape.cpp
index f25e98af4cb388652ff9bdfcb19f6b8badd901df..e1639ae492a4a2bf2d69c1463ee857980bd14a7f 100644
--- a/obj/bhkConvexShape.cpp
+++ b/obj/bhkConvexShape.cpp
@@ -11,18 +11,22 @@ bhkConvexShape::bhkConvexShape() BHK_CONVEX_SHAPE_CONSTRUCT {}
 bhkConvexShape::~bhkConvexShape() {}
 
 void bhkConvexShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_CONVEX_SHAPE_READ
+  BHK_CONVEX_SHAPE_READ
 }
 
 void bhkConvexShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_CONVEX_SHAPE_WRITE
+  BHK_CONVEX_SHAPE_WRITE
 }
 
 string bhkConvexShape::asString( bool verbose ) const {
-	BHK_CONVEX_SHAPE_STRING
+  BHK_CONVEX_SHAPE_STRING
 }
 
 void bhkConvexShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_CONVEX_SHAPE_FIXLINKS
+  BHK_CONVEX_SHAPE_FIXLINKS
 }
 
+const Type & bhkConvexShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkConvexShape.h b/obj/bhkConvexShape.h
index b772a45aedd26580742ef0bf2e0e894bacfc7285..9a92fb189acc3b90ba62575482e45e0cf74f00a9 100644
--- a/obj/bhkConvexShape.h
+++ b/obj/bhkConvexShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkConvexShape> bhkConvexShapeRef;
 
 class bhkConvexShape : public BHK_CONVEX_SHAPE_PARENT {
 public:
-	bhkConvexShape();
-	~bhkConvexShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_CONVEX_SHAPE_MEMBERS
+  bhkConvexShape();
+  ~bhkConvexShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_CONVEX_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkConvexTransformShape.cpp b/obj/bhkConvexTransformShape.cpp
index 687bbc248b9efddd819b3d04fa8fce7799664933..e442beddfcb682a676dbbeea1d70e513e5e4d264 100644
--- a/obj/bhkConvexTransformShape.cpp
+++ b/obj/bhkConvexTransformShape.cpp
@@ -11,18 +11,22 @@ bhkConvexTransformShape::bhkConvexTransformShape() BHK_CONVEX_TRANSFORM_SHAPE_CO
 bhkConvexTransformShape::~bhkConvexTransformShape() {}
 
 void bhkConvexTransformShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_CONVEX_TRANSFORM_SHAPE_READ
+  BHK_CONVEX_TRANSFORM_SHAPE_READ
 }
 
 void bhkConvexTransformShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_CONVEX_TRANSFORM_SHAPE_WRITE
+  BHK_CONVEX_TRANSFORM_SHAPE_WRITE
 }
 
 string bhkConvexTransformShape::asString( bool verbose ) const {
-	BHK_CONVEX_TRANSFORM_SHAPE_STRING
+  BHK_CONVEX_TRANSFORM_SHAPE_STRING
 }
 
 void bhkConvexTransformShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_CONVEX_TRANSFORM_SHAPE_FIXLINKS
+  BHK_CONVEX_TRANSFORM_SHAPE_FIXLINKS
 }
 
+const Type & bhkConvexTransformShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkConvexTransformShape.h b/obj/bhkConvexTransformShape.h
index e3aa73abde298dc163cfc6a3cf6fd9c989d45ac1..64799fa40fcb95468d9c8ee0482ac9533115bafc 100644
--- a/obj/bhkConvexTransformShape.h
+++ b/obj/bhkConvexTransformShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkConvexTransformShape> bhkConvexTransformShapeRef;
 
 class bhkConvexTransformShape : public BHK_CONVEX_TRANSFORM_SHAPE_PARENT {
 public:
-	bhkConvexTransformShape();
-	~bhkConvexTransformShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_CONVEX_TRANSFORM_SHAPE_MEMBERS
+  bhkConvexTransformShape();
+  ~bhkConvexTransformShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_CONVEX_TRANSFORM_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkConvexVerticesShape.cpp b/obj/bhkConvexVerticesShape.cpp
index dd098e537eba74131c2f4866244d2d8fd6805b77..c6b4af29c173eeaa770b17f3fd40b1b8937b584a 100644
--- a/obj/bhkConvexVerticesShape.cpp
+++ b/obj/bhkConvexVerticesShape.cpp
@@ -11,18 +11,22 @@ bhkConvexVerticesShape::bhkConvexVerticesShape() BHK_CONVEX_VERTICES_SHAPE_CONST
 bhkConvexVerticesShape::~bhkConvexVerticesShape() {}
 
 void bhkConvexVerticesShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_CONVEX_VERTICES_SHAPE_READ
+  BHK_CONVEX_VERTICES_SHAPE_READ
 }
 
 void bhkConvexVerticesShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_CONVEX_VERTICES_SHAPE_WRITE
+  BHK_CONVEX_VERTICES_SHAPE_WRITE
 }
 
 string bhkConvexVerticesShape::asString( bool verbose ) const {
-	BHK_CONVEX_VERTICES_SHAPE_STRING
+  BHK_CONVEX_VERTICES_SHAPE_STRING
 }
 
 void bhkConvexVerticesShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_CONVEX_VERTICES_SHAPE_FIXLINKS
+  BHK_CONVEX_VERTICES_SHAPE_FIXLINKS
 }
 
+const Type & bhkConvexVerticesShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkConvexVerticesShape.h b/obj/bhkConvexVerticesShape.h
index 49cf522e696bb4cc4489cbb064ceea8300e10049..e2c78f196b2103ae9745299eb53568407f6f2814 100644
--- a/obj/bhkConvexVerticesShape.h
+++ b/obj/bhkConvexVerticesShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkConvexVerticesShape> bhkConvexVerticesShapeRef;
 
 class bhkConvexVerticesShape : public BHK_CONVEX_VERTICES_SHAPE_PARENT {
 public:
-	bhkConvexVerticesShape();
-	~bhkConvexVerticesShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_CONVEX_VERTICES_SHAPE_MEMBERS
+  bhkConvexVerticesShape();
+  ~bhkConvexVerticesShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_CONVEX_VERTICES_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkEntity.cpp b/obj/bhkEntity.cpp
index a4920f2330a90634fef196274a2f60ea06289050..58d9c5204d143288c5016dfa88de0d1ad9312c7a 100644
--- a/obj/bhkEntity.cpp
+++ b/obj/bhkEntity.cpp
@@ -2,7 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "bhkEntity.h"
-#include "bhkSphereRepShape.h"
+#include "bhkShape.h"
 
 //Definition of TYPE constant
 const Type bhkEntity::TYPE("bhkEntity", &BHK_ENTITY_PARENT::TYPE );
@@ -12,18 +12,22 @@ bhkEntity::bhkEntity() BHK_ENTITY_CONSTRUCT {}
 bhkEntity::~bhkEntity() {}
 
 void bhkEntity::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_ENTITY_READ
+  BHK_ENTITY_READ
 }
 
 void bhkEntity::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_ENTITY_WRITE
+  BHK_ENTITY_WRITE
 }
 
 string bhkEntity::asString( bool verbose ) const {
-	BHK_ENTITY_STRING
+  BHK_ENTITY_STRING
 }
 
 void bhkEntity::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_ENTITY_FIXLINKS
+  BHK_ENTITY_FIXLINKS
 }
 
+const Type & bhkEntity::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkEntity.h b/obj/bhkEntity.h
index e8678ea6992dac722827a0a7d9c62e61714ff974..834e168e5a86e6880ad8e09b28142f5e609dd98f 100644
--- a/obj/bhkEntity.h
+++ b/obj/bhkEntity.h
@@ -16,16 +16,17 @@ typedef Ref<bhkEntity> bhkEntityRef;
 
 class bhkEntity : public BHK_ENTITY_PARENT {
 public:
-	bhkEntity();
-	~bhkEntity();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_ENTITY_MEMBERS
+  bhkEntity();
+  ~bhkEntity();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_ENTITY_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkHingeConstraint.cpp b/obj/bhkHingeConstraint.cpp
index 0db4e5ab59b1be1906a10c3f77c6c845d8cfbcf7..68d3a9cf3792a7bf9d38322a26ee17ca53314c93 100644
--- a/obj/bhkHingeConstraint.cpp
+++ b/obj/bhkHingeConstraint.cpp
@@ -11,18 +11,22 @@ bhkHingeConstraint::bhkHingeConstraint() BHK_HINGE_CONSTRAINT_CONSTRUCT {}
 bhkHingeConstraint::~bhkHingeConstraint() {}
 
 void bhkHingeConstraint::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_HINGE_CONSTRAINT_READ
+  BHK_HINGE_CONSTRAINT_READ
 }
 
 void bhkHingeConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_HINGE_CONSTRAINT_WRITE
+  BHK_HINGE_CONSTRAINT_WRITE
 }
 
 string bhkHingeConstraint::asString( bool verbose ) const {
-	BHK_HINGE_CONSTRAINT_STRING
+  BHK_HINGE_CONSTRAINT_STRING
 }
 
 void bhkHingeConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_HINGE_CONSTRAINT_FIXLINKS
+  BHK_HINGE_CONSTRAINT_FIXLINKS
 }
 
+const Type & bhkHingeConstraint::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkHingeConstraint.h b/obj/bhkHingeConstraint.h
index fa871e5b8ecb4542ac020cbb43bffdec82e321c1..7fc52d326490a0819eda449e467e589074f777f6 100644
--- a/obj/bhkHingeConstraint.h
+++ b/obj/bhkHingeConstraint.h
@@ -16,16 +16,17 @@ typedef Ref<bhkHingeConstraint> bhkHingeConstraintRef;
 
 class bhkHingeConstraint : public BHK_HINGE_CONSTRAINT_PARENT {
 public:
-	bhkHingeConstraint();
-	~bhkHingeConstraint();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_HINGE_CONSTRAINT_MEMBERS
+  bhkHingeConstraint();
+  ~bhkHingeConstraint();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_HINGE_CONSTRAINT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkLimitedHingeConstraint.cpp b/obj/bhkLimitedHingeConstraint.cpp
index 1b5848d8606cb6f76e4f72ed4b8866fad15455b2..0b8bd537bfbf30e895b8a845e9e97f78808f5ad3 100644
--- a/obj/bhkLimitedHingeConstraint.cpp
+++ b/obj/bhkLimitedHingeConstraint.cpp
@@ -11,18 +11,22 @@ bhkLimitedHingeConstraint::bhkLimitedHingeConstraint() BHK_LIMITED_HINGE_CONSTRA
 bhkLimitedHingeConstraint::~bhkLimitedHingeConstraint() {}
 
 void bhkLimitedHingeConstraint::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_LIMITED_HINGE_CONSTRAINT_READ
+  BHK_LIMITED_HINGE_CONSTRAINT_READ
 }
 
 void bhkLimitedHingeConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_LIMITED_HINGE_CONSTRAINT_WRITE
+  BHK_LIMITED_HINGE_CONSTRAINT_WRITE
 }
 
 string bhkLimitedHingeConstraint::asString( bool verbose ) const {
-	BHK_LIMITED_HINGE_CONSTRAINT_STRING
+  BHK_LIMITED_HINGE_CONSTRAINT_STRING
 }
 
 void bhkLimitedHingeConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_LIMITED_HINGE_CONSTRAINT_FIXLINKS
+  BHK_LIMITED_HINGE_CONSTRAINT_FIXLINKS
 }
 
+const Type & bhkLimitedHingeConstraint::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkLimitedHingeConstraint.h b/obj/bhkLimitedHingeConstraint.h
index 344178f46e3d85f3ef6caa95a3ec578d268dd684..f6d648aecc5bd6ef564645a50a25c109f66b8289 100644
--- a/obj/bhkLimitedHingeConstraint.h
+++ b/obj/bhkLimitedHingeConstraint.h
@@ -16,16 +16,17 @@ typedef Ref<bhkLimitedHingeConstraint> bhkLimitedHingeConstraintRef;
 
 class bhkLimitedHingeConstraint : public BHK_LIMITED_HINGE_CONSTRAINT_PARENT {
 public:
-	bhkLimitedHingeConstraint();
-	~bhkLimitedHingeConstraint();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_LIMITED_HINGE_CONSTRAINT_MEMBERS
+  bhkLimitedHingeConstraint();
+  ~bhkLimitedHingeConstraint();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_LIMITED_HINGE_CONSTRAINT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkListShape.cpp b/obj/bhkListShape.cpp
index ea79b31a144553d3938b103d5e55c01dedea9d6d..c246361af93ce456b1bae69f944f6a0dee1bd36c 100644
--- a/obj/bhkListShape.cpp
+++ b/obj/bhkListShape.cpp
@@ -2,7 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "bhkListShape.h"
-#include "bhkSphereRepShape.h"
+#include "bhkShape.h"
 
 //Definition of TYPE constant
 const Type bhkListShape::TYPE("bhkListShape", &BHK_LIST_SHAPE_PARENT::TYPE );
@@ -12,18 +12,22 @@ bhkListShape::bhkListShape() BHK_LIST_SHAPE_CONSTRUCT {}
 bhkListShape::~bhkListShape() {}
 
 void bhkListShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_LIST_SHAPE_READ
+  BHK_LIST_SHAPE_READ
 }
 
 void bhkListShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_LIST_SHAPE_WRITE
+  BHK_LIST_SHAPE_WRITE
 }
 
 string bhkListShape::asString( bool verbose ) const {
-	BHK_LIST_SHAPE_STRING
+  BHK_LIST_SHAPE_STRING
 }
 
 void bhkListShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_LIST_SHAPE_FIXLINKS
+  BHK_LIST_SHAPE_FIXLINKS
 }
 
+const Type & bhkListShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkListShape.h b/obj/bhkListShape.h
index a99c492cc201c4f8398eae4b434d867a30df9710..f11437a99225878ebf9acdb8b196bc1af22caca3 100644
--- a/obj/bhkListShape.h
+++ b/obj/bhkListShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkListShape> bhkListShapeRef;
 
 class bhkListShape : public BHK_LIST_SHAPE_PARENT {
 public:
-	bhkListShape();
-	~bhkListShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_LIST_SHAPE_MEMBERS
+  bhkListShape();
+  ~bhkListShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_LIST_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkMalleableConstraint.cpp b/obj/bhkMalleableConstraint.cpp
index 9b59e55b620edbb32a38ff81cd866a09d3a68b16..ff5168ff5948135a57abcbeea3f58d428fa744f2 100644
--- a/obj/bhkMalleableConstraint.cpp
+++ b/obj/bhkMalleableConstraint.cpp
@@ -2,6 +2,8 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "bhkMalleableConstraint.h"
+#include "NiObject.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type bhkMalleableConstraint::TYPE("bhkMalleableConstraint", &BHK_MALLEABLE_CONSTRAINT_PARENT::TYPE );
@@ -11,18 +13,22 @@ bhkMalleableConstraint::bhkMalleableConstraint() BHK_MALLEABLE_CONSTRAINT_CONSTR
 bhkMalleableConstraint::~bhkMalleableConstraint() {}
 
 void bhkMalleableConstraint::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_MALLEABLE_CONSTRAINT_READ
+  BHK_MALLEABLE_CONSTRAINT_READ
 }
 
 void bhkMalleableConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_MALLEABLE_CONSTRAINT_WRITE
+  BHK_MALLEABLE_CONSTRAINT_WRITE
 }
 
 string bhkMalleableConstraint::asString( bool verbose ) const {
-	BHK_MALLEABLE_CONSTRAINT_STRING
+  BHK_MALLEABLE_CONSTRAINT_STRING
 }
 
 void bhkMalleableConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_MALLEABLE_CONSTRAINT_FIXLINKS
+  BHK_MALLEABLE_CONSTRAINT_FIXLINKS
 }
 
+const Type & bhkMalleableConstraint::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkMalleableConstraint.h b/obj/bhkMalleableConstraint.h
index e709ff026c77d8db03bece59ba836f9b724ee16d..586bc7e3551bf4e5bbb1221d653bc45e21021d82 100644
--- a/obj/bhkMalleableConstraint.h
+++ b/obj/bhkMalleableConstraint.h
@@ -16,16 +16,17 @@ typedef Ref<bhkMalleableConstraint> bhkMalleableConstraintRef;
 
 class bhkMalleableConstraint : public BHK_MALLEABLE_CONSTRAINT_PARENT {
 public:
-	bhkMalleableConstraint();
-	~bhkMalleableConstraint();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_MALLEABLE_CONSTRAINT_MEMBERS
+  bhkMalleableConstraint();
+  ~bhkMalleableConstraint();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_MALLEABLE_CONSTRAINT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkMoppBvTreeShape.cpp b/obj/bhkMoppBvTreeShape.cpp
index 28864ecc0fedeb9cce3ea7cab109c562450c03ca..ae0f223e4db5aaf63df2488e265c5dd4184f3dd1 100644
--- a/obj/bhkMoppBvTreeShape.cpp
+++ b/obj/bhkMoppBvTreeShape.cpp
@@ -2,6 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "bhkMoppBvTreeShape.h"
+#include "bhkShape.h"
 
 //Definition of TYPE constant
 const Type bhkMoppBvTreeShape::TYPE("bhkMoppBvTreeShape", &BHK_MOPP_BV_TREE_SHAPE_PARENT::TYPE );
@@ -11,18 +12,22 @@ bhkMoppBvTreeShape::bhkMoppBvTreeShape() BHK_MOPP_BV_TREE_SHAPE_CONSTRUCT {}
 bhkMoppBvTreeShape::~bhkMoppBvTreeShape() {}
 
 void bhkMoppBvTreeShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_MOPP_BV_TREE_SHAPE_READ
+  BHK_MOPP_BV_TREE_SHAPE_READ
 }
 
 void bhkMoppBvTreeShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_MOPP_BV_TREE_SHAPE_WRITE
+  BHK_MOPP_BV_TREE_SHAPE_WRITE
 }
 
 string bhkMoppBvTreeShape::asString( bool verbose ) const {
-	BHK_MOPP_BV_TREE_SHAPE_STRING
+  BHK_MOPP_BV_TREE_SHAPE_STRING
 }
 
 void bhkMoppBvTreeShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_MOPP_BV_TREE_SHAPE_FIXLINKS
+  BHK_MOPP_BV_TREE_SHAPE_FIXLINKS
 }
 
+const Type & bhkMoppBvTreeShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkMoppBvTreeShape.h b/obj/bhkMoppBvTreeShape.h
index 0bf5f53456f209555145a9d29d4caf6aaceef34d..9e6e8e6809678228802c486c0c6a871bf473f1c6 100644
--- a/obj/bhkMoppBvTreeShape.h
+++ b/obj/bhkMoppBvTreeShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkMoppBvTreeShape> bhkMoppBvTreeShapeRef;
 
 class bhkMoppBvTreeShape : public BHK_MOPP_BV_TREE_SHAPE_PARENT {
 public:
-	bhkMoppBvTreeShape();
-	~bhkMoppBvTreeShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_MOPP_BV_TREE_SHAPE_MEMBERS
+  bhkMoppBvTreeShape();
+  ~bhkMoppBvTreeShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_MOPP_BV_TREE_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkMultiSphereShape.cpp b/obj/bhkMultiSphereShape.cpp
index 7add0ab9abfc1ade8b8596977b0c8e500a509033..4914c8a479c67cf941936d85b9ef947242e9ef81 100644
--- a/obj/bhkMultiSphereShape.cpp
+++ b/obj/bhkMultiSphereShape.cpp
@@ -11,18 +11,22 @@ bhkMultiSphereShape::bhkMultiSphereShape() BHK_MULTI_SPHERE_SHAPE_CONSTRUCT {}
 bhkMultiSphereShape::~bhkMultiSphereShape() {}
 
 void bhkMultiSphereShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_MULTI_SPHERE_SHAPE_READ
+  BHK_MULTI_SPHERE_SHAPE_READ
 }
 
 void bhkMultiSphereShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_MULTI_SPHERE_SHAPE_WRITE
+  BHK_MULTI_SPHERE_SHAPE_WRITE
 }
 
 string bhkMultiSphereShape::asString( bool verbose ) const {
-	BHK_MULTI_SPHERE_SHAPE_STRING
+  BHK_MULTI_SPHERE_SHAPE_STRING
 }
 
 void bhkMultiSphereShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_MULTI_SPHERE_SHAPE_FIXLINKS
+  BHK_MULTI_SPHERE_SHAPE_FIXLINKS
 }
 
+const Type & bhkMultiSphereShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkMultiSphereShape.h b/obj/bhkMultiSphereShape.h
index a1797584ad4d60575b5c1016c21d17321157b618..4895bdab26cb4e13866853ed81e743c639083ebc 100644
--- a/obj/bhkMultiSphereShape.h
+++ b/obj/bhkMultiSphereShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkMultiSphereShape> bhkMultiSphereShapeRef;
 
 class bhkMultiSphereShape : public BHK_MULTI_SPHERE_SHAPE_PARENT {
 public:
-	bhkMultiSphereShape();
-	~bhkMultiSphereShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_MULTI_SPHERE_SHAPE_MEMBERS
+  bhkMultiSphereShape();
+  ~bhkMultiSphereShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_MULTI_SPHERE_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkNiTriStripsShape.cpp b/obj/bhkNiTriStripsShape.cpp
index e159287be6e3cc5fd991afc2bddd6470b8cfa8d7..7bcafe15134af4dad105694ce474f4748a65555c 100644
--- a/obj/bhkNiTriStripsShape.cpp
+++ b/obj/bhkNiTriStripsShape.cpp
@@ -12,18 +12,22 @@ bhkNiTriStripsShape::bhkNiTriStripsShape() BHK_NI_TRI_STRIPS_SHAPE_CONSTRUCT {}
 bhkNiTriStripsShape::~bhkNiTriStripsShape() {}
 
 void bhkNiTriStripsShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_NI_TRI_STRIPS_SHAPE_READ
+  BHK_NI_TRI_STRIPS_SHAPE_READ
 }
 
 void bhkNiTriStripsShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_NI_TRI_STRIPS_SHAPE_WRITE
+  BHK_NI_TRI_STRIPS_SHAPE_WRITE
 }
 
 string bhkNiTriStripsShape::asString( bool verbose ) const {
-	BHK_NI_TRI_STRIPS_SHAPE_STRING
+  BHK_NI_TRI_STRIPS_SHAPE_STRING
 }
 
 void bhkNiTriStripsShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_NI_TRI_STRIPS_SHAPE_FIXLINKS
+  BHK_NI_TRI_STRIPS_SHAPE_FIXLINKS
 }
 
+const Type & bhkNiTriStripsShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkNiTriStripsShape.h b/obj/bhkNiTriStripsShape.h
index 02c800c329bcc8dba489f8c9ab52d257e97f5591..b1b50c60271b10e1e57f9130bc4d114d75898cdc 100644
--- a/obj/bhkNiTriStripsShape.h
+++ b/obj/bhkNiTriStripsShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkNiTriStripsShape> bhkNiTriStripsShapeRef;
 
 class bhkNiTriStripsShape : public BHK_NI_TRI_STRIPS_SHAPE_PARENT {
 public:
-	bhkNiTriStripsShape();
-	~bhkNiTriStripsShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_NI_TRI_STRIPS_SHAPE_MEMBERS
+  bhkNiTriStripsShape();
+  ~bhkNiTriStripsShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_NI_TRI_STRIPS_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkPackedNiTriStripsShape.cpp b/obj/bhkPackedNiTriStripsShape.cpp
index e6171c126f36a452eb42fd226b958bc103987f6d..4709132c316bc13559e9e2a78aa808a54b467f4a 100644
--- a/obj/bhkPackedNiTriStripsShape.cpp
+++ b/obj/bhkPackedNiTriStripsShape.cpp
@@ -2,7 +2,6 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "bhkPackedNiTriStripsShape.h"
-#include "NiTriStripsData.h"
 #include "hkPackedNiTriStripsData.h"
 
 //Definition of TYPE constant
@@ -13,18 +12,22 @@ bhkPackedNiTriStripsShape::bhkPackedNiTriStripsShape() BHK_PACKED_NI_TRI_STRIPS_
 bhkPackedNiTriStripsShape::~bhkPackedNiTriStripsShape() {}
 
 void bhkPackedNiTriStripsShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_PACKED_NI_TRI_STRIPS_SHAPE_READ
+  BHK_PACKED_NI_TRI_STRIPS_SHAPE_READ
 }
 
 void bhkPackedNiTriStripsShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_PACKED_NI_TRI_STRIPS_SHAPE_WRITE
+  BHK_PACKED_NI_TRI_STRIPS_SHAPE_WRITE
 }
 
 string bhkPackedNiTriStripsShape::asString( bool verbose ) const {
-	BHK_PACKED_NI_TRI_STRIPS_SHAPE_STRING
+  BHK_PACKED_NI_TRI_STRIPS_SHAPE_STRING
 }
 
 void bhkPackedNiTriStripsShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_PACKED_NI_TRI_STRIPS_SHAPE_FIXLINKS
+  BHK_PACKED_NI_TRI_STRIPS_SHAPE_FIXLINKS
 }
 
+const Type & bhkPackedNiTriStripsShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkPackedNiTriStripsShape.h b/obj/bhkPackedNiTriStripsShape.h
index d7c9a0cbc1380697eb192df72070df379d3c7833..d56ecebbfbe88d3a58e7e66ce2b836e0837053cd 100644
--- a/obj/bhkPackedNiTriStripsShape.h
+++ b/obj/bhkPackedNiTriStripsShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkPackedNiTriStripsShape> bhkPackedNiTriStripsShapeRef;
 
 class bhkPackedNiTriStripsShape : public BHK_PACKED_NI_TRI_STRIPS_SHAPE_PARENT {
 public:
-	bhkPackedNiTriStripsShape();
-	~bhkPackedNiTriStripsShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_PACKED_NI_TRI_STRIPS_SHAPE_MEMBERS
+  bhkPackedNiTriStripsShape();
+  ~bhkPackedNiTriStripsShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_PACKED_NI_TRI_STRIPS_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkPrismaticConstraint.cpp b/obj/bhkPrismaticConstraint.cpp
index 35ae2ee4bce036093af0cd1c255360a92c71e07b..733c294ef50b35a2f3e061ccb74060e3294d1410 100644
--- a/obj/bhkPrismaticConstraint.cpp
+++ b/obj/bhkPrismaticConstraint.cpp
@@ -11,18 +11,22 @@ bhkPrismaticConstraint::bhkPrismaticConstraint() BHK_PRISMATIC_CONSTRAINT_CONSTR
 bhkPrismaticConstraint::~bhkPrismaticConstraint() {}
 
 void bhkPrismaticConstraint::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_PRISMATIC_CONSTRAINT_READ
+  BHK_PRISMATIC_CONSTRAINT_READ
 }
 
 void bhkPrismaticConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_PRISMATIC_CONSTRAINT_WRITE
+  BHK_PRISMATIC_CONSTRAINT_WRITE
 }
 
 string bhkPrismaticConstraint::asString( bool verbose ) const {
-	BHK_PRISMATIC_CONSTRAINT_STRING
+  BHK_PRISMATIC_CONSTRAINT_STRING
 }
 
 void bhkPrismaticConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_PRISMATIC_CONSTRAINT_FIXLINKS
+  BHK_PRISMATIC_CONSTRAINT_FIXLINKS
 }
 
+const Type & bhkPrismaticConstraint::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkPrismaticConstraint.h b/obj/bhkPrismaticConstraint.h
index e0fe19ae3f45cf4004ab5ee3091a58aab4aca675..7f105f8ffd18ea0f74701d5f1ee592a9132fb79b 100644
--- a/obj/bhkPrismaticConstraint.h
+++ b/obj/bhkPrismaticConstraint.h
@@ -16,16 +16,17 @@ typedef Ref<bhkPrismaticConstraint> bhkPrismaticConstraintRef;
 
 class bhkPrismaticConstraint : public BHK_PRISMATIC_CONSTRAINT_PARENT {
 public:
-	bhkPrismaticConstraint();
-	~bhkPrismaticConstraint();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_PRISMATIC_CONSTRAINT_MEMBERS
+  bhkPrismaticConstraint();
+  ~bhkPrismaticConstraint();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_PRISMATIC_CONSTRAINT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkRagdollConstraint.cpp b/obj/bhkRagdollConstraint.cpp
index 1ba2878a21b9091da390d90b5302d73d2726a814..fe9ffbb2eb98f77ac72f6fdfa996184f801312b7 100644
--- a/obj/bhkRagdollConstraint.cpp
+++ b/obj/bhkRagdollConstraint.cpp
@@ -11,18 +11,22 @@ bhkRagdollConstraint::bhkRagdollConstraint() BHK_RAGDOLL_CONSTRAINT_CONSTRUCT {}
 bhkRagdollConstraint::~bhkRagdollConstraint() {}
 
 void bhkRagdollConstraint::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_RAGDOLL_CONSTRAINT_READ
+  BHK_RAGDOLL_CONSTRAINT_READ
 }
 
 void bhkRagdollConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_RAGDOLL_CONSTRAINT_WRITE
+  BHK_RAGDOLL_CONSTRAINT_WRITE
 }
 
 string bhkRagdollConstraint::asString( bool verbose ) const {
-	BHK_RAGDOLL_CONSTRAINT_STRING
+  BHK_RAGDOLL_CONSTRAINT_STRING
 }
 
 void bhkRagdollConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_RAGDOLL_CONSTRAINT_FIXLINKS
+  BHK_RAGDOLL_CONSTRAINT_FIXLINKS
 }
 
+const Type & bhkRagdollConstraint::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkRagdollConstraint.h b/obj/bhkRagdollConstraint.h
index 7aadeecdd6b8c68b10f4ba3a2f1fa10da466990f..9cf610004d652dd963717fe076c5f3d73e4116cf 100644
--- a/obj/bhkRagdollConstraint.h
+++ b/obj/bhkRagdollConstraint.h
@@ -16,16 +16,17 @@ typedef Ref<bhkRagdollConstraint> bhkRagdollConstraintRef;
 
 class bhkRagdollConstraint : public BHK_RAGDOLL_CONSTRAINT_PARENT {
 public:
-	bhkRagdollConstraint();
-	~bhkRagdollConstraint();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_RAGDOLL_CONSTRAINT_MEMBERS
+  bhkRagdollConstraint();
+  ~bhkRagdollConstraint();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_RAGDOLL_CONSTRAINT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkRefObject.cpp b/obj/bhkRefObject.cpp
index dc4c1735b18b0af69d1ef19e4553fe9a925d1780..348bb33af3eddd11072d5165c2ae71bffa401498 100644
--- a/obj/bhkRefObject.cpp
+++ b/obj/bhkRefObject.cpp
@@ -11,18 +11,22 @@ bhkRefObject::bhkRefObject() BHK_REF_OBJECT_CONSTRUCT {}
 bhkRefObject::~bhkRefObject() {}
 
 void bhkRefObject::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_REF_OBJECT_READ
+  BHK_REF_OBJECT_READ
 }
 
 void bhkRefObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_REF_OBJECT_WRITE
+  BHK_REF_OBJECT_WRITE
 }
 
 string bhkRefObject::asString( bool verbose ) const {
-	BHK_REF_OBJECT_STRING
+  BHK_REF_OBJECT_STRING
 }
 
 void bhkRefObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_REF_OBJECT_FIXLINKS
+  BHK_REF_OBJECT_FIXLINKS
 }
 
+const Type & bhkRefObject::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkRefObject.h b/obj/bhkRefObject.h
index b6b93c69bc11f9480a05f702a238c867ee2184f6..0714a630965678ed6bcfbf0400f1baf146f1fbda 100644
--- a/obj/bhkRefObject.h
+++ b/obj/bhkRefObject.h
@@ -16,16 +16,17 @@ typedef Ref<bhkRefObject> bhkRefObjectRef;
 
 class bhkRefObject : public BHK_REF_OBJECT_PARENT {
 public:
-	bhkRefObject();
-	~bhkRefObject();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_REF_OBJECT_MEMBERS
+  bhkRefObject();
+  ~bhkRefObject();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_REF_OBJECT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkRigidBody.cpp b/obj/bhkRigidBody.cpp
index ab4cdef0c920bcf3a1797d4d3c4fd190182379f6..3697fdc6999e29459fecf19c0d4c12727ff5ee09 100644
--- a/obj/bhkRigidBody.cpp
+++ b/obj/bhkRigidBody.cpp
@@ -12,18 +12,22 @@ bhkRigidBody::bhkRigidBody() BHK_RIGID_BODY_CONSTRUCT {}
 bhkRigidBody::~bhkRigidBody() {}
 
 void bhkRigidBody::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_RIGID_BODY_READ
+  BHK_RIGID_BODY_READ
 }
 
 void bhkRigidBody::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_RIGID_BODY_WRITE
+  BHK_RIGID_BODY_WRITE
 }
 
 string bhkRigidBody::asString( bool verbose ) const {
-	BHK_RIGID_BODY_STRING
+  BHK_RIGID_BODY_STRING
 }
 
 void bhkRigidBody::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_RIGID_BODY_FIXLINKS
+  BHK_RIGID_BODY_FIXLINKS
 }
 
+const Type & bhkRigidBody::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkRigidBody.h b/obj/bhkRigidBody.h
index fd1b6d594af147aadef667dfb1d7f5f2cbd4004c..3891c53c626c8f4009bdffc21b701cb678df2ada 100644
--- a/obj/bhkRigidBody.h
+++ b/obj/bhkRigidBody.h
@@ -16,16 +16,17 @@ typedef Ref<bhkRigidBody> bhkRigidBodyRef;
 
 class bhkRigidBody : public BHK_RIGID_BODY_PARENT {
 public:
-	bhkRigidBody();
-	~bhkRigidBody();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_RIGID_BODY_MEMBERS
+  bhkRigidBody();
+  ~bhkRigidBody();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_RIGID_BODY_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkRigidBodyT.cpp b/obj/bhkRigidBodyT.cpp
index b59120e598706d93aee66c1edef0ae5525275009..9f1c8afe132f2c32c24ff3c8af0b23b6a57a1094 100644
--- a/obj/bhkRigidBodyT.cpp
+++ b/obj/bhkRigidBodyT.cpp
@@ -11,18 +11,22 @@ bhkRigidBodyT::bhkRigidBodyT() BHK_RIGID_BODY_T_CONSTRUCT {}
 bhkRigidBodyT::~bhkRigidBodyT() {}
 
 void bhkRigidBodyT::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_RIGID_BODY_T_READ
+  BHK_RIGID_BODY_T_READ
 }
 
 void bhkRigidBodyT::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_RIGID_BODY_T_WRITE
+  BHK_RIGID_BODY_T_WRITE
 }
 
 string bhkRigidBodyT::asString( bool verbose ) const {
-	BHK_RIGID_BODY_T_STRING
+  BHK_RIGID_BODY_T_STRING
 }
 
 void bhkRigidBodyT::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_RIGID_BODY_T_FIXLINKS
+  BHK_RIGID_BODY_T_FIXLINKS
 }
 
+const Type & bhkRigidBodyT::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkRigidBodyT.h b/obj/bhkRigidBodyT.h
index 11cb72093562e8fba95dc57d7899ce4c3cda41c6..e63e80025b3718f2826b403cf767939994cc1614 100644
--- a/obj/bhkRigidBodyT.h
+++ b/obj/bhkRigidBodyT.h
@@ -16,16 +16,17 @@ typedef Ref<bhkRigidBodyT> bhkRigidBodyTRef;
 
 class bhkRigidBodyT : public BHK_RIGID_BODY_T_PARENT {
 public:
-	bhkRigidBodyT();
-	~bhkRigidBodyT();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_RIGID_BODY_T_MEMBERS
+  bhkRigidBodyT();
+  ~bhkRigidBodyT();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_RIGID_BODY_T_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkSPCollisionObject.cpp b/obj/bhkSPCollisionObject.cpp
index 0347e3279f15882cada8262f1da57ed9550859a0..61dde3719ea6da5a7e43c3ae79a0388f3c99a789 100644
--- a/obj/bhkSPCollisionObject.cpp
+++ b/obj/bhkSPCollisionObject.cpp
@@ -11,18 +11,22 @@ bhkSPCollisionObject::bhkSPCollisionObject() BHK_S_P_COLLISION_OBJECT_CONSTRUCT
 bhkSPCollisionObject::~bhkSPCollisionObject() {}
 
 void bhkSPCollisionObject::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_S_P_COLLISION_OBJECT_READ
+  BHK_S_P_COLLISION_OBJECT_READ
 }
 
 void bhkSPCollisionObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_S_P_COLLISION_OBJECT_WRITE
+  BHK_S_P_COLLISION_OBJECT_WRITE
 }
 
 string bhkSPCollisionObject::asString( bool verbose ) const {
-	BHK_S_P_COLLISION_OBJECT_STRING
+  BHK_S_P_COLLISION_OBJECT_STRING
 }
 
 void bhkSPCollisionObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_S_P_COLLISION_OBJECT_FIXLINKS
+  BHK_S_P_COLLISION_OBJECT_FIXLINKS
 }
 
+const Type & bhkSPCollisionObject::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkSPCollisionObject.h b/obj/bhkSPCollisionObject.h
index c461df41bd5782b26c749b26032580e89ba3f9ef..6d5dc2395b00069abd9892e4c892352b61a1426e 100644
--- a/obj/bhkSPCollisionObject.h
+++ b/obj/bhkSPCollisionObject.h
@@ -16,16 +16,17 @@ typedef Ref<bhkSPCollisionObject> bhkSPCollisionObjectRef;
 
 class bhkSPCollisionObject : public BHK_S_P_COLLISION_OBJECT_PARENT {
 public:
-	bhkSPCollisionObject();
-	~bhkSPCollisionObject();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_S_P_COLLISION_OBJECT_MEMBERS
+  bhkSPCollisionObject();
+  ~bhkSPCollisionObject();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_S_P_COLLISION_OBJECT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkSerializable.cpp b/obj/bhkSerializable.cpp
index 1d2b0d2703d094fd8fd6fe31e00e672459a80d01..07e95c77c138c9535a5fa7047af8f5de77c7c175 100644
--- a/obj/bhkSerializable.cpp
+++ b/obj/bhkSerializable.cpp
@@ -11,18 +11,22 @@ bhkSerializable::bhkSerializable() BHK_SERIALIZABLE_CONSTRUCT {}
 bhkSerializable::~bhkSerializable() {}
 
 void bhkSerializable::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_SERIALIZABLE_READ
+  BHK_SERIALIZABLE_READ
 }
 
 void bhkSerializable::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_SERIALIZABLE_WRITE
+  BHK_SERIALIZABLE_WRITE
 }
 
 string bhkSerializable::asString( bool verbose ) const {
-	BHK_SERIALIZABLE_STRING
+  BHK_SERIALIZABLE_STRING
 }
 
 void bhkSerializable::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_SERIALIZABLE_FIXLINKS
+  BHK_SERIALIZABLE_FIXLINKS
 }
 
+const Type & bhkSerializable::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkSerializable.h b/obj/bhkSerializable.h
index 52a85ec84e5053bf9eb283e2a6c7590333c47fca..fe3b45c4f0fa10d7afe2bfe1d75f81c7760a4e2b 100644
--- a/obj/bhkSerializable.h
+++ b/obj/bhkSerializable.h
@@ -16,16 +16,17 @@ typedef Ref<bhkSerializable> bhkSerializableRef;
 
 class bhkSerializable : public BHK_SERIALIZABLE_PARENT {
 public:
-	bhkSerializable();
-	~bhkSerializable();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_SERIALIZABLE_MEMBERS
+  bhkSerializable();
+  ~bhkSerializable();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_SERIALIZABLE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkShape.cpp b/obj/bhkShape.cpp
index 7d32307307570a62f481d2b7df7a1be40d5c1a87..dddca21330a55c37a4ddb64c689b37bf8edb708e 100644
--- a/obj/bhkShape.cpp
+++ b/obj/bhkShape.cpp
@@ -11,18 +11,22 @@ bhkShape::bhkShape() BHK_SHAPE_CONSTRUCT {}
 bhkShape::~bhkShape() {}
 
 void bhkShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_SHAPE_READ
+  BHK_SHAPE_READ
 }
 
 void bhkShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_SHAPE_WRITE
+  BHK_SHAPE_WRITE
 }
 
 string bhkShape::asString( bool verbose ) const {
-	BHK_SHAPE_STRING
+  BHK_SHAPE_STRING
 }
 
 void bhkShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_SHAPE_FIXLINKS
+  BHK_SHAPE_FIXLINKS
 }
 
+const Type & bhkShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkShape.h b/obj/bhkShape.h
index 5de843b5b7636799f0c4f76e18d8a0a93b0a7a34..d795e6aea54e3f9ce89843cac39ac23bbe6afdb1 100644
--- a/obj/bhkShape.h
+++ b/obj/bhkShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkShape> bhkShapeRef;
 
 class bhkShape : public BHK_SHAPE_PARENT {
 public:
-	bhkShape();
-	~bhkShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_SHAPE_MEMBERS
+  bhkShape();
+  ~bhkShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkSimpleShapePhantom.cpp b/obj/bhkSimpleShapePhantom.cpp
index 39971bff584891029b9519ae8aca219dffc41f08..19e1a5c0e94cb1cc349ad1f982fef2299e147234 100644
--- a/obj/bhkSimpleShapePhantom.cpp
+++ b/obj/bhkSimpleShapePhantom.cpp
@@ -11,18 +11,22 @@ bhkSimpleShapePhantom::bhkSimpleShapePhantom() BHK_SIMPLE_SHAPE_PHANTOM_CONSTRUC
 bhkSimpleShapePhantom::~bhkSimpleShapePhantom() {}
 
 void bhkSimpleShapePhantom::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_SIMPLE_SHAPE_PHANTOM_READ
+  BHK_SIMPLE_SHAPE_PHANTOM_READ
 }
 
 void bhkSimpleShapePhantom::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_SIMPLE_SHAPE_PHANTOM_WRITE
+  BHK_SIMPLE_SHAPE_PHANTOM_WRITE
 }
 
 string bhkSimpleShapePhantom::asString( bool verbose ) const {
-	BHK_SIMPLE_SHAPE_PHANTOM_STRING
+  BHK_SIMPLE_SHAPE_PHANTOM_STRING
 }
 
 void bhkSimpleShapePhantom::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_SIMPLE_SHAPE_PHANTOM_FIXLINKS
+  BHK_SIMPLE_SHAPE_PHANTOM_FIXLINKS
 }
 
+const Type & bhkSimpleShapePhantom::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkSimpleShapePhantom.h b/obj/bhkSimpleShapePhantom.h
index ba80f89af22e24fe746b0d6541ce51a042ae9a32..c72a1168c2aab362ee20351283c3639dc3200631 100644
--- a/obj/bhkSimpleShapePhantom.h
+++ b/obj/bhkSimpleShapePhantom.h
@@ -16,16 +16,17 @@ typedef Ref<bhkSimpleShapePhantom> bhkSimpleShapePhantomRef;
 
 class bhkSimpleShapePhantom : public BHK_SIMPLE_SHAPE_PHANTOM_PARENT {
 public:
-	bhkSimpleShapePhantom();
-	~bhkSimpleShapePhantom();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_SIMPLE_SHAPE_PHANTOM_MEMBERS
+  bhkSimpleShapePhantom();
+  ~bhkSimpleShapePhantom();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_SIMPLE_SHAPE_PHANTOM_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkSphereRepShape.cpp b/obj/bhkSphereRepShape.cpp
index ade1fe7ebcda229f0aafe94fceb1ce049bce7564..cb9432045c2b4894acbc5736633b64016faaa010 100644
--- a/obj/bhkSphereRepShape.cpp
+++ b/obj/bhkSphereRepShape.cpp
@@ -11,18 +11,22 @@ bhkSphereRepShape::bhkSphereRepShape() BHK_SPHERE_REP_SHAPE_CONSTRUCT {}
 bhkSphereRepShape::~bhkSphereRepShape() {}
 
 void bhkSphereRepShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_SPHERE_REP_SHAPE_READ
+  BHK_SPHERE_REP_SHAPE_READ
 }
 
 void bhkSphereRepShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_SPHERE_REP_SHAPE_WRITE
+  BHK_SPHERE_REP_SHAPE_WRITE
 }
 
 string bhkSphereRepShape::asString( bool verbose ) const {
-	BHK_SPHERE_REP_SHAPE_STRING
+  BHK_SPHERE_REP_SHAPE_STRING
 }
 
 void bhkSphereRepShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_SPHERE_REP_SHAPE_FIXLINKS
+  BHK_SPHERE_REP_SHAPE_FIXLINKS
 }
 
+const Type & bhkSphereRepShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkSphereRepShape.h b/obj/bhkSphereRepShape.h
index de8593b6ad12cba0dbeb55857a1c5d2e48de5f93..86dd489f078db58097a18c14fe607764ed7d1acd 100644
--- a/obj/bhkSphereRepShape.h
+++ b/obj/bhkSphereRepShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkSphereRepShape> bhkSphereRepShapeRef;
 
 class bhkSphereRepShape : public BHK_SPHERE_REP_SHAPE_PARENT {
 public:
-	bhkSphereRepShape();
-	~bhkSphereRepShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_SPHERE_REP_SHAPE_MEMBERS
+  bhkSphereRepShape();
+  ~bhkSphereRepShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_SPHERE_REP_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkSphereShape.cpp b/obj/bhkSphereShape.cpp
index 234585b418f4d5d50f91a388a9f232420ed31a5f..b2b678af51bb931e90c72306fe94ec7782acaeb0 100644
--- a/obj/bhkSphereShape.cpp
+++ b/obj/bhkSphereShape.cpp
@@ -11,18 +11,22 @@ bhkSphereShape::bhkSphereShape() BHK_SPHERE_SHAPE_CONSTRUCT {}
 bhkSphereShape::~bhkSphereShape() {}
 
 void bhkSphereShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_SPHERE_SHAPE_READ
+  BHK_SPHERE_SHAPE_READ
 }
 
 void bhkSphereShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_SPHERE_SHAPE_WRITE
+  BHK_SPHERE_SHAPE_WRITE
 }
 
 string bhkSphereShape::asString( bool verbose ) const {
-	BHK_SPHERE_SHAPE_STRING
+  BHK_SPHERE_SHAPE_STRING
 }
 
 void bhkSphereShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_SPHERE_SHAPE_FIXLINKS
+  BHK_SPHERE_SHAPE_FIXLINKS
 }
 
+const Type & bhkSphereShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkSphereShape.h b/obj/bhkSphereShape.h
index 9b16f0caa266afb939d52d9b9d5d04987786bb44..1557c92e0742424eeb2952db9fff652e3770267a 100644
--- a/obj/bhkSphereShape.h
+++ b/obj/bhkSphereShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkSphereShape> bhkSphereShapeRef;
 
 class bhkSphereShape : public BHK_SPHERE_SHAPE_PARENT {
 public:
-	bhkSphereShape();
-	~bhkSphereShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_SPHERE_SHAPE_MEMBERS
+  bhkSphereShape();
+  ~bhkSphereShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_SPHERE_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkStiffSpringConstraint.cpp b/obj/bhkStiffSpringConstraint.cpp
index f4b40b6ad759cacbd2d7057cfc90b10d1f16841c..fdcd3dcd59ac4e546a3f274bebc9f0d9863dd6f6 100644
--- a/obj/bhkStiffSpringConstraint.cpp
+++ b/obj/bhkStiffSpringConstraint.cpp
@@ -11,18 +11,22 @@ bhkStiffSpringConstraint::bhkStiffSpringConstraint() BHK_STIFF_SPRING_CONSTRAINT
 bhkStiffSpringConstraint::~bhkStiffSpringConstraint() {}
 
 void bhkStiffSpringConstraint::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_STIFF_SPRING_CONSTRAINT_READ
+  BHK_STIFF_SPRING_CONSTRAINT_READ
 }
 
 void bhkStiffSpringConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_STIFF_SPRING_CONSTRAINT_WRITE
+  BHK_STIFF_SPRING_CONSTRAINT_WRITE
 }
 
 string bhkStiffSpringConstraint::asString( bool verbose ) const {
-	BHK_STIFF_SPRING_CONSTRAINT_STRING
+  BHK_STIFF_SPRING_CONSTRAINT_STRING
 }
 
 void bhkStiffSpringConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_STIFF_SPRING_CONSTRAINT_FIXLINKS
+  BHK_STIFF_SPRING_CONSTRAINT_FIXLINKS
 }
 
+const Type & bhkStiffSpringConstraint::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkStiffSpringConstraint.h b/obj/bhkStiffSpringConstraint.h
index aded5a569feef53725f812fd7113f0830f63e039..b96967ff317474c4f0ef858ae6b5857f34e7df53 100644
--- a/obj/bhkStiffSpringConstraint.h
+++ b/obj/bhkStiffSpringConstraint.h
@@ -16,16 +16,17 @@ typedef Ref<bhkStiffSpringConstraint> bhkStiffSpringConstraintRef;
 
 class bhkStiffSpringConstraint : public BHK_STIFF_SPRING_CONSTRAINT_PARENT {
 public:
-	bhkStiffSpringConstraint();
-	~bhkStiffSpringConstraint();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_STIFF_SPRING_CONSTRAINT_MEMBERS
+  bhkStiffSpringConstraint();
+  ~bhkStiffSpringConstraint();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_STIFF_SPRING_CONSTRAINT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkTransformShape.cpp b/obj/bhkTransformShape.cpp
index c16ca1e4ac286193148a1ca2faafd355f32ca9ec..d7dea44092c12bcd21997bb12e58a5003d02c171 100644
--- a/obj/bhkTransformShape.cpp
+++ b/obj/bhkTransformShape.cpp
@@ -11,18 +11,22 @@ bhkTransformShape::bhkTransformShape() BHK_TRANSFORM_SHAPE_CONSTRUCT {}
 bhkTransformShape::~bhkTransformShape() {}
 
 void bhkTransformShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_TRANSFORM_SHAPE_READ
+  BHK_TRANSFORM_SHAPE_READ
 }
 
 void bhkTransformShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_TRANSFORM_SHAPE_WRITE
+  BHK_TRANSFORM_SHAPE_WRITE
 }
 
 string bhkTransformShape::asString( bool verbose ) const {
-	BHK_TRANSFORM_SHAPE_STRING
+  BHK_TRANSFORM_SHAPE_STRING
 }
 
 void bhkTransformShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_TRANSFORM_SHAPE_FIXLINKS
+  BHK_TRANSFORM_SHAPE_FIXLINKS
 }
 
+const Type & bhkTransformShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkTransformShape.h b/obj/bhkTransformShape.h
index 092d70115733d97288ff4f22f728c884270db458..3a537bc294715a441a2abd750c70ca1af4bef3f8 100644
--- a/obj/bhkTransformShape.h
+++ b/obj/bhkTransformShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkTransformShape> bhkTransformShapeRef;
 
 class bhkTransformShape : public BHK_TRANSFORM_SHAPE_PARENT {
 public:
-	bhkTransformShape();
-	~bhkTransformShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_TRANSFORM_SHAPE_MEMBERS
+  bhkTransformShape();
+  ~bhkTransformShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_TRANSFORM_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkWorldObject.cpp b/obj/bhkWorldObject.cpp
index 9cd5a5c7c21c8df328acb0c2127a3b05c2791cfb..b5cce9d06dd8a1055012b40ce4d7911de03ecf08 100644
--- a/obj/bhkWorldObject.cpp
+++ b/obj/bhkWorldObject.cpp
@@ -11,18 +11,22 @@ bhkWorldObject::bhkWorldObject() BHK_WORLD_OBJECT_CONSTRUCT {}
 bhkWorldObject::~bhkWorldObject() {}
 
 void bhkWorldObject::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_WORLD_OBJECT_READ
+  BHK_WORLD_OBJECT_READ
 }
 
 void bhkWorldObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_WORLD_OBJECT_WRITE
+  BHK_WORLD_OBJECT_WRITE
 }
 
 string bhkWorldObject::asString( bool verbose ) const {
-	BHK_WORLD_OBJECT_STRING
+  BHK_WORLD_OBJECT_STRING
 }
 
 void bhkWorldObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_WORLD_OBJECT_FIXLINKS
+  BHK_WORLD_OBJECT_FIXLINKS
 }
 
+const Type & bhkWorldObject::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkWorldObject.h b/obj/bhkWorldObject.h
index 9d38b23f881a36117de191d17dd2f852c4f4ac18..54ed29197fb0c3c421bc5421bb7f41ab6302c9ce 100644
--- a/obj/bhkWorldObject.h
+++ b/obj/bhkWorldObject.h
@@ -16,16 +16,17 @@ typedef Ref<bhkWorldObject> bhkWorldObjectRef;
 
 class bhkWorldObject : public BHK_WORLD_OBJECT_PARENT {
 public:
-	bhkWorldObject();
-	~bhkWorldObject();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_WORLD_OBJECT_MEMBERS
+  bhkWorldObject();
+  ~bhkWorldObject();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_WORLD_OBJECT_MEMBERS
 };
+
 #endif
diff --git a/obj/hkPackedNiTriStripsData.cpp b/obj/hkPackedNiTriStripsData.cpp
index 4bfb39a4fd30668c57ea7e24b52a87b494cdcd38..381e24246c4dd2e163e2134b11bddbe259880184 100644
--- a/obj/hkPackedNiTriStripsData.cpp
+++ b/obj/hkPackedNiTriStripsData.cpp
@@ -11,18 +11,22 @@ hkPackedNiTriStripsData::hkPackedNiTriStripsData() HK_PACKED_NI_TRI_STRIPS_DATA_
 hkPackedNiTriStripsData::~hkPackedNiTriStripsData() {}
 
 void hkPackedNiTriStripsData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	HK_PACKED_NI_TRI_STRIPS_DATA_READ
+  HK_PACKED_NI_TRI_STRIPS_DATA_READ
 }
 
 void hkPackedNiTriStripsData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	HK_PACKED_NI_TRI_STRIPS_DATA_WRITE
+  HK_PACKED_NI_TRI_STRIPS_DATA_WRITE
 }
 
 string hkPackedNiTriStripsData::asString( bool verbose ) const {
-	HK_PACKED_NI_TRI_STRIPS_DATA_STRING
+  HK_PACKED_NI_TRI_STRIPS_DATA_STRING
 }
 
 void hkPackedNiTriStripsData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	HK_PACKED_NI_TRI_STRIPS_DATA_FIXLINKS
+  HK_PACKED_NI_TRI_STRIPS_DATA_FIXLINKS
 }
 
+const Type & hkPackedNiTriStripsData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/hkPackedNiTriStripsData.h b/obj/hkPackedNiTriStripsData.h
index cfd80d176359d8aae37a1f0282e585af4b502778..ac582caa050f158c015791b204050b55397a16fe 100644
--- a/obj/hkPackedNiTriStripsData.h
+++ b/obj/hkPackedNiTriStripsData.h
@@ -16,16 +16,17 @@ typedef Ref<hkPackedNiTriStripsData> hkPackedNiTriStripsDataRef;
 
 class hkPackedNiTriStripsData : public HK_PACKED_NI_TRI_STRIPS_DATA_PARENT {
 public:
-	hkPackedNiTriStripsData();
-	~hkPackedNiTriStripsData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	HK_PACKED_NI_TRI_STRIPS_DATA_MEMBERS
+  hkPackedNiTriStripsData();
+  ~hkPackedNiTriStripsData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  HK_PACKED_NI_TRI_STRIPS_DATA_MEMBERS
 };
+
 #endif
diff --git a/xml_extract.h b/xml_extract.h
index 3cbd41f9e14541ccabe0da2ef12c469b7ae292b5..f509e08667e68d3193cc51c123d2f99b27b9762d 100644
--- a/xml_extract.h
+++ b/xml_extract.h
@@ -14,14 +14,8 @@ All rights reserved.  Please see niflib.h for licence. */
 using namespace std;
 
 class NiObject;
-class AInterpolator;
-class ABlendInterpolator;
-class ABSplineCompInterpolator;
 class AKeyedData;
 class AParticleModifier;
-class APSysModifier;
-class APSysEmitter;
-class APSysVolumeEmitter;
 class bhkRefObject;
 class bhkSerializable;
 class AbhkConstraint;
@@ -34,17 +28,23 @@ class bhkWorldObject;
 class bhkEntity;
 class NiCollisionObject;
 class NiExtraData;
+class NiInterpolator;
+class NiBlendInterpolator;
+class NiBSplineInterpolator;
 class NiObjectNET;
 class NiAVObject;
 class NiDynamicEffect;
 class NiLight;
 class NiProperty;
+class NiPSysModifier;
+class NiPSysEmitter;
+class NiPSysVolumeEmitter;
 class NiTimeController;
 class ABoneLODController;
 class NiSingleInterpolatorController;
 class APSysCtlr;
 class NiTriBasedGeom;
-class TriBasedGeomData;
+class NiTriBasedGeomData;
 class APSysData;
 class bhkBlendCollisionObject;
 class bhkBlendController;
@@ -474,7 +474,7 @@ struct ControllerLink {
   /*!
    * Link to an interpolator.
    */
-  Ref<AInterpolator > interpolator;
+  Ref<NiInterpolator > interpolator;
   /*!
    * Unknown link. Usually -1.
    */
@@ -1128,88 +1128,6 @@ return out.str(); \
 
 #define NI_OBJECT_FIXLINKS \
 
-#define A_INTERPOLATOR_MEMBERS \
-
-#define A_INTERPOLATOR_INCLUDE "NiObject.h" \
-
-#define A_INTERPOLATOR_PARENT NiObject \
-
-#define A_INTERPOLATOR_CONSTRUCT \
-
-#define A_INTERPOLATOR_READ \
-NiObject::Read( in, link_stack, version ); \
-
-#define A_INTERPOLATOR_WRITE \
-NiObject::Write( out, link_map, version ); \
-
-#define A_INTERPOLATOR_STRING \
-stringstream out; \
-out << NiObject::asString(); \
-return out.str(); \
-
-#define A_INTERPOLATOR_FIXLINKS \
-NiObject::FixLinks( objects, link_stack, version ); \
-
-#define A_BLEND_INTERPOLATOR_MEMBERS \
-ushort unknownShort; \
-uint unknownInt; \
-
-#define A_BLEND_INTERPOLATOR_INCLUDE "AInterpolator.h" \
-
-#define A_BLEND_INTERPOLATOR_PARENT AInterpolator \
-
-#define A_BLEND_INTERPOLATOR_CONSTRUCT \
-
-#define A_BLEND_INTERPOLATOR_READ \
-AInterpolator::Read( in, link_stack, version ); \
-NifStream( unknownShort, in, version ); \
-NifStream( unknownInt, in, version ); \
-
-#define A_BLEND_INTERPOLATOR_WRITE \
-AInterpolator::Write( out, link_map, version ); \
-NifStream( unknownShort, out, version ); \
-NifStream( unknownInt, out, version ); \
-
-#define A_BLEND_INTERPOLATOR_STRING \
-stringstream out; \
-out << AInterpolator::asString(); \
-out << "Unknown Short:  " << unknownShort << endl; \
-out << "Unknown Int:  " << unknownInt << endl; \
-return out.str(); \
-
-#define A_BLEND_INTERPOLATOR_FIXLINKS \
-AInterpolator::FixLinks( objects, link_stack, version ); \
-
-#define A_B_SPLINE_COMP_INTERPOLATOR_MEMBERS \
-float startTime; \
-float stopTime; \
-
-#define A_B_SPLINE_COMP_INTERPOLATOR_INCLUDE "AInterpolator.h" \
-
-#define A_B_SPLINE_COMP_INTERPOLATOR_PARENT AInterpolator \
-
-#define A_B_SPLINE_COMP_INTERPOLATOR_CONSTRUCT \
-
-#define A_B_SPLINE_COMP_INTERPOLATOR_READ \
-AInterpolator::Read( in, link_stack, version ); \
-NifStream( startTime, in, version ); \
-NifStream( stopTime, in, version ); \
-
-#define A_B_SPLINE_COMP_INTERPOLATOR_WRITE \
-AInterpolator::Write( out, link_map, version ); \
-NifStream( startTime, out, version ); \
-NifStream( stopTime, out, version ); \
-
-#define A_B_SPLINE_COMP_INTERPOLATOR_STRING \
-stringstream out; \
-out << AInterpolator::asString(); \
-out << "Start Time:  " << startTime << endl; \
-out << "Stop Time:  " << stopTime << endl; \
-return out.str(); \
-
-#define A_B_SPLINE_COMP_INTERPOLATOR_FIXLINKS \
-AInterpolator::FixLinks( objects, link_stack, version ); \
-
 #define A_KEYED_DATA_MEMBERS \
 
 #define A_KEYED_DATA_INCLUDE "NiObject.h" \
@@ -1234,7 +1152,7 @@ NiObject::FixLinks( objects, link_stack, version ); \
 
 #define A_PARTICLE_MODIFIER_MEMBERS \
 Ref<AParticleModifier > nextModifier; \
-AParticleModifier * previousModifier; \
+NiParticleSystemController * controller; \
 
 #define A_PARTICLE_MODIFIER_INCLUDE "NiObject.h" \
 
@@ -1253,166 +1171,28 @@ link_stack.push_back( block_num ); \
 #define A_PARTICLE_MODIFIER_WRITE \
 NiObject::Write( out, link_map, version ); \
 NifStream( link_map[StaticCast<NiObject>(nextModifier)], out, version ); \
-NifStream( link_map[StaticCast<NiObject>(previousModifier)], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(controller)], out, version ); \
 
 #define A_PARTICLE_MODIFIER_STRING \
 stringstream out; \
 out << NiObject::asString(); \
 out << "Next Modifier:  " << nextModifier << endl; \
-out << "Previous Modifier:  " << previousModifier << endl; \
+out << "Controller:  " << controller << endl; \
 return out.str(); \
 
 #define A_PARTICLE_MODIFIER_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-nextModifier = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  nextModifier = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
+else \
+  nextModifier = NULL; \
 link_stack.pop_front(); \
-previousModifier = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
-link_stack.pop_front(); \
-
-#define A_P_SYS_MODIFIER_MEMBERS \
-string name; \
-uint order; \
-NiParticleSystem * target; \
-bool active; \
-
-#define A_P_SYS_MODIFIER_INCLUDE "NiObject.h" \
-
-#define A_P_SYS_MODIFIER_PARENT NiObject \
-
-#define A_P_SYS_MODIFIER_CONSTRUCT \
-
-#define A_P_SYS_MODIFIER_READ \
-uint block_num; \
-NiObject::Read( in, link_stack, version ); \
-NifStream( name, in, version ); \
-NifStream( order, in, version ); \
-NifStream( block_num, in, version ); \
-link_stack.push_back( block_num ); \
-NifStream( active, in, version ); \
-
-#define A_P_SYS_MODIFIER_WRITE \
-NiObject::Write( out, link_map, version ); \
-NifStream( name, out, version ); \
-NifStream( order, out, version ); \
-NifStream( link_map[StaticCast<NiObject>(target)], out, version ); \
-NifStream( active, out, version ); \
-
-#define A_P_SYS_MODIFIER_STRING \
-stringstream out; \
-out << NiObject::asString(); \
-out << "Name:  " << name << endl; \
-out << "Order:  " << order << endl; \
-out << "Target:  " << target << endl; \
-out << "Active:  " << active << endl; \
-return out.str(); \
-
-#define A_P_SYS_MODIFIER_FIXLINKS \
-NiObject::FixLinks( objects, link_stack, version ); \
-target = DynamicCast<NiParticleSystem>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  controller = DynamicCast<NiParticleSystemController>(objects[link_stack.front()]); \
+else \
+  controller = NULL; \
 link_stack.pop_front(); \
 
-#define A_P_SYS_EMITTER_MEMBERS \
-float speed; \
-float speedVariation; \
-float declination; \
-float declinationVariation; \
-float planarAngle; \
-float planarAngleVariation; \
-Color4 initialColor; \
-float initialRadius; \
-float radiusVariation; \
-float lifeSpan; \
-float lifeSpanVariation; \
-
-#define A_P_SYS_EMITTER_INCLUDE "APSysModifier.h" \
-
-#define A_P_SYS_EMITTER_PARENT APSysModifier \
-
-#define A_P_SYS_EMITTER_CONSTRUCT \
-
-#define A_P_SYS_EMITTER_READ \
-APSysModifier::Read( in, link_stack, version ); \
-NifStream( speed, in, version ); \
-NifStream( speedVariation, in, version ); \
-NifStream( declination, in, version ); \
-NifStream( declinationVariation, in, version ); \
-NifStream( planarAngle, in, version ); \
-NifStream( planarAngleVariation, in, version ); \
-NifStream( initialColor, in, version ); \
-NifStream( initialRadius, in, version ); \
-NifStream( radiusVariation, in, version ); \
-NifStream( lifeSpan, in, version ); \
-NifStream( lifeSpanVariation, in, version ); \
-
-#define A_P_SYS_EMITTER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
-NifStream( speed, out, version ); \
-NifStream( speedVariation, out, version ); \
-NifStream( declination, out, version ); \
-NifStream( declinationVariation, out, version ); \
-NifStream( planarAngle, out, version ); \
-NifStream( planarAngleVariation, out, version ); \
-NifStream( initialColor, out, version ); \
-NifStream( initialRadius, out, version ); \
-NifStream( radiusVariation, out, version ); \
-NifStream( lifeSpan, out, version ); \
-NifStream( lifeSpanVariation, out, version ); \
-
-#define A_P_SYS_EMITTER_STRING \
-stringstream out; \
-out << APSysModifier::asString(); \
-out << "Speed:  " << speed << endl; \
-out << "Speed Variation:  " << speedVariation << endl; \
-out << "Declination:  " << declination << endl; \
-out << "Declination Variation:  " << declinationVariation << endl; \
-out << "Planar Angle:  " << planarAngle << endl; \
-out << "Planar Angle Variation:  " << planarAngleVariation << endl; \
-out << "Initial Color:  " << initialColor << endl; \
-out << "Initial Radius:  " << initialRadius << endl; \
-out << "Radius Variation:  " << radiusVariation << endl; \
-out << "Life Span:  " << lifeSpan << endl; \
-out << "Life Span Variation:  " << lifeSpanVariation << endl; \
-return out.str(); \
-
-#define A_P_SYS_EMITTER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
-
-#define A_P_SYS_VOLUME_EMITTER_MEMBERS \
-NiNode * emitterObject; \
-
-#define A_P_SYS_VOLUME_EMITTER_INCLUDE "APSysEmitter.h" \
-
-#define A_P_SYS_VOLUME_EMITTER_PARENT APSysEmitter \
-
-#define A_P_SYS_VOLUME_EMITTER_CONSTRUCT \
-
-#define A_P_SYS_VOLUME_EMITTER_READ \
-uint block_num; \
-APSysEmitter::Read( in, link_stack, version ); \
-if ( version >= 0x14000004 ) { \
-  NifStream( block_num, in, version ); \
-  link_stack.push_back( block_num ); \
-}; \
-
-#define A_P_SYS_VOLUME_EMITTER_WRITE \
-APSysEmitter::Write( out, link_map, version ); \
-if ( version >= 0x14000004 ) { \
-  NifStream( link_map[StaticCast<NiObject>(emitterObject)], out, version ); \
-}; \
-
-#define A_P_SYS_VOLUME_EMITTER_STRING \
-stringstream out; \
-out << APSysEmitter::asString(); \
-out << "Emitter Object:  " << emitterObject << endl; \
-return out.str(); \
-
-#define A_P_SYS_VOLUME_EMITTER_FIXLINKS \
-APSysEmitter::FixLinks( objects, link_stack, version ); \
-if ( version >= 0x14000004 ) { \
-  emitterObject = DynamicCast<NiNode>(objects[link_stack.front()]); \
-  link_stack.pop_front(); \
-}; \
-
 #define BHK_REF_OBJECT_MEMBERS \
 
 #define BHK_REF_OBJECT_INCLUDE "NiObject.h" \
@@ -1507,7 +1287,10 @@ bhkSerializable::FixLinks( objects, link_stack, version ); \
 uint numBodies; \
 numBodies = uint(bodies.size()); \
 for (uint i0 = 0; i0 < numBodies; i0++) { \
-  bodies[i0] = DynamicCast<bhkShape>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    bodies[i0] = DynamicCast<bhkShape>(objects[link_stack.front()]); \
+  else \
+    bodies[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -1726,7 +1509,10 @@ return out.str(); \
 
 #define BHK_ENTITY_FIXLINKS \
 bhkWorldObject::FixLinks( objects, link_stack, version ); \
-shape = DynamicCast<bhkShape>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  shape = DynamicCast<bhkShape>(objects[link_stack.front()]); \
+else \
+  shape = NULL; \
 link_stack.pop_front(); \
 
 #define NI_COLLISION_OBJECT_MEMBERS \
@@ -1771,9 +1557,15 @@ return out.str(); \
 NiObject::FixLinks( objects, link_stack, version ); \
 NiAVObject * parent; \
 parent = Parent(); \
-parent = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  parent = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
+else \
+  parent = NULL; \
 link_stack.pop_front(); \
-body = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  body = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  body = NULL; \
 link_stack.pop_front(); \
 
 #define NI_EXTRA_DATA_MEMBERS \
@@ -1818,10 +1610,95 @@ NiObject::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x0A000100 ) { \
 }; \
 if ( version <= 0x04020200 ) { \
-  nextExtraData = DynamicCast<NiExtraData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    nextExtraData = DynamicCast<NiExtraData>(objects[link_stack.front()]); \
+  else \
+    nextExtraData = NULL; \
   link_stack.pop_front(); \
 }; \
 
+#define NI_INTERPOLATOR_MEMBERS \
+
+#define NI_INTERPOLATOR_INCLUDE "NiObject.h" \
+
+#define NI_INTERPOLATOR_PARENT NiObject \
+
+#define NI_INTERPOLATOR_CONSTRUCT \
+
+#define NI_INTERPOLATOR_READ \
+NiObject::Read( in, link_stack, version ); \
+
+#define NI_INTERPOLATOR_WRITE \
+NiObject::Write( out, link_map, version ); \
+
+#define NI_INTERPOLATOR_STRING \
+stringstream out; \
+out << NiObject::asString(); \
+return out.str(); \
+
+#define NI_INTERPOLATOR_FIXLINKS \
+NiObject::FixLinks( objects, link_stack, version ); \
+
+#define NI_BLEND_INTERPOLATOR_MEMBERS \
+ushort unknownShort; \
+uint unknownInt; \
+
+#define NI_BLEND_INTERPOLATOR_INCLUDE "NiInterpolator.h" \
+
+#define NI_BLEND_INTERPOLATOR_PARENT NiInterpolator \
+
+#define NI_BLEND_INTERPOLATOR_CONSTRUCT \
+
+#define NI_BLEND_INTERPOLATOR_READ \
+NiInterpolator::Read( in, link_stack, version ); \
+NifStream( unknownShort, in, version ); \
+NifStream( unknownInt, in, version ); \
+
+#define NI_BLEND_INTERPOLATOR_WRITE \
+NiInterpolator::Write( out, link_map, version ); \
+NifStream( unknownShort, out, version ); \
+NifStream( unknownInt, out, version ); \
+
+#define NI_BLEND_INTERPOLATOR_STRING \
+stringstream out; \
+out << NiInterpolator::asString(); \
+out << "Unknown Short:  " << unknownShort << endl; \
+out << "Unknown Int:  " << unknownInt << endl; \
+return out.str(); \
+
+#define NI_BLEND_INTERPOLATOR_FIXLINKS \
+NiInterpolator::FixLinks( objects, link_stack, version ); \
+
+#define NI_B_SPLINE_INTERPOLATOR_MEMBERS \
+float startTime; \
+float stopTime; \
+
+#define NI_B_SPLINE_INTERPOLATOR_INCLUDE "NiInterpolator.h" \
+
+#define NI_B_SPLINE_INTERPOLATOR_PARENT NiInterpolator \
+
+#define NI_B_SPLINE_INTERPOLATOR_CONSTRUCT \
+
+#define NI_B_SPLINE_INTERPOLATOR_READ \
+NiInterpolator::Read( in, link_stack, version ); \
+NifStream( startTime, in, version ); \
+NifStream( stopTime, in, version ); \
+
+#define NI_B_SPLINE_INTERPOLATOR_WRITE \
+NiInterpolator::Write( out, link_map, version ); \
+NifStream( startTime, out, version ); \
+NifStream( stopTime, out, version ); \
+
+#define NI_B_SPLINE_INTERPOLATOR_STRING \
+stringstream out; \
+out << NiInterpolator::asString(); \
+out << "Start Time:  " << startTime << endl; \
+out << "Stop Time:  " << stopTime << endl; \
+return out.str(); \
+
+#define NI_B_SPLINE_INTERPOLATOR_FIXLINKS \
+NiInterpolator::FixLinks( objects, link_stack, version ); \
+
 #define NI_OBJECT_N_E_T_MEMBERS \
 string name; \
 Ref<NiExtraData > extraData; \
@@ -1889,16 +1766,25 @@ NiObject::FixLinks( objects, link_stack, version ); \
 uint numExtraDataList; \
 numExtraDataList = uint(extraDataList.size()); \
 if ( version <= 0x04020200 ) { \
-  extraData = DynamicCast<NiExtraData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    extraData = DynamicCast<NiExtraData>(objects[link_stack.front()]); \
+  else \
+    extraData = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x0A000100 ) { \
   for (uint i1 = 0; i1 < numExtraDataList; i1++) { \
-    extraDataList[i1] = DynamicCast<NiExtraData>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      extraDataList[i1] = DynamicCast<NiExtraData>(objects[link_stack.front()]); \
+    else \
+      extraDataList[i1] = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
-controller = DynamicCast<NiTimeController>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  controller = DynamicCast<NiTimeController>(objects[link_stack.front()]); \
+else \
+  controller = NULL; \
 link_stack.pop_front(); \
 
 #define NI_A_V_OBJECT_MEMBERS \
@@ -2018,7 +1904,10 @@ numProperties = uint(properties.size()); \
 if ( version <= 0x04020200 ) { \
 }; \
 for (uint i0 = 0; i0 < numProperties; i0++) { \
-  properties[i0] = DynamicCast<NiProperty>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    properties[i0] = DynamicCast<NiProperty>(objects[link_stack.front()]); \
+  else \
+    properties[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( version <= 0x04020200 ) { \
@@ -2026,11 +1915,17 @@ if ( version <= 0x04020200 ) { \
   }; \
 }; \
 if ( ( version >= 0x0A000100 ) && ( version <= 0x14000004 ) ) { \
-  collisionData = DynamicCast<NiCollisionData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    collisionData = DynamicCast<NiCollisionData>(objects[link_stack.front()]); \
+  else \
+    collisionData = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x14000005 ) { \
-  collisionObject = DynamicCast<NiCollisionObject>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    collisionObject = DynamicCast<NiCollisionObject>(objects[link_stack.front()]); \
+  else \
+    collisionObject = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -2116,7 +2011,10 @@ if ( version >= 0x0A020000 ) { \
 }; \
 if ( version >= 0x0A010000 ) { \
   for (uint i1 = 0; i1 < numAffectedNodes; i1++) { \
-    affectedNodes[i1] = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      affectedNodes[i1] = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
+    else \
+      affectedNodes[i1] = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
@@ -2181,6 +2079,156 @@ return out.str(); \
 #define NI_PROPERTY_FIXLINKS \
 NiObjectNET::FixLinks( objects, link_stack, version ); \
 
+#define NI_P_SYS_MODIFIER_MEMBERS \
+string name; \
+uint order; \
+NiParticleSystem * target; \
+bool active; \
+
+#define NI_P_SYS_MODIFIER_INCLUDE "NiObject.h" \
+
+#define NI_P_SYS_MODIFIER_PARENT NiObject \
+
+#define NI_P_SYS_MODIFIER_CONSTRUCT \
+
+#define NI_P_SYS_MODIFIER_READ \
+uint block_num; \
+NiObject::Read( in, link_stack, version ); \
+NifStream( name, in, version ); \
+NifStream( order, in, version ); \
+NifStream( block_num, in, version ); \
+link_stack.push_back( block_num ); \
+NifStream( active, in, version ); \
+
+#define NI_P_SYS_MODIFIER_WRITE \
+NiObject::Write( out, link_map, version ); \
+NifStream( name, out, version ); \
+NifStream( order, out, version ); \
+NifStream( link_map[StaticCast<NiObject>(target)], out, version ); \
+NifStream( active, out, version ); \
+
+#define NI_P_SYS_MODIFIER_STRING \
+stringstream out; \
+out << NiObject::asString(); \
+out << "Name:  " << name << endl; \
+out << "Order:  " << order << endl; \
+out << "Target:  " << target << endl; \
+out << "Active:  " << active << endl; \
+return out.str(); \
+
+#define NI_P_SYS_MODIFIER_FIXLINKS \
+NiObject::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  target = DynamicCast<NiParticleSystem>(objects[link_stack.front()]); \
+else \
+  target = NULL; \
+link_stack.pop_front(); \
+
+#define NI_P_SYS_EMITTER_MEMBERS \
+float speed; \
+float speedVariation; \
+float declination; \
+float declinationVariation; \
+float planarAngle; \
+float planarAngleVariation; \
+Color4 initialColor; \
+float initialRadius; \
+float radiusVariation; \
+float lifeSpan; \
+float lifeSpanVariation; \
+
+#define NI_P_SYS_EMITTER_INCLUDE "NiPSysModifier.h" \
+
+#define NI_P_SYS_EMITTER_PARENT NiPSysModifier \
+
+#define NI_P_SYS_EMITTER_CONSTRUCT \
+
+#define NI_P_SYS_EMITTER_READ \
+NiPSysModifier::Read( in, link_stack, version ); \
+NifStream( speed, in, version ); \
+NifStream( speedVariation, in, version ); \
+NifStream( declination, in, version ); \
+NifStream( declinationVariation, in, version ); \
+NifStream( planarAngle, in, version ); \
+NifStream( planarAngleVariation, in, version ); \
+NifStream( initialColor, in, version ); \
+NifStream( initialRadius, in, version ); \
+NifStream( radiusVariation, in, version ); \
+NifStream( lifeSpan, in, version ); \
+NifStream( lifeSpanVariation, in, version ); \
+
+#define NI_P_SYS_EMITTER_WRITE \
+NiPSysModifier::Write( out, link_map, version ); \
+NifStream( speed, out, version ); \
+NifStream( speedVariation, out, version ); \
+NifStream( declination, out, version ); \
+NifStream( declinationVariation, out, version ); \
+NifStream( planarAngle, out, version ); \
+NifStream( planarAngleVariation, out, version ); \
+NifStream( initialColor, out, version ); \
+NifStream( initialRadius, out, version ); \
+NifStream( radiusVariation, out, version ); \
+NifStream( lifeSpan, out, version ); \
+NifStream( lifeSpanVariation, out, version ); \
+
+#define NI_P_SYS_EMITTER_STRING \
+stringstream out; \
+out << NiPSysModifier::asString(); \
+out << "Speed:  " << speed << endl; \
+out << "Speed Variation:  " << speedVariation << endl; \
+out << "Declination:  " << declination << endl; \
+out << "Declination Variation:  " << declinationVariation << endl; \
+out << "Planar Angle:  " << planarAngle << endl; \
+out << "Planar Angle Variation:  " << planarAngleVariation << endl; \
+out << "Initial Color:  " << initialColor << endl; \
+out << "Initial Radius:  " << initialRadius << endl; \
+out << "Radius Variation:  " << radiusVariation << endl; \
+out << "Life Span:  " << lifeSpan << endl; \
+out << "Life Span Variation:  " << lifeSpanVariation << endl; \
+return out.str(); \
+
+#define NI_P_SYS_EMITTER_FIXLINKS \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
+
+#define NI_P_SYS_VOLUME_EMITTER_MEMBERS \
+NiNode * emitterObject; \
+
+#define NI_P_SYS_VOLUME_EMITTER_INCLUDE "NiPSysEmitter.h" \
+
+#define NI_P_SYS_VOLUME_EMITTER_PARENT NiPSysEmitter \
+
+#define NI_P_SYS_VOLUME_EMITTER_CONSTRUCT \
+
+#define NI_P_SYS_VOLUME_EMITTER_READ \
+uint block_num; \
+NiPSysEmitter::Read( in, link_stack, version ); \
+if ( version >= 0x14000004 ) { \
+  NifStream( block_num, in, version ); \
+  link_stack.push_back( block_num ); \
+}; \
+
+#define NI_P_SYS_VOLUME_EMITTER_WRITE \
+NiPSysEmitter::Write( out, link_map, version ); \
+if ( version >= 0x14000004 ) { \
+  NifStream( link_map[StaticCast<NiObject>(emitterObject)], out, version ); \
+}; \
+
+#define NI_P_SYS_VOLUME_EMITTER_STRING \
+stringstream out; \
+out << NiPSysEmitter::asString(); \
+out << "Emitter Object:  " << emitterObject << endl; \
+return out.str(); \
+
+#define NI_P_SYS_VOLUME_EMITTER_FIXLINKS \
+NiPSysEmitter::FixLinks( objects, link_stack, version ); \
+if ( version >= 0x14000004 ) { \
+  if (link_stack.front() != 0xffffffff) \
+    emitterObject = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  else \
+    emitterObject = NULL; \
+  link_stack.pop_front(); \
+}; \
+
 #define NI_TIME_CONTROLLER_MEMBERS \
 Ref<NiTimeController > nextController; \
 unsigned short flags; \
@@ -2233,9 +2281,15 @@ return out.str(); \
 
 #define NI_TIME_CONTROLLER_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-nextController = DynamicCast<NiTimeController>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  nextController = DynamicCast<NiTimeController>(objects[link_stack.front()]); \
+else \
+  nextController = NULL; \
 link_stack.pop_front(); \
-target = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  target = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  target = NULL; \
 link_stack.pop_front(); \
 
 #define A_BONE_L_O_D_CONTROLLER_MEMBERS \
@@ -2309,13 +2363,16 @@ for (uint i0 = 0; i0 < numNodeGroups; i0++) { \
   uint nodeGroups_numNodes; \
   nodeGroups_numNodes = uint(nodeGroups[i0].nodes.size()); \
   for (uint i1 = 0; i1 < nodeGroups_numNodes; i1++) { \
-    nodeGroups[i0].nodes[i1] = DynamicCast<NiNode>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      nodeGroups[i0].nodes[i1] = DynamicCast<NiNode>(objects[link_stack.front()]); \
+    else \
+      nodeGroups[i0].nodes[i1] = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
 
 #define NI_SINGLE_INTERPOLATOR_CONTROLLER_MEMBERS \
-Ref<AInterpolator > interpolator; \
+Ref<NiInterpolator > interpolator; \
 
 #define NI_SINGLE_INTERPOLATOR_CONTROLLER_INCLUDE "NiTimeController.h" \
 
@@ -2346,7 +2403,10 @@ return out.str(); \
 #define NI_SINGLE_INTERPOLATOR_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x0A020000 ) { \
-  interpolator = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    interpolator = DynamicCast<NiInterpolator>(objects[link_stack.front()]); \
+  else \
+    interpolator = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -2377,7 +2437,7 @@ return out.str(); \
 NiSingleInterpolatorController::FixLinks( objects, link_stack, version ); \
 
 #define NI_TRI_BASED_GEOM_MEMBERS \
-Ref<TriBasedGeomData > data; \
+Ref<NiTriBasedGeomData > data; \
 Ref<NiSkinInstance > skinInstance; \
 bool hasShader; \
 string shaderName; \
@@ -2431,18 +2491,27 @@ return out.str(); \
 
 #define NI_TRI_BASED_GEOM_FIXLINKS \
 NiAVObject::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<TriBasedGeomData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiTriBasedGeomData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
-skinInstance = DynamicCast<NiSkinInstance>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  skinInstance = DynamicCast<NiSkinInstance>(objects[link_stack.front()]); \
+else \
+  skinInstance = NULL; \
 link_stack.pop_front(); \
 if ( version >= 0x0A000100 ) { \
   if ( (hasShader != 0) ) { \
-    unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    else \
+      unknownLink = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
 
-#define TRI_BASED_GEOM_DATA_MEMBERS \
+#define NI_TRI_BASED_GEOM_DATA_MEMBERS \
 string name; \
 ushort numVertices; \
 ushort unknownShort1; \
@@ -2462,13 +2531,13 @@ vector<vector<TexCoord > > uvSets2; \
 ushort unknownShort2; \
 Ref<NiObject > unknownLink; \
 
-#define TRI_BASED_GEOM_DATA_INCLUDE "NiObject.h" \
+#define NI_TRI_BASED_GEOM_DATA_INCLUDE "NiObject.h" \
 
-#define TRI_BASED_GEOM_DATA_PARENT NiObject \
+#define NI_TRI_BASED_GEOM_DATA_PARENT NiObject \
 
-#define TRI_BASED_GEOM_DATA_CONSTRUCT \
+#define NI_TRI_BASED_GEOM_DATA_CONSTRUCT \
 
-#define TRI_BASED_GEOM_DATA_READ \
+#define NI_TRI_BASED_GEOM_DATA_READ \
 uint block_num; \
 NiObject::Read( in, link_stack, version ); \
 ushort numUvSets; \
@@ -2552,7 +2621,7 @@ if ( version >= 0x14000004 ) { \
   link_stack.push_back( block_num ); \
 }; \
 
-#define TRI_BASED_GEOM_DATA_WRITE \
+#define NI_TRI_BASED_GEOM_DATA_WRITE \
 NiObject::Write( out, link_map, version ); \
 ushort numUvSets; \
 numUvSets = ushort(uvSets.size()); \
@@ -2626,7 +2695,7 @@ if ( version >= 0x14000004 ) { \
   NifStream( link_map[StaticCast<NiObject>(unknownLink)], out, version ); \
 }; \
 
-#define TRI_BASED_GEOM_DATA_STRING \
+#define NI_TRI_BASED_GEOM_DATA_STRING \
 stringstream out; \
 out << NiObject::asString(); \
 ushort numUvSets; \
@@ -2684,7 +2753,7 @@ out << "Unknown Short 2:  " << unknownShort2 << endl; \
 out << "Unknown Link:  " << unknownLink << endl; \
 return out.str(); \
 
-#define TRI_BASED_GEOM_DATA_FIXLINKS \
+#define NI_TRI_BASED_GEOM_DATA_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
 ushort numUvSets; \
 numUvSets = ushort(uvSets.size()); \
@@ -2735,7 +2804,10 @@ if ( version >= 0x0A000100 ) { \
   }; \
 }; \
 if ( version >= 0x14000004 ) { \
-  unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+  else \
+    unknownLink = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -2747,14 +2819,14 @@ bool hasUnknownFloats2; \
 vector<float > unknownFloats2; \
 byte unknownByte1; \
 
-#define A_P_SYS_DATA_INCLUDE "TriBasedGeomData.h" \
+#define A_P_SYS_DATA_INCLUDE "NiTriBasedGeomData.h" \
 
-#define A_P_SYS_DATA_PARENT TriBasedGeomData \
+#define A_P_SYS_DATA_PARENT NiTriBasedGeomData \
 
 #define A_P_SYS_DATA_CONSTRUCT \
 
 #define A_P_SYS_DATA_READ \
-TriBasedGeomData::Read( in, link_stack, version ); \
+NiTriBasedGeomData::Read( in, link_stack, version ); \
 NifStream( hasUnknownFloats1, in, version ); \
 if ( (hasUnknownFloats1 != 0) ) { \
   unknownFloats1.resize(numVertices); \
@@ -2773,7 +2845,7 @@ if ( (hasUnknownFloats2 != 0) ) { \
 NifStream( unknownByte1, in, version ); \
 
 #define A_P_SYS_DATA_WRITE \
-TriBasedGeomData::Write( out, link_map, version ); \
+NiTriBasedGeomData::Write( out, link_map, version ); \
 NifStream( hasUnknownFloats1, out, version ); \
 if ( (hasUnknownFloats1 != 0) ) { \
   for (uint i1 = 0; i1 < numVertices; i1++) { \
@@ -2791,7 +2863,7 @@ NifStream( unknownByte1, out, version ); \
 
 #define A_P_SYS_DATA_STRING \
 stringstream out; \
-out << TriBasedGeomData::asString(); \
+out << NiTriBasedGeomData::asString(); \
 out << "Has Unknown Floats 1:  " << hasUnknownFloats1 << endl; \
 if ( (hasUnknownFloats1 != 0) ) { \
   for (uint i1 = 0; i1 < numVertices; i1++) { \
@@ -2809,7 +2881,7 @@ out << "Unknown Byte 1:  " << unknownByte1 << endl; \
 return out.str(); \
 
 #define A_P_SYS_DATA_FIXLINKS \
-TriBasedGeomData::FixLinks( objects, link_stack, version ); \
+NiTriBasedGeomData::FixLinks( objects, link_stack, version ); \
 if ( (hasUnknownFloats1 != 0) ) { \
   for (uint i1 = 0; i1 < numVertices; i1++) { \
   }; \
@@ -3238,7 +3310,10 @@ numUnknownInts = uint(unknownInts.size()); \
 uint numSubShapes; \
 numSubShapes = uint(subShapes.size()); \
 for (uint i0 = 0; i0 < numSubShapes; i0++) { \
-  subShapes[i0] = DynamicCast<bhkShape>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    subShapes[i0] = DynamicCast<bhkShape>(objects[link_stack.front()]); \
+  else \
+    subShapes[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 for (uint i0 = 0; i0 < 6; i0++) { \
@@ -3334,9 +3409,15 @@ return out.str(); \
 
 #define BHK_MALLEABLE_CONSTRAINT_FIXLINKS \
 AbhkConstraint::FixLinks( objects, link_stack, version ); \
-unknownLink1 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink1 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  unknownLink1 = NULL; \
 link_stack.pop_front(); \
-unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  unknownLink2 = NULL; \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < 3; i0++) { \
 }; \
@@ -3348,21 +3429,27 @@ if ( (type == 2) ) { \
 }; \
 
 #define BHK_MOPP_BV_TREE_SHAPE_MEMBERS \
+Ref<bhkShape > shape; \
+uint material; \
 vector<byte > unknownBytes1; \
 float unknownFloat; \
 vector<byte > unknownBytes2; \
 Vector3 unknownVector; \
 float unknownFloat2; \
 
-#define BHK_MOPP_BV_TREE_SHAPE_INCLUDE "bhkEntity.h" \
+#define BHK_MOPP_BV_TREE_SHAPE_INCLUDE "bhkShape.h" \
 
-#define BHK_MOPP_BV_TREE_SHAPE_PARENT bhkEntity \
+#define BHK_MOPP_BV_TREE_SHAPE_PARENT bhkShape \
 
 #define BHK_MOPP_BV_TREE_SHAPE_CONSTRUCT \
 
 #define BHK_MOPP_BV_TREE_SHAPE_READ \
-bhkEntity::Read( in, link_stack, version ); \
+uint block_num; \
+bhkShape::Read( in, link_stack, version ); \
 uint numUnknownBytes2; \
+NifStream( block_num, in, version ); \
+link_stack.push_back( block_num ); \
+NifStream( material, in, version ); \
 unknownBytes1.resize(8); \
 for (uint i0 = 0; i0 < 8; i0++) { \
   NifStream( unknownBytes1[i0], in, version ); \
@@ -3377,9 +3464,11 @@ NifStream( unknownVector, in, version ); \
 NifStream( unknownFloat2, in, version ); \
 
 #define BHK_MOPP_BV_TREE_SHAPE_WRITE \
-bhkEntity::Write( out, link_map, version ); \
+bhkShape::Write( out, link_map, version ); \
 uint numUnknownBytes2; \
 numUnknownBytes2 = uint(unknownBytes2.size()); \
+NifStream( link_map[StaticCast<NiObject>(shape)], out, version ); \
+NifStream( material, out, version ); \
 for (uint i0 = 0; i0 < 8; i0++) { \
   NifStream( unknownBytes1[i0], out, version ); \
 }; \
@@ -3393,9 +3482,11 @@ NifStream( unknownFloat2, out, version ); \
 
 #define BHK_MOPP_BV_TREE_SHAPE_STRING \
 stringstream out; \
-out << bhkEntity::asString(); \
+out << bhkShape::asString(); \
 uint numUnknownBytes2; \
 numUnknownBytes2 = uint(unknownBytes2.size()); \
+out << "Shape:  " << shape << endl; \
+out << "Material:  " << material << endl; \
 for (uint i0 = 0; i0 < 8; i0++) { \
   out << "  Unknown Bytes 1[" << i0 << "]:  " << unknownBytes1[i0] << endl; \
 }; \
@@ -3409,9 +3500,14 @@ out << "Unknown Float 2:  " << unknownFloat2 << endl; \
 return out.str(); \
 
 #define BHK_MOPP_BV_TREE_SHAPE_FIXLINKS \
-bhkEntity::FixLinks( objects, link_stack, version ); \
+bhkShape::FixLinks( objects, link_stack, version ); \
 uint numUnknownBytes2; \
 numUnknownBytes2 = uint(unknownBytes2.size()); \
+if (link_stack.front() != 0xffffffff) \
+  shape = DynamicCast<bhkShape>(objects[link_stack.front()]); \
+else \
+  shape = NULL; \
+link_stack.pop_front(); \
 for (uint i0 = 0; i0 < 8; i0++) { \
 }; \
 for (uint i0 = 0; i0 < numUnknownBytes2; i0++) { \
@@ -3577,15 +3673,20 @@ for (uint i0 = 0; i0 < 5; i0++) { \
 for (uint i0 = 0; i0 < 3; i0++) { \
 }; \
 for (uint i0 = 0; i0 < numStripsData; i0++) { \
-  stripsData[i0] = DynamicCast<NiTriStripsData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    stripsData[i0] = DynamicCast<NiTriStripsData>(objects[link_stack.front()]); \
+  else \
+    stripsData[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 for (uint i0 = 0; i0 < numUnknownInts3; i0++) { \
 }; \
 
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_MEMBERS \
-vector<vector<uint > > unknownInts; \
+vector<vector<uint > > subparts; \
 vector<float > unknownFloats; \
+float scale; \
+vector<float > unknownFloats2; \
 Ref<hkPackedNiTriStripsData > data; \
 
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_INCLUDE "AbhkShapeCollection.h" \
@@ -3593,70 +3694,89 @@ Ref<hkPackedNiTriStripsData > data; \
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_PARENT AbhkShapeCollection \
 
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_CONSTRUCT \
+ : scale(1.0f) \
 
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_READ \
 uint block_num; \
 AbhkShapeCollection::Read( in, link_stack, version ); \
-ushort numUnknownInts; \
-NifStream( numUnknownInts, in, version ); \
-unknownInts.resize(numUnknownInts); \
-for (uint i0 = 0; i0 < numUnknownInts; i0++) \
-  unknownInts[i0].resize(3); \
-for (uint i0 = 0; i0 < numUnknownInts; i0++) { \
+ushort numSubparts; \
+NifStream( numSubparts, in, version ); \
+subparts.resize(numSubparts); \
+for (uint i0 = 0; i0 < numSubparts; i0++) \
+  subparts[i0].resize(3); \
+for (uint i0 = 0; i0 < numSubparts; i0++) { \
   for (uint i1 = 0; i1 < 3; i1++) { \
-    NifStream( unknownInts[i0][i1], in, version ); \
+    NifStream( subparts[i0][i1], in, version ); \
   }; \
 }; \
-unknownFloats.resize(13); \
-for (uint i0 = 0; i0 < 13; i0++) { \
+unknownFloats.resize(9); \
+for (uint i0 = 0; i0 < 9; i0++) { \
   NifStream( unknownFloats[i0], in, version ); \
 }; \
+NifStream( scale, in, version ); \
+unknownFloats2.resize(3); \
+for (uint i0 = 0; i0 < 3; i0++) { \
+  NifStream( unknownFloats2[i0], in, version ); \
+}; \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_WRITE \
 AbhkShapeCollection::Write( out, link_map, version ); \
-ushort numUnknownInts; \
-numUnknownInts = ushort(unknownInts.size()); \
-NifStream( numUnknownInts, out, version ); \
-for (uint i0 = 0; i0 < numUnknownInts; i0++) { \
+ushort numSubparts; \
+numSubparts = ushort(subparts.size()); \
+NifStream( numSubparts, out, version ); \
+for (uint i0 = 0; i0 < numSubparts; i0++) { \
   for (uint i1 = 0; i1 < 3; i1++) { \
-    NifStream( unknownInts[i0][i1], out, version ); \
+    NifStream( subparts[i0][i1], out, version ); \
   }; \
 }; \
-for (uint i0 = 0; i0 < 13; i0++) { \
+for (uint i0 = 0; i0 < 9; i0++) { \
   NifStream( unknownFloats[i0], out, version ); \
 }; \
+NifStream( scale, out, version ); \
+for (uint i0 = 0; i0 < 3; i0++) { \
+  NifStream( unknownFloats2[i0], out, version ); \
+}; \
 NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_STRING \
 stringstream out; \
 out << AbhkShapeCollection::asString(); \
-ushort numUnknownInts; \
-numUnknownInts = ushort(unknownInts.size()); \
-out << "Num Unknown Ints:  " << numUnknownInts << endl; \
-for (uint i0 = 0; i0 < numUnknownInts; i0++) { \
+ushort numSubparts; \
+numSubparts = ushort(subparts.size()); \
+out << "Num Subparts:  " << numSubparts << endl; \
+for (uint i0 = 0; i0 < numSubparts; i0++) { \
   for (uint i1 = 0; i1 < 3; i1++) { \
-    out << "    Unknown Ints[" << i0 << "][" << i1 << "]:  " << unknownInts[i0][i1] << endl; \
+    out << "    Subparts[" << i0 << "][" << i1 << "]:  " << subparts[i0][i1] << endl; \
   }; \
 }; \
-for (uint i0 = 0; i0 < 13; i0++) { \
+for (uint i0 = 0; i0 < 9; i0++) { \
   out << "  Unknown Floats[" << i0 << "]:  " << unknownFloats[i0] << endl; \
 }; \
+out << "Scale:  " << scale << endl; \
+for (uint i0 = 0; i0 < 3; i0++) { \
+  out << "  Unknown Floats 2[" << i0 << "]:  " << unknownFloats2[i0] << endl; \
+}; \
 out << "Data:  " << data << endl; \
 return out.str(); \
 
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_FIXLINKS \
 AbhkShapeCollection::FixLinks( objects, link_stack, version ); \
-ushort numUnknownInts; \
-numUnknownInts = ushort(unknownInts.size()); \
-for (uint i0 = 0; i0 < numUnknownInts; i0++) { \
+ushort numSubparts; \
+numSubparts = ushort(subparts.size()); \
+for (uint i0 = 0; i0 < numSubparts; i0++) { \
   for (uint i1 = 0; i1 < 3; i1++) { \
   }; \
 }; \
-for (uint i0 = 0; i0 < 13; i0++) { \
+for (uint i0 = 0; i0 < 9; i0++) { \
+}; \
+for (uint i0 = 0; i0 < 3; i0++) { \
 }; \
-data = DynamicCast<hkPackedNiTriStripsData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<hkPackedNiTriStripsData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define BHK_PRISMATIC_CONSTRAINT_MEMBERS \
@@ -3949,7 +4069,10 @@ for (uint i0 = 0; i0 < 6; i0++) { \
 for (uint i0 = 0; i0 < 12; i0++) { \
 }; \
 for (uint i0 = 0; i0 < numConstraints; i0++) { \
-  constraints[i0] = DynamicCast<AbhkConstraint>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    constraints[i0] = DynamicCast<AbhkConstraint>(objects[link_stack.front()]); \
+  else \
+    constraints[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -4286,50 +4409,50 @@ for (uint i0 = 0; i0 < numPositions; i0++) { \
 #define B_S_PARENT_VELOCITY_MODIFIER_MEMBERS \
 float unknownFloat; \
 
-#define B_S_PARENT_VELOCITY_MODIFIER_INCLUDE "APSysModifier.h" \
+#define B_S_PARENT_VELOCITY_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define B_S_PARENT_VELOCITY_MODIFIER_PARENT APSysModifier \
+#define B_S_PARENT_VELOCITY_MODIFIER_PARENT NiPSysModifier \
 
 #define B_S_PARENT_VELOCITY_MODIFIER_CONSTRUCT \
 
 #define B_S_PARENT_VELOCITY_MODIFIER_READ \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( unknownFloat, in, version ); \
 
 #define B_S_PARENT_VELOCITY_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( unknownFloat, out, version ); \
 
 #define B_S_PARENT_VELOCITY_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Unknown Float:  " << unknownFloat << endl; \
 return out.str(); \
 
 #define B_S_PARENT_VELOCITY_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
 
 #define B_S_P_SYS_ARRAY_EMITTER_MEMBERS \
 
-#define B_S_P_SYS_ARRAY_EMITTER_INCLUDE "APSysVolumeEmitter.h" \
+#define B_S_P_SYS_ARRAY_EMITTER_INCLUDE "NiPSysVolumeEmitter.h" \
 
-#define B_S_P_SYS_ARRAY_EMITTER_PARENT APSysVolumeEmitter \
+#define B_S_P_SYS_ARRAY_EMITTER_PARENT NiPSysVolumeEmitter \
 
 #define B_S_P_SYS_ARRAY_EMITTER_CONSTRUCT \
 
 #define B_S_P_SYS_ARRAY_EMITTER_READ \
-APSysVolumeEmitter::Read( in, link_stack, version ); \
+NiPSysVolumeEmitter::Read( in, link_stack, version ); \
 
 #define B_S_P_SYS_ARRAY_EMITTER_WRITE \
-APSysVolumeEmitter::Write( out, link_map, version ); \
+NiPSysVolumeEmitter::Write( out, link_map, version ); \
 
 #define B_S_P_SYS_ARRAY_EMITTER_STRING \
 stringstream out; \
-out << APSysVolumeEmitter::asString(); \
+out << NiPSysVolumeEmitter::asString(); \
 return out.str(); \
 
 #define B_S_P_SYS_ARRAY_EMITTER_FIXLINKS \
-APSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
+NiPSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
 
 #define B_S_X_FLAGS_MEMBERS \
 uint flags; \
@@ -4457,7 +4580,10 @@ return out.str(); \
 #define NI_ALPHA_CONTROLLER_FIXLINKS \
 NiSingleInterpolatorController::FixLinks( objects, link_stack, version ); \
 if ( version <= 0x0A010000 ) { \
-  data = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    data = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+  else \
+    data = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -4522,14 +4648,14 @@ ushort unknownShort; \
 bool hasSizes; \
 vector<float > sizes; \
 
-#define NI_AUTO_NORMAL_PARTICLES_DATA_INCLUDE "TriBasedGeomData.h" \
+#define NI_AUTO_NORMAL_PARTICLES_DATA_INCLUDE "NiTriBasedGeomData.h" \
 
-#define NI_AUTO_NORMAL_PARTICLES_DATA_PARENT TriBasedGeomData \
+#define NI_AUTO_NORMAL_PARTICLES_DATA_PARENT NiTriBasedGeomData \
 
 #define NI_AUTO_NORMAL_PARTICLES_DATA_CONSTRUCT \
 
 #define NI_AUTO_NORMAL_PARTICLES_DATA_READ \
-TriBasedGeomData::Read( in, link_stack, version ); \
+NiTriBasedGeomData::Read( in, link_stack, version ); \
 if ( version <= 0x04000002 ) { \
   NifStream( numParticles, in, version ); \
 }; \
@@ -4551,7 +4677,7 @@ if ( (hasSizes != 0) ) { \
 }; \
 
 #define NI_AUTO_NORMAL_PARTICLES_DATA_WRITE \
-TriBasedGeomData::Write( out, link_map, version ); \
+NiTriBasedGeomData::Write( out, link_map, version ); \
 if ( version <= 0x04000002 ) { \
   NifStream( numParticles, out, version ); \
 }; \
@@ -4573,7 +4699,7 @@ if ( (hasSizes != 0) ) { \
 
 #define NI_AUTO_NORMAL_PARTICLES_DATA_STRING \
 stringstream out; \
-out << TriBasedGeomData::asString(); \
+out << NiTriBasedGeomData::asString(); \
 out << "Num Particles:  " << numParticles << endl; \
 out << "Size:  " << size << endl; \
 out << "Num Active:  " << numActive << endl; \
@@ -4587,7 +4713,7 @@ if ( (hasSizes != 0) ) { \
 return out.str(); \
 
 #define NI_AUTO_NORMAL_PARTICLES_DATA_FIXLINKS \
-TriBasedGeomData::FixLinks( objects, link_stack, version ); \
+NiTriBasedGeomData::FixLinks( objects, link_stack, version ); \
 if ( version <= 0x04000002 ) { \
 }; \
 if ( version <= 0x0A000100 ) { \
@@ -4658,102 +4784,102 @@ for (uint i0 = 0; i0 < binaryData_size; i0++) { \
 #define NI_BLEND_BOOL_INTERPOLATOR_MEMBERS \
 byte boolValue; \
 
-#define NI_BLEND_BOOL_INTERPOLATOR_INCLUDE "ABlendInterpolator.h" \
+#define NI_BLEND_BOOL_INTERPOLATOR_INCLUDE "NiBlendInterpolator.h" \
 
-#define NI_BLEND_BOOL_INTERPOLATOR_PARENT ABlendInterpolator \
+#define NI_BLEND_BOOL_INTERPOLATOR_PARENT NiBlendInterpolator \
 
 #define NI_BLEND_BOOL_INTERPOLATOR_CONSTRUCT \
 
 #define NI_BLEND_BOOL_INTERPOLATOR_READ \
-ABlendInterpolator::Read( in, link_stack, version ); \
+NiBlendInterpolator::Read( in, link_stack, version ); \
 NifStream( boolValue, in, version ); \
 
 #define NI_BLEND_BOOL_INTERPOLATOR_WRITE \
-ABlendInterpolator::Write( out, link_map, version ); \
+NiBlendInterpolator::Write( out, link_map, version ); \
 NifStream( boolValue, out, version ); \
 
 #define NI_BLEND_BOOL_INTERPOLATOR_STRING \
 stringstream out; \
-out << ABlendInterpolator::asString(); \
+out << NiBlendInterpolator::asString(); \
 out << "Bool Value:  " << boolValue << endl; \
 return out.str(); \
 
 #define NI_BLEND_BOOL_INTERPOLATOR_FIXLINKS \
-ABlendInterpolator::FixLinks( objects, link_stack, version ); \
+NiBlendInterpolator::FixLinks( objects, link_stack, version ); \
 
 #define NI_BLEND_FLOAT_INTERPOLATOR_MEMBERS \
 float floatValue; \
 
-#define NI_BLEND_FLOAT_INTERPOLATOR_INCLUDE "ABlendInterpolator.h" \
+#define NI_BLEND_FLOAT_INTERPOLATOR_INCLUDE "NiBlendInterpolator.h" \
 
-#define NI_BLEND_FLOAT_INTERPOLATOR_PARENT ABlendInterpolator \
+#define NI_BLEND_FLOAT_INTERPOLATOR_PARENT NiBlendInterpolator \
 
 #define NI_BLEND_FLOAT_INTERPOLATOR_CONSTRUCT \
 
 #define NI_BLEND_FLOAT_INTERPOLATOR_READ \
-ABlendInterpolator::Read( in, link_stack, version ); \
+NiBlendInterpolator::Read( in, link_stack, version ); \
 NifStream( floatValue, in, version ); \
 
 #define NI_BLEND_FLOAT_INTERPOLATOR_WRITE \
-ABlendInterpolator::Write( out, link_map, version ); \
+NiBlendInterpolator::Write( out, link_map, version ); \
 NifStream( floatValue, out, version ); \
 
 #define NI_BLEND_FLOAT_INTERPOLATOR_STRING \
 stringstream out; \
-out << ABlendInterpolator::asString(); \
+out << NiBlendInterpolator::asString(); \
 out << "Float Value:  " << floatValue << endl; \
 return out.str(); \
 
 #define NI_BLEND_FLOAT_INTERPOLATOR_FIXLINKS \
-ABlendInterpolator::FixLinks( objects, link_stack, version ); \
+NiBlendInterpolator::FixLinks( objects, link_stack, version ); \
 
 #define NI_BLEND_POINT3_INTERPOLATOR_MEMBERS \
-Vector3 point3Value; \
+Vector3 pointValue; \
 
-#define NI_BLEND_POINT3_INTERPOLATOR_INCLUDE "ABlendInterpolator.h" \
+#define NI_BLEND_POINT3_INTERPOLATOR_INCLUDE "NiBlendInterpolator.h" \
 
-#define NI_BLEND_POINT3_INTERPOLATOR_PARENT ABlendInterpolator \
+#define NI_BLEND_POINT3_INTERPOLATOR_PARENT NiBlendInterpolator \
 
 #define NI_BLEND_POINT3_INTERPOLATOR_CONSTRUCT \
 
 #define NI_BLEND_POINT3_INTERPOLATOR_READ \
-ABlendInterpolator::Read( in, link_stack, version ); \
-NifStream( point3Value, in, version ); \
+NiBlendInterpolator::Read( in, link_stack, version ); \
+NifStream( pointValue, in, version ); \
 
 #define NI_BLEND_POINT3_INTERPOLATOR_WRITE \
-ABlendInterpolator::Write( out, link_map, version ); \
-NifStream( point3Value, out, version ); \
+NiBlendInterpolator::Write( out, link_map, version ); \
+NifStream( pointValue, out, version ); \
 
 #define NI_BLEND_POINT3_INTERPOLATOR_STRING \
 stringstream out; \
-out << ABlendInterpolator::asString(); \
-out << "Point3 Value:  " << point3Value << endl; \
+out << NiBlendInterpolator::asString(); \
+out << "Point Value:  " << pointValue << endl; \
 return out.str(); \
 
 #define NI_BLEND_POINT3_INTERPOLATOR_FIXLINKS \
-ABlendInterpolator::FixLinks( objects, link_stack, version ); \
+NiBlendInterpolator::FixLinks( objects, link_stack, version ); \
 
 #define NI_BLEND_TRANSFORM_INTERPOLATOR_MEMBERS \
 
-#define NI_BLEND_TRANSFORM_INTERPOLATOR_INCLUDE "ABlendInterpolator.h" \
+#define NI_BLEND_TRANSFORM_INTERPOLATOR_INCLUDE "NiBlendInterpolator.h" \
 
-#define NI_BLEND_TRANSFORM_INTERPOLATOR_PARENT ABlendInterpolator \
+#define NI_BLEND_TRANSFORM_INTERPOLATOR_PARENT NiBlendInterpolator \
 
 #define NI_BLEND_TRANSFORM_INTERPOLATOR_CONSTRUCT \
 
 #define NI_BLEND_TRANSFORM_INTERPOLATOR_READ \
-ABlendInterpolator::Read( in, link_stack, version ); \
+NiBlendInterpolator::Read( in, link_stack, version ); \
 
 #define NI_BLEND_TRANSFORM_INTERPOLATOR_WRITE \
-ABlendInterpolator::Write( out, link_map, version ); \
+NiBlendInterpolator::Write( out, link_map, version ); \
 
 #define NI_BLEND_TRANSFORM_INTERPOLATOR_STRING \
 stringstream out; \
-out << ABlendInterpolator::asString(); \
+out << NiBlendInterpolator::asString(); \
 return out.str(); \
 
 #define NI_BLEND_TRANSFORM_INTERPOLATOR_FIXLINKS \
-ABlendInterpolator::FixLinks( objects, link_stack, version ); \
+NiBlendInterpolator::FixLinks( objects, link_stack, version ); \
 
 #define NI_BONE_L_O_D_CONTROLLER_MEMBERS \
 vector<SkinShapeGroup > shapeGroups1; \
@@ -4844,14 +4970,23 @@ for (uint i0 = 0; i0 < numShapeGroups; i0++) { \
   uint shapeGroups1_numLinkPairs; \
   shapeGroups1_numLinkPairs = uint(shapeGroups1[i0].linkPairs.size()); \
   for (uint i1 = 0; i1 < shapeGroups1_numLinkPairs; i1++) { \
-    shapeGroups1[i0].linkPairs[i1].shape = DynamicCast<NiTriShape>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      shapeGroups1[i0].linkPairs[i1].shape = DynamicCast<NiTriShape>(objects[link_stack.front()]); \
+    else \
+      shapeGroups1[i0].linkPairs[i1].shape = NULL; \
     link_stack.pop_front(); \
-    shapeGroups1[i0].linkPairs[i1].skinInstance = DynamicCast<NiSkinInstance>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      shapeGroups1[i0].linkPairs[i1].skinInstance = DynamicCast<NiSkinInstance>(objects[link_stack.front()]); \
+    else \
+      shapeGroups1[i0].linkPairs[i1].skinInstance = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
 for (uint i0 = 0; i0 < numShapeGroups2; i0++) { \
-  shapeGroups2[i0] = DynamicCast<NiTriShape>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    shapeGroups2[i0] = DynamicCast<NiTriShape>(objects[link_stack.front()]); \
+  else \
+    shapeGroups2[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -4934,68 +5069,74 @@ NiExtraData::FixLinks( objects, link_stack, version ); \
 bool boolValue; \
 Ref<NiBoolData > data; \
 
-#define NI_BOOL_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+#define NI_BOOL_INTERPOLATOR_INCLUDE "NiInterpolator.h" \
 
-#define NI_BOOL_INTERPOLATOR_PARENT AInterpolator \
+#define NI_BOOL_INTERPOLATOR_PARENT NiInterpolator \
 
 #define NI_BOOL_INTERPOLATOR_CONSTRUCT \
 
 #define NI_BOOL_INTERPOLATOR_READ \
 uint block_num; \
-AInterpolator::Read( in, link_stack, version ); \
+NiInterpolator::Read( in, link_stack, version ); \
 NifStream( boolValue, in, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_BOOL_INTERPOLATOR_WRITE \
-AInterpolator::Write( out, link_map, version ); \
+NiInterpolator::Write( out, link_map, version ); \
 NifStream( boolValue, out, version ); \
 NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_BOOL_INTERPOLATOR_STRING \
 stringstream out; \
-out << AInterpolator::asString(); \
+out << NiInterpolator::asString(); \
 out << "Bool Value:  " << boolValue << endl; \
 out << "Data:  " << data << endl; \
 return out.str(); \
 
 #define NI_BOOL_INTERPOLATOR_FIXLINKS \
-AInterpolator::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiBoolData>(objects[link_stack.front()]); \
+NiInterpolator::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiBoolData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define NI_BOOL_TIMELINE_INTERPOLATOR_MEMBERS \
 byte boolValue; \
 Ref<NiBoolData > data; \
 
-#define NI_BOOL_TIMELINE_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+#define NI_BOOL_TIMELINE_INTERPOLATOR_INCLUDE "NiInterpolator.h" \
 
-#define NI_BOOL_TIMELINE_INTERPOLATOR_PARENT AInterpolator \
+#define NI_BOOL_TIMELINE_INTERPOLATOR_PARENT NiInterpolator \
 
 #define NI_BOOL_TIMELINE_INTERPOLATOR_CONSTRUCT \
 
 #define NI_BOOL_TIMELINE_INTERPOLATOR_READ \
 uint block_num; \
-AInterpolator::Read( in, link_stack, version ); \
+NiInterpolator::Read( in, link_stack, version ); \
 NifStream( boolValue, in, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_BOOL_TIMELINE_INTERPOLATOR_WRITE \
-AInterpolator::Write( out, link_map, version ); \
+NiInterpolator::Write( out, link_map, version ); \
 NifStream( boolValue, out, version ); \
 NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_BOOL_TIMELINE_INTERPOLATOR_STRING \
 stringstream out; \
-out << AInterpolator::asString(); \
+out << NiInterpolator::asString(); \
 out << "Bool Value:  " << boolValue << endl; \
 out << "Data:  " << data << endl; \
 return out.str(); \
 
 #define NI_BOOL_TIMELINE_INTERPOLATOR_FIXLINKS \
-AInterpolator::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiBoolData>(objects[link_stack.front()]); \
+NiInterpolator::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiBoolData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define NI_B_S_BONE_L_O_D_CONTROLLER_MEMBERS \
@@ -5049,35 +5190,35 @@ NiObject::FixLinks( objects, link_stack, version ); \
 #define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_MEMBERS \
 vector<float > unknownFloats; \
 
-#define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_INCLUDE "ABSplineCompInterpolator.h" \
+#define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_INCLUDE "NiBSplineInterpolator.h" \
 
-#define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_PARENT ABSplineCompInterpolator \
+#define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_PARENT NiBSplineInterpolator \
 
 #define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_CONSTRUCT \
 
 #define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_READ \
-ABSplineCompInterpolator::Read( in, link_stack, version ); \
+NiBSplineInterpolator::Read( in, link_stack, version ); \
 unknownFloats.resize(6); \
 for (uint i0 = 0; i0 < 6; i0++) { \
   NifStream( unknownFloats[i0], in, version ); \
 }; \
 
 #define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_WRITE \
-ABSplineCompInterpolator::Write( out, link_map, version ); \
+NiBSplineInterpolator::Write( out, link_map, version ); \
 for (uint i0 = 0; i0 < 6; i0++) { \
   NifStream( unknownFloats[i0], out, version ); \
 }; \
 
 #define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_STRING \
 stringstream out; \
-out << ABSplineCompInterpolator::asString(); \
+out << NiBSplineInterpolator::asString(); \
 for (uint i0 = 0; i0 < 6; i0++) { \
   out << "  Unknown Floats[" << i0 << "]:  " << unknownFloats[i0] << endl; \
 }; \
 return out.str(); \
 
 #define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_FIXLINKS \
-ABSplineCompInterpolator::FixLinks( objects, link_stack, version ); \
+NiBSplineInterpolator::FixLinks( objects, link_stack, version ); \
 for (uint i0 = 0; i0 < 6; i0++) { \
 }; \
 
@@ -5086,15 +5227,15 @@ Ref<NiBSplineData > data; \
 Ref<NiObject > unknownLink; \
 vector<float > unknownFloats; \
 
-#define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_INCLUDE "ABSplineCompInterpolator.h" \
+#define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_INCLUDE "NiBSplineInterpolator.h" \
 
-#define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENT ABSplineCompInterpolator \
+#define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENT NiBSplineInterpolator \
 
 #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_CONSTRUCT \
 
 #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_READ \
 uint block_num; \
-ABSplineCompInterpolator::Read( in, link_stack, version ); \
+NiBSplineInterpolator::Read( in, link_stack, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 NifStream( block_num, in, version ); \
@@ -5105,7 +5246,7 @@ for (uint i0 = 0; i0 < 6; i0++) { \
 }; \
 
 #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_WRITE \
-ABSplineCompInterpolator::Write( out, link_map, version ); \
+NiBSplineInterpolator::Write( out, link_map, version ); \
 NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 NifStream( link_map[StaticCast<NiObject>(unknownLink)], out, version ); \
 for (uint i0 = 0; i0 < 6; i0++) { \
@@ -5114,7 +5255,7 @@ for (uint i0 = 0; i0 < 6; i0++) { \
 
 #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_STRING \
 stringstream out; \
-out << ABSplineCompInterpolator::asString(); \
+out << NiBSplineInterpolator::asString(); \
 out << "Data:  " << data << endl; \
 out << "Unknown Link:  " << unknownLink << endl; \
 for (uint i0 = 0; i0 < 6; i0++) { \
@@ -5123,10 +5264,16 @@ for (uint i0 = 0; i0 < 6; i0++) { \
 return out.str(); \
 
 #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_FIXLINKS \
-ABSplineCompInterpolator::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiBSplineData>(objects[link_stack.front()]); \
+NiBSplineInterpolator::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiBSplineData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
-unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  unknownLink = NULL; \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < 6; i0++) { \
 }; \
@@ -5136,15 +5283,15 @@ Ref<NiBSplineData > data; \
 Ref<NiBSplineBasisData > basisData; \
 vector<float > unknown4; \
 
-#define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_INCLUDE "ABSplineCompInterpolator.h" \
+#define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_INCLUDE "NiBSplineInterpolator.h" \
 
-#define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_PARENT ABSplineCompInterpolator \
+#define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_PARENT NiBSplineInterpolator \
 
 #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_CONSTRUCT \
 
 #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_READ \
 uint block_num; \
-ABSplineCompInterpolator::Read( in, link_stack, version ); \
+NiBSplineInterpolator::Read( in, link_stack, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 NifStream( block_num, in, version ); \
@@ -5155,7 +5302,7 @@ for (uint i0 = 0; i0 < 17; i0++) { \
 }; \
 
 #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_WRITE \
-ABSplineCompInterpolator::Write( out, link_map, version ); \
+NiBSplineInterpolator::Write( out, link_map, version ); \
 NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 NifStream( link_map[StaticCast<NiObject>(basisData)], out, version ); \
 for (uint i0 = 0; i0 < 17; i0++) { \
@@ -5164,7 +5311,7 @@ for (uint i0 = 0; i0 < 17; i0++) { \
 
 #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_STRING \
 stringstream out; \
-out << ABSplineCompInterpolator::asString(); \
+out << NiBSplineInterpolator::asString(); \
 out << "Data:  " << data << endl; \
 out << "Basis Data:  " << basisData << endl; \
 for (uint i0 = 0; i0 < 17; i0++) { \
@@ -5173,10 +5320,16 @@ for (uint i0 = 0; i0 < 17; i0++) { \
 return out.str(); \
 
 #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_FIXLINKS \
-ABSplineCompInterpolator::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiBSplineData>(objects[link_stack.front()]); \
+NiBSplineInterpolator::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiBSplineData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
-basisData = DynamicCast<NiBSplineBasisData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  basisData = DynamicCast<NiBSplineBasisData>(objects[link_stack.front()]); \
+else \
+  basisData = NULL; \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < 17; i0++) { \
 }; \
@@ -5343,7 +5496,10 @@ if ( version >= 0x0A010000 ) { \
 }; \
 if ( version >= 0x0A010000 ) { \
 }; \
-unknownLink_ = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink_ = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  unknownLink_ = NULL; \
 link_stack.pop_front(); \
 if ( version >= 0x04020100 ) { \
 }; \
@@ -5435,7 +5591,10 @@ return out.str(); \
 
 #define NI_COLLISION_DATA_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-targetNode = DynamicCast<NiNode>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  targetNode = DynamicCast<NiNode>(objects[link_stack.front()]); \
+else \
+  targetNode = NULL; \
 link_stack.pop_front(); \
 if ( (collisionType == 0) ) { \
 }; \
@@ -5577,10 +5736,16 @@ NiTimeController::FixLinks( objects, link_stack, version ); \
 uint numControllerSequences; \
 numControllerSequences = uint(controllerSequences.size()); \
 for (uint i0 = 0; i0 < numControllerSequences; i0++) { \
-  controllerSequences[i0] = DynamicCast<NiControllerSequence>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    controllerSequences[i0] = DynamicCast<NiControllerSequence>(objects[link_stack.front()]); \
+  else \
+    controllerSequences[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
-objectPalette = DynamicCast<NiDefaultAVObjectPalette>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  objectPalette = DynamicCast<NiDefaultAVObjectPalette>(objects[link_stack.front()]); \
+else \
+  objectPalette = NULL; \
 link_stack.pop_front(); \
 
 #define NI_CONTROLLER_SEQUENCE_MEMBERS \
@@ -5959,20 +6124,32 @@ numControlledBlocks = uint(controlledBlocks.size()); \
 if ( version <= 0x0A010000 ) { \
   if ( version <= 0x0A010000 ) { \
   }; \
-  textKeys.interpolator = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    textKeys.interpolator = DynamicCast<NiInterpolator>(objects[link_stack.front()]); \
+  else \
+    textKeys.interpolator = NULL; \
   link_stack.pop_front(); \
   if ( version >= 0x0A01006A ) { \
-    textKeys.unknownLink1 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      textKeys.unknownLink1 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    else \
+      textKeys.unknownLink1 = NULL; \
     link_stack.pop_front(); \
   }; \
   if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
-    textKeys.unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      textKeys.unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    else \
+      textKeys.unknownLink2 = NULL; \
     link_stack.pop_front(); \
   }; \
   if ( version >= 0x0A01006A ) { \
   }; \
   if ( version >= 0x0A020000 ) { \
-    textKeys.stringPalette = DynamicCast<NiStringPalette>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      textKeys.stringPalette = DynamicCast<NiStringPalette>(objects[link_stack.front()]); \
+    else \
+      textKeys.stringPalette = NULL; \
     link_stack.pop_front(); \
   }; \
   if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
@@ -6001,20 +6178,32 @@ if ( version >= 0x0A01006A ) { \
 for (uint i0 = 0; i0 < numControlledBlocks; i0++) { \
   if ( version <= 0x0A010000 ) { \
   }; \
-  controlledBlocks[i0].interpolator = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    controlledBlocks[i0].interpolator = DynamicCast<NiInterpolator>(objects[link_stack.front()]); \
+  else \
+    controlledBlocks[i0].interpolator = NULL; \
   link_stack.pop_front(); \
   if ( version >= 0x0A01006A ) { \
-    controlledBlocks[i0].unknownLink1 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      controlledBlocks[i0].unknownLink1 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    else \
+      controlledBlocks[i0].unknownLink1 = NULL; \
     link_stack.pop_front(); \
   }; \
   if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
-    controlledBlocks[i0].unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      controlledBlocks[i0].unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    else \
+      controlledBlocks[i0].unknownLink2 = NULL; \
     link_stack.pop_front(); \
   }; \
   if ( version >= 0x0A01006A ) { \
   }; \
   if ( version >= 0x0A020000 ) { \
-    controlledBlocks[i0].stringPalette = DynamicCast<NiStringPalette>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      controlledBlocks[i0].stringPalette = DynamicCast<NiStringPalette>(objects[link_stack.front()]); \
+    else \
+      controlledBlocks[i0].stringPalette = NULL; \
     link_stack.pop_front(); \
   }; \
   if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
@@ -6039,7 +6228,10 @@ for (uint i0 = 0; i0 < numControlledBlocks; i0++) { \
   }; \
 }; \
 if ( version >= 0x0A01006A ) { \
-  textKeys2 = DynamicCast<NiTextKeyExtraData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    textKeys2 = DynamicCast<NiTextKeyExtraData>(objects[link_stack.front()]); \
+  else \
+    textKeys2 = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
@@ -6051,17 +6243,23 @@ if ( ( version >= 0x0A020000 ) && ( version <= 0x0A020000 ) ) { \
 if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
 }; \
 if ( version >= 0x0A01006A ) { \
-  manager = DynamicCast<NiControllerManager>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    manager = DynamicCast<NiControllerManager>(objects[link_stack.front()]); \
+  else \
+    manager = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x0A020000 ) { \
-  stringPalette = DynamicCast<NiStringPalette>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    stringPalette = DynamicCast<NiStringPalette>(objects[link_stack.front()]); \
+  else \
+    stringPalette = NULL; \
   link_stack.pop_front(); \
 }; \
 
 #define NI_DEFAULT_A_V_OBJECT_PALETTE_MEMBERS \
 uint unknownInt; \
-vector<AVObject > theObjects; \
+vector<AVObject > objs; \
 
 #define NI_DEFAULT_A_V_OBJECT_PALETTE_INCLUDE "NiObject.h" \
 
@@ -6072,46 +6270,49 @@ vector<AVObject > theObjects; \
 #define NI_DEFAULT_A_V_OBJECT_PALETTE_READ \
 uint block_num; \
 NiObject::Read( in, link_stack, version ); \
-uint numObjects; \
+uint numObjs; \
 NifStream( unknownInt, in, version ); \
-NifStream( numObjects, in, version ); \
-theObjects.resize(numObjects); \
-for (uint i0 = 0; i0 < numObjects; i0++) { \
-  NifStream( theObjects[i0].name, in, version ); \
+NifStream( numObjs, in, version ); \
+objs.resize(numObjs); \
+for (uint i0 = 0; i0 < numObjs; i0++) { \
+  NifStream( objs[i0].name, in, version ); \
   NifStream( block_num, in, version ); \
   link_stack.push_back( block_num ); \
 }; \
 
 #define NI_DEFAULT_A_V_OBJECT_PALETTE_WRITE \
 NiObject::Write( out, link_map, version ); \
-uint numObjects; \
-numObjects = uint(theObjects.size()); \
+uint numObjs; \
+numObjs = uint(objs.size()); \
 NifStream( unknownInt, out, version ); \
-NifStream( numObjects, out, version ); \
-for (uint i0 = 0; i0 < numObjects; i0++) { \
-  NifStream( theObjects[i0].name, out, version ); \
-  NifStream( link_map[StaticCast<NiObject>(theObjects[i0].object)], out, version ); \
+NifStream( numObjs, out, version ); \
+for (uint i0 = 0; i0 < numObjs; i0++) { \
+  NifStream( objs[i0].name, out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(objs[i0].object)], out, version ); \
 }; \
 
 #define NI_DEFAULT_A_V_OBJECT_PALETTE_STRING \
 stringstream out; \
 out << NiObject::asString(); \
-uint numObjects; \
-numObjects = uint(theObjects.size()); \
+uint numObjs; \
+numObjs = uint(objs.size()); \
 out << "Unknown Int:  " << unknownInt << endl; \
-out << "Num Objects:  " << numObjects << endl; \
-for (uint i0 = 0; i0 < numObjects; i0++) { \
-  out << "  Name:  " << theObjects[i0].name << endl; \
-  out << "  Object:  " << theObjects[i0].object << endl; \
+out << "Num Objs:  " << numObjs << endl; \
+for (uint i0 = 0; i0 < numObjs; i0++) { \
+  out << "  Name:  " << objs[i0].name << endl; \
+  out << "  Object:  " << objs[i0].object << endl; \
 }; \
 return out.str(); \
 
 #define NI_DEFAULT_A_V_OBJECT_PALETTE_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-uint numObjects; \
-numObjects = uint(theObjects.size()); \
-for (uint i0 = 0; i0 < numObjects; i0++) { \
-  theObjects[i0].object = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
+uint numObjs; \
+numObjs = uint(objs.size()); \
+for (uint i0 = 0; i0 < numObjs; i0++) { \
+  if (link_stack.front() != 0xffffffff) \
+    objs[i0].object = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
+  else \
+    objs[i0].object = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -6226,7 +6427,10 @@ numSources = uint(sources.size()); \
 if ( version <= 0x0A010000 ) { \
 }; \
 for (uint i0 = 0; i0 < numSources; i0++) { \
-  sources[i0] = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    sources[i0] = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  else \
+    sources[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -6341,7 +6545,10 @@ return out.str(); \
 #define NI_FLOAT_EXTRA_DATA_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x14000004 ) { \
-  unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+  else \
+    unknownLink = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -6349,34 +6556,37 @@ if ( version >= 0x14000004 ) { \
 float floatValue; \
 Ref<NiFloatData > data; \
 
-#define NI_FLOAT_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+#define NI_FLOAT_INTERPOLATOR_INCLUDE "NiInterpolator.h" \
 
-#define NI_FLOAT_INTERPOLATOR_PARENT AInterpolator \
+#define NI_FLOAT_INTERPOLATOR_PARENT NiInterpolator \
 
 #define NI_FLOAT_INTERPOLATOR_CONSTRUCT \
 
 #define NI_FLOAT_INTERPOLATOR_READ \
 uint block_num; \
-AInterpolator::Read( in, link_stack, version ); \
+NiInterpolator::Read( in, link_stack, version ); \
 NifStream( floatValue, in, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_FLOAT_INTERPOLATOR_WRITE \
-AInterpolator::Write( out, link_map, version ); \
+NiInterpolator::Write( out, link_map, version ); \
 NifStream( floatValue, out, version ); \
 NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_FLOAT_INTERPOLATOR_STRING \
 stringstream out; \
-out << AInterpolator::asString(); \
+out << NiInterpolator::asString(); \
 out << "Float Value:  " << floatValue << endl; \
 out << "Data:  " << data << endl; \
 return out.str(); \
 
 #define NI_FLOAT_INTERPOLATOR_FIXLINKS \
-AInterpolator::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+NiInterpolator::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define NI_FLOATS_EXTRA_DATA_MEMBERS \
@@ -6463,7 +6673,7 @@ ushort unknown; \
 byte unknown2; \
 Ref<NiMorphData > data; \
 byte unknownByte; \
-vector<Ref<AInterpolator > > interpolators; \
+vector<Ref<NiInterpolator > > interpolators; \
 vector<uint > unknownInts; \
 
 #define NI_GEOM_MORPHER_CONTROLLER_INCLUDE "NiTimeController.h" \
@@ -6560,11 +6770,17 @@ if ( version >= 0x0A010000 ) { \
 }; \
 if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
 }; \
-data = DynamicCast<NiMorphData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiMorphData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 if ( version >= 0x0A01006A ) { \
   for (uint i1 = 0; i1 < numInterpolators; i1++) { \
-    interpolators[i1] = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      interpolators[i1] = DynamicCast<NiInterpolator>(objects[link_stack.front()]); \
+    else \
+      interpolators[i1] = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
@@ -6713,7 +6929,10 @@ return out.str(); \
 
 #define NI_KEYFRAME_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiKeyframeData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiKeyframeData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define B_S_KEYFRAME_CONTROLLER_MEMBERS \
@@ -6743,7 +6962,10 @@ return out.str(); \
 
 #define B_S_KEYFRAME_CONTROLLER_FIXLINKS \
 NiKeyframeController::FixLinks( objects, link_stack, version ); \
-data2 = DynamicCast<NiKeyframeData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  data2 = DynamicCast<NiKeyframeData>(objects[link_stack.front()]); \
+else \
+  data2 = NULL; \
 link_stack.pop_front(); \
 
 #define NI_KEYFRAME_DATA_MEMBERS \
@@ -6973,16 +7195,22 @@ NiTimeController::FixLinks( objects, link_stack, version ); \
 if ( ( version >= 0x0A010000 ) && ( version <= 0x0A010000 ) ) { \
 }; \
 if ( version <= 0x0A010000 ) { \
-  data = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    data = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+  else \
+    data = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x0A020000 ) { \
-  interpolator = DynamicCast<NiPoint3Interpolator>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    interpolator = DynamicCast<NiPoint3Interpolator>(objects[link_stack.front()]); \
+  else \
+    interpolator = NULL; \
   link_stack.pop_front(); \
 }; \
 
 #define NI_LIGHT_DIMMER_CONTROLLER_MEMBERS \
-Ref<AInterpolator > unknownLink; \
+Ref<NiInterpolator > unknownLink; \
 
 #define NI_LIGHT_DIMMER_CONTROLLER_INCLUDE "NiTimeController.h" \
 
@@ -7008,7 +7236,10 @@ return out.str(); \
 
 #define NI_LIGHT_DIMMER_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
-unknownLink = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink = DynamicCast<NiInterpolator>(objects[link_stack.front()]); \
+else \
+  unknownLink = NULL; \
 link_stack.pop_front(); \
 
 #define NI_LOOK_AT_CONTROLLER_MEMBERS \
@@ -7048,7 +7279,10 @@ return out.str(); \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x0A010000 ) { \
 }; \
-lookAtNode = DynamicCast<NiNode>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  lookAtNode = DynamicCast<NiNode>(objects[link_stack.front()]); \
+else \
+  lookAtNode = NULL; \
 link_stack.pop_front(); \
 
 #define NI_LOOK_AT_INTERPOLATOR_MEMBERS \
@@ -7062,15 +7296,15 @@ Ref<NiPoint3Interpolator > unknownLink1; \
 Ref<NiFloatInterpolator > unknownLink2; \
 Ref<NiFloatInterpolator > unknownLink3; \
 
-#define NI_LOOK_AT_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+#define NI_LOOK_AT_INTERPOLATOR_INCLUDE "NiInterpolator.h" \
 
-#define NI_LOOK_AT_INTERPOLATOR_PARENT AInterpolator \
+#define NI_LOOK_AT_INTERPOLATOR_PARENT NiInterpolator \
 
 #define NI_LOOK_AT_INTERPOLATOR_CONSTRUCT \
 
 #define NI_LOOK_AT_INTERPOLATOR_READ \
 uint block_num; \
-AInterpolator::Read( in, link_stack, version ); \
+NiInterpolator::Read( in, link_stack, version ); \
 NifStream( unknownShort, in, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
@@ -7086,7 +7320,7 @@ NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_LOOK_AT_INTERPOLATOR_WRITE \
-AInterpolator::Write( out, link_map, version ); \
+NiInterpolator::Write( out, link_map, version ); \
 NifStream( unknownShort, out, version ); \
 NifStream( link_map[StaticCast<NiObject>(lookAt)], out, version ); \
 NifStream( unknownFloat, out, version ); \
@@ -7099,7 +7333,7 @@ NifStream( link_map[StaticCast<NiObject>(unknownLink3)], out, version ); \
 
 #define NI_LOOK_AT_INTERPOLATOR_STRING \
 stringstream out; \
-out << AInterpolator::asString(); \
+out << NiInterpolator::asString(); \
 out << "Unknown Short:  " << unknownShort << endl; \
 out << "Look At:  " << lookAt << endl; \
 out << "Unknown Float:  " << unknownFloat << endl; \
@@ -7112,19 +7346,31 @@ out << "Unknown Link 3:  " << unknownLink3 << endl; \
 return out.str(); \
 
 #define NI_LOOK_AT_INTERPOLATOR_FIXLINKS \
-AInterpolator::FixLinks( objects, link_stack, version ); \
-lookAt = DynamicCast<NiNode>(objects[link_stack.front()]); \
+NiInterpolator::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  lookAt = DynamicCast<NiNode>(objects[link_stack.front()]); \
+else \
+  lookAt = NULL; \
 link_stack.pop_front(); \
-unknownLink1 = DynamicCast<NiPoint3Interpolator>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink1 = DynamicCast<NiPoint3Interpolator>(objects[link_stack.front()]); \
+else \
+  unknownLink1 = NULL; \
 link_stack.pop_front(); \
-unknownLink2 = DynamicCast<NiFloatInterpolator>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink2 = DynamicCast<NiFloatInterpolator>(objects[link_stack.front()]); \
+else \
+  unknownLink2 = NULL; \
 link_stack.pop_front(); \
-unknownLink3 = DynamicCast<NiFloatInterpolator>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink3 = DynamicCast<NiFloatInterpolator>(objects[link_stack.front()]); \
+else \
+  unknownLink3 = NULL; \
 link_stack.pop_front(); \
 
 #define NI_MATERIAL_COLOR_CONTROLLER_MEMBERS \
 ushort unknown; \
-Ref<NiColorData > data; \
+Ref<NiPosData > data; \
 
 #define NI_MATERIAL_COLOR_CONTROLLER_INCLUDE "NiSingleInterpolatorController.h" \
 
@@ -7164,7 +7410,10 @@ NiSingleInterpolatorController::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x0A010000 ) { \
 }; \
 if ( version <= 0x0A010000 ) { \
-  data = DynamicCast<NiColorData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    data = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+  else \
+    data = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -7414,19 +7663,28 @@ if ( version >= 0x14000005 ) { \
   }; \
 }; \
 if ( version <= 0x14000004 ) { \
-  modifier = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    modifier = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
+  else \
+    modifier = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( ( version >= 0x0A020000 ) && ( version <= 0x14000004 ) ) { \
   for (uint i1 = 0; i1 < numUnknownLinks; i1++) { \
-    unknownLinks[i1] = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      unknownLinks[i1] = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
+    else \
+      unknownLinks[i1] = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
 if ( version >= 0x14000005 ) { \
 }; \
 if ( version >= 0x0A020000 ) { \
-  unknownLink2 = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    unknownLink2 = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  else \
+    unknownLink2 = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -7586,7 +7844,10 @@ NiTimeController::FixLinks( objects, link_stack, version ); \
 ushort numExtraTargets; \
 numExtraTargets = ushort(extraTargets.size()); \
 for (uint i0 = 0; i0 < numExtraTargets; i0++) { \
-  extraTargets[i0] = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    extraTargets[i0] = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  else \
+    extraTargets[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -7657,11 +7918,17 @@ numEffects = uint(effects.size()); \
 uint numChildren; \
 numChildren = uint(children.size()); \
 for (uint i0 = 0; i0 < numChildren; i0++) { \
-  children[i0] = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    children[i0] = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
+  else \
+    children[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 for (uint i0 = 0; i0 < numEffects; i0++) { \
-  effects[i0] = DynamicCast<NiDynamicEffect>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    effects[i0] = DynamicCast<NiDynamicEffect>(objects[link_stack.front()]); \
+  else \
+    effects[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -7805,7 +8072,10 @@ FxWidget::FixLinks( objects, link_stack, version ); \
 uint numUnknownLinks; \
 numUnknownLinks = uint(unknownLinks.size()); \
 for (uint i0 = 0; i0 < numUnknownLinks; i0++) { \
-  unknownLinks[i0] = DynamicCast<NiObject>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    unknownLinks[i0] = DynamicCast<NiObject>(objects[link_stack.front()]); \
+  else \
+    unknownLinks[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -7965,7 +8235,10 @@ if ( (lodType == 0) ) { \
   }; \
 }; \
 if ( (lodType == 1) ) { \
-  rangeData = DynamicCast<NiRangeLODData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    rangeData = DynamicCast<NiRangeLODData>(objects[link_stack.front()]); \
+  else \
+    rangeData = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -8119,7 +8392,10 @@ return out.str(); \
 
 #define NI_PARTICLE_COLOR_MODIFIER_FIXLINKS \
 AParticleModifier::FixLinks( objects, link_stack, version ); \
-colorData = DynamicCast<NiColorData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  colorData = DynamicCast<NiColorData>(objects[link_stack.front()]); \
+else \
+  colorData = NULL; \
 link_stack.pop_front(); \
 
 #define NI_PARTICLE_GROW_FADE_MEMBERS \
@@ -8183,7 +8459,10 @@ return out.str(); \
 
 #define NI_PARTICLE_MESH_MODIFIER_FIXLINKS \
 AParticleModifier::FixLinks( objects, link_stack, version ); \
-particleMeshes = DynamicCast<NiTriBasedGeom>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  particleMeshes = DynamicCast<NiTriBasedGeom>(objects[link_stack.front()]); \
+else \
+  particleMeshes = NULL; \
 link_stack.pop_front(); \
 
 #define NI_PARTICLE_ROTATION_MEMBERS \
@@ -8403,12 +8682,15 @@ return out.str(); \
 
 #define NI_PARTICLE_MESHES_DATA_FIXLINKS \
 NiParticlesData::FixLinks( objects, link_stack, version ); \
-unknownLink2 = DynamicCast<NiTriBasedGeom>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink2 = DynamicCast<NiTriBasedGeom>(objects[link_stack.front()]); \
+else \
+  unknownLink2 = NULL; \
 link_stack.pop_front(); \
 
 #define NI_PARTICLE_SYSTEM_MEMBERS \
 bool unknownBool; \
-vector<Ref<APSysModifier > > modifiers; \
+vector<Ref<NiPSysModifier > > modifiers; \
 
 #define NI_PARTICLE_SYSTEM_INCLUDE "NiParticles.h" \
 
@@ -8460,7 +8742,10 @@ uint numModifiers; \
 numModifiers = uint(modifiers.size()); \
 if ( version >= 0x0A010000 ) { \
   for (uint i1 = 0; i1 < numModifiers; i1++) { \
-    modifiers[i1] = DynamicCast<APSysModifier>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      modifiers[i1] = DynamicCast<NiPSysModifier>(objects[link_stack.front()]); \
+    else \
+      modifiers[i1] = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
@@ -8684,15 +8969,27 @@ return out.str(); \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 ushort numParticles; \
 numParticles = ushort(particles.size()); \
-emitter = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  emitter = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  emitter = NULL; \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < numParticles; i0++) { \
 }; \
-unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  unknownLink = NULL; \
 link_stack.pop_front(); \
-particleExtra = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  particleExtra = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
+else \
+  particleExtra = NULL; \
 link_stack.pop_front(); \
-unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  unknownLink2 = NULL; \
 link_stack.pop_front(); \
 
 #define NI_B_S_P_ARRAY_CONTROLLER_MEMBERS \
@@ -8775,9 +9072,15 @@ return out.str(); \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x0A010000 ) { \
 }; \
-posData = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  posData = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+else \
+  posData = NULL; \
 link_stack.pop_front(); \
-floatData = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  floatData = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+else \
+  floatData = NULL; \
 link_stack.pop_front(); \
 
 #define NI_PATH_INTERPOLATOR_MEMBERS \
@@ -8787,15 +9090,15 @@ ushort unknownShort2; \
 Ref<NiPosData > posData; \
 Ref<NiFloatData > floatData; \
 
-#define NI_PATH_INTERPOLATOR_INCLUDE "ABlendInterpolator.h" \
+#define NI_PATH_INTERPOLATOR_INCLUDE "NiBlendInterpolator.h" \
 
-#define NI_PATH_INTERPOLATOR_PARENT ABlendInterpolator \
+#define NI_PATH_INTERPOLATOR_PARENT NiBlendInterpolator \
 
 #define NI_PATH_INTERPOLATOR_CONSTRUCT \
 
 #define NI_PATH_INTERPOLATOR_READ \
 uint block_num; \
-ABlendInterpolator::Read( in, link_stack, version ); \
+NiBlendInterpolator::Read( in, link_stack, version ); \
 NifStream( unknownFloat1, in, version ); \
 NifStream( unknownFloat2, in, version ); \
 NifStream( unknownShort2, in, version ); \
@@ -8805,7 +9108,7 @@ NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_PATH_INTERPOLATOR_WRITE \
-ABlendInterpolator::Write( out, link_map, version ); \
+NiBlendInterpolator::Write( out, link_map, version ); \
 NifStream( unknownFloat1, out, version ); \
 NifStream( unknownFloat2, out, version ); \
 NifStream( unknownShort2, out, version ); \
@@ -8814,7 +9117,7 @@ NifStream( link_map[StaticCast<NiObject>(floatData)], out, version ); \
 
 #define NI_PATH_INTERPOLATOR_STRING \
 stringstream out; \
-out << ABlendInterpolator::asString(); \
+out << NiBlendInterpolator::asString(); \
 out << "Unknown Float 1:  " << unknownFloat1 << endl; \
 out << "Unknown Float 2:  " << unknownFloat2 << endl; \
 out << "Unknown Short 2:  " << unknownShort2 << endl; \
@@ -8823,10 +9126,16 @@ out << "Float Data:  " << floatData << endl; \
 return out.str(); \
 
 #define NI_PATH_INTERPOLATOR_FIXLINKS \
-ABlendInterpolator::FixLinks( objects, link_stack, version ); \
-posData = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+NiBlendInterpolator::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  posData = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+else \
+  posData = NULL; \
 link_stack.pop_front(); \
-floatData = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  floatData = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+else \
+  floatData = NULL; \
 link_stack.pop_front(); \
 
 #define NI_PIXEL_DATA_MEMBERS \
@@ -8985,7 +9294,10 @@ if ( version >= 0x14000004 ) { \
   for (uint i1 = 0; i1 < 54; i1++) { \
   }; \
 }; \
-palette = DynamicCast<NiPalette>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  palette = DynamicCast<NiPalette>(objects[link_stack.front()]); \
+else \
+  palette = NULL; \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < numMipmaps; i0++) { \
 }; \
@@ -9106,34 +9418,37 @@ if ( ( version >= 0x04020200 ) && ( version <= 0x04020200 ) ) { \
 Vector3 point3Value; \
 Ref<NiPosData > data; \
 
-#define NI_POINT3_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+#define NI_POINT3_INTERPOLATOR_INCLUDE "NiInterpolator.h" \
 
-#define NI_POINT3_INTERPOLATOR_PARENT AInterpolator \
+#define NI_POINT3_INTERPOLATOR_PARENT NiInterpolator \
 
 #define NI_POINT3_INTERPOLATOR_CONSTRUCT \
 
 #define NI_POINT3_INTERPOLATOR_READ \
 uint block_num; \
-AInterpolator::Read( in, link_stack, version ); \
+NiInterpolator::Read( in, link_stack, version ); \
 NifStream( point3Value, in, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_POINT3_INTERPOLATOR_WRITE \
-AInterpolator::Write( out, link_map, version ); \
+NiInterpolator::Write( out, link_map, version ); \
 NifStream( point3Value, out, version ); \
 NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_POINT3_INTERPOLATOR_STRING \
 stringstream out; \
-out << AInterpolator::asString(); \
+out << NiInterpolator::asString(); \
 out << "Point 3 Value:  " << point3Value << endl; \
 out << "Data:  " << data << endl; \
 return out.str(); \
 
 #define NI_POINT3_INTERPOLATOR_FIXLINKS \
-AInterpolator::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+NiInterpolator::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define NI_POINT_LIGHT_MEMBERS \
@@ -9223,34 +9538,37 @@ for (uint i0 = 0; i0 < data.numKeys; i0++) { \
 bool spawnOnDeath; \
 Ref<NiPSysSpawnModifier > spawnModifier; \
 
-#define NI_P_SYS_AGE_DEATH_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_AGE_DEATH_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_AGE_DEATH_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_AGE_DEATH_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_AGE_DEATH_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_AGE_DEATH_MODIFIER_READ \
 uint block_num; \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( spawnOnDeath, in, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_P_SYS_AGE_DEATH_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( spawnOnDeath, out, version ); \
 NifStream( link_map[StaticCast<NiObject>(spawnModifier)], out, version ); \
 
 #define NI_P_SYS_AGE_DEATH_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Spawn on Death:  " << spawnOnDeath << endl; \
 out << "Spawn Modifier:  " << spawnModifier << endl; \
 return out.str(); \
 
 #define NI_P_SYS_AGE_DEATH_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
-spawnModifier = DynamicCast<NiPSysSpawnModifier>(objects[link_stack.front()]); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  spawnModifier = DynamicCast<NiPSysSpawnModifier>(objects[link_stack.front()]); \
+else \
+  spawnModifier = NULL; \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_BOMB_MODIFIER_MEMBERS \
@@ -9259,15 +9577,15 @@ vector<uint > unknownInts1; \
 vector<float > unknownFloats; \
 vector<uint > unknownInts2; \
 
-#define NI_P_SYS_BOMB_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_BOMB_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_BOMB_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_BOMB_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_BOMB_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_BOMB_MODIFIER_READ \
 uint block_num; \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 unknownInts1.resize(2); \
@@ -9284,7 +9602,7 @@ for (uint i0 = 0; i0 < 2; i0++) { \
 }; \
 
 #define NI_P_SYS_BOMB_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( link_map[StaticCast<NiObject>(unknownLink)], out, version ); \
 for (uint i0 = 0; i0 < 2; i0++) { \
   NifStream( unknownInts1[i0], out, version ); \
@@ -9298,7 +9616,7 @@ for (uint i0 = 0; i0 < 2; i0++) { \
 
 #define NI_P_SYS_BOMB_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Unknown Link:  " << unknownLink << endl; \
 for (uint i0 = 0; i0 < 2; i0++) { \
   out << "  Unknown Ints 1[" << i0 << "]:  " << unknownInts1[i0] << endl; \
@@ -9312,8 +9630,11 @@ for (uint i0 = 0; i0 < 2; i0++) { \
 return out.str(); \
 
 #define NI_P_SYS_BOMB_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
-unknownLink = DynamicCast<NiNode>(objects[link_stack.front()]); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink = DynamicCast<NiNode>(objects[link_stack.front()]); \
+else \
+  unknownLink = NULL; \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < 2; i0++) { \
 }; \
@@ -9325,152 +9646,158 @@ for (uint i0 = 0; i0 < 2; i0++) { \
 #define NI_P_SYS_BOUND_UPDATE_MODIFIER_MEMBERS \
 ushort updateSkip; \
 
-#define NI_P_SYS_BOUND_UPDATE_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_BOUND_UPDATE_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_BOUND_UPDATE_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_BOUND_UPDATE_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_BOUND_UPDATE_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_BOUND_UPDATE_MODIFIER_READ \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( updateSkip, in, version ); \
 
 #define NI_P_SYS_BOUND_UPDATE_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( updateSkip, out, version ); \
 
 #define NI_P_SYS_BOUND_UPDATE_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Update Skip:  " << updateSkip << endl; \
 return out.str(); \
 
 #define NI_P_SYS_BOUND_UPDATE_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_BOX_EMITTER_MEMBERS \
 float width; \
 float height; \
 float depth; \
 
-#define NI_P_SYS_BOX_EMITTER_INCLUDE "APSysVolumeEmitter.h" \
+#define NI_P_SYS_BOX_EMITTER_INCLUDE "NiPSysVolumeEmitter.h" \
 
-#define NI_P_SYS_BOX_EMITTER_PARENT APSysVolumeEmitter \
+#define NI_P_SYS_BOX_EMITTER_PARENT NiPSysVolumeEmitter \
 
 #define NI_P_SYS_BOX_EMITTER_CONSTRUCT \
 
 #define NI_P_SYS_BOX_EMITTER_READ \
-APSysVolumeEmitter::Read( in, link_stack, version ); \
+NiPSysVolumeEmitter::Read( in, link_stack, version ); \
 NifStream( width, in, version ); \
 NifStream( height, in, version ); \
 NifStream( depth, in, version ); \
 
 #define NI_P_SYS_BOX_EMITTER_WRITE \
-APSysVolumeEmitter::Write( out, link_map, version ); \
+NiPSysVolumeEmitter::Write( out, link_map, version ); \
 NifStream( width, out, version ); \
 NifStream( height, out, version ); \
 NifStream( depth, out, version ); \
 
 #define NI_P_SYS_BOX_EMITTER_STRING \
 stringstream out; \
-out << APSysVolumeEmitter::asString(); \
+out << NiPSysVolumeEmitter::asString(); \
 out << "Width:  " << width << endl; \
 out << "Height:  " << height << endl; \
 out << "Depth:  " << depth << endl; \
 return out.str(); \
 
 #define NI_P_SYS_BOX_EMITTER_FIXLINKS \
-APSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
+NiPSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_COLLIDER_MANAGER_MEMBERS \
 Ref<NiPSysPlanarCollider > collider; \
 
-#define NI_P_SYS_COLLIDER_MANAGER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_COLLIDER_MANAGER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_COLLIDER_MANAGER_PARENT APSysModifier \
+#define NI_P_SYS_COLLIDER_MANAGER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_COLLIDER_MANAGER_CONSTRUCT \
 
 #define NI_P_SYS_COLLIDER_MANAGER_READ \
 uint block_num; \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_P_SYS_COLLIDER_MANAGER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( link_map[StaticCast<NiObject>(collider)], out, version ); \
 
 #define NI_P_SYS_COLLIDER_MANAGER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Collider:  " << collider << endl; \
 return out.str(); \
 
 #define NI_P_SYS_COLLIDER_MANAGER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
-collider = DynamicCast<NiPSysPlanarCollider>(objects[link_stack.front()]); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  collider = DynamicCast<NiPSysPlanarCollider>(objects[link_stack.front()]); \
+else \
+  collider = NULL; \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_COLOR_MODIFIER_MEMBERS \
 Ref<NiColorData > data; \
 
-#define NI_P_SYS_COLOR_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_COLOR_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_COLOR_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_COLOR_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_COLOR_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_COLOR_MODIFIER_READ \
 uint block_num; \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_P_SYS_COLOR_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_P_SYS_COLOR_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Data:  " << data << endl; \
 return out.str(); \
 
 #define NI_P_SYS_COLOR_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiColorData>(objects[link_stack.front()]); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiColorData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_CYLINDER_EMITTER_MEMBERS \
 float radius; \
 float height; \
 
-#define NI_P_SYS_CYLINDER_EMITTER_INCLUDE "APSysVolumeEmitter.h" \
+#define NI_P_SYS_CYLINDER_EMITTER_INCLUDE "NiPSysVolumeEmitter.h" \
 
-#define NI_P_SYS_CYLINDER_EMITTER_PARENT APSysVolumeEmitter \
+#define NI_P_SYS_CYLINDER_EMITTER_PARENT NiPSysVolumeEmitter \
 
 #define NI_P_SYS_CYLINDER_EMITTER_CONSTRUCT \
 
 #define NI_P_SYS_CYLINDER_EMITTER_READ \
-APSysVolumeEmitter::Read( in, link_stack, version ); \
+NiPSysVolumeEmitter::Read( in, link_stack, version ); \
 NifStream( radius, in, version ); \
 NifStream( height, in, version ); \
 
 #define NI_P_SYS_CYLINDER_EMITTER_WRITE \
-APSysVolumeEmitter::Write( out, link_map, version ); \
+NiPSysVolumeEmitter::Write( out, link_map, version ); \
 NifStream( radius, out, version ); \
 NifStream( height, out, version ); \
 
 #define NI_P_SYS_CYLINDER_EMITTER_STRING \
 stringstream out; \
-out << APSysVolumeEmitter::asString(); \
+out << NiPSysVolumeEmitter::asString(); \
 out << "Radius:  " << radius << endl; \
 out << "Height:  " << height << endl; \
 return out.str(); \
 
 #define NI_P_SYS_CYLINDER_EMITTER_FIXLINKS \
-APSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
+NiPSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_DATA_MEMBERS \
 vector<vector<float > > unknownFloats4; \
@@ -9645,15 +9972,15 @@ float percentage; \
 float range; \
 float rangeFalloff; \
 
-#define NI_P_SYS_DRAG_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_DRAG_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_DRAG_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_DRAG_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_DRAG_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_DRAG_MODIFIER_READ \
 uint block_num; \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 NifStream( dragAxis, in, version ); \
@@ -9662,7 +9989,7 @@ NifStream( range, in, version ); \
 NifStream( rangeFalloff, in, version ); \
 
 #define NI_P_SYS_DRAG_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( link_map[StaticCast<NiObject>(parent)], out, version ); \
 NifStream( dragAxis, out, version ); \
 NifStream( percentage, out, version ); \
@@ -9671,7 +9998,7 @@ NifStream( rangeFalloff, out, version ); \
 
 #define NI_P_SYS_DRAG_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Parent:  " << parent << endl; \
 out << "Drag Axis:  " << dragAxis << endl; \
 out << "Percentage:  " << percentage << endl; \
@@ -9680,12 +10007,15 @@ out << "Range Falloff:  " << rangeFalloff << endl; \
 return out.str(); \
 
 #define NI_P_SYS_DRAG_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
-parent = DynamicCast<NiObject>(objects[link_stack.front()]); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  parent = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  parent = NULL; \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_EMITTER_CTLR_MEMBERS \
-Ref<AInterpolator > visibilityInterpolator; \
+Ref<NiInterpolator > visibilityInterpolator; \
 
 #define NI_P_SYS_EMITTER_CTLR_INCLUDE "APSysCtlr.h" \
 
@@ -9711,7 +10041,10 @@ return out.str(); \
 
 #define NI_P_SYS_EMITTER_CTLR_FIXLINKS \
 APSysCtlr::FixLinks( objects, link_stack, version ); \
-visibilityInterpolator = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  visibilityInterpolator = DynamicCast<NiInterpolator>(objects[link_stack.front()]); \
+else \
+  visibilityInterpolator = NULL; \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_EMITTER_CTLR_DATA_MEMBERS \
@@ -9905,16 +10238,16 @@ uint forceType; \
 float turbulence; \
 float turbulenceScale; \
 
-#define NI_P_SYS_GRAVITY_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_GRAVITY_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_GRAVITY_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_GRAVITY_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_GRAVITY_MODIFIER_CONSTRUCT \
  : turbulenceScale(1.0f) \
 
 #define NI_P_SYS_GRAVITY_MODIFIER_READ \
 uint block_num; \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 NifStream( gravityAxis, in, version ); \
@@ -9925,7 +10258,7 @@ NifStream( turbulence, in, version ); \
 NifStream( turbulenceScale, in, version ); \
 
 #define NI_P_SYS_GRAVITY_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( link_map[StaticCast<NiObject>(gravityObject)], out, version ); \
 NifStream( gravityAxis, out, version ); \
 NifStream( decay, out, version ); \
@@ -9936,7 +10269,7 @@ NifStream( turbulenceScale, out, version ); \
 
 #define NI_P_SYS_GRAVITY_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Gravity Object:  " << gravityObject << endl; \
 out << "Gravity Axis:  " << gravityAxis << endl; \
 out << "Decay:  " << decay << endl; \
@@ -9947,8 +10280,11 @@ out << "Turbulence Scale:  " << turbulenceScale << endl; \
 return out.str(); \
 
 #define NI_P_SYS_GRAVITY_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
-gravityObject = DynamicCast<NiNode>(objects[link_stack.front()]); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  gravityObject = DynamicCast<NiNode>(objects[link_stack.front()]); \
+else \
+  gravityObject = NULL; \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_GRAVITY_STRENGTH_CTLR_MEMBERS \
@@ -9979,21 +10315,21 @@ ushort growGeneration; \
 float fadeTime; \
 ushort fadeGeneration; \
 
-#define NI_P_SYS_GROW_FADE_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_GROW_FADE_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_GROW_FADE_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_GROW_FADE_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_GROW_FADE_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_GROW_FADE_MODIFIER_READ \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( growTime, in, version ); \
 NifStream( growGeneration, in, version ); \
 NifStream( fadeTime, in, version ); \
 NifStream( fadeGeneration, in, version ); \
 
 #define NI_P_SYS_GROW_FADE_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( growTime, out, version ); \
 NifStream( growGeneration, out, version ); \
 NifStream( fadeTime, out, version ); \
@@ -10001,7 +10337,7 @@ NifStream( fadeGeneration, out, version ); \
 
 #define NI_P_SYS_GROW_FADE_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Grow Time:  " << growTime << endl; \
 out << "Grow Generation:  " << growGeneration << endl; \
 out << "Fade Time:  " << fadeTime << endl; \
@@ -10009,7 +10345,7 @@ out << "Fade Generation:  " << fadeGeneration << endl; \
 return out.str(); \
 
 #define NI_P_SYS_GROW_FADE_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_MESH_EMITTER_MEMBERS \
 vector<Ref<NiTriBasedGeom > > emitterMeshes; \
@@ -10017,15 +10353,15 @@ uint initialVelocityType; \
 uint emissionType; \
 Vector3 emissionAxis; \
 
-#define NI_P_SYS_MESH_EMITTER_INCLUDE "APSysEmitter.h" \
+#define NI_P_SYS_MESH_EMITTER_INCLUDE "NiPSysEmitter.h" \
 
-#define NI_P_SYS_MESH_EMITTER_PARENT APSysEmitter \
+#define NI_P_SYS_MESH_EMITTER_PARENT NiPSysEmitter \
 
 #define NI_P_SYS_MESH_EMITTER_CONSTRUCT \
 
 #define NI_P_SYS_MESH_EMITTER_READ \
 uint block_num; \
-APSysEmitter::Read( in, link_stack, version ); \
+NiPSysEmitter::Read( in, link_stack, version ); \
 uint numEmitterMeshes; \
 NifStream( numEmitterMeshes, in, version ); \
 emitterMeshes.resize(numEmitterMeshes); \
@@ -10038,7 +10374,7 @@ NifStream( emissionType, in, version ); \
 NifStream( emissionAxis, in, version ); \
 
 #define NI_P_SYS_MESH_EMITTER_WRITE \
-APSysEmitter::Write( out, link_map, version ); \
+NiPSysEmitter::Write( out, link_map, version ); \
 uint numEmitterMeshes; \
 numEmitterMeshes = uint(emitterMeshes.size()); \
 NifStream( numEmitterMeshes, out, version ); \
@@ -10051,7 +10387,7 @@ NifStream( emissionAxis, out, version ); \
 
 #define NI_P_SYS_MESH_EMITTER_STRING \
 stringstream out; \
-out << APSysEmitter::asString(); \
+out << NiPSysEmitter::asString(); \
 uint numEmitterMeshes; \
 numEmitterMeshes = uint(emitterMeshes.size()); \
 out << "Num Emitter Meshes:  " << numEmitterMeshes << endl; \
@@ -10064,26 +10400,29 @@ out << "Emission Axis:  " << emissionAxis << endl; \
 return out.str(); \
 
 #define NI_P_SYS_MESH_EMITTER_FIXLINKS \
-APSysEmitter::FixLinks( objects, link_stack, version ); \
+NiPSysEmitter::FixLinks( objects, link_stack, version ); \
 uint numEmitterMeshes; \
 numEmitterMeshes = uint(emitterMeshes.size()); \
 for (uint i0 = 0; i0 < numEmitterMeshes; i0++) { \
-  emitterMeshes[i0] = DynamicCast<NiTriBasedGeom>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    emitterMeshes[i0] = DynamicCast<NiTriBasedGeom>(objects[link_stack.front()]); \
+  else \
+    emitterMeshes[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_MEMBERS \
 vector<Ref<NiNode > > meshes; \
 
-#define NI_P_SYS_MESH_UPDATE_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_MESH_UPDATE_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_MESH_UPDATE_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_MESH_UPDATE_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_READ \
 uint block_num; \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 uint numMeshes; \
 NifStream( numMeshes, in, version ); \
 meshes.resize(numMeshes); \
@@ -10093,7 +10432,7 @@ for (uint i0 = 0; i0 < numMeshes; i0++) { \
 }; \
 
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 uint numMeshes; \
 numMeshes = uint(meshes.size()); \
 NifStream( numMeshes, out, version ); \
@@ -10103,7 +10442,7 @@ for (uint i0 = 0; i0 < numMeshes; i0++) { \
 
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 uint numMeshes; \
 numMeshes = uint(meshes.size()); \
 out << "Num Meshes:  " << numMeshes << endl; \
@@ -10113,11 +10452,14 @@ for (uint i0 = 0; i0 < numMeshes; i0++) { \
 return out.str(); \
 
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
 uint numMeshes; \
 numMeshes = uint(meshes.size()); \
 for (uint i0 = 0; i0 < numMeshes; i0++) { \
-  meshes[i0] = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    meshes[i0] = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  else \
+    meshes[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -10213,36 +10555,48 @@ return out.str(); \
 
 #define NI_P_SYS_PLANAR_COLLIDER_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-spawnModifier = DynamicCast<NiPSysSpawnModifier>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  spawnModifier = DynamicCast<NiPSysSpawnModifier>(objects[link_stack.front()]); \
+else \
+  spawnModifier = NULL; \
 link_stack.pop_front(); \
-parent = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  parent = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  parent = NULL; \
 link_stack.pop_front(); \
-unknownLink_ = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink_ = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  unknownLink_ = NULL; \
 link_stack.pop_front(); \
-colliderObject = DynamicCast<NiNode>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  colliderObject = DynamicCast<NiNode>(objects[link_stack.front()]); \
+else \
+  colliderObject = NULL; \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_POSITION_MODIFIER_MEMBERS \
 
-#define NI_P_SYS_POSITION_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_POSITION_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_POSITION_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_POSITION_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_POSITION_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_POSITION_MODIFIER_READ \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 
 #define NI_P_SYS_POSITION_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 
 #define NI_P_SYS_POSITION_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 return out.str(); \
 
 #define NI_P_SYS_POSITION_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_RESET_ON_LOOP_CTLR_MEMBERS \
 
@@ -10275,14 +10629,14 @@ bool randomRotSpeedSign; \
 bool randomInitialAxis; \
 Vector3 initialAxis; \
 
-#define NI_P_SYS_ROTATION_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_ROTATION_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_ROTATION_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_ROTATION_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_ROTATION_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_ROTATION_MODIFIER_READ \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( initialRotationSpeed, in, version ); \
 if ( version >= 0x14000004 ) { \
   NifStream( initialRotationSpeedVariation, in, version ); \
@@ -10294,7 +10648,7 @@ NifStream( randomInitialAxis, in, version ); \
 NifStream( initialAxis, in, version ); \
 
 #define NI_P_SYS_ROTATION_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( initialRotationSpeed, out, version ); \
 if ( version >= 0x14000004 ) { \
   NifStream( initialRotationSpeedVariation, out, version ); \
@@ -10307,7 +10661,7 @@ NifStream( initialAxis, out, version ); \
 
 #define NI_P_SYS_ROTATION_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Initial Rotation Speed:  " << initialRotationSpeed << endl; \
 out << "Initial Rotation Speed Variation:  " << initialRotationSpeedVariation << endl; \
 out << "Initial Rotation Angle:  " << initialRotationAngle << endl; \
@@ -10318,7 +10672,7 @@ out << "Initial Axis:  " << initialAxis << endl; \
 return out.str(); \
 
 #define NI_P_SYS_ROTATION_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x14000004 ) { \
 }; \
 
@@ -10332,14 +10686,14 @@ float spawnDirChaos; \
 float lifeSpan; \
 float lifeSpanVariation; \
 
-#define NI_P_SYS_SPAWN_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_SPAWN_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_SPAWN_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_SPAWN_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_SPAWN_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_SPAWN_MODIFIER_READ \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( numSpawnGenerations, in, version ); \
 NifStream( percentageSpawned, in, version ); \
 NifStream( minNumToSpawn, in, version ); \
@@ -10350,7 +10704,7 @@ NifStream( lifeSpan, in, version ); \
 NifStream( lifeSpanVariation, in, version ); \
 
 #define NI_P_SYS_SPAWN_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( numSpawnGenerations, out, version ); \
 NifStream( percentageSpawned, out, version ); \
 NifStream( minNumToSpawn, out, version ); \
@@ -10362,7 +10716,7 @@ NifStream( lifeSpanVariation, out, version ); \
 
 #define NI_P_SYS_SPAWN_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Num Spawn Generations:  " << numSpawnGenerations << endl; \
 out << "Percentage Spawned:  " << percentageSpawned << endl; \
 out << "Min Num to Spawn:  " << minNumToSpawn << endl; \
@@ -10374,33 +10728,33 @@ out << "Life Span Variation:  " << lifeSpanVariation << endl; \
 return out.str(); \
 
 #define NI_P_SYS_SPAWN_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_SPHERE_EMITTER_MEMBERS \
 float radius; \
 
-#define NI_P_SYS_SPHERE_EMITTER_INCLUDE "APSysVolumeEmitter.h" \
+#define NI_P_SYS_SPHERE_EMITTER_INCLUDE "NiPSysVolumeEmitter.h" \
 
-#define NI_P_SYS_SPHERE_EMITTER_PARENT APSysVolumeEmitter \
+#define NI_P_SYS_SPHERE_EMITTER_PARENT NiPSysVolumeEmitter \
 
 #define NI_P_SYS_SPHERE_EMITTER_CONSTRUCT \
 
 #define NI_P_SYS_SPHERE_EMITTER_READ \
-APSysVolumeEmitter::Read( in, link_stack, version ); \
+NiPSysVolumeEmitter::Read( in, link_stack, version ); \
 NifStream( radius, in, version ); \
 
 #define NI_P_SYS_SPHERE_EMITTER_WRITE \
-APSysVolumeEmitter::Write( out, link_map, version ); \
+NiPSysVolumeEmitter::Write( out, link_map, version ); \
 NifStream( radius, out, version ); \
 
 #define NI_P_SYS_SPHERE_EMITTER_STRING \
 stringstream out; \
-out << APSysVolumeEmitter::asString(); \
+out << NiPSysVolumeEmitter::asString(); \
 out << "Radius:  " << radius << endl; \
 return out.str(); \
 
 #define NI_P_SYS_SPHERE_EMITTER_FIXLINKS \
-APSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
+NiPSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_UPDATE_CTLR_MEMBERS \
 
@@ -10731,7 +11085,10 @@ NiObject::FixLinks( objects, link_stack, version ); \
 uint numBones; \
 numBones = uint(boneList.size()); \
 if ( version <= 0x0A010000 ) { \
-  skinPartition = DynamicCast<NiSkinPartition>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    skinPartition = DynamicCast<NiSkinPartition>(objects[link_stack.front()]); \
+  else \
+    skinPartition = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x04020100 ) { \
@@ -10810,18 +11167,30 @@ return out.str(); \
 NiObject::FixLinks( objects, link_stack, version ); \
 NiNode * skeletonRoot; \
 skeletonRoot = SkeletonRoot(); \
-data = DynamicCast<NiSkinData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiSkinData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 if ( version >= 0x0A020000 ) { \
-  skinPartition = DynamicCast<NiSkinPartition>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    skinPartition = DynamicCast<NiSkinPartition>(objects[link_stack.front()]); \
+  else \
+    skinPartition = NULL; \
   link_stack.pop_front(); \
 }; \
-skeletonRoot = DynamicCast<NiNode>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  skeletonRoot = DynamicCast<NiNode>(objects[link_stack.front()]); \
+else \
+  skeletonRoot = NULL; \
 link_stack.pop_front(); \
 uint bones_numBones; \
 bones_numBones = uint(bones.bones.size()); \
 for (uint i0 = 0; i0 < bones_numBones; i0++) { \
-  bones.bones[i0] = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    bones.bones[i0] = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  else \
+    bones.bones[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -11298,7 +11667,10 @@ if ( (useExternal == 1) ) { \
 }; \
 if ( version >= 0x0A010000 ) { \
   if ( (useExternal == 1) ) { \
-    unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    else \
+      unknownLink = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
@@ -11311,7 +11683,10 @@ if ( version >= 0x0A010000 ) { \
   }; \
 }; \
 if ( (useExternal == 0) ) { \
-  pixelData = DynamicCast<NiPixelData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    pixelData = DynamicCast<NiPixelData>(objects[link_stack.front()]); \
+  else \
+    pixelData = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x0A01006A ) { \
@@ -11738,7 +12113,10 @@ return out.str(); \
 
 #define NI_TEXTURE_EFFECT_FIXLINKS \
 NiDynamicEffect::FixLinks( objects, link_stack, version ); \
-sourceTexture = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  sourceTexture = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+else \
+  sourceTexture = NULL; \
 link_stack.pop_front(); \
 if ( version <= 0x0A020000 ) { \
 }; \
@@ -11789,7 +12167,10 @@ return out.str(); \
 #define NI_TEXTURE_TRANSFORM_CONTROLLER_FIXLINKS \
 NiSingleInterpolatorController::FixLinks( objects, link_stack, version ); \
 if ( version <= 0x0A010000 ) { \
-  data = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    data = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+  else \
+    data = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -12501,7 +12882,10 @@ numShaderTextures = uint(shaderTextures.size()); \
 if ( version <= 0x0A000102 ) { \
 }; \
 if ( (hasBaseTexture != 0) ) { \
-  baseTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    baseTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  else \
+    baseTexture.source = NULL; \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -12513,7 +12897,10 @@ if ( (hasBaseTexture != 0) ) { \
   }; \
 }; \
 if ( (hasDarkTexture != 0) ) { \
-  darkTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    darkTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  else \
+    darkTexture.source = NULL; \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -12525,7 +12912,10 @@ if ( (hasDarkTexture != 0) ) { \
   }; \
 }; \
 if ( (hasDetailTexture != 0) ) { \
-  detailTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    detailTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  else \
+    detailTexture.source = NULL; \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -12537,7 +12927,10 @@ if ( (hasDetailTexture != 0) ) { \
   }; \
 }; \
 if ( (hasGlossTexture != 0) ) { \
-  glossTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    glossTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  else \
+    glossTexture.source = NULL; \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -12549,7 +12942,10 @@ if ( (hasGlossTexture != 0) ) { \
   }; \
 }; \
 if ( (hasGlowTexture != 0) ) { \
-  glowTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    glowTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  else \
+    glowTexture.source = NULL; \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -12561,7 +12957,10 @@ if ( (hasGlowTexture != 0) ) { \
   }; \
 }; \
 if ( (hasBumpMapTexture != 0) ) { \
-  bumpMapTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    bumpMapTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  else \
+    bumpMapTexture.source = NULL; \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -12573,7 +12972,10 @@ if ( (hasBumpMapTexture != 0) ) { \
   }; \
 }; \
 if ( (hasDecal0Texture != 0) ) { \
-  decal0Texture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    decal0Texture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  else \
+    decal0Texture.source = NULL; \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -12588,7 +12990,10 @@ if ( (textureCount == 8) ) { \
 }; \
 if ( version >= 0x14000004 ) { \
   if ( (((textureCount == 8)) && ((hasDecal1Texture != 0))) ) { \
-    decal1Texture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      decal1Texture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+    else \
+      decal1Texture.source = NULL; \
     link_stack.pop_front(); \
     if ( version <= 0x0A020000 ) { \
     }; \
@@ -12603,7 +13008,10 @@ if ( version >= 0x14000004 ) { \
 if ( version >= 0x0A000100 ) { \
   for (uint i1 = 0; i1 < numShaderTextures; i1++) { \
     if ( (shaderTextures[i1].isUsed != 0) ) { \
-      shaderTextures[i1].textureData.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+      if (link_stack.front() != 0xffffffff) \
+        shaderTextures[i1].textureData.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+      else \
+        shaderTextures[i1].textureData.source = NULL; \
       link_stack.pop_front(); \
       if ( version <= 0x0A020000 ) { \
       }; \
@@ -12668,15 +13076,15 @@ float scale; \
 vector<byte > unknownBytes; \
 Ref<NiTransformData > data; \
 
-#define NI_TRANSFORM_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+#define NI_TRANSFORM_INTERPOLATOR_INCLUDE "NiInterpolator.h" \
 
-#define NI_TRANSFORM_INTERPOLATOR_PARENT AInterpolator \
+#define NI_TRANSFORM_INTERPOLATOR_PARENT NiInterpolator \
 
 #define NI_TRANSFORM_INTERPOLATOR_CONSTRUCT \
 
 #define NI_TRANSFORM_INTERPOLATOR_READ \
 uint block_num; \
-AInterpolator::Read( in, link_stack, version ); \
+NiInterpolator::Read( in, link_stack, version ); \
 NifStream( translation, in, version ); \
 NifStream( rotation, in, version ); \
 NifStream( scale, in, version ); \
@@ -12690,7 +13098,7 @@ NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_TRANSFORM_INTERPOLATOR_WRITE \
-AInterpolator::Write( out, link_map, version ); \
+NiInterpolator::Write( out, link_map, version ); \
 NifStream( translation, out, version ); \
 NifStream( rotation, out, version ); \
 NifStream( scale, out, version ); \
@@ -12703,7 +13111,7 @@ NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_TRANSFORM_INTERPOLATOR_STRING \
 stringstream out; \
-out << AInterpolator::asString(); \
+out << NiInterpolator::asString(); \
 out << "Translation:  " << translation << endl; \
 out << "Rotation:  " << rotation << endl; \
 out << "Scale:  " << scale << endl; \
@@ -12714,12 +13122,15 @@ out << "Data:  " << data << endl; \
 return out.str(); \
 
 #define NI_TRANSFORM_INTERPOLATOR_FIXLINKS \
-AInterpolator::FixLinks( objects, link_stack, version ); \
+NiInterpolator::FixLinks( objects, link_stack, version ); \
 if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
   for (uint i1 = 0; i1 < 3; i1++) { \
   }; \
 }; \
-data = DynamicCast<NiTransformData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiTransformData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define NI_TRI_SHAPE_MEMBERS \
@@ -12750,14 +13161,14 @@ bool hasTriangles; \
 vector<Triangle > triangles; \
 vector<MatchGroup > matchGroups; \
 
-#define NI_TRI_SHAPE_DATA_INCLUDE "TriBasedGeomData.h" \
+#define NI_TRI_SHAPE_DATA_INCLUDE "NiTriBasedGeomData.h" \
 
-#define NI_TRI_SHAPE_DATA_PARENT TriBasedGeomData \
+#define NI_TRI_SHAPE_DATA_PARENT NiTriBasedGeomData \
 
 #define NI_TRI_SHAPE_DATA_CONSTRUCT \
 
 #define NI_TRI_SHAPE_DATA_READ \
-TriBasedGeomData::Read( in, link_stack, version ); \
+NiTriBasedGeomData::Read( in, link_stack, version ); \
 ushort numMatchGroups; \
 ushort numTriangles; \
 NifStream( numTriangles, in, version ); \
@@ -12790,7 +13201,7 @@ for (uint i0 = 0; i0 < numMatchGroups; i0++) { \
 }; \
 
 #define NI_TRI_SHAPE_DATA_WRITE \
-TriBasedGeomData::Write( out, link_map, version ); \
+NiTriBasedGeomData::Write( out, link_map, version ); \
 ushort numMatchGroups; \
 numMatchGroups = ushort(matchGroups.size()); \
 ushort numTriangles; \
@@ -12822,7 +13233,7 @@ for (uint i0 = 0; i0 < numMatchGroups; i0++) { \
 
 #define NI_TRI_SHAPE_DATA_STRING \
 stringstream out; \
-out << TriBasedGeomData::asString(); \
+out << NiTriBasedGeomData::asString(); \
 ushort numMatchGroups; \
 numMatchGroups = ushort(matchGroups.size()); \
 ushort numTriangles; \
@@ -12848,7 +13259,7 @@ for (uint i0 = 0; i0 < numMatchGroups; i0++) { \
 return out.str(); \
 
 #define NI_TRI_SHAPE_DATA_FIXLINKS \
-TriBasedGeomData::FixLinks( objects, link_stack, version ); \
+NiTriBasedGeomData::FixLinks( objects, link_stack, version ); \
 ushort numMatchGroups; \
 numMatchGroups = ushort(matchGroups.size()); \
 ushort numTriangles; \
@@ -12897,14 +13308,14 @@ ushort numTriangles; \
 bool hasPoints; \
 vector<vector<ushort > > points; \
 
-#define NI_TRI_STRIPS_DATA_INCLUDE "TriBasedGeomData.h" \
+#define NI_TRI_STRIPS_DATA_INCLUDE "NiTriBasedGeomData.h" \
 
-#define NI_TRI_STRIPS_DATA_PARENT TriBasedGeomData \
+#define NI_TRI_STRIPS_DATA_PARENT NiTriBasedGeomData \
 
 #define NI_TRI_STRIPS_DATA_CONSTRUCT \
 
 #define NI_TRI_STRIPS_DATA_READ \
-TriBasedGeomData::Read( in, link_stack, version ); \
+NiTriBasedGeomData::Read( in, link_stack, version ); \
 vector<ushort > stripLengths; \
 ushort numStrips; \
 NifStream( numTriangles, in, version ); \
@@ -12940,7 +13351,7 @@ if ( version >= 0x0A010000 ) { \
 }; \
 
 #define NI_TRI_STRIPS_DATA_WRITE \
-TriBasedGeomData::Write( out, link_map, version ); \
+NiTriBasedGeomData::Write( out, link_map, version ); \
 vector<ushort > stripLengths; \
 stripLengths.resize(points.size()); \
 for (uint i0 = 0; i0 < points.size(); i0++) \
@@ -12974,7 +13385,7 @@ if ( version >= 0x0A010000 ) { \
 
 #define NI_TRI_STRIPS_DATA_STRING \
 stringstream out; \
-out << TriBasedGeomData::asString(); \
+out << NiTriBasedGeomData::asString(); \
 vector<ushort > stripLengths; \
 stripLengths.resize(points.size()); \
 for (uint i0 = 0; i0 < points.size(); i0++) \
@@ -13002,7 +13413,7 @@ if ( (hasPoints != 0) ) { \
 return out.str(); \
 
 #define NI_TRI_STRIPS_DATA_FIXLINKS \
-TriBasedGeomData::FixLinks( objects, link_stack, version ); \
+NiTriBasedGeomData::FixLinks( objects, link_stack, version ); \
 vector<ushort > stripLengths; \
 stripLengths.resize(points.size()); \
 for (uint i0 = 0; i0 < points.size(); i0++) \
@@ -13059,7 +13470,10 @@ return out.str(); \
 
 #define NI_U_V_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiUVData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiUVData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define NI_U_V_DATA_MEMBERS \
@@ -13259,7 +13673,10 @@ return out.str(); \
 #define NI_VIS_CONTROLLER_FIXLINKS \
 NiSingleInterpolatorController::FixLinks( objects, link_stack, version ); \
 if ( version <= 0x0A010000 ) { \
-  data = DynamicCast<NiVisData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    data = DynamicCast<NiVisData>(objects[link_stack.front()]); \
+  else \
+    data = NULL; \
   link_stack.pop_front(); \
 }; \