diff --git a/NIF_IO.h b/NIF_IO.h
index ca8d5f33305b9d660273baedf4171b3158625a40..8d15da961f4e70587a82577d5802452276743db8 100644
--- a/NIF_IO.h
+++ b/NIF_IO.h
@@ -104,6 +104,9 @@ struct HeaderString {
 	string header;
 };
 
+//TODO:  This is temporary to make it compile.  Should eventually be adjusted to display 1's and 0's insted of as an int.
+typedef ushort Flags;
+
 /*! Lists the basic texture types availiable from the ITexturingProperty interface*/
 enum TexType {
 	BASE_MAP = 0, /*!< The basic texture used by most meshes. */ 
@@ -358,7 +361,7 @@ ostream & operator<<( ostream & out, PixelLayout const & val );
 
 //Key<T>
 template <class T> 
-void NifStream( Key<T> & key, istream& file, KeyType type ) {
+void NifStream( Key<T> & key, istream& file, uint version, KeyType type ) {
 	key.time = ReadFloat( file );
 
 	//If key type is not 1, 2, or 3, throw an exception
@@ -387,7 +390,7 @@ void NifStream( Key<T> & key, istream& file, uint version, uint type ) {
 };
 
 template <class T> 
-void NifStream( Key<T> const & key, ostream& file, KeyType type) {
+void NifStream( Key<T> const & key, ostream& file, uint version, KeyType type ) {
 	WriteFloat( key.time, file );
 
 	//If key type is not 1, 2, or 3, throw an exception
@@ -416,8 +419,8 @@ void NifStream( Key<T> const & key, ostream& file, uint version, uint type ) {
 };
 
 //Key<Quaternion>
-void StreamQuatKey( Key<Quaternion> & key, istream& file, KeyType type );
-void StreamQuatKey( Key<Quaternion> const & key, ostream& file, KeyType type );
+void StreamQuatKey( Key<Quaternion> & key, istream& file, uint version, KeyType type );
+void StreamQuatKey( Key<Quaternion> const & key, ostream& file, uint version, KeyType type );
 
 //vector<T>
 //This version of NifStream allows whole vectors of data to be streamed
diff --git a/niflib.vcproj b/niflib.vcproj
index 3d4b70dd10f2c233b93e648cc52ccddadd1ceb14..5212f353bcafba450c61d7ad69dacc0688962057 100644
--- a/niflib.vcproj
+++ b/niflib.vcproj
@@ -134,9 +134,6 @@
 			Name="Source Files"
 			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
 			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath=".\obj\AParticleModifier.cpp">
-			</File>
 			<File
 				RelativePath=".\NIF_IO.cpp">
 			</File>
@@ -155,56 +152,1310 @@
 			<Filter
 				Name="obj"
 				Filter="">
+				<File
+					RelativePath=".\obj\AbhkConstraint.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\AbhkRagdollConstraint.cpp">
+				</File>
+				<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>
+				<File
+					RelativePath=".\obj\AParticleModifier.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\APSysCtlr.cpp">
+				</File>
+				<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\ASingleInterpolatorController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\AvoidNode.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkBlendCollisionObject.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkBlendController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkBoxShape.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkCapsuleShape.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkCollisionObject.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkConvexShape.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkConvexTransformShape.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkConvexVerticesShape.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkEntity.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkHingeConstraint.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkLimitedHingeConstraint.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkListShape.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkMalleableConstraint.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkMoppBvTreeShape.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkMultiSphereShape.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkNiTriStripsShape.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkPackedNiTriStripsShape.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkPrismaticConstraint.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkRagdollConstraint.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkRefObject.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkRigidBody.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkRigidBodyT.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkSerializable.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkShape.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkSimpleShapePhantom.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkSPCollisionObject.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkSphereRepShape.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkSphereShape.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkStiffSpringConstraint.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkTransformShape.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\bhkWorldObject.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\BSBound.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\BSFurnitureMarker.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\BSKeyframeController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\BSParentVelocityModifier.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\BSPSysArrayEmitter.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\BSXFlags.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\FxButton.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\FxRadioButton.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\FxWidget.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\hkPackedNiTriStripsData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiAlphaController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiAlphaProperty.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiAmbientLight.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiAutoNormalParticles.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiAutoNormalParticlesData.cpp">
+				</File>
 				<File
 					RelativePath=".\obj\NiAVObject.cpp">
 				</File>
 				<File
-					RelativePath=".\obj\NiNode.cpp">
+					RelativePath=".\obj\NiBillboardNode.cpp">
 				</File>
 				<File
-					RelativePath=".\obj\NiObject.cpp">
+					RelativePath=".\obj\NiBinaryExtraData.cpp">
 				</File>
 				<File
-					RelativePath=".\obj\NiObjectNET.cpp">
+					RelativePath=".\obj\NiBlendBoolInterpolator.cpp">
 				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-			<File
-				RelativePath=".\obj\AParticleModifier.h">
-			</File>
-			<File
-				RelativePath=".\NIF_IO.h">
-			</File>
-			<File
-				RelativePath=".\nif_math.h">
-			</File>
-			<File
-				RelativePath=".\niflib.h">
-			</File>
-			<File
-				RelativePath=".\xml_extract.h">
-			</File>
-			<Filter
-				Name="obj"
-				Filter="">
 				<File
-					RelativePath=".\obj\NiAVObject.h">
+					RelativePath=".\obj\NiBlendFloatInterpolator.cpp">
 				</File>
 				<File
-					RelativePath=".\obj\NiNode.h">
+					RelativePath=".\obj\NiBlendPoint3Interpolator.cpp">
 				</File>
 				<File
-					RelativePath=".\obj\NiObject.h">
+					RelativePath=".\obj\NiBlendTransformInterpolator.cpp">
 				</File>
 				<File
-					RelativePath=".\obj\NiObjectNET.h">
+					RelativePath=".\obj\NiBoneLODController.cpp">
 				</File>
 				<File
-					RelativePath=".\obj\Ref.h">
+					RelativePath=".\obj\NiBoolData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiBooleanExtraData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiBoolInterpolator.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiBoolTimelineInterpolator.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSAnimationNode.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSBoneLODController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSPArrayController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSParticleNode.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSplineBasisData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSplineCompFloatInterpolator.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSplineCompPoint3Interpolator.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSplineCompTransformInterpolator.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSplineData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiCamera.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiCollisionData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiCollisionObject.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiColorData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiColorExtraData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiControllerManager.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiControllerSequence.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiDefaultAVObjectPalette.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiDirectionalLight.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiDitherProperty.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiDynamicEffect.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiExtraData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiFlipController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiFloatData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiFloatExtraData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiFloatExtraDataController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiFloatInterpolator.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiFloatsExtraData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiFogProperty.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiGeomMorpherController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiGravity.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiIntegerExtraData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiIntegersExtraData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiKeyframeController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiKeyframeData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiLight.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiLightColorController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiLightDimmerController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiLODNode.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiLookAtController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiLookAtInterpolator.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiMaterialColorController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiMaterialProperty.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiMeshParticleSystem.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiMeshPSysData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiMorphData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiMultiTargetTransformController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiNode.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiObject.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiObjectNET.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPalette.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleBomb.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleColorModifier.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleGrowFade.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleMeshes.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleMeshesData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleMeshModifier.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleRotation.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticles.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticlesData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleSystem.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleSystemController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPathController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPathInterpolator.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPixelData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPlanarCollider.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPoint3Interpolator.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPointLight.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPosData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiProperty.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysAgeDeathModifier.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysBombModifier.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysBoundUpdateModifier.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysBoxEmitter.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysColliderManager.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysColorModifier.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysCylinderEmitter.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysDragModifier.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitterCtlr.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitterCtlrData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitterDeclinationCtlr.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitterDeclinationVarCtlr.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitterInitialRadiusCtlr.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitterLifeSpanCtlr.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitterSpeedCtlr.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysGravityModifier.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysGravityStrengthCtlr.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysGrowFadeModifier.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysMeshEmitter.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysMeshUpdateModifier.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysModifierActiveCtlr.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysPlanarCollider.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysPositionModifier.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysResetOnLoopCtlr.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysRotationModifier.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysSpawnModifier.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysSphereEmitter.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysUpdateCtlr.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiRangeLODData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiRotatingParticles.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiRotatingParticlesData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiScreenLODData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiSequenceStreamHelper.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiShadeProperty.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiSkinData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiSkinInstance.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiSkinPartition.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiSourceTexture.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiSpecularProperty.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiSphericalCollider.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiSpotLight.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiStencilProperty.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiStringExtraData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiStringPalette.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiStringsExtraData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiTextKeyExtraData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiTextureEffect.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiTextureTransformController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiTexturingProperty.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiTimeController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiTransformController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiTransformData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiTransformInterpolator.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiTriBasedGeom.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiTriShape.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiTriShapeData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiTriStrips.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiTriStripsData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiUVController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiUVData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiVectorExtraData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiVertexColorProperty.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiVertWeightsExtraData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiVisController.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiVisData.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiWireframeProperty.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\NiZBufferProperty.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\Ref.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\RootCollisionNode.cpp">
+				</File>
+				<File
+					RelativePath=".\obj\TriBasedGeomData.cpp">
+				</File>
+			</Filter>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath=".\NIF_IO.h">
+			</File>
+			<File
+				RelativePath=".\nif_math.h">
+			</File>
+			<File
+				RelativePath=".\niflib.h">
+			</File>
+			<File
+				RelativePath=".\xml_extract.h">
+			</File>
+			<Filter
+				Name="obj"
+				Filter="">
+				<File
+					RelativePath=".\obj\AbhkConstraint.h">
+				</File>
+				<File
+					RelativePath=".\obj\AbhkRagdollConstraint.h">
+				</File>
+				<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>
+				<File
+					RelativePath=".\obj\AParticleModifier.h">
+				</File>
+				<File
+					RelativePath=".\obj\APSysCtlr.h">
+				</File>
+				<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\ASingleInterpolatorController.h">
+				</File>
+				<File
+					RelativePath=".\obj\AvoidNode.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkBlendCollisionObject.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkBlendController.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkBoxShape.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkCapsuleShape.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkCollisionObject.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkConvexShape.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkConvexTransformShape.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkConvexVerticesShape.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkEntity.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkHingeConstraint.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkLimitedHingeConstraint.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkListShape.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkMalleableConstraint.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkMoppBvTreeShape.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkMultiSphereShape.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkNiTriStripsShape.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkPackedNiTriStripsShape.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkPrismaticConstraint.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkRagdollConstraint.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkRefObject.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkRigidBody.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkRigidBodyT.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkSerializable.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkShape.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkSimpleShapePhantom.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkSPCollisionObject.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkSphereRepShape.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkSphereShape.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkStiffSpringConstraint.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkTransformShape.h">
+				</File>
+				<File
+					RelativePath=".\obj\bhkWorldObject.h">
+				</File>
+				<File
+					RelativePath=".\obj\BSBound.h">
+				</File>
+				<File
+					RelativePath=".\obj\BSFurnitureMarker.h">
+				</File>
+				<File
+					RelativePath=".\obj\BSKeyframeController.h">
+				</File>
+				<File
+					RelativePath=".\obj\BSParentVelocityModifier.h">
+				</File>
+				<File
+					RelativePath=".\obj\BSPSysArrayEmitter.h">
+				</File>
+				<File
+					RelativePath=".\obj\BSXFlags.h">
+				</File>
+				<File
+					RelativePath=".\obj\FxButton.h">
+				</File>
+				<File
+					RelativePath=".\obj\FxRadioButton.h">
+				</File>
+				<File
+					RelativePath=".\obj\FxWidget.h">
+				</File>
+				<File
+					RelativePath=".\obj\hkPackedNiTriStripsData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiAlphaController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiAlphaProperty.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiAmbientLight.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiAutoNormalParticles.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiAutoNormalParticlesData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiAVObject.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBillboardNode.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBinaryExtraData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBlendBoolInterpolator.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBlendFloatInterpolator.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBlendPoint3Interpolator.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBlendTransformInterpolator.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBoneLODController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBoolData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBooleanExtraData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBoolInterpolator.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBoolTimelineInterpolator.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSAnimationNode.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSBoneLODController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSPArrayController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSParticleNode.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSplineBasisData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSplineCompFloatInterpolator.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSplineCompPoint3Interpolator.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSplineCompTransformInterpolator.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiBSplineData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiCamera.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiCollisionData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiCollisionObject.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiColorData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiColorExtraData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiControllerManager.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiControllerSequence.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiDefaultAVObjectPalette.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiDirectionalLight.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiDitherProperty.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiDynamicEffect.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiExtraData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiFlipController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiFloatData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiFloatExtraData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiFloatExtraDataController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiFloatInterpolator.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiFloatsExtraData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiFogProperty.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiGeomMorpherController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiGravity.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiIntegerExtraData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiIntegersExtraData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiKeyframeController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiKeyframeData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiLight.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiLightColorController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiLightDimmerController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiLODNode.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiLookAtController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiLookAtInterpolator.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiMaterialColorController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiMaterialProperty.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiMeshParticleSystem.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiMeshPSysData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiMorphData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiMultiTargetTransformController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiNode.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiObject.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiObjectNET.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPalette.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleBomb.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleColorModifier.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleGrowFade.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleMeshes.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleMeshesData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleMeshModifier.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleRotation.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticles.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticlesData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleSystem.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiParticleSystemController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPathController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPathInterpolator.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPixelData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPlanarCollider.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPoint3Interpolator.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPointLight.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPosData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiProperty.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysAgeDeathModifier.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysBombModifier.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysBoundUpdateModifier.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysBoxEmitter.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysColliderManager.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysColorModifier.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysCylinderEmitter.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysDragModifier.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitterCtlr.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitterCtlrData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitterDeclinationCtlr.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitterDeclinationVarCtlr.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitterInitialRadiusCtlr.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitterLifeSpanCtlr.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitterSpeedCtlr.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysGravityModifier.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysGravityStrengthCtlr.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysGrowFadeModifier.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysMeshEmitter.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysMeshUpdateModifier.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysModifierActiveCtlr.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysPlanarCollider.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysPositionModifier.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysResetOnLoopCtlr.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysRotationModifier.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysSpawnModifier.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysSphereEmitter.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiPSysUpdateCtlr.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiRangeLODData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiRotatingParticles.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiRotatingParticlesData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiScreenLODData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiSequenceStreamHelper.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiShadeProperty.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiSkinData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiSkinInstance.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiSkinPartition.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiSourceTexture.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiSpecularProperty.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiSphericalCollider.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiSpotLight.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiStencilProperty.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiStringExtraData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiStringPalette.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiStringsExtraData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiTextKeyExtraData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiTextureEffect.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiTextureTransformController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiTexturingProperty.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiTimeController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiTransformController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiTransformData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiTransformInterpolator.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiTriBasedGeom.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiTriShape.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiTriShapeData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiTriStrips.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiTriStripsData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiUVController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiUVData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiVectorExtraData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiVertexColorProperty.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiVertWeightsExtraData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiVisController.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiVisData.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiWireframeProperty.h">
+				</File>
+				<File
+					RelativePath=".\obj\NiZBufferProperty.h">
+				</File>
+				<File
+					RelativePath=".\obj\Ref.h">
+				</File>
+				<File
+					RelativePath=".\obj\RootCollisionNode.h">
+				</File>
+				<File
+					RelativePath=".\obj\TriBasedGeomData.h">
 				</File>
 			</Filter>
 		</Filter>
diff --git a/obj/ABSplineCompInterpolator.cpp b/obj/ABSplineCompInterpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4d91c6b28dc8db43f658d54b22c7245a737cdd17
--- /dev/null
+++ b/obj/ABSplineCompInterpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "ABSplineCompInterpolator.h"
+
+//Definition of TYPE constant
+const Type ABSplineCompInterpolator::TYPE("ABSplineCompInterpolator", &A_B_SPLINE_COMP_INTERPOLATOR_PARENT::TYPE );
+
+ABSplineCompInterpolator::ABSplineCompInterpolator() A_B_SPLINE_COMP_INTERPOLATOR_CONSTRUCT {}
+
+ABSplineCompInterpolator::~ABSplineCompInterpolator() {}
+
+void ABSplineCompInterpolator::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	A_B_SPLINE_COMP_INTERPOLATOR_READ
+}
+
+void ABSplineCompInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	A_B_SPLINE_COMP_INTERPOLATOR_WRITE
+}
+
+string ABSplineCompInterpolator::asString( bool verbose ) const {
+	A_B_SPLINE_COMP_INTERPOLATOR_STRING
+}
+
+void ABSplineCompInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	A_B_SPLINE_COMP_INTERPOLATOR_FIXLINKS
+}
+
diff --git a/obj/ABSplineCompInterpolator.h b/obj/ABSplineCompInterpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..89ac838bf6195b7907b808d14edb4e6ccce8208d
--- /dev/null
+++ b/obj/ABSplineCompInterpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _ABSPLINECOMPINTERPOLATOR_H_
+#define _ABSPLINECOMPINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include A_B_SPLINE_COMP_INTERPOLATOR_INCLUDE
+
+/*
+ * ABSplineCompInterpolator
+ */
+
+class ABSplineCompInterpolator;
+typedef Ref<ABSplineCompInterpolator> ABSplineCompInterpolatorRef;
+
+class ABSplineCompInterpolator : public A_B_SPLINE_COMP_INTERPOLATOR_PARENT {
+public:
+	ABSplineCompInterpolator();
+	~ABSplineCompInterpolator();
+	//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 );
+private:
+	A_B_SPLINE_COMP_INTERPOLATOR_MEMBERS
+};
+#endif
diff --git a/obj/ABlendInterpolator.cpp b/obj/ABlendInterpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..50c424ae0adeeb464fbc933efb6064afc5334098
--- /dev/null
+++ b/obj/ABlendInterpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "ABlendInterpolator.h"
+
+//Definition of TYPE constant
+const Type ABlendInterpolator::TYPE("ABlendInterpolator", &A_BLEND_INTERPOLATOR_PARENT::TYPE );
+
+ABlendInterpolator::ABlendInterpolator() A_BLEND_INTERPOLATOR_CONSTRUCT {}
+
+ABlendInterpolator::~ABlendInterpolator() {}
+
+void ABlendInterpolator::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	A_BLEND_INTERPOLATOR_READ
+}
+
+void ABlendInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	A_BLEND_INTERPOLATOR_WRITE
+}
+
+string ABlendInterpolator::asString( bool verbose ) const {
+	A_BLEND_INTERPOLATOR_STRING
+}
+
+void ABlendInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	A_BLEND_INTERPOLATOR_FIXLINKS
+}
+
diff --git a/obj/ABlendInterpolator.h b/obj/ABlendInterpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..af21d1529e9a00b938d7200dbd3758c1f3b24ffc
--- /dev/null
+++ b/obj/ABlendInterpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _ABLENDINTERPOLATOR_H_
+#define _ABLENDINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include A_BLEND_INTERPOLATOR_INCLUDE
+
+/*
+ * ABlendInterpolator
+ */
+
+class ABlendInterpolator;
+typedef Ref<ABlendInterpolator> ABlendInterpolatorRef;
+
+class ABlendInterpolator : public A_BLEND_INTERPOLATOR_PARENT {
+public:
+	ABlendInterpolator();
+	~ABlendInterpolator();
+	//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 );
+private:
+	A_BLEND_INTERPOLATOR_MEMBERS
+};
+#endif
diff --git a/obj/ABoneLODController.cpp b/obj/ABoneLODController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5290a843f554e738dbbd5c527cb8961612b3575c
--- /dev/null
+++ b/obj/ABoneLODController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "ABoneLODController.h"
+
+//Definition of TYPE constant
+const Type ABoneLODController::TYPE("ABoneLODController", &A_BONE_L_O_D_CONTROLLER_PARENT::TYPE );
+
+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
+}
+
+void ABoneLODController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	A_BONE_L_O_D_CONTROLLER_WRITE
+}
+
+string ABoneLODController::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/ABoneLODController.h b/obj/ABoneLODController.h
new file mode 100644
index 0000000000000000000000000000000000000000..81017562123773dec8ecd5a8f1f776c4d20aaa80
--- /dev/null
+++ b/obj/ABoneLODController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _ABONELODCONTROLLER_H_
+#define _ABONELODCONTROLLER_H_
+
+#include "xml_extract.h"
+#include A_BONE_L_O_D_CONTROLLER_INCLUDE
+
+/*
+ * ABoneLODController
+ */
+
+class ABoneLODController;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/AInterpolator.cpp b/obj/AInterpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..13d6d197667cdf2738f406e8d5847bf60a7aabf9
--- /dev/null
+++ b/obj/AInterpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "AInterpolator.h"
+
+//Definition of TYPE constant
+const Type AInterpolator::TYPE("AInterpolator", &A_INTERPOLATOR_PARENT::TYPE );
+
+AInterpolator::AInterpolator() A_INTERPOLATOR_CONSTRUCT {}
+
+AInterpolator::~AInterpolator() {}
+
+void AInterpolator::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	A_INTERPOLATOR_READ
+}
+
+void AInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	A_INTERPOLATOR_WRITE
+}
+
+string AInterpolator::asString( bool verbose ) const {
+	A_INTERPOLATOR_STRING
+}
+
+void AInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	A_INTERPOLATOR_FIXLINKS
+}
+
diff --git a/obj/AInterpolator.h b/obj/AInterpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..8a9c3b9615a6d33d575694de82e145e87e1dcdd2
--- /dev/null
+++ b/obj/AInterpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _AINTERPOLATOR_H_
+#define _AINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include A_INTERPOLATOR_INCLUDE
+
+/*
+ * AInterpolator
+ */
+
+class AInterpolator;
+typedef Ref<AInterpolator> AInterpolatorRef;
+
+class AInterpolator : public A_INTERPOLATOR_PARENT {
+public:
+	AInterpolator();
+	~AInterpolator();
+	//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 );
+private:
+	A_INTERPOLATOR_MEMBERS
+};
+#endif
diff --git a/obj/AKeyedData.cpp b/obj/AKeyedData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f8e646d70a30f0fe6742cd0f919ea33620ca54f6
--- /dev/null
+++ b/obj/AKeyedData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "AKeyedData.h"
+
+//Definition of TYPE constant
+const Type AKeyedData::TYPE("AKeyedData", &A_KEYED_DATA_PARENT::TYPE );
+
+AKeyedData::AKeyedData() A_KEYED_DATA_CONSTRUCT {}
+
+AKeyedData::~AKeyedData() {}
+
+void AKeyedData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	A_KEYED_DATA_READ
+}
+
+void AKeyedData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	A_KEYED_DATA_WRITE
+}
+
+string AKeyedData::asString( bool verbose ) const {
+	A_KEYED_DATA_STRING
+}
+
+void AKeyedData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	A_KEYED_DATA_FIXLINKS
+}
+
diff --git a/obj/AKeyedData.h b/obj/AKeyedData.h
new file mode 100644
index 0000000000000000000000000000000000000000..d0fea3824dfb78d64b3e066ea02c48cbece02079
--- /dev/null
+++ b/obj/AKeyedData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _AKEYEDDATA_H_
+#define _AKEYEDDATA_H_
+
+#include "xml_extract.h"
+#include A_KEYED_DATA_INCLUDE
+
+/*
+ * AKeyedData
+ */
+
+class AKeyedData;
+typedef Ref<AKeyedData> AKeyedDataRef;
+
+class AKeyedData : public A_KEYED_DATA_PARENT {
+public:
+	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 );
+private:
+	A_KEYED_DATA_MEMBERS
+};
+#endif
diff --git a/obj/APSysCtlr.cpp b/obj/APSysCtlr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..66bb3d2c0b0c0b3964ef341984e6459fa594c5c6
--- /dev/null
+++ b/obj/APSysCtlr.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "APSysCtlr.h"
+
+//Definition of TYPE constant
+const Type APSysCtlr::TYPE("APSysCtlr", &A_P_SYS_CTLR_PARENT::TYPE );
+
+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
+}
+
+void APSysCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	A_P_SYS_CTLR_WRITE
+}
+
+string APSysCtlr::asString( bool verbose ) const {
+	A_P_SYS_CTLR_STRING
+}
+
+void APSysCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	A_P_SYS_CTLR_FIXLINKS
+}
+
diff --git a/obj/APSysCtlr.h b/obj/APSysCtlr.h
new file mode 100644
index 0000000000000000000000000000000000000000..e3b5b0646ea1107f60337883c4cc66b18bffa099
--- /dev/null
+++ b/obj/APSysCtlr.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _APSYSCTLR_H_
+#define _APSYSCTLR_H_
+
+#include "xml_extract.h"
+#include A_P_SYS_CTLR_INCLUDE
+
+/*
+ * APSysCtlr
+ */
+
+class APSysCtlr;
+typedef Ref<APSysCtlr> APSysCtlrRef;
+
+class APSysCtlr : public A_P_SYS_CTLR_PARENT {
+public:
+	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 );
+private:
+	A_P_SYS_CTLR_MEMBERS
+};
+#endif
diff --git a/obj/APSysData.cpp b/obj/APSysData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..dfff18ab60c04954c894c56c5951e998cfb81dad
--- /dev/null
+++ b/obj/APSysData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "APSysData.h"
+
+//Definition of TYPE constant
+const Type APSysData::TYPE("APSysData", &A_P_SYS_DATA_PARENT::TYPE );
+
+APSysData::APSysData() A_P_SYS_DATA_CONSTRUCT {}
+
+APSysData::~APSysData() {}
+
+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
+}
+
+void APSysData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	A_P_SYS_DATA_FIXLINKS
+}
+
diff --git a/obj/APSysData.h b/obj/APSysData.h
new file mode 100644
index 0000000000000000000000000000000000000000..23ada367a3eb884a335f564537b6b93fa015dc95
--- /dev/null
+++ b/obj/APSysData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _APSYSDATA_H_
+#define _APSYSDATA_H_
+
+#include "xml_extract.h"
+#include A_P_SYS_DATA_INCLUDE
+
+/*
+ * APSysData
+ */
+
+class APSysData;
+typedef Ref<APSysData> APSysDataRef;
+
+class APSysData : public A_P_SYS_DATA_PARENT {
+public:
+	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 );
+private:
+	A_P_SYS_DATA_MEMBERS
+};
+#endif
diff --git a/obj/APSysEmitter.cpp b/obj/APSysEmitter.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..323b8aa21f5b38857e9a570759db63676d761e8a
--- /dev/null
+++ b/obj/APSysEmitter.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "APSysEmitter.h"
+
+//Definition of TYPE constant
+const Type APSysEmitter::TYPE("APSysEmitter", &A_P_SYS_EMITTER_PARENT::TYPE );
+
+APSysEmitter::APSysEmitter() A_P_SYS_EMITTER_CONSTRUCT {}
+
+APSysEmitter::~APSysEmitter() {}
+
+void APSysEmitter::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	A_P_SYS_EMITTER_READ
+}
+
+void APSysEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	A_P_SYS_EMITTER_WRITE
+}
+
+string APSysEmitter::asString( bool verbose ) const {
+	A_P_SYS_EMITTER_STRING
+}
+
+void APSysEmitter::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	A_P_SYS_EMITTER_FIXLINKS
+}
+
diff --git a/obj/APSysEmitter.h b/obj/APSysEmitter.h
new file mode 100644
index 0000000000000000000000000000000000000000..191f63c340dead457c37477a2541db7f69de7d48
--- /dev/null
+++ b/obj/APSysEmitter.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _APSYSEMITTER_H_
+#define _APSYSEMITTER_H_
+
+#include "xml_extract.h"
+#include A_P_SYS_EMITTER_INCLUDE
+
+/*
+ * APSysEmitter
+ */
+
+class APSysEmitter;
+typedef Ref<APSysEmitter> APSysEmitterRef;
+
+class APSysEmitter : public A_P_SYS_EMITTER_PARENT {
+public:
+	APSysEmitter();
+	~APSysEmitter();
+	//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 );
+private:
+	A_P_SYS_EMITTER_MEMBERS
+};
+#endif
diff --git a/obj/APSysModifier.cpp b/obj/APSysModifier.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2f19652a0551304c96ad298b3c809cde6fffb109
--- /dev/null
+++ b/obj/APSysModifier.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "APSysModifier.h"
+
+//Definition of TYPE constant
+const Type APSysModifier::TYPE("APSysModifier", &A_P_SYS_MODIFIER_PARENT::TYPE );
+
+APSysModifier::APSysModifier() A_P_SYS_MODIFIER_CONSTRUCT {}
+
+APSysModifier::~APSysModifier() {}
+
+void APSysModifier::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	A_P_SYS_MODIFIER_READ
+}
+
+void APSysModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	A_P_SYS_MODIFIER_WRITE
+}
+
+string APSysModifier::asString( bool verbose ) const {
+	A_P_SYS_MODIFIER_STRING
+}
+
+void APSysModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	A_P_SYS_MODIFIER_FIXLINKS
+}
+
diff --git a/obj/APSysModifier.h b/obj/APSysModifier.h
new file mode 100644
index 0000000000000000000000000000000000000000..0f1699f3fec7842a8ef34e61bfb5655191adc8bb
--- /dev/null
+++ b/obj/APSysModifier.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _APSYSMODIFIER_H_
+#define _APSYSMODIFIER_H_
+
+#include "xml_extract.h"
+#include A_P_SYS_MODIFIER_INCLUDE
+
+/*
+ * APSysModifier
+ */
+
+class APSysModifier;
+typedef Ref<APSysModifier> APSysModifierRef;
+
+class APSysModifier : public A_P_SYS_MODIFIER_PARENT {
+public:
+	APSysModifier();
+	~APSysModifier();
+	//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 );
+private:
+	A_P_SYS_MODIFIER_MEMBERS
+};
+#endif
diff --git a/obj/APSysVolumeEmitter.cpp b/obj/APSysVolumeEmitter.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a6050267b9ecd921d49bfc3b9249df33bcc856db
--- /dev/null
+++ b/obj/APSysVolumeEmitter.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "APSysVolumeEmitter.h"
+
+//Definition of TYPE constant
+const Type APSysVolumeEmitter::TYPE("APSysVolumeEmitter", &A_P_SYS_VOLUME_EMITTER_PARENT::TYPE );
+
+APSysVolumeEmitter::APSysVolumeEmitter() A_P_SYS_VOLUME_EMITTER_CONSTRUCT {}
+
+APSysVolumeEmitter::~APSysVolumeEmitter() {}
+
+void APSysVolumeEmitter::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	A_P_SYS_VOLUME_EMITTER_READ
+}
+
+void APSysVolumeEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	A_P_SYS_VOLUME_EMITTER_WRITE
+}
+
+string APSysVolumeEmitter::asString( bool verbose ) const {
+	A_P_SYS_VOLUME_EMITTER_STRING
+}
+
+void APSysVolumeEmitter::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	A_P_SYS_VOLUME_EMITTER_FIXLINKS
+}
+
diff --git a/obj/APSysVolumeEmitter.h b/obj/APSysVolumeEmitter.h
new file mode 100644
index 0000000000000000000000000000000000000000..93862cf2d7021242ffdf23cdadcb236662c75e1c
--- /dev/null
+++ b/obj/APSysVolumeEmitter.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _APSYSVOLUMEEMITTER_H_
+#define _APSYSVOLUMEEMITTER_H_
+
+#include "xml_extract.h"
+#include A_P_SYS_VOLUME_EMITTER_INCLUDE
+
+/*
+ * APSysVolumeEmitter
+ */
+
+class APSysVolumeEmitter;
+typedef Ref<APSysVolumeEmitter> APSysVolumeEmitterRef;
+
+class APSysVolumeEmitter : public A_P_SYS_VOLUME_EMITTER_PARENT {
+public:
+	APSysVolumeEmitter();
+	~APSysVolumeEmitter();
+	//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 );
+private:
+	A_P_SYS_VOLUME_EMITTER_MEMBERS
+};
+#endif
diff --git a/obj/AParticleModifier.cpp b/obj/AParticleModifier.cpp
index 14845abaec0558f1f6eac20ab99a3faf55a23aff..6991be9e693313a638e49b7aced313ec9eba8c64 100644
--- a/obj/AParticleModifier.cpp
+++ b/obj/AParticleModifier.cpp
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #include "AParticleModifier.h"
 
 //Definition of TYPE constant
-const Type AParticleModifier::TYPE("AParticleModifier", &A_PARTICLE_MODIFIER_PARENTS::TYPE );
+const Type AParticleModifier::TYPE("AParticleModifier", &A_PARTICLE_MODIFIER_PARENT::TYPE );
 
 AParticleModifier::AParticleModifier() A_PARTICLE_MODIFIER_CONSTRUCT {}
 
diff --git a/obj/AParticleModifier.h b/obj/AParticleModifier.h
index 9c374db05bee655285ea7e1f04def9dc96ee92c9..7336ec022bdffb03fe675fa3c533b58a83054a7a 100644
--- a/obj/AParticleModifier.h
+++ b/obj/AParticleModifier.h
@@ -4,7 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #ifndef _APARTICLEMODIFIER_H_
 #define _APARTICLEMODIFIER_H_
 
-#include "NiObject.h"
+#include A_PARTICLE_MODIFIER_INCLUDE
 
 /*
  * AParticleModifier
@@ -13,7 +13,7 @@ All rights reserved.  Please see niflib.h for licence. */
 class AParticleModifier;
 typedef Ref<AParticleModifier> AParticleModifierRef;
 
-class AParticleModifier : public A_PARTICLE_MODIFIER_PARENTS {
+class AParticleModifier : public A_PARTICLE_MODIFIER_PARENT {
 public:
 	AParticleModifier();
 	~AParticleModifier();
diff --git a/obj/ASingleInterpolatorController.cpp b/obj/ASingleInterpolatorController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9e25990eb068aeb30093099abfa7e56488d1959a
--- /dev/null
+++ b/obj/ASingleInterpolatorController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "ASingleInterpolatorController.h"
+
+//Definition of TYPE constant
+const Type ASingleInterpolatorController::TYPE("ASingleInterpolatorController", &A_SINGLE_INTERPOLATOR_CONTROLLER_PARENT::TYPE );
+
+ASingleInterpolatorController::ASingleInterpolatorController() A_SINGLE_INTERPOLATOR_CONTROLLER_CONSTRUCT {}
+
+ASingleInterpolatorController::~ASingleInterpolatorController() {}
+
+void ASingleInterpolatorController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	A_SINGLE_INTERPOLATOR_CONTROLLER_READ
+}
+
+void ASingleInterpolatorController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	A_SINGLE_INTERPOLATOR_CONTROLLER_WRITE
+}
+
+string ASingleInterpolatorController::asString( bool verbose ) const {
+	A_SINGLE_INTERPOLATOR_CONTROLLER_STRING
+}
+
+void ASingleInterpolatorController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	A_SINGLE_INTERPOLATOR_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/ASingleInterpolatorController.h b/obj/ASingleInterpolatorController.h
new file mode 100644
index 0000000000000000000000000000000000000000..ea3617ec765c24e52a7b7091db9e978630114e4f
--- /dev/null
+++ b/obj/ASingleInterpolatorController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _ASINGLEINTERPOLATORCONTROLLER_H_
+#define _ASINGLEINTERPOLATORCONTROLLER_H_
+
+#include "xml_extract.h"
+#include A_SINGLE_INTERPOLATOR_CONTROLLER_INCLUDE
+
+/*
+ * ASingleInterpolatorController
+ */
+
+class ASingleInterpolatorController;
+typedef Ref<ASingleInterpolatorController> ASingleInterpolatorControllerRef;
+
+class ASingleInterpolatorController : public A_SINGLE_INTERPOLATOR_CONTROLLER_PARENT {
+public:
+	ASingleInterpolatorController();
+	~ASingleInterpolatorController();
+	//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 );
+private:
+	A_SINGLE_INTERPOLATOR_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/AbhkConstraint.cpp b/obj/AbhkConstraint.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..0c35f7378a78e40440efce7a16ca4f3d7fc19a7e
--- /dev/null
+++ b/obj/AbhkConstraint.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "AbhkConstraint.h"
+
+//Definition of TYPE constant
+const Type AbhkConstraint::TYPE("AbhkConstraint", &ABHK_CONSTRAINT_PARENT::TYPE );
+
+AbhkConstraint::AbhkConstraint() ABHK_CONSTRAINT_CONSTRUCT {}
+
+AbhkConstraint::~AbhkConstraint() {}
+
+void AbhkConstraint::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	ABHK_CONSTRAINT_READ
+}
+
+void AbhkConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	ABHK_CONSTRAINT_WRITE
+}
+
+string AbhkConstraint::asString( bool verbose ) const {
+	ABHK_CONSTRAINT_STRING
+}
+
+void AbhkConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	ABHK_CONSTRAINT_FIXLINKS
+}
+
diff --git a/obj/AbhkConstraint.h b/obj/AbhkConstraint.h
new file mode 100644
index 0000000000000000000000000000000000000000..0343c66963c4cffb0d937e9b9b1c560b07a61a4d
--- /dev/null
+++ b/obj/AbhkConstraint.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _ABHKCONSTRAINT_H_
+#define _ABHKCONSTRAINT_H_
+
+#include "xml_extract.h"
+#include ABHK_CONSTRAINT_INCLUDE
+
+/*
+ * AbhkConstraint
+ */
+
+class AbhkConstraint;
+typedef Ref<AbhkConstraint> AbhkConstraintRef;
+
+class AbhkConstraint : public ABHK_CONSTRAINT_PARENT {
+public:
+	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 );
+private:
+	ABHK_CONSTRAINT_MEMBERS
+};
+#endif
diff --git a/obj/AbhkRagdollConstraint.cpp b/obj/AbhkRagdollConstraint.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..22c866588f19ed2eb482e0e48b8970a5f641cef2
--- /dev/null
+++ b/obj/AbhkRagdollConstraint.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "AbhkRagdollConstraint.h"
+
+//Definition of TYPE constant
+const Type AbhkRagdollConstraint::TYPE("AbhkRagdollConstraint", &ABHK_RAGDOLL_CONSTRAINT_PARENT::TYPE );
+
+AbhkRagdollConstraint::AbhkRagdollConstraint() ABHK_RAGDOLL_CONSTRAINT_CONSTRUCT {}
+
+AbhkRagdollConstraint::~AbhkRagdollConstraint() {}
+
+void AbhkRagdollConstraint::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	ABHK_RAGDOLL_CONSTRAINT_READ
+}
+
+void AbhkRagdollConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	ABHK_RAGDOLL_CONSTRAINT_WRITE
+}
+
+string AbhkRagdollConstraint::asString( bool verbose ) const {
+	ABHK_RAGDOLL_CONSTRAINT_STRING
+}
+
+void AbhkRagdollConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	ABHK_RAGDOLL_CONSTRAINT_FIXLINKS
+}
+
diff --git a/obj/AbhkRagdollConstraint.h b/obj/AbhkRagdollConstraint.h
new file mode 100644
index 0000000000000000000000000000000000000000..df97b80e7fee64d86352be8b946d8144cf31388e
--- /dev/null
+++ b/obj/AbhkRagdollConstraint.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _ABHKRAGDOLLCONSTRAINT_H_
+#define _ABHKRAGDOLLCONSTRAINT_H_
+
+#include "xml_extract.h"
+#include ABHK_RAGDOLL_CONSTRAINT_INCLUDE
+
+/*
+ * AbhkRagdollConstraint
+ */
+
+class AbhkRagdollConstraint;
+typedef Ref<AbhkRagdollConstraint> AbhkRagdollConstraintRef;
+
+class AbhkRagdollConstraint : public ABHK_RAGDOLL_CONSTRAINT_PARENT {
+public:
+	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 );
+private:
+	ABHK_RAGDOLL_CONSTRAINT_MEMBERS
+};
+#endif
diff --git a/obj/AbhkShapeCollection.cpp b/obj/AbhkShapeCollection.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..bf1a61244a95187917e97661d9f77bc3cb564fb0
--- /dev/null
+++ b/obj/AbhkShapeCollection.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "AbhkShapeCollection.h"
+
+//Definition of TYPE constant
+const Type AbhkShapeCollection::TYPE("AbhkShapeCollection", &ABHK_SHAPE_COLLECTION_PARENT::TYPE );
+
+AbhkShapeCollection::AbhkShapeCollection() ABHK_SHAPE_COLLECTION_CONSTRUCT {}
+
+AbhkShapeCollection::~AbhkShapeCollection() {}
+
+void AbhkShapeCollection::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	ABHK_SHAPE_COLLECTION_READ
+}
+
+void AbhkShapeCollection::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	ABHK_SHAPE_COLLECTION_WRITE
+}
+
+string AbhkShapeCollection::asString( bool verbose ) const {
+	ABHK_SHAPE_COLLECTION_STRING
+}
+
+void AbhkShapeCollection::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	ABHK_SHAPE_COLLECTION_FIXLINKS
+}
+
diff --git a/obj/AbhkShapeCollection.h b/obj/AbhkShapeCollection.h
new file mode 100644
index 0000000000000000000000000000000000000000..82b4690c998c8a5b1c353eba9192d1fbc33034af
--- /dev/null
+++ b/obj/AbhkShapeCollection.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _ABHKSHAPECOLLECTION_H_
+#define _ABHKSHAPECOLLECTION_H_
+
+#include "xml_extract.h"
+#include ABHK_SHAPE_COLLECTION_INCLUDE
+
+/*
+ * AbhkShapeCollection
+ */
+
+class AbhkShapeCollection;
+typedef Ref<AbhkShapeCollection> AbhkShapeCollectionRef;
+
+class AbhkShapeCollection : public ABHK_SHAPE_COLLECTION_PARENT {
+public:
+	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 );
+private:
+	ABHK_SHAPE_COLLECTION_MEMBERS
+};
+#endif
diff --git a/obj/AvoidNode.cpp b/obj/AvoidNode.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5547abe01787641dfb5178f44e0a89ace9725b11
--- /dev/null
+++ b/obj/AvoidNode.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "AvoidNode.h"
+
+//Definition of TYPE constant
+const Type AvoidNode::TYPE("AvoidNode", &AVOID_NODE_PARENT::TYPE );
+
+AvoidNode::AvoidNode() AVOID_NODE_CONSTRUCT {}
+
+AvoidNode::~AvoidNode() {}
+
+void AvoidNode::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	AVOID_NODE_READ
+}
+
+void AvoidNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	AVOID_NODE_WRITE
+}
+
+string AvoidNode::asString( bool verbose ) const {
+	AVOID_NODE_STRING
+}
+
+void AvoidNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	AVOID_NODE_FIXLINKS
+}
+
diff --git a/obj/AvoidNode.h b/obj/AvoidNode.h
new file mode 100644
index 0000000000000000000000000000000000000000..8e38a7ec0e055764b2e237c4475973fed38a17bb
--- /dev/null
+++ b/obj/AvoidNode.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _AVOIDNODE_H_
+#define _AVOIDNODE_H_
+
+#include "xml_extract.h"
+#include AVOID_NODE_INCLUDE
+
+/*
+ * AvoidNode
+ */
+
+class AvoidNode;
+typedef Ref<AvoidNode> AvoidNodeRef;
+
+class AvoidNode : public AVOID_NODE_PARENT {
+public:
+	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 );
+private:
+	AVOID_NODE_MEMBERS
+};
+#endif
diff --git a/obj/BSBound.cpp b/obj/BSBound.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2282a5f89682ba653471265db63f35abfee88c91
--- /dev/null
+++ b/obj/BSBound.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "BSBound.h"
+
+//Definition of TYPE constant
+const Type BSBound::TYPE("BSBound", &B_S_BOUND_PARENT::TYPE );
+
+BSBound::BSBound() B_S_BOUND_CONSTRUCT {}
+
+BSBound::~BSBound() {}
+
+void BSBound::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	B_S_BOUND_READ
+}
+
+void BSBound::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	B_S_BOUND_WRITE
+}
+
+string BSBound::asString( bool verbose ) const {
+	B_S_BOUND_STRING
+}
+
+void BSBound::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	B_S_BOUND_FIXLINKS
+}
+
diff --git a/obj/BSBound.h b/obj/BSBound.h
new file mode 100644
index 0000000000000000000000000000000000000000..fcc1d2d29eb5fd3752edb3de9eef0ff4f088445c
--- /dev/null
+++ b/obj/BSBound.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BSBOUND_H_
+#define _BSBOUND_H_
+
+#include "xml_extract.h"
+#include B_S_BOUND_INCLUDE
+
+/*
+ * BSBound
+ */
+
+class BSBound;
+typedef Ref<BSBound> BSBoundRef;
+
+class BSBound : public B_S_BOUND_PARENT {
+public:
+	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 );
+private:
+	B_S_BOUND_MEMBERS
+};
+#endif
diff --git a/obj/BSFurnitureMarker.cpp b/obj/BSFurnitureMarker.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1db2b25321d3ba039d3aaf11a24f6a9ae3d05c9c
--- /dev/null
+++ b/obj/BSFurnitureMarker.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "BSFurnitureMarker.h"
+
+//Definition of TYPE constant
+const Type BSFurnitureMarker::TYPE("BSFurnitureMarker", &B_S_FURNITURE_MARKER_PARENT::TYPE );
+
+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
+}
+
+void BSFurnitureMarker::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	B_S_FURNITURE_MARKER_WRITE
+}
+
+string BSFurnitureMarker::asString( bool verbose ) const {
+	B_S_FURNITURE_MARKER_STRING
+}
+
+void BSFurnitureMarker::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	B_S_FURNITURE_MARKER_FIXLINKS
+}
+
diff --git a/obj/BSFurnitureMarker.h b/obj/BSFurnitureMarker.h
new file mode 100644
index 0000000000000000000000000000000000000000..bd01295b815ab878b95d7197d5275754f5a11074
--- /dev/null
+++ b/obj/BSFurnitureMarker.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BSFURNITUREMARKER_H_
+#define _BSFURNITUREMARKER_H_
+
+#include "xml_extract.h"
+#include B_S_FURNITURE_MARKER_INCLUDE
+
+/*
+ * BSFurnitureMarker
+ */
+
+class BSFurnitureMarker;
+typedef Ref<BSFurnitureMarker> BSFurnitureMarkerRef;
+
+class BSFurnitureMarker : public B_S_FURNITURE_MARKER_PARENT {
+public:
+	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 );
+private:
+	B_S_FURNITURE_MARKER_MEMBERS
+};
+#endif
diff --git a/obj/BSKeyframeController.cpp b/obj/BSKeyframeController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4a98587b456ab7f50caebc0d3b52f4adbef824da
--- /dev/null
+++ b/obj/BSKeyframeController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "BSKeyframeController.h"
+
+//Definition of TYPE constant
+const Type BSKeyframeController::TYPE("BSKeyframeController", &B_S_KEYFRAME_CONTROLLER_PARENT::TYPE );
+
+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
+}
+
+void BSKeyframeController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	B_S_KEYFRAME_CONTROLLER_WRITE
+}
+
+string BSKeyframeController::asString( bool verbose ) const {
+	B_S_KEYFRAME_CONTROLLER_STRING
+}
+
+void BSKeyframeController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	B_S_KEYFRAME_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/BSKeyframeController.h b/obj/BSKeyframeController.h
new file mode 100644
index 0000000000000000000000000000000000000000..88b80a7d6ee3c9c07446d1cd1b67d4a8ab706c4d
--- /dev/null
+++ b/obj/BSKeyframeController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BSKEYFRAMECONTROLLER_H_
+#define _BSKEYFRAMECONTROLLER_H_
+
+#include "xml_extract.h"
+#include B_S_KEYFRAME_CONTROLLER_INCLUDE
+
+/*
+ * BSKeyframeController
+ */
+
+class BSKeyframeController;
+typedef Ref<BSKeyframeController> BSKeyframeControllerRef;
+
+class BSKeyframeController : public B_S_KEYFRAME_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	B_S_KEYFRAME_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/BSPSysArrayEmitter.cpp b/obj/BSPSysArrayEmitter.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..13cf57e3e86ca2020bc9c2b3d7b3c1beb9acefd2
--- /dev/null
+++ b/obj/BSPSysArrayEmitter.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "BSPSysArrayEmitter.h"
+
+//Definition of TYPE constant
+const Type BSPSysArrayEmitter::TYPE("BSPSysArrayEmitter", &B_S_P_SYS_ARRAY_EMITTER_PARENT::TYPE );
+
+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
+}
+
+void BSPSysArrayEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	B_S_P_SYS_ARRAY_EMITTER_WRITE
+}
+
+string BSPSysArrayEmitter::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/BSPSysArrayEmitter.h b/obj/BSPSysArrayEmitter.h
new file mode 100644
index 0000000000000000000000000000000000000000..7c2d44b2844cee1cd89f160bb981369c24e8ffd7
--- /dev/null
+++ b/obj/BSPSysArrayEmitter.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BSPSYSARRAYEMITTER_H_
+#define _BSPSYSARRAYEMITTER_H_
+
+#include "xml_extract.h"
+#include B_S_P_SYS_ARRAY_EMITTER_INCLUDE
+
+/*
+ * BSPSysArrayEmitter
+ */
+
+class BSPSysArrayEmitter;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/BSParentVelocityModifier.cpp b/obj/BSParentVelocityModifier.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..98f7bdcb62dc3bf27cb7d4d8378e3ab2e16e744e
--- /dev/null
+++ b/obj/BSParentVelocityModifier.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "BSParentVelocityModifier.h"
+
+//Definition of TYPE constant
+const Type BSParentVelocityModifier::TYPE("BSParentVelocityModifier", &B_S_PARENT_VELOCITY_MODIFIER_PARENT::TYPE );
+
+BSParentVelocityModifier::BSParentVelocityModifier() B_S_PARENT_VELOCITY_MODIFIER_CONSTRUCT {}
+
+BSParentVelocityModifier::~BSParentVelocityModifier() {}
+
+void BSParentVelocityModifier::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string BSParentVelocityModifier::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/BSParentVelocityModifier.h b/obj/BSParentVelocityModifier.h
new file mode 100644
index 0000000000000000000000000000000000000000..9ae14906dde678a7d64d4f3cfe89fb971ebbcc7d
--- /dev/null
+++ b/obj/BSParentVelocityModifier.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BSPARENTVELOCITYMODIFIER_H_
+#define _BSPARENTVELOCITYMODIFIER_H_
+
+#include "xml_extract.h"
+#include B_S_PARENT_VELOCITY_MODIFIER_INCLUDE
+
+/*
+ * BSParentVelocityModifier
+ */
+
+class BSParentVelocityModifier;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/BSXFlags.cpp b/obj/BSXFlags.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..29f7c4c4c1c79c3599e95de7f66b026d2608ed9b
--- /dev/null
+++ b/obj/BSXFlags.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "BSXFlags.h"
+
+//Definition of TYPE constant
+const Type BSXFlags::TYPE("BSXFlags", &B_S_X_FLAGS_PARENT::TYPE );
+
+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
+}
+
+void BSXFlags::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	B_S_X_FLAGS_WRITE
+}
+
+string BSXFlags::asString( bool verbose ) const {
+	B_S_X_FLAGS_STRING
+}
+
+void BSXFlags::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	B_S_X_FLAGS_FIXLINKS
+}
+
diff --git a/obj/BSXFlags.h b/obj/BSXFlags.h
new file mode 100644
index 0000000000000000000000000000000000000000..24a78ad79aa5202533bbf89b23123fc2395ae15d
--- /dev/null
+++ b/obj/BSXFlags.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BSXFLAGS_H_
+#define _BSXFLAGS_H_
+
+#include "xml_extract.h"
+#include B_S_X_FLAGS_INCLUDE
+
+/*
+ * BSXFlags
+ */
+
+class BSXFlags;
+typedef Ref<BSXFlags> BSXFlagsRef;
+
+class BSXFlags : public B_S_X_FLAGS_PARENT {
+public:
+	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 );
+private:
+	B_S_X_FLAGS_MEMBERS
+};
+#endif
diff --git a/obj/FxButton.cpp b/obj/FxButton.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..81cd656ebc4f3f36eca506204329597ecad253ab
--- /dev/null
+++ b/obj/FxButton.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "FxButton.h"
+
+//Definition of TYPE constant
+const Type FxButton::TYPE("FxButton", &FX_BUTTON_PARENT::TYPE );
+
+FxButton::FxButton() FX_BUTTON_CONSTRUCT {}
+
+FxButton::~FxButton() {}
+
+void FxButton::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	FX_BUTTON_READ
+}
+
+void FxButton::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	FX_BUTTON_WRITE
+}
+
+string FxButton::asString( bool verbose ) const {
+	FX_BUTTON_STRING
+}
+
+void FxButton::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	FX_BUTTON_FIXLINKS
+}
+
diff --git a/obj/FxButton.h b/obj/FxButton.h
new file mode 100644
index 0000000000000000000000000000000000000000..cbbeaf19dbe2af70fa0fa2a130cea08f3ccba5b5
--- /dev/null
+++ b/obj/FxButton.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _FXBUTTON_H_
+#define _FXBUTTON_H_
+
+#include "xml_extract.h"
+#include FX_BUTTON_INCLUDE
+
+/*
+ * FxButton
+ */
+
+class FxButton;
+typedef Ref<FxButton> FxButtonRef;
+
+class FxButton : public FX_BUTTON_PARENT {
+public:
+	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 );
+private:
+	FX_BUTTON_MEMBERS
+};
+#endif
diff --git a/obj/FxRadioButton.cpp b/obj/FxRadioButton.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b94dd648b2881ebbb02845c0bea802995683f1ce
--- /dev/null
+++ b/obj/FxRadioButton.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "FxRadioButton.h"
+
+//Definition of TYPE constant
+const Type FxRadioButton::TYPE("FxRadioButton", &FX_RADIO_BUTTON_PARENT::TYPE );
+
+FxRadioButton::FxRadioButton() FX_RADIO_BUTTON_CONSTRUCT {}
+
+FxRadioButton::~FxRadioButton() {}
+
+void FxRadioButton::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	FX_RADIO_BUTTON_READ
+}
+
+void FxRadioButton::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	FX_RADIO_BUTTON_WRITE
+}
+
+string FxRadioButton::asString( bool verbose ) const {
+	FX_RADIO_BUTTON_STRING
+}
+
+void FxRadioButton::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	FX_RADIO_BUTTON_FIXLINKS
+}
+
diff --git a/obj/FxRadioButton.h b/obj/FxRadioButton.h
new file mode 100644
index 0000000000000000000000000000000000000000..cd59ab39ca7229901df0affbfe882e7ca8840003
--- /dev/null
+++ b/obj/FxRadioButton.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _FXRADIOBUTTON_H_
+#define _FXRADIOBUTTON_H_
+
+#include "xml_extract.h"
+#include FX_RADIO_BUTTON_INCLUDE
+
+/*
+ * FxRadioButton
+ */
+
+class FxRadioButton;
+typedef Ref<FxRadioButton> FxRadioButtonRef;
+
+class FxRadioButton : public FX_RADIO_BUTTON_PARENT {
+public:
+	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 );
+private:
+	FX_RADIO_BUTTON_MEMBERS
+};
+#endif
diff --git a/obj/FxWidget.cpp b/obj/FxWidget.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1a5b21f67375c8b257d861c5c872b3a0fe22c127
--- /dev/null
+++ b/obj/FxWidget.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "FxWidget.h"
+
+//Definition of TYPE constant
+const Type FxWidget::TYPE("FxWidget", &FX_WIDGET_PARENT::TYPE );
+
+FxWidget::FxWidget() FX_WIDGET_CONSTRUCT {}
+
+FxWidget::~FxWidget() {}
+
+void FxWidget::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	FX_WIDGET_READ
+}
+
+void FxWidget::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	FX_WIDGET_WRITE
+}
+
+string FxWidget::asString( bool verbose ) const {
+	FX_WIDGET_STRING
+}
+
+void FxWidget::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	FX_WIDGET_FIXLINKS
+}
+
diff --git a/obj/FxWidget.h b/obj/FxWidget.h
new file mode 100644
index 0000000000000000000000000000000000000000..1deb5b60f82c665fd676a81ad00ff44636970edf
--- /dev/null
+++ b/obj/FxWidget.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _FXWIDGET_H_
+#define _FXWIDGET_H_
+
+#include "xml_extract.h"
+#include FX_WIDGET_INCLUDE
+
+/*
+ * FxWidget
+ */
+
+class FxWidget;
+typedef Ref<FxWidget> FxWidgetRef;
+
+class FxWidget : public FX_WIDGET_PARENT {
+public:
+	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 );
+private:
+	FX_WIDGET_MEMBERS
+};
+#endif
diff --git a/obj/NiAlphaController.cpp b/obj/NiAlphaController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3a5a931f9dcc48bf9ecdee4ddc36b03f4c4370c6
--- /dev/null
+++ b/obj/NiAlphaController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiAlphaController.h"
+
+//Definition of TYPE constant
+const Type NiAlphaController::TYPE("NiAlphaController", &NI_ALPHA_CONTROLLER_PARENT::TYPE );
+
+NiAlphaController::NiAlphaController() NI_ALPHA_CONTROLLER_CONSTRUCT {}
+
+NiAlphaController::~NiAlphaController() {}
+
+void NiAlphaController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_ALPHA_CONTROLLER_READ
+}
+
+void NiAlphaController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_ALPHA_CONTROLLER_WRITE
+}
+
+string NiAlphaController::asString( bool verbose ) const {
+	NI_ALPHA_CONTROLLER_STRING
+}
+
+void NiAlphaController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_ALPHA_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/NiAlphaController.h b/obj/NiAlphaController.h
new file mode 100644
index 0000000000000000000000000000000000000000..7d3bdd8fcdcfc9fb5859fa3601bb0d759fa1924e
--- /dev/null
+++ b/obj/NiAlphaController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIALPHACONTROLLER_H_
+#define _NIALPHACONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_ALPHA_CONTROLLER_INCLUDE
+
+/*
+ * NiAlphaController
+ */
+
+class NiAlphaController;
+typedef Ref<NiAlphaController> NiAlphaControllerRef;
+
+class NiAlphaController : public NI_ALPHA_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	NI_ALPHA_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/NiAlphaProperty.cpp b/obj/NiAlphaProperty.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..11875724e9d03cda6e69ad3288455b4b3fddac5e
--- /dev/null
+++ b/obj/NiAlphaProperty.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiAlphaProperty.h"
+
+//Definition of TYPE constant
+const Type NiAlphaProperty::TYPE("NiAlphaProperty", &NI_ALPHA_PROPERTY_PARENT::TYPE );
+
+NiAlphaProperty::NiAlphaProperty() NI_ALPHA_PROPERTY_CONSTRUCT {}
+
+NiAlphaProperty::~NiAlphaProperty() {}
+
+void NiAlphaProperty::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_ALPHA_PROPERTY_READ
+}
+
+void NiAlphaProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_ALPHA_PROPERTY_WRITE
+}
+
+string NiAlphaProperty::asString( bool verbose ) const {
+	NI_ALPHA_PROPERTY_STRING
+}
+
+void NiAlphaProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_ALPHA_PROPERTY_FIXLINKS
+}
+
diff --git a/obj/NiAlphaProperty.h b/obj/NiAlphaProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..4fa3b556d850b1d484a58d9ac8cce77c36dd63cd
--- /dev/null
+++ b/obj/NiAlphaProperty.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIALPHAPROPERTY_H_
+#define _NIALPHAPROPERTY_H_
+
+#include "xml_extract.h"
+#include NI_ALPHA_PROPERTY_INCLUDE
+
+/*
+ * NiAlphaProperty
+ */
+
+class NiAlphaProperty;
+typedef Ref<NiAlphaProperty> NiAlphaPropertyRef;
+
+class NiAlphaProperty : public NI_ALPHA_PROPERTY_PARENT {
+public:
+	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 );
+private:
+	NI_ALPHA_PROPERTY_MEMBERS
+};
+#endif
diff --git a/obj/NiAmbientLight.cpp b/obj/NiAmbientLight.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e2cb253281770dd0104e5566b19af839b171e856
--- /dev/null
+++ b/obj/NiAmbientLight.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiAmbientLight.h"
+
+//Definition of TYPE constant
+const Type NiAmbientLight::TYPE("NiAmbientLight", &NI_AMBIENT_LIGHT_PARENT::TYPE );
+
+NiAmbientLight::NiAmbientLight() NI_AMBIENT_LIGHT_CONSTRUCT {}
+
+NiAmbientLight::~NiAmbientLight() {}
+
+void NiAmbientLight::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_AMBIENT_LIGHT_READ
+}
+
+void NiAmbientLight::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_AMBIENT_LIGHT_WRITE
+}
+
+string NiAmbientLight::asString( bool verbose ) const {
+	NI_AMBIENT_LIGHT_STRING
+}
+
+void NiAmbientLight::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_AMBIENT_LIGHT_FIXLINKS
+}
+
diff --git a/obj/NiAmbientLight.h b/obj/NiAmbientLight.h
new file mode 100644
index 0000000000000000000000000000000000000000..c64e4f69906074d4f0d20fb199fbf216cd531e16
--- /dev/null
+++ b/obj/NiAmbientLight.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIAMBIENTLIGHT_H_
+#define _NIAMBIENTLIGHT_H_
+
+#include "xml_extract.h"
+#include NI_AMBIENT_LIGHT_INCLUDE
+
+/*
+ * NiAmbientLight
+ */
+
+class NiAmbientLight;
+typedef Ref<NiAmbientLight> NiAmbientLightRef;
+
+class NiAmbientLight : public NI_AMBIENT_LIGHT_PARENT {
+public:
+	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 );
+private:
+	NI_AMBIENT_LIGHT_MEMBERS
+};
+#endif
diff --git a/obj/NiAutoNormalParticles.cpp b/obj/NiAutoNormalParticles.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9a3371118d1c0a9fe5b29b3dda2454b77d43de41
--- /dev/null
+++ b/obj/NiAutoNormalParticles.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiAutoNormalParticles.h"
+
+//Definition of TYPE constant
+const Type NiAutoNormalParticles::TYPE("NiAutoNormalParticles", &NI_AUTO_NORMAL_PARTICLES_PARENT::TYPE );
+
+NiAutoNormalParticles::NiAutoNormalParticles() NI_AUTO_NORMAL_PARTICLES_CONSTRUCT {}
+
+NiAutoNormalParticles::~NiAutoNormalParticles() {}
+
+void NiAutoNormalParticles::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_AUTO_NORMAL_PARTICLES_READ
+}
+
+void NiAutoNormalParticles::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_AUTO_NORMAL_PARTICLES_WRITE
+}
+
+string NiAutoNormalParticles::asString( bool verbose ) const {
+	NI_AUTO_NORMAL_PARTICLES_STRING
+}
+
+void NiAutoNormalParticles::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_AUTO_NORMAL_PARTICLES_FIXLINKS
+}
+
diff --git a/obj/NiAutoNormalParticles.h b/obj/NiAutoNormalParticles.h
new file mode 100644
index 0000000000000000000000000000000000000000..544b3e164c6890b5b18d097f78ab7ab446aa2781
--- /dev/null
+++ b/obj/NiAutoNormalParticles.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIAUTONORMALPARTICLES_H_
+#define _NIAUTONORMALPARTICLES_H_
+
+#include "xml_extract.h"
+#include NI_AUTO_NORMAL_PARTICLES_INCLUDE
+
+/*
+ * NiAutoNormalParticles
+ */
+
+class NiAutoNormalParticles;
+typedef Ref<NiAutoNormalParticles> NiAutoNormalParticlesRef;
+
+class NiAutoNormalParticles : public NI_AUTO_NORMAL_PARTICLES_PARENT {
+public:
+	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 );
+private:
+	NI_AUTO_NORMAL_PARTICLES_MEMBERS
+};
+#endif
diff --git a/obj/NiAutoNormalParticlesData.cpp b/obj/NiAutoNormalParticlesData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..92991d1dfd5c30fa52d833091ed4be1c9381b999
--- /dev/null
+++ b/obj/NiAutoNormalParticlesData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiAutoNormalParticlesData.h"
+
+//Definition of TYPE constant
+const Type NiAutoNormalParticlesData::TYPE("NiAutoNormalParticlesData", &NI_AUTO_NORMAL_PARTICLES_DATA_PARENT::TYPE );
+
+NiAutoNormalParticlesData::NiAutoNormalParticlesData() NI_AUTO_NORMAL_PARTICLES_DATA_CONSTRUCT {}
+
+NiAutoNormalParticlesData::~NiAutoNormalParticlesData() {}
+
+void NiAutoNormalParticlesData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiAutoNormalParticlesData::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiAutoNormalParticlesData.h b/obj/NiAutoNormalParticlesData.h
new file mode 100644
index 0000000000000000000000000000000000000000..afb2c63183b35a8be6cf4def051fcaff4caa71bb
--- /dev/null
+++ b/obj/NiAutoNormalParticlesData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIAUTONORMALPARTICLESDATA_H_
+#define _NIAUTONORMALPARTICLESDATA_H_
+
+#include "xml_extract.h"
+#include NI_AUTO_NORMAL_PARTICLES_DATA_INCLUDE
+
+/*
+ * NiAutoNormalParticlesData
+ */
+
+class NiAutoNormalParticlesData;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiBSAnimationNode.cpp b/obj/NiBSAnimationNode.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8a95334ace8a2c013c412b73739d9b76f605a947
--- /dev/null
+++ b/obj/NiBSAnimationNode.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBSAnimationNode.h"
+
+//Definition of TYPE constant
+const Type NiBSAnimationNode::TYPE("NiBSAnimationNode", &NI_B_S_ANIMATION_NODE_PARENT::TYPE );
+
+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
+}
+
+void NiBSAnimationNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_B_S_ANIMATION_NODE_WRITE
+}
+
+string NiBSAnimationNode::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiBSAnimationNode.h b/obj/NiBSAnimationNode.h
new file mode 100644
index 0000000000000000000000000000000000000000..a6635378e30256a326240655f5715ac7f645d596
--- /dev/null
+++ b/obj/NiBSAnimationNode.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBSANIMATIONNODE_H_
+#define _NIBSANIMATIONNODE_H_
+
+#include "xml_extract.h"
+#include NI_B_S_ANIMATION_NODE_INCLUDE
+
+/*
+ * NiBSAnimationNode
+ */
+
+class NiBSAnimationNode;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiBSBoneLODController.cpp b/obj/NiBSBoneLODController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..15523cffd52f34ef74f65c6907c5c207bbdef68f
--- /dev/null
+++ b/obj/NiBSBoneLODController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBSBoneLODController.h"
+
+//Definition of TYPE constant
+const Type NiBSBoneLODController::TYPE("NiBSBoneLODController", &NI_B_S_BONE_L_O_D_CONTROLLER_PARENT::TYPE );
+
+NiBSBoneLODController::NiBSBoneLODController() NI_B_S_BONE_L_O_D_CONTROLLER_CONSTRUCT {}
+
+NiBSBoneLODController::~NiBSBoneLODController() {}
+
+void NiBSBoneLODController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiBSBoneLODController::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiBSBoneLODController.h b/obj/NiBSBoneLODController.h
new file mode 100644
index 0000000000000000000000000000000000000000..e3f2b39be0267e259719d19e540d63096ed13cba
--- /dev/null
+++ b/obj/NiBSBoneLODController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBSBONELODCONTROLLER_H_
+#define _NIBSBONELODCONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_B_S_BONE_L_O_D_CONTROLLER_INCLUDE
+
+/*
+ * NiBSBoneLODController
+ */
+
+class NiBSBoneLODController;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiBSPArrayController.cpp b/obj/NiBSPArrayController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e726b2080b3a57056f878e7eaf5dcfa9f3ffb860
--- /dev/null
+++ b/obj/NiBSPArrayController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBSPArrayController.h"
+
+//Definition of TYPE constant
+const Type NiBSPArrayController::TYPE("NiBSPArrayController", &NI_B_S_P_ARRAY_CONTROLLER_PARENT::TYPE );
+
+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
+}
+
+void NiBSPArrayController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_B_S_P_ARRAY_CONTROLLER_WRITE
+}
+
+string NiBSPArrayController::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiBSPArrayController.h b/obj/NiBSPArrayController.h
new file mode 100644
index 0000000000000000000000000000000000000000..3d62a36cb14d99168c208b6525efbdbc9851db68
--- /dev/null
+++ b/obj/NiBSPArrayController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBSPARRAYCONTROLLER_H_
+#define _NIBSPARRAYCONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_B_S_P_ARRAY_CONTROLLER_INCLUDE
+
+/*
+ * NiBSPArrayController
+ */
+
+class NiBSPArrayController;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiBSParticleNode.cpp b/obj/NiBSParticleNode.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3b41cc3862ba004d20726e74f512448ae36f02c7
--- /dev/null
+++ b/obj/NiBSParticleNode.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBSParticleNode.h"
+
+//Definition of TYPE constant
+const Type NiBSParticleNode::TYPE("NiBSParticleNode", &NI_B_S_PARTICLE_NODE_PARENT::TYPE );
+
+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
+}
+
+void NiBSParticleNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_B_S_PARTICLE_NODE_WRITE
+}
+
+string NiBSParticleNode::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiBSParticleNode.h b/obj/NiBSParticleNode.h
new file mode 100644
index 0000000000000000000000000000000000000000..6a20745376933d8bbc8b2206d5b1764356f4359b
--- /dev/null
+++ b/obj/NiBSParticleNode.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBSPARTICLENODE_H_
+#define _NIBSPARTICLENODE_H_
+
+#include "xml_extract.h"
+#include NI_B_S_PARTICLE_NODE_INCLUDE
+
+/*
+ * NiBSParticleNode
+ */
+
+class NiBSParticleNode;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiBSplineBasisData.cpp b/obj/NiBSplineBasisData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a48c69f400d03b2ca0051f32cec455539410dd7d
--- /dev/null
+++ b/obj/NiBSplineBasisData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBSplineBasisData.h"
+
+//Definition of TYPE constant
+const Type NiBSplineBasisData::TYPE("NiBSplineBasisData", &NI_B_SPLINE_BASIS_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiBSplineBasisData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_B_SPLINE_BASIS_DATA_WRITE
+}
+
+string NiBSplineBasisData::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiBSplineBasisData.h b/obj/NiBSplineBasisData.h
new file mode 100644
index 0000000000000000000000000000000000000000..fc8af33ab2b9be73e7b12b3bab30e82e243d7598
--- /dev/null
+++ b/obj/NiBSplineBasisData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBSPLINEBASISDATA_H_
+#define _NIBSPLINEBASISDATA_H_
+
+#include "xml_extract.h"
+#include NI_B_SPLINE_BASIS_DATA_INCLUDE
+
+/*
+ * NiBSplineBasisData
+ */
+
+class NiBSplineBasisData;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiBSplineCompFloatInterpolator.cpp b/obj/NiBSplineCompFloatInterpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1680167ed0cb108a018bf5136b970b651edcd5d2
--- /dev/null
+++ b/obj/NiBSplineCompFloatInterpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBSplineCompFloatInterpolator.h"
+
+//Definition of TYPE constant
+const Type NiBSplineCompFloatInterpolator::TYPE("NiBSplineCompFloatInterpolator", &NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_PARENT::TYPE );
+
+NiBSplineCompFloatInterpolator::NiBSplineCompFloatInterpolator() NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_CONSTRUCT {}
+
+NiBSplineCompFloatInterpolator::~NiBSplineCompFloatInterpolator() {}
+
+void NiBSplineCompFloatInterpolator::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiBSplineCompFloatInterpolator::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiBSplineCompFloatInterpolator.h b/obj/NiBSplineCompFloatInterpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..6d05a390dced80d2509e0604ed1c8a5836677fa1
--- /dev/null
+++ b/obj/NiBSplineCompFloatInterpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBSPLINECOMPFLOATINTERPOLATOR_H_
+#define _NIBSPLINECOMPFLOATINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_INCLUDE
+
+/*
+ * NiBSplineCompFloatInterpolator
+ */
+
+class NiBSplineCompFloatInterpolator;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiBSplineCompPoint3Interpolator.cpp b/obj/NiBSplineCompPoint3Interpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8e740e349b8c6d72a14de790d3f741d82c2ef7c5
--- /dev/null
+++ b/obj/NiBSplineCompPoint3Interpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBSplineCompPoint3Interpolator.h"
+
+//Definition of TYPE constant
+const Type NiBSplineCompPoint3Interpolator::TYPE("NiBSplineCompPoint3Interpolator", &NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENT::TYPE );
+
+NiBSplineCompPoint3Interpolator::NiBSplineCompPoint3Interpolator() NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_CONSTRUCT {}
+
+NiBSplineCompPoint3Interpolator::~NiBSplineCompPoint3Interpolator() {}
+
+void NiBSplineCompPoint3Interpolator::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiBSplineCompPoint3Interpolator::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiBSplineCompPoint3Interpolator.h b/obj/NiBSplineCompPoint3Interpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..f3588793f4ec8a4e5c775fcf26505c5e20da5b7f
--- /dev/null
+++ b/obj/NiBSplineCompPoint3Interpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBSPLINECOMPPOINT3INTERPOLATOR_H_
+#define _NIBSPLINECOMPPOINT3INTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_INCLUDE
+
+/*
+ * NiBSplineCompPoint3Interpolator
+ */
+
+class NiBSplineCompPoint3Interpolator;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiBSplineCompTransformInterpolator.cpp b/obj/NiBSplineCompTransformInterpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3762f645d6f90c7303bcf8d90c4cb12e8d155fcf
--- /dev/null
+++ b/obj/NiBSplineCompTransformInterpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBSplineCompTransformInterpolator.h"
+
+//Definition of TYPE constant
+const Type NiBSplineCompTransformInterpolator::TYPE("NiBSplineCompTransformInterpolator", &NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_PARENT::TYPE );
+
+NiBSplineCompTransformInterpolator::NiBSplineCompTransformInterpolator() NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_CONSTRUCT {}
+
+NiBSplineCompTransformInterpolator::~NiBSplineCompTransformInterpolator() {}
+
+void NiBSplineCompTransformInterpolator::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiBSplineCompTransformInterpolator::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiBSplineCompTransformInterpolator.h b/obj/NiBSplineCompTransformInterpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..f6da6174efe950939ce2d2ee3c55b01637ddfee3
--- /dev/null
+++ b/obj/NiBSplineCompTransformInterpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBSPLINECOMPTRANSFORMINTERPOLATOR_H_
+#define _NIBSPLINECOMPTRANSFORMINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_INCLUDE
+
+/*
+ * NiBSplineCompTransformInterpolator
+ */
+
+class NiBSplineCompTransformInterpolator;
+typedef Ref<NiBSplineCompTransformInterpolator> NiBSplineCompTransformInterpolatorRef;
+
+class NiBSplineCompTransformInterpolator : public NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_PARENT {
+public:
+	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 );
+private:
+	NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_MEMBERS
+};
+#endif
diff --git a/obj/NiBSplineData.cpp b/obj/NiBSplineData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..664e4cc63f467be223b573f791524b3914ff3a11
--- /dev/null
+++ b/obj/NiBSplineData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBSplineData.h"
+
+//Definition of TYPE constant
+const Type NiBSplineData::TYPE("NiBSplineData", &NI_B_SPLINE_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiBSplineData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_B_SPLINE_DATA_WRITE
+}
+
+string NiBSplineData::asString( bool verbose ) const {
+	NI_B_SPLINE_DATA_STRING
+}
+
+void NiBSplineData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_B_SPLINE_DATA_FIXLINKS
+}
+
diff --git a/obj/NiBSplineData.h b/obj/NiBSplineData.h
new file mode 100644
index 0000000000000000000000000000000000000000..0dded780a84da4c293d540bcd8506b81eacef76f
--- /dev/null
+++ b/obj/NiBSplineData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBSPLINEDATA_H_
+#define _NIBSPLINEDATA_H_
+
+#include "xml_extract.h"
+#include NI_B_SPLINE_DATA_INCLUDE
+
+/*
+ * NiBSplineData
+ */
+
+class NiBSplineData;
+typedef Ref<NiBSplineData> NiBSplineDataRef;
+
+class NiBSplineData : public NI_B_SPLINE_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_B_SPLINE_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiBillboardNode.cpp b/obj/NiBillboardNode.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..bf3fc1f4da3d033fe95d39ea4df5f066eae077a5
--- /dev/null
+++ b/obj/NiBillboardNode.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBillboardNode.h"
+
+//Definition of TYPE constant
+const Type NiBillboardNode::TYPE("NiBillboardNode", &NI_BILLBOARD_NODE_PARENT::TYPE );
+
+NiBillboardNode::NiBillboardNode() NI_BILLBOARD_NODE_CONSTRUCT {}
+
+NiBillboardNode::~NiBillboardNode() {}
+
+void NiBillboardNode::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_BILLBOARD_NODE_READ
+}
+
+void NiBillboardNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_BILLBOARD_NODE_WRITE
+}
+
+string NiBillboardNode::asString( bool verbose ) const {
+	NI_BILLBOARD_NODE_STRING
+}
+
+void NiBillboardNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_BILLBOARD_NODE_FIXLINKS
+}
+
diff --git a/obj/NiBillboardNode.h b/obj/NiBillboardNode.h
new file mode 100644
index 0000000000000000000000000000000000000000..f089c5d52f6ad1c4a14b100c57fd39a69b46ff5a
--- /dev/null
+++ b/obj/NiBillboardNode.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBILLBOARDNODE_H_
+#define _NIBILLBOARDNODE_H_
+
+#include "xml_extract.h"
+#include NI_BILLBOARD_NODE_INCLUDE
+
+/*
+ * NiBillboardNode
+ */
+
+class NiBillboardNode;
+typedef Ref<NiBillboardNode> NiBillboardNodeRef;
+
+class NiBillboardNode : public NI_BILLBOARD_NODE_PARENT {
+public:
+	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 );
+private:
+	NI_BILLBOARD_NODE_MEMBERS
+};
+#endif
diff --git a/obj/NiBinaryExtraData.cpp b/obj/NiBinaryExtraData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..37277b0ce9903ff56057bd996b7bf329c789d2fa
--- /dev/null
+++ b/obj/NiBinaryExtraData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBinaryExtraData.h"
+
+//Definition of TYPE constant
+const Type NiBinaryExtraData::TYPE("NiBinaryExtraData", &NI_BINARY_EXTRA_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiBinaryExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_BINARY_EXTRA_DATA_WRITE
+}
+
+string NiBinaryExtraData::asString( bool verbose ) const {
+	NI_BINARY_EXTRA_DATA_STRING
+}
+
+void NiBinaryExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_BINARY_EXTRA_DATA_FIXLINKS
+}
+
diff --git a/obj/NiBinaryExtraData.h b/obj/NiBinaryExtraData.h
new file mode 100644
index 0000000000000000000000000000000000000000..e19bf24abf5c166b0314ffa8121500b5afc66057
--- /dev/null
+++ b/obj/NiBinaryExtraData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBINARYEXTRADATA_H_
+#define _NIBINARYEXTRADATA_H_
+
+#include "xml_extract.h"
+#include NI_BINARY_EXTRA_DATA_INCLUDE
+
+/*
+ * NiBinaryExtraData
+ */
+
+class NiBinaryExtraData;
+typedef Ref<NiBinaryExtraData> NiBinaryExtraDataRef;
+
+class NiBinaryExtraData : public NI_BINARY_EXTRA_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_BINARY_EXTRA_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiBlendBoolInterpolator.cpp b/obj/NiBlendBoolInterpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..97db49b88785e374e07b56e5ef53aa915bc875f1
--- /dev/null
+++ b/obj/NiBlendBoolInterpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBlendBoolInterpolator.h"
+
+//Definition of TYPE constant
+const Type NiBlendBoolInterpolator::TYPE("NiBlendBoolInterpolator", &NI_BLEND_BOOL_INTERPOLATOR_PARENT::TYPE );
+
+NiBlendBoolInterpolator::NiBlendBoolInterpolator() NI_BLEND_BOOL_INTERPOLATOR_CONSTRUCT {}
+
+NiBlendBoolInterpolator::~NiBlendBoolInterpolator() {}
+
+void NiBlendBoolInterpolator::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_BLEND_BOOL_INTERPOLATOR_READ
+}
+
+void NiBlendBoolInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_BLEND_BOOL_INTERPOLATOR_WRITE
+}
+
+string NiBlendBoolInterpolator::asString( bool verbose ) const {
+	NI_BLEND_BOOL_INTERPOLATOR_STRING
+}
+
+void NiBlendBoolInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_BLEND_BOOL_INTERPOLATOR_FIXLINKS
+}
+
diff --git a/obj/NiBlendBoolInterpolator.h b/obj/NiBlendBoolInterpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..d8415a49632cab22c75cf16ecebed9035499a88e
--- /dev/null
+++ b/obj/NiBlendBoolInterpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBLENDBOOLINTERPOLATOR_H_
+#define _NIBLENDBOOLINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_BLEND_BOOL_INTERPOLATOR_INCLUDE
+
+/*
+ * NiBlendBoolInterpolator
+ */
+
+class NiBlendBoolInterpolator;
+typedef Ref<NiBlendBoolInterpolator> NiBlendBoolInterpolatorRef;
+
+class NiBlendBoolInterpolator : public NI_BLEND_BOOL_INTERPOLATOR_PARENT {
+public:
+	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 );
+private:
+	NI_BLEND_BOOL_INTERPOLATOR_MEMBERS
+};
+#endif
diff --git a/obj/NiBlendFloatInterpolator.cpp b/obj/NiBlendFloatInterpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1af6727ef9f4c57bd0bd424d72aec40f28e00c79
--- /dev/null
+++ b/obj/NiBlendFloatInterpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBlendFloatInterpolator.h"
+
+//Definition of TYPE constant
+const Type NiBlendFloatInterpolator::TYPE("NiBlendFloatInterpolator", &NI_BLEND_FLOAT_INTERPOLATOR_PARENT::TYPE );
+
+NiBlendFloatInterpolator::NiBlendFloatInterpolator() NI_BLEND_FLOAT_INTERPOLATOR_CONSTRUCT {}
+
+NiBlendFloatInterpolator::~NiBlendFloatInterpolator() {}
+
+void NiBlendFloatInterpolator::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_BLEND_FLOAT_INTERPOLATOR_READ
+}
+
+void NiBlendFloatInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_BLEND_FLOAT_INTERPOLATOR_WRITE
+}
+
+string NiBlendFloatInterpolator::asString( bool verbose ) const {
+	NI_BLEND_FLOAT_INTERPOLATOR_STRING
+}
+
+void NiBlendFloatInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_BLEND_FLOAT_INTERPOLATOR_FIXLINKS
+}
+
diff --git a/obj/NiBlendFloatInterpolator.h b/obj/NiBlendFloatInterpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..ff29fa9112fc97c9bcf76691fa6be5b15c50cc75
--- /dev/null
+++ b/obj/NiBlendFloatInterpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBLENDFLOATINTERPOLATOR_H_
+#define _NIBLENDFLOATINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_BLEND_FLOAT_INTERPOLATOR_INCLUDE
+
+/*
+ * NiBlendFloatInterpolator
+ */
+
+class NiBlendFloatInterpolator;
+typedef Ref<NiBlendFloatInterpolator> NiBlendFloatInterpolatorRef;
+
+class NiBlendFloatInterpolator : public NI_BLEND_FLOAT_INTERPOLATOR_PARENT {
+public:
+	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 );
+private:
+	NI_BLEND_FLOAT_INTERPOLATOR_MEMBERS
+};
+#endif
diff --git a/obj/NiBlendPoint3Interpolator.cpp b/obj/NiBlendPoint3Interpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..bc8b9f7058b804823f6b49aeb330e92d57400ad5
--- /dev/null
+++ b/obj/NiBlendPoint3Interpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBlendPoint3Interpolator.h"
+
+//Definition of TYPE constant
+const Type NiBlendPoint3Interpolator::TYPE("NiBlendPoint3Interpolator", &NI_BLEND_POINT3_INTERPOLATOR_PARENT::TYPE );
+
+NiBlendPoint3Interpolator::NiBlendPoint3Interpolator() NI_BLEND_POINT3_INTERPOLATOR_CONSTRUCT {}
+
+NiBlendPoint3Interpolator::~NiBlendPoint3Interpolator() {}
+
+void NiBlendPoint3Interpolator::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_BLEND_POINT3_INTERPOLATOR_READ
+}
+
+void NiBlendPoint3Interpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_BLEND_POINT3_INTERPOLATOR_WRITE
+}
+
+string NiBlendPoint3Interpolator::asString( bool verbose ) const {
+	NI_BLEND_POINT3_INTERPOLATOR_STRING
+}
+
+void NiBlendPoint3Interpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_BLEND_POINT3_INTERPOLATOR_FIXLINKS
+}
+
diff --git a/obj/NiBlendPoint3Interpolator.h b/obj/NiBlendPoint3Interpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..e8fa89afb2b6d7b798adf903c86829d0e1b1fad1
--- /dev/null
+++ b/obj/NiBlendPoint3Interpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBLENDPOINT3INTERPOLATOR_H_
+#define _NIBLENDPOINT3INTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_BLEND_POINT3_INTERPOLATOR_INCLUDE
+
+/*
+ * NiBlendPoint3Interpolator
+ */
+
+class NiBlendPoint3Interpolator;
+typedef Ref<NiBlendPoint3Interpolator> NiBlendPoint3InterpolatorRef;
+
+class NiBlendPoint3Interpolator : public NI_BLEND_POINT3_INTERPOLATOR_PARENT {
+public:
+	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 );
+private:
+	NI_BLEND_POINT3_INTERPOLATOR_MEMBERS
+};
+#endif
diff --git a/obj/NiBlendTransformInterpolator.cpp b/obj/NiBlendTransformInterpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2099089df0183b6547a5f6f9d7cb26494bd668a2
--- /dev/null
+++ b/obj/NiBlendTransformInterpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBlendTransformInterpolator.h"
+
+//Definition of TYPE constant
+const Type NiBlendTransformInterpolator::TYPE("NiBlendTransformInterpolator", &NI_BLEND_TRANSFORM_INTERPOLATOR_PARENT::TYPE );
+
+NiBlendTransformInterpolator::NiBlendTransformInterpolator() NI_BLEND_TRANSFORM_INTERPOLATOR_CONSTRUCT {}
+
+NiBlendTransformInterpolator::~NiBlendTransformInterpolator() {}
+
+void NiBlendTransformInterpolator::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_BLEND_TRANSFORM_INTERPOLATOR_READ
+}
+
+void NiBlendTransformInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_BLEND_TRANSFORM_INTERPOLATOR_WRITE
+}
+
+string NiBlendTransformInterpolator::asString( bool verbose ) const {
+	NI_BLEND_TRANSFORM_INTERPOLATOR_STRING
+}
+
+void NiBlendTransformInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_BLEND_TRANSFORM_INTERPOLATOR_FIXLINKS
+}
+
diff --git a/obj/NiBlendTransformInterpolator.h b/obj/NiBlendTransformInterpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..ccc5abe0e04be6065499c4191bf5fdcab1894511
--- /dev/null
+++ b/obj/NiBlendTransformInterpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBLENDTRANSFORMINTERPOLATOR_H_
+#define _NIBLENDTRANSFORMINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_BLEND_TRANSFORM_INTERPOLATOR_INCLUDE
+
+/*
+ * NiBlendTransformInterpolator
+ */
+
+class NiBlendTransformInterpolator;
+typedef Ref<NiBlendTransformInterpolator> NiBlendTransformInterpolatorRef;
+
+class NiBlendTransformInterpolator : public NI_BLEND_TRANSFORM_INTERPOLATOR_PARENT {
+public:
+	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 );
+private:
+	NI_BLEND_TRANSFORM_INTERPOLATOR_MEMBERS
+};
+#endif
diff --git a/obj/NiBoneLODController.cpp b/obj/NiBoneLODController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b7af40ecd5e33cb31a73acabe405f75ec8fdc9b4
--- /dev/null
+++ b/obj/NiBoneLODController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBoneLODController.h"
+
+//Definition of TYPE constant
+const Type NiBoneLODController::TYPE("NiBoneLODController", &NI_BONE_L_O_D_CONTROLLER_PARENT::TYPE );
+
+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
+}
+
+void NiBoneLODController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_BONE_L_O_D_CONTROLLER_WRITE
+}
+
+string NiBoneLODController::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiBoneLODController.h b/obj/NiBoneLODController.h
new file mode 100644
index 0000000000000000000000000000000000000000..dc42f8224c17aa63df9fa524c5ccdf0047c944c1
--- /dev/null
+++ b/obj/NiBoneLODController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBONELODCONTROLLER_H_
+#define _NIBONELODCONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_BONE_L_O_D_CONTROLLER_INCLUDE
+
+/*
+ * NiBoneLODController
+ */
+
+class NiBoneLODController;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiBoolData.cpp b/obj/NiBoolData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5efbb26e39c2022e83c2a548599dca5c11d1e121
--- /dev/null
+++ b/obj/NiBoolData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBoolData.h"
+
+//Definition of TYPE constant
+const Type NiBoolData::TYPE("NiBoolData", &NI_BOOL_DATA_PARENT::TYPE );
+
+NiBoolData::NiBoolData() NI_BOOL_DATA_CONSTRUCT {}
+
+NiBoolData::~NiBoolData() {}
+
+void NiBoolData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_BOOL_DATA_READ
+}
+
+void NiBoolData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_BOOL_DATA_WRITE
+}
+
+string NiBoolData::asString( bool verbose ) const {
+	NI_BOOL_DATA_STRING
+}
+
+void NiBoolData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_BOOL_DATA_FIXLINKS
+}
+
diff --git a/obj/NiBoolData.h b/obj/NiBoolData.h
new file mode 100644
index 0000000000000000000000000000000000000000..c7db9b5dbf71a2f203707197e0b4e1b7a13b3529
--- /dev/null
+++ b/obj/NiBoolData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBOOLDATA_H_
+#define _NIBOOLDATA_H_
+
+#include "xml_extract.h"
+#include NI_BOOL_DATA_INCLUDE
+
+/*
+ * NiBoolData
+ */
+
+class NiBoolData;
+typedef Ref<NiBoolData> NiBoolDataRef;
+
+class NiBoolData : public NI_BOOL_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_BOOL_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiBoolInterpolator.cpp b/obj/NiBoolInterpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f1534f096b8775e362922682d8c92975a45e2f1a
--- /dev/null
+++ b/obj/NiBoolInterpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBoolInterpolator.h"
+
+//Definition of TYPE constant
+const Type NiBoolInterpolator::TYPE("NiBoolInterpolator", &NI_BOOL_INTERPOLATOR_PARENT::TYPE );
+
+NiBoolInterpolator::NiBoolInterpolator() NI_BOOL_INTERPOLATOR_CONSTRUCT {}
+
+NiBoolInterpolator::~NiBoolInterpolator() {}
+
+void NiBoolInterpolator::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_BOOL_INTERPOLATOR_READ
+}
+
+void NiBoolInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_BOOL_INTERPOLATOR_WRITE
+}
+
+string NiBoolInterpolator::asString( bool verbose ) const {
+	NI_BOOL_INTERPOLATOR_STRING
+}
+
+void NiBoolInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_BOOL_INTERPOLATOR_FIXLINKS
+}
+
diff --git a/obj/NiBoolInterpolator.h b/obj/NiBoolInterpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..ac5b4eb58380137912c73a5d9d2c3cd1f280c057
--- /dev/null
+++ b/obj/NiBoolInterpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBOOLINTERPOLATOR_H_
+#define _NIBOOLINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_BOOL_INTERPOLATOR_INCLUDE
+
+/*
+ * NiBoolInterpolator
+ */
+
+class NiBoolInterpolator;
+typedef Ref<NiBoolInterpolator> NiBoolInterpolatorRef;
+
+class NiBoolInterpolator : public NI_BOOL_INTERPOLATOR_PARENT {
+public:
+	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 );
+private:
+	NI_BOOL_INTERPOLATOR_MEMBERS
+};
+#endif
diff --git a/obj/NiBoolTimelineInterpolator.cpp b/obj/NiBoolTimelineInterpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7b9db08e7b44236a39826fe34bab6db4efecd191
--- /dev/null
+++ b/obj/NiBoolTimelineInterpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBoolTimelineInterpolator.h"
+
+//Definition of TYPE constant
+const Type NiBoolTimelineInterpolator::TYPE("NiBoolTimelineInterpolator", &NI_BOOL_TIMELINE_INTERPOLATOR_PARENT::TYPE );
+
+NiBoolTimelineInterpolator::NiBoolTimelineInterpolator() NI_BOOL_TIMELINE_INTERPOLATOR_CONSTRUCT {}
+
+NiBoolTimelineInterpolator::~NiBoolTimelineInterpolator() {}
+
+void NiBoolTimelineInterpolator::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_BOOL_TIMELINE_INTERPOLATOR_READ
+}
+
+void NiBoolTimelineInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_BOOL_TIMELINE_INTERPOLATOR_WRITE
+}
+
+string NiBoolTimelineInterpolator::asString( bool verbose ) const {
+	NI_BOOL_TIMELINE_INTERPOLATOR_STRING
+}
+
+void NiBoolTimelineInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_BOOL_TIMELINE_INTERPOLATOR_FIXLINKS
+}
+
diff --git a/obj/NiBoolTimelineInterpolator.h b/obj/NiBoolTimelineInterpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..e1bd39d347f51b5f3e4fcfd563436301b2ae0c34
--- /dev/null
+++ b/obj/NiBoolTimelineInterpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBOOLTIMELINEINTERPOLATOR_H_
+#define _NIBOOLTIMELINEINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_BOOL_TIMELINE_INTERPOLATOR_INCLUDE
+
+/*
+ * NiBoolTimelineInterpolator
+ */
+
+class NiBoolTimelineInterpolator;
+typedef Ref<NiBoolTimelineInterpolator> NiBoolTimelineInterpolatorRef;
+
+class NiBoolTimelineInterpolator : public NI_BOOL_TIMELINE_INTERPOLATOR_PARENT {
+public:
+	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 );
+private:
+	NI_BOOL_TIMELINE_INTERPOLATOR_MEMBERS
+};
+#endif
diff --git a/obj/NiBooleanExtraData.cpp b/obj/NiBooleanExtraData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4506c3c03d11644718523efff9a5ae7840e035c0
--- /dev/null
+++ b/obj/NiBooleanExtraData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBooleanExtraData.h"
+
+//Definition of TYPE constant
+const Type NiBooleanExtraData::TYPE("NiBooleanExtraData", &NI_BOOLEAN_EXTRA_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiBooleanExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_BOOLEAN_EXTRA_DATA_WRITE
+}
+
+string NiBooleanExtraData::asString( bool verbose ) const {
+	NI_BOOLEAN_EXTRA_DATA_STRING
+}
+
+void NiBooleanExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_BOOLEAN_EXTRA_DATA_FIXLINKS
+}
+
diff --git a/obj/NiBooleanExtraData.h b/obj/NiBooleanExtraData.h
new file mode 100644
index 0000000000000000000000000000000000000000..edecc535cde2b239e581de5f6b6e3dffbebc162b
--- /dev/null
+++ b/obj/NiBooleanExtraData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBOOLEANEXTRADATA_H_
+#define _NIBOOLEANEXTRADATA_H_
+
+#include "xml_extract.h"
+#include NI_BOOLEAN_EXTRA_DATA_INCLUDE
+
+/*
+ * NiBooleanExtraData
+ */
+
+class NiBooleanExtraData;
+typedef Ref<NiBooleanExtraData> NiBooleanExtraDataRef;
+
+class NiBooleanExtraData : public NI_BOOLEAN_EXTRA_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_BOOLEAN_EXTRA_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiCamera.cpp b/obj/NiCamera.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..86724cf1b458594ac03dd52c12972bedbb8dc6c4
--- /dev/null
+++ b/obj/NiCamera.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiCamera.h"
+
+//Definition of TYPE constant
+const Type NiCamera::TYPE("NiCamera", &NI_CAMERA_PARENT::TYPE );
+
+NiCamera::NiCamera() NI_CAMERA_CONSTRUCT {}
+
+NiCamera::~NiCamera() {}
+
+void NiCamera::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_CAMERA_READ
+}
+
+void NiCamera::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_CAMERA_WRITE
+}
+
+string NiCamera::asString( bool verbose ) const {
+	NI_CAMERA_STRING
+}
+
+void NiCamera::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_CAMERA_FIXLINKS
+}
+
diff --git a/obj/NiCamera.h b/obj/NiCamera.h
new file mode 100644
index 0000000000000000000000000000000000000000..7220ebbd9f2227f1723496a7af544005dbc30164
--- /dev/null
+++ b/obj/NiCamera.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NICAMERA_H_
+#define _NICAMERA_H_
+
+#include "xml_extract.h"
+#include NI_CAMERA_INCLUDE
+
+/*
+ * NiCamera
+ */
+
+class NiCamera;
+typedef Ref<NiCamera> NiCameraRef;
+
+class NiCamera : public NI_CAMERA_PARENT {
+public:
+	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 );
+private:
+	NI_CAMERA_MEMBERS
+};
+#endif
diff --git a/obj/NiCollisionData.cpp b/obj/NiCollisionData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..bc9a230064d7626812360a93f08d12e6b60a4621
--- /dev/null
+++ b/obj/NiCollisionData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiCollisionData.h"
+
+//Definition of TYPE constant
+const Type NiCollisionData::TYPE("NiCollisionData", &NI_COLLISION_DATA_PARENT::TYPE );
+
+NiCollisionData::NiCollisionData() NI_COLLISION_DATA_CONSTRUCT {}
+
+NiCollisionData::~NiCollisionData() {}
+
+void NiCollisionData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_COLLISION_DATA_READ
+}
+
+void NiCollisionData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_COLLISION_DATA_WRITE
+}
+
+string NiCollisionData::asString( bool verbose ) const {
+	NI_COLLISION_DATA_STRING
+}
+
+void NiCollisionData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_COLLISION_DATA_FIXLINKS
+}
+
diff --git a/obj/NiCollisionData.h b/obj/NiCollisionData.h
new file mode 100644
index 0000000000000000000000000000000000000000..580f38c41c1b6eb2f6aa9bfcc4a4fd4f41a63ab8
--- /dev/null
+++ b/obj/NiCollisionData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NICOLLISIONDATA_H_
+#define _NICOLLISIONDATA_H_
+
+#include "xml_extract.h"
+#include NI_COLLISION_DATA_INCLUDE
+
+/*
+ * NiCollisionData
+ */
+
+class NiCollisionData;
+typedef Ref<NiCollisionData> NiCollisionDataRef;
+
+class NiCollisionData : public NI_COLLISION_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_COLLISION_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiCollisionObject.cpp b/obj/NiCollisionObject.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6c8914426329a4dbca643aa96c895d83d71a3417
--- /dev/null
+++ b/obj/NiCollisionObject.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiCollisionObject.h"
+
+//Definition of TYPE constant
+const Type NiCollisionObject::TYPE("NiCollisionObject", &NI_COLLISION_OBJECT_PARENT::TYPE );
+
+NiCollisionObject::NiCollisionObject() NI_COLLISION_OBJECT_CONSTRUCT {}
+
+NiCollisionObject::~NiCollisionObject() {}
+
+void NiCollisionObject::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_COLLISION_OBJECT_READ
+}
+
+void NiCollisionObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_COLLISION_OBJECT_WRITE
+}
+
+string NiCollisionObject::asString( bool verbose ) const {
+	NI_COLLISION_OBJECT_STRING
+}
+
+void NiCollisionObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_COLLISION_OBJECT_FIXLINKS
+}
+
diff --git a/obj/NiCollisionObject.h b/obj/NiCollisionObject.h
new file mode 100644
index 0000000000000000000000000000000000000000..78ad72cbc20c0914d8d326a5619c5eb8f771f723
--- /dev/null
+++ b/obj/NiCollisionObject.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NICOLLISIONOBJECT_H_
+#define _NICOLLISIONOBJECT_H_
+
+#include "xml_extract.h"
+#include NI_COLLISION_OBJECT_INCLUDE
+
+/*
+ * NiCollisionObject
+ */
+
+class NiCollisionObject;
+typedef Ref<NiCollisionObject> NiCollisionObjectRef;
+
+class NiCollisionObject : public NI_COLLISION_OBJECT_PARENT {
+public:
+	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 );
+private:
+	NI_COLLISION_OBJECT_MEMBERS
+};
+#endif
diff --git a/obj/NiColorData.cpp b/obj/NiColorData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..dc01ac563b8d5e4d7a360dad494875db2271c386
--- /dev/null
+++ b/obj/NiColorData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiColorData.h"
+
+//Definition of TYPE constant
+const Type NiColorData::TYPE("NiColorData", &NI_COLOR_DATA_PARENT::TYPE );
+
+NiColorData::NiColorData() NI_COLOR_DATA_CONSTRUCT {}
+
+NiColorData::~NiColorData() {}
+
+void NiColorData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_COLOR_DATA_READ
+}
+
+void NiColorData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_COLOR_DATA_WRITE
+}
+
+string NiColorData::asString( bool verbose ) const {
+	NI_COLOR_DATA_STRING
+}
+
+void NiColorData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_COLOR_DATA_FIXLINKS
+}
+
diff --git a/obj/NiColorData.h b/obj/NiColorData.h
new file mode 100644
index 0000000000000000000000000000000000000000..7dd6804f97019b6e97151e36ad43f4481c94454d
--- /dev/null
+++ b/obj/NiColorData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NICOLORDATA_H_
+#define _NICOLORDATA_H_
+
+#include "xml_extract.h"
+#include NI_COLOR_DATA_INCLUDE
+
+/*
+ * NiColorData
+ */
+
+class NiColorData;
+typedef Ref<NiColorData> NiColorDataRef;
+
+class NiColorData : public NI_COLOR_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_COLOR_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiColorExtraData.cpp b/obj/NiColorExtraData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f39471817d8859f511fd437398e373b5aa5e42f5
--- /dev/null
+++ b/obj/NiColorExtraData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiColorExtraData.h"
+
+//Definition of TYPE constant
+const Type NiColorExtraData::TYPE("NiColorExtraData", &NI_COLOR_EXTRA_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiColorExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_COLOR_EXTRA_DATA_WRITE
+}
+
+string NiColorExtraData::asString( bool verbose ) const {
+	NI_COLOR_EXTRA_DATA_STRING
+}
+
+void NiColorExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_COLOR_EXTRA_DATA_FIXLINKS
+}
+
diff --git a/obj/NiColorExtraData.h b/obj/NiColorExtraData.h
new file mode 100644
index 0000000000000000000000000000000000000000..b33cc1cc3bbcdc51756510523af566c3aaba8a65
--- /dev/null
+++ b/obj/NiColorExtraData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NICOLOREXTRADATA_H_
+#define _NICOLOREXTRADATA_H_
+
+#include "xml_extract.h"
+#include NI_COLOR_EXTRA_DATA_INCLUDE
+
+/*
+ * NiColorExtraData
+ */
+
+class NiColorExtraData;
+typedef Ref<NiColorExtraData> NiColorExtraDataRef;
+
+class NiColorExtraData : public NI_COLOR_EXTRA_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_COLOR_EXTRA_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiControllerManager.cpp b/obj/NiControllerManager.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a49226496dd62d83555dda4fc3bd43300f8d08f2
--- /dev/null
+++ b/obj/NiControllerManager.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiControllerManager.h"
+
+//Definition of TYPE constant
+const Type NiControllerManager::TYPE("NiControllerManager", &NI_CONTROLLER_MANAGER_PARENT::TYPE );
+
+NiControllerManager::NiControllerManager() NI_CONTROLLER_MANAGER_CONSTRUCT {}
+
+NiControllerManager::~NiControllerManager() {}
+
+void NiControllerManager::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_CONTROLLER_MANAGER_READ
+}
+
+void NiControllerManager::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_CONTROLLER_MANAGER_WRITE
+}
+
+string NiControllerManager::asString( bool verbose ) const {
+	NI_CONTROLLER_MANAGER_STRING
+}
+
+void NiControllerManager::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_CONTROLLER_MANAGER_FIXLINKS
+}
+
diff --git a/obj/NiControllerManager.h b/obj/NiControllerManager.h
new file mode 100644
index 0000000000000000000000000000000000000000..8514dfa559f171964ef694cf4452c21ae073885f
--- /dev/null
+++ b/obj/NiControllerManager.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NICONTROLLERMANAGER_H_
+#define _NICONTROLLERMANAGER_H_
+
+#include "xml_extract.h"
+#include NI_CONTROLLER_MANAGER_INCLUDE
+
+/*
+ * NiControllerManager
+ */
+
+class NiControllerManager;
+typedef Ref<NiControllerManager> NiControllerManagerRef;
+
+class NiControllerManager : public NI_CONTROLLER_MANAGER_PARENT {
+public:
+	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 );
+private:
+	NI_CONTROLLER_MANAGER_MEMBERS
+};
+#endif
diff --git a/obj/NiControllerSequence.cpp b/obj/NiControllerSequence.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e9753549589d903c3cd214341e20b5e58c93c6dc
--- /dev/null
+++ b/obj/NiControllerSequence.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiControllerSequence.h"
+
+//Definition of TYPE constant
+const Type NiControllerSequence::TYPE("NiControllerSequence", &NI_CONTROLLER_SEQUENCE_PARENT::TYPE );
+
+NiControllerSequence::NiControllerSequence() NI_CONTROLLER_SEQUENCE_CONSTRUCT {}
+
+NiControllerSequence::~NiControllerSequence() {}
+
+void NiControllerSequence::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_CONTROLLER_SEQUENCE_READ
+}
+
+void NiControllerSequence::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_CONTROLLER_SEQUENCE_WRITE
+}
+
+string NiControllerSequence::asString( bool verbose ) const {
+	NI_CONTROLLER_SEQUENCE_STRING
+}
+
+void NiControllerSequence::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_CONTROLLER_SEQUENCE_FIXLINKS
+}
+
diff --git a/obj/NiControllerSequence.h b/obj/NiControllerSequence.h
new file mode 100644
index 0000000000000000000000000000000000000000..901097ccc8300197c9c15bdcaa07a521524f06e5
--- /dev/null
+++ b/obj/NiControllerSequence.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NICONTROLLERSEQUENCE_H_
+#define _NICONTROLLERSEQUENCE_H_
+
+#include "xml_extract.h"
+#include NI_CONTROLLER_SEQUENCE_INCLUDE
+
+/*
+ * NiControllerSequence
+ */
+
+class NiControllerSequence;
+typedef Ref<NiControllerSequence> NiControllerSequenceRef;
+
+class NiControllerSequence : public NI_CONTROLLER_SEQUENCE_PARENT {
+public:
+	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 );
+private:
+	NI_CONTROLLER_SEQUENCE_MEMBERS
+};
+#endif
diff --git a/obj/NiDefaultAVObjectPalette.cpp b/obj/NiDefaultAVObjectPalette.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2adea1b64a802475e70cc417324753d74674511d
--- /dev/null
+++ b/obj/NiDefaultAVObjectPalette.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiDefaultAVObjectPalette.h"
+
+//Definition of TYPE constant
+const Type NiDefaultAVObjectPalette::TYPE("NiDefaultAVObjectPalette", &NI_DEFAULT_A_V_OBJECT_PALETTE_PARENT::TYPE );
+
+NiDefaultAVObjectPalette::NiDefaultAVObjectPalette() NI_DEFAULT_A_V_OBJECT_PALETTE_CONSTRUCT {}
+
+NiDefaultAVObjectPalette::~NiDefaultAVObjectPalette() {}
+
+void NiDefaultAVObjectPalette::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiDefaultAVObjectPalette::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiDefaultAVObjectPalette.h b/obj/NiDefaultAVObjectPalette.h
new file mode 100644
index 0000000000000000000000000000000000000000..565d9eaa02b41f7bebc36e8744100c10c4920396
--- /dev/null
+++ b/obj/NiDefaultAVObjectPalette.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIDEFAULTAVOBJECTPALETTE_H_
+#define _NIDEFAULTAVOBJECTPALETTE_H_
+
+#include "xml_extract.h"
+#include NI_DEFAULT_A_V_OBJECT_PALETTE_INCLUDE
+
+/*
+ * NiDefaultAVObjectPalette
+ */
+
+class NiDefaultAVObjectPalette;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiDirectionalLight.cpp b/obj/NiDirectionalLight.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e7ae860e847cd5a75accb182e303753f112efd8c
--- /dev/null
+++ b/obj/NiDirectionalLight.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiDirectionalLight.h"
+
+//Definition of TYPE constant
+const Type NiDirectionalLight::TYPE("NiDirectionalLight", &NI_DIRECTIONAL_LIGHT_PARENT::TYPE );
+
+NiDirectionalLight::NiDirectionalLight() NI_DIRECTIONAL_LIGHT_CONSTRUCT {}
+
+NiDirectionalLight::~NiDirectionalLight() {}
+
+void NiDirectionalLight::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_DIRECTIONAL_LIGHT_READ
+}
+
+void NiDirectionalLight::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_DIRECTIONAL_LIGHT_WRITE
+}
+
+string NiDirectionalLight::asString( bool verbose ) const {
+	NI_DIRECTIONAL_LIGHT_STRING
+}
+
+void NiDirectionalLight::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_DIRECTIONAL_LIGHT_FIXLINKS
+}
+
diff --git a/obj/NiDirectionalLight.h b/obj/NiDirectionalLight.h
new file mode 100644
index 0000000000000000000000000000000000000000..fa9047e9d8e45e63a5ffeaf42afa3713ff03498a
--- /dev/null
+++ b/obj/NiDirectionalLight.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIDIRECTIONALLIGHT_H_
+#define _NIDIRECTIONALLIGHT_H_
+
+#include "xml_extract.h"
+#include NI_DIRECTIONAL_LIGHT_INCLUDE
+
+/*
+ * NiDirectionalLight
+ */
+
+class NiDirectionalLight;
+typedef Ref<NiDirectionalLight> NiDirectionalLightRef;
+
+class NiDirectionalLight : public NI_DIRECTIONAL_LIGHT_PARENT {
+public:
+	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 );
+private:
+	NI_DIRECTIONAL_LIGHT_MEMBERS
+};
+#endif
diff --git a/obj/NiDitherProperty.cpp b/obj/NiDitherProperty.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7c9ba5c6b10548d696c00758f310115bd0e18a18
--- /dev/null
+++ b/obj/NiDitherProperty.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiDitherProperty.h"
+
+//Definition of TYPE constant
+const Type NiDitherProperty::TYPE("NiDitherProperty", &NI_DITHER_PROPERTY_PARENT::TYPE );
+
+NiDitherProperty::NiDitherProperty() NI_DITHER_PROPERTY_CONSTRUCT {}
+
+NiDitherProperty::~NiDitherProperty() {}
+
+void NiDitherProperty::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_DITHER_PROPERTY_READ
+}
+
+void NiDitherProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_DITHER_PROPERTY_WRITE
+}
+
+string NiDitherProperty::asString( bool verbose ) const {
+	NI_DITHER_PROPERTY_STRING
+}
+
+void NiDitherProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_DITHER_PROPERTY_FIXLINKS
+}
+
diff --git a/obj/NiDitherProperty.h b/obj/NiDitherProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..ba293776c16980a9360ef93167a6b15871e7334b
--- /dev/null
+++ b/obj/NiDitherProperty.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIDITHERPROPERTY_H_
+#define _NIDITHERPROPERTY_H_
+
+#include "xml_extract.h"
+#include NI_DITHER_PROPERTY_INCLUDE
+
+/*
+ * NiDitherProperty
+ */
+
+class NiDitherProperty;
+typedef Ref<NiDitherProperty> NiDitherPropertyRef;
+
+class NiDitherProperty : public NI_DITHER_PROPERTY_PARENT {
+public:
+	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 );
+private:
+	NI_DITHER_PROPERTY_MEMBERS
+};
+#endif
diff --git a/obj/NiDynamicEffect.cpp b/obj/NiDynamicEffect.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6175f357ca17c29a502786d77bc8c07b8a46819d
--- /dev/null
+++ b/obj/NiDynamicEffect.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiDynamicEffect.h"
+
+//Definition of TYPE constant
+const Type NiDynamicEffect::TYPE("NiDynamicEffect", &NI_DYNAMIC_EFFECT_PARENT::TYPE );
+
+NiDynamicEffect::NiDynamicEffect() NI_DYNAMIC_EFFECT_CONSTRUCT {}
+
+NiDynamicEffect::~NiDynamicEffect() {}
+
+void NiDynamicEffect::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_DYNAMIC_EFFECT_READ
+}
+
+void NiDynamicEffect::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_DYNAMIC_EFFECT_WRITE
+}
+
+string NiDynamicEffect::asString( bool verbose ) const {
+	NI_DYNAMIC_EFFECT_STRING
+}
+
+void NiDynamicEffect::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_DYNAMIC_EFFECT_FIXLINKS
+}
+
diff --git a/obj/NiDynamicEffect.h b/obj/NiDynamicEffect.h
new file mode 100644
index 0000000000000000000000000000000000000000..6ca4a1a08b44bb6ed49a06f7cd3f673be8679c8f
--- /dev/null
+++ b/obj/NiDynamicEffect.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIDYNAMICEFFECT_H_
+#define _NIDYNAMICEFFECT_H_
+
+#include "xml_extract.h"
+#include NI_DYNAMIC_EFFECT_INCLUDE
+
+/*
+ * NiDynamicEffect
+ */
+
+class NiDynamicEffect;
+typedef Ref<NiDynamicEffect> NiDynamicEffectRef;
+
+class NiDynamicEffect : public NI_DYNAMIC_EFFECT_PARENT {
+public:
+	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 );
+private:
+	NI_DYNAMIC_EFFECT_MEMBERS
+};
+#endif
diff --git a/obj/NiExtraData.cpp b/obj/NiExtraData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..264c9ca72d780fb8a07b69f045dd484766c72d62
--- /dev/null
+++ b/obj/NiExtraData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiExtraData.h"
+
+//Definition of TYPE constant
+const Type NiExtraData::TYPE("NiExtraData", &NI_EXTRA_DATA_PARENT::TYPE );
+
+NiExtraData::NiExtraData() NI_EXTRA_DATA_CONSTRUCT {}
+
+NiExtraData::~NiExtraData() {}
+
+void NiExtraData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_EXTRA_DATA_READ
+}
+
+void NiExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_EXTRA_DATA_WRITE
+}
+
+string NiExtraData::asString( bool verbose ) const {
+	NI_EXTRA_DATA_STRING
+}
+
+void NiExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_EXTRA_DATA_FIXLINKS
+}
+
diff --git a/obj/NiExtraData.h b/obj/NiExtraData.h
new file mode 100644
index 0000000000000000000000000000000000000000..266a2df20887d5e41d06f5ffc0756982b9096228
--- /dev/null
+++ b/obj/NiExtraData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIEXTRADATA_H_
+#define _NIEXTRADATA_H_
+
+#include "xml_extract.h"
+#include NI_EXTRA_DATA_INCLUDE
+
+/*
+ * NiExtraData
+ */
+
+class NiExtraData;
+typedef Ref<NiExtraData> NiExtraDataRef;
+
+class NiExtraData : public NI_EXTRA_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_EXTRA_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiFlipController.cpp b/obj/NiFlipController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..28033773c58793b4f3a94d049e8a4999b1d6534c
--- /dev/null
+++ b/obj/NiFlipController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiFlipController.h"
+
+//Definition of TYPE constant
+const Type NiFlipController::TYPE("NiFlipController", &NI_FLIP_CONTROLLER_PARENT::TYPE );
+
+NiFlipController::NiFlipController() NI_FLIP_CONTROLLER_CONSTRUCT {}
+
+NiFlipController::~NiFlipController() {}
+
+void NiFlipController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_FLIP_CONTROLLER_READ
+}
+
+void NiFlipController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_FLIP_CONTROLLER_WRITE
+}
+
+string NiFlipController::asString( bool verbose ) const {
+	NI_FLIP_CONTROLLER_STRING
+}
+
+void NiFlipController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_FLIP_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/NiFlipController.h b/obj/NiFlipController.h
new file mode 100644
index 0000000000000000000000000000000000000000..8be2a2f321e694f8aded2f310613343981d39d50
--- /dev/null
+++ b/obj/NiFlipController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIFLIPCONTROLLER_H_
+#define _NIFLIPCONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_FLIP_CONTROLLER_INCLUDE
+
+/*
+ * NiFlipController
+ */
+
+class NiFlipController;
+typedef Ref<NiFlipController> NiFlipControllerRef;
+
+class NiFlipController : public NI_FLIP_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	NI_FLIP_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/NiFloatData.cpp b/obj/NiFloatData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5115b9ef49ca4b31006044a3a4bbd09ac95e113f
--- /dev/null
+++ b/obj/NiFloatData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiFloatData.h"
+
+//Definition of TYPE constant
+const Type NiFloatData::TYPE("NiFloatData", &NI_FLOAT_DATA_PARENT::TYPE );
+
+NiFloatData::NiFloatData() NI_FLOAT_DATA_CONSTRUCT {}
+
+NiFloatData::~NiFloatData() {}
+
+void NiFloatData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_FLOAT_DATA_READ
+}
+
+void NiFloatData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_FLOAT_DATA_WRITE
+}
+
+string NiFloatData::asString( bool verbose ) const {
+	NI_FLOAT_DATA_STRING
+}
+
+void NiFloatData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_FLOAT_DATA_FIXLINKS
+}
+
diff --git a/obj/NiFloatData.h b/obj/NiFloatData.h
new file mode 100644
index 0000000000000000000000000000000000000000..183b8c82b96a40b6f9a36e4e7e8549e5811dc865
--- /dev/null
+++ b/obj/NiFloatData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIFLOATDATA_H_
+#define _NIFLOATDATA_H_
+
+#include "xml_extract.h"
+#include NI_FLOAT_DATA_INCLUDE
+
+/*
+ * NiFloatData
+ */
+
+class NiFloatData;
+typedef Ref<NiFloatData> NiFloatDataRef;
+
+class NiFloatData : public NI_FLOAT_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_FLOAT_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiFloatExtraData.cpp b/obj/NiFloatExtraData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1748f15dc6c0002055ce104641b25cbebc18692a
--- /dev/null
+++ b/obj/NiFloatExtraData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiFloatExtraData.h"
+
+//Definition of TYPE constant
+const Type NiFloatExtraData::TYPE("NiFloatExtraData", &NI_FLOAT_EXTRA_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiFloatExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_FLOAT_EXTRA_DATA_WRITE
+}
+
+string NiFloatExtraData::asString( bool verbose ) const {
+	NI_FLOAT_EXTRA_DATA_STRING
+}
+
+void NiFloatExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_FLOAT_EXTRA_DATA_FIXLINKS
+}
+
diff --git a/obj/NiFloatExtraData.h b/obj/NiFloatExtraData.h
new file mode 100644
index 0000000000000000000000000000000000000000..bcdcdf97c8e897e57302da081ce993233fde07f0
--- /dev/null
+++ b/obj/NiFloatExtraData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIFLOATEXTRADATA_H_
+#define _NIFLOATEXTRADATA_H_
+
+#include "xml_extract.h"
+#include NI_FLOAT_EXTRA_DATA_INCLUDE
+
+/*
+ * NiFloatExtraData
+ */
+
+class NiFloatExtraData;
+typedef Ref<NiFloatExtraData> NiFloatExtraDataRef;
+
+class NiFloatExtraData : public NI_FLOAT_EXTRA_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_FLOAT_EXTRA_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiFloatExtraDataController.cpp b/obj/NiFloatExtraDataController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a422929ad5a6f3a04f9ca0218675d7b6c0323ed0
--- /dev/null
+++ b/obj/NiFloatExtraDataController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiFloatExtraDataController.h"
+
+//Definition of TYPE constant
+const Type NiFloatExtraDataController::TYPE("NiFloatExtraDataController", &NI_FLOAT_EXTRA_DATA_CONTROLLER_PARENT::TYPE );
+
+NiFloatExtraDataController::NiFloatExtraDataController() NI_FLOAT_EXTRA_DATA_CONTROLLER_CONSTRUCT {}
+
+NiFloatExtraDataController::~NiFloatExtraDataController() {}
+
+void NiFloatExtraDataController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiFloatExtraDataController::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiFloatExtraDataController.h b/obj/NiFloatExtraDataController.h
new file mode 100644
index 0000000000000000000000000000000000000000..18379a021bb723dbc7e3527c89d50aafd780c777
--- /dev/null
+++ b/obj/NiFloatExtraDataController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIFLOATEXTRADATACONTROLLER_H_
+#define _NIFLOATEXTRADATACONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_FLOAT_EXTRA_DATA_CONTROLLER_INCLUDE
+
+/*
+ * NiFloatExtraDataController
+ */
+
+class NiFloatExtraDataController;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiFloatInterpolator.cpp b/obj/NiFloatInterpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fec92ec4ef190450d2c04bd0afcef08ca28b36c8
--- /dev/null
+++ b/obj/NiFloatInterpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiFloatInterpolator.h"
+
+//Definition of TYPE constant
+const Type NiFloatInterpolator::TYPE("NiFloatInterpolator", &NI_FLOAT_INTERPOLATOR_PARENT::TYPE );
+
+NiFloatInterpolator::NiFloatInterpolator() NI_FLOAT_INTERPOLATOR_CONSTRUCT {}
+
+NiFloatInterpolator::~NiFloatInterpolator() {}
+
+void NiFloatInterpolator::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_FLOAT_INTERPOLATOR_READ
+}
+
+void NiFloatInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_FLOAT_INTERPOLATOR_WRITE
+}
+
+string NiFloatInterpolator::asString( bool verbose ) const {
+	NI_FLOAT_INTERPOLATOR_STRING
+}
+
+void NiFloatInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_FLOAT_INTERPOLATOR_FIXLINKS
+}
+
diff --git a/obj/NiFloatInterpolator.h b/obj/NiFloatInterpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..501116512664adbba406d75946f9b6b250e00699
--- /dev/null
+++ b/obj/NiFloatInterpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIFLOATINTERPOLATOR_H_
+#define _NIFLOATINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_FLOAT_INTERPOLATOR_INCLUDE
+
+/*
+ * NiFloatInterpolator
+ */
+
+class NiFloatInterpolator;
+typedef Ref<NiFloatInterpolator> NiFloatInterpolatorRef;
+
+class NiFloatInterpolator : public NI_FLOAT_INTERPOLATOR_PARENT {
+public:
+	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 );
+private:
+	NI_FLOAT_INTERPOLATOR_MEMBERS
+};
+#endif
diff --git a/obj/NiFloatsExtraData.cpp b/obj/NiFloatsExtraData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..203611510e0191fb716fe602adaf33e7021f3402
--- /dev/null
+++ b/obj/NiFloatsExtraData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiFloatsExtraData.h"
+
+//Definition of TYPE constant
+const Type NiFloatsExtraData::TYPE("NiFloatsExtraData", &NI_FLOATS_EXTRA_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiFloatsExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_FLOATS_EXTRA_DATA_WRITE
+}
+
+string NiFloatsExtraData::asString( bool verbose ) const {
+	NI_FLOATS_EXTRA_DATA_STRING
+}
+
+void NiFloatsExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_FLOATS_EXTRA_DATA_FIXLINKS
+}
+
diff --git a/obj/NiFloatsExtraData.h b/obj/NiFloatsExtraData.h
new file mode 100644
index 0000000000000000000000000000000000000000..0cca5180bbc69053c36ece9ca4697f7b77f5cdf5
--- /dev/null
+++ b/obj/NiFloatsExtraData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIFLOATSEXTRADATA_H_
+#define _NIFLOATSEXTRADATA_H_
+
+#include "xml_extract.h"
+#include NI_FLOATS_EXTRA_DATA_INCLUDE
+
+/*
+ * NiFloatsExtraData
+ */
+
+class NiFloatsExtraData;
+typedef Ref<NiFloatsExtraData> NiFloatsExtraDataRef;
+
+class NiFloatsExtraData : public NI_FLOATS_EXTRA_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_FLOATS_EXTRA_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiFogProperty.cpp b/obj/NiFogProperty.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..358dc3a937fe798a6eebb6a4e308bf891996ece2
--- /dev/null
+++ b/obj/NiFogProperty.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiFogProperty.h"
+
+//Definition of TYPE constant
+const Type NiFogProperty::TYPE("NiFogProperty", &NI_FOG_PROPERTY_PARENT::TYPE );
+
+NiFogProperty::NiFogProperty() NI_FOG_PROPERTY_CONSTRUCT {}
+
+NiFogProperty::~NiFogProperty() {}
+
+void NiFogProperty::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_FOG_PROPERTY_READ
+}
+
+void NiFogProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_FOG_PROPERTY_WRITE
+}
+
+string NiFogProperty::asString( bool verbose ) const {
+	NI_FOG_PROPERTY_STRING
+}
+
+void NiFogProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_FOG_PROPERTY_FIXLINKS
+}
+
diff --git a/obj/NiFogProperty.h b/obj/NiFogProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..b0805c1be1af0eab59fbb4b91a5d9ab585912c67
--- /dev/null
+++ b/obj/NiFogProperty.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIFOGPROPERTY_H_
+#define _NIFOGPROPERTY_H_
+
+#include "xml_extract.h"
+#include NI_FOG_PROPERTY_INCLUDE
+
+/*
+ * NiFogProperty
+ */
+
+class NiFogProperty;
+typedef Ref<NiFogProperty> NiFogPropertyRef;
+
+class NiFogProperty : public NI_FOG_PROPERTY_PARENT {
+public:
+	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 );
+private:
+	NI_FOG_PROPERTY_MEMBERS
+};
+#endif
diff --git a/obj/NiGeomMorpherController.cpp b/obj/NiGeomMorpherController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..13c3d2bfc84b15dfe076ce8ea571c53fed0d98a7
--- /dev/null
+++ b/obj/NiGeomMorpherController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiGeomMorpherController.h"
+
+//Definition of TYPE constant
+const Type NiGeomMorpherController::TYPE("NiGeomMorpherController", &NI_GEOM_MORPHER_CONTROLLER_PARENT::TYPE );
+
+NiGeomMorpherController::NiGeomMorpherController() NI_GEOM_MORPHER_CONTROLLER_CONSTRUCT {}
+
+NiGeomMorpherController::~NiGeomMorpherController() {}
+
+void NiGeomMorpherController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_GEOM_MORPHER_CONTROLLER_READ
+}
+
+void NiGeomMorpherController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_GEOM_MORPHER_CONTROLLER_WRITE
+}
+
+string NiGeomMorpherController::asString( bool verbose ) const {
+	NI_GEOM_MORPHER_CONTROLLER_STRING
+}
+
+void NiGeomMorpherController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_GEOM_MORPHER_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/NiGeomMorpherController.h b/obj/NiGeomMorpherController.h
new file mode 100644
index 0000000000000000000000000000000000000000..20bc16785976120269141b23a5239a6e093d6771
--- /dev/null
+++ b/obj/NiGeomMorpherController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIGEOMMORPHERCONTROLLER_H_
+#define _NIGEOMMORPHERCONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_GEOM_MORPHER_CONTROLLER_INCLUDE
+
+/*
+ * NiGeomMorpherController
+ */
+
+class NiGeomMorpherController;
+typedef Ref<NiGeomMorpherController> NiGeomMorpherControllerRef;
+
+class NiGeomMorpherController : public NI_GEOM_MORPHER_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	NI_GEOM_MORPHER_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/NiGravity.cpp b/obj/NiGravity.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c1b6c8b816b805ae7cd26253e21e3ad4b31c1b4b
--- /dev/null
+++ b/obj/NiGravity.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiGravity.h"
+
+//Definition of TYPE constant
+const Type NiGravity::TYPE("NiGravity", &NI_GRAVITY_PARENT::TYPE );
+
+NiGravity::NiGravity() NI_GRAVITY_CONSTRUCT {}
+
+NiGravity::~NiGravity() {}
+
+void NiGravity::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_GRAVITY_READ
+}
+
+void NiGravity::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_GRAVITY_WRITE
+}
+
+string NiGravity::asString( bool verbose ) const {
+	NI_GRAVITY_STRING
+}
+
+void NiGravity::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_GRAVITY_FIXLINKS
+}
+
diff --git a/obj/NiGravity.h b/obj/NiGravity.h
new file mode 100644
index 0000000000000000000000000000000000000000..18d5aebd54f0ffdcdfa957475a6557766b418567
--- /dev/null
+++ b/obj/NiGravity.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIGRAVITY_H_
+#define _NIGRAVITY_H_
+
+#include "xml_extract.h"
+#include NI_GRAVITY_INCLUDE
+
+/*
+ * NiGravity
+ */
+
+class NiGravity;
+typedef Ref<NiGravity> NiGravityRef;
+
+class NiGravity : public NI_GRAVITY_PARENT {
+public:
+	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 );
+private:
+	NI_GRAVITY_MEMBERS
+};
+#endif
diff --git a/obj/NiIntegerExtraData.cpp b/obj/NiIntegerExtraData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5b9f748833751cddf8497d35b549cc9fff6d7113
--- /dev/null
+++ b/obj/NiIntegerExtraData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiIntegerExtraData.h"
+
+//Definition of TYPE constant
+const Type NiIntegerExtraData::TYPE("NiIntegerExtraData", &NI_INTEGER_EXTRA_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiIntegerExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_INTEGER_EXTRA_DATA_WRITE
+}
+
+string NiIntegerExtraData::asString( bool verbose ) const {
+	NI_INTEGER_EXTRA_DATA_STRING
+}
+
+void NiIntegerExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_INTEGER_EXTRA_DATA_FIXLINKS
+}
+
diff --git a/obj/NiIntegerExtraData.h b/obj/NiIntegerExtraData.h
new file mode 100644
index 0000000000000000000000000000000000000000..d217994a629049d2b3dd77897e97ff23f8793c5d
--- /dev/null
+++ b/obj/NiIntegerExtraData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIINTEGEREXTRADATA_H_
+#define _NIINTEGEREXTRADATA_H_
+
+#include "xml_extract.h"
+#include NI_INTEGER_EXTRA_DATA_INCLUDE
+
+/*
+ * NiIntegerExtraData
+ */
+
+class NiIntegerExtraData;
+typedef Ref<NiIntegerExtraData> NiIntegerExtraDataRef;
+
+class NiIntegerExtraData : public NI_INTEGER_EXTRA_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_INTEGER_EXTRA_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiIntegersExtraData.cpp b/obj/NiIntegersExtraData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b822551033fd5a87564f81139c90deacaf90f55f
--- /dev/null
+++ b/obj/NiIntegersExtraData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiIntegersExtraData.h"
+
+//Definition of TYPE constant
+const Type NiIntegersExtraData::TYPE("NiIntegersExtraData", &NI_INTEGERS_EXTRA_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiIntegersExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_INTEGERS_EXTRA_DATA_WRITE
+}
+
+string NiIntegersExtraData::asString( bool verbose ) const {
+	NI_INTEGERS_EXTRA_DATA_STRING
+}
+
+void NiIntegersExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_INTEGERS_EXTRA_DATA_FIXLINKS
+}
+
diff --git a/obj/NiIntegersExtraData.h b/obj/NiIntegersExtraData.h
new file mode 100644
index 0000000000000000000000000000000000000000..7d73542e84ba13d383825d3a06464cce2126d225
--- /dev/null
+++ b/obj/NiIntegersExtraData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIINTEGERSEXTRADATA_H_
+#define _NIINTEGERSEXTRADATA_H_
+
+#include "xml_extract.h"
+#include NI_INTEGERS_EXTRA_DATA_INCLUDE
+
+/*
+ * NiIntegersExtraData
+ */
+
+class NiIntegersExtraData;
+typedef Ref<NiIntegersExtraData> NiIntegersExtraDataRef;
+
+class NiIntegersExtraData : public NI_INTEGERS_EXTRA_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_INTEGERS_EXTRA_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiKeyframeController.cpp b/obj/NiKeyframeController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e6f2a69429da56233f115b251a167152a1a913d2
--- /dev/null
+++ b/obj/NiKeyframeController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiKeyframeController.h"
+
+//Definition of TYPE constant
+const Type NiKeyframeController::TYPE("NiKeyframeController", &NI_KEYFRAME_CONTROLLER_PARENT::TYPE );
+
+NiKeyframeController::NiKeyframeController() NI_KEYFRAME_CONTROLLER_CONSTRUCT {}
+
+NiKeyframeController::~NiKeyframeController() {}
+
+void NiKeyframeController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_KEYFRAME_CONTROLLER_READ
+}
+
+void NiKeyframeController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_KEYFRAME_CONTROLLER_WRITE
+}
+
+string NiKeyframeController::asString( bool verbose ) const {
+	NI_KEYFRAME_CONTROLLER_STRING
+}
+
+void NiKeyframeController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_KEYFRAME_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/NiKeyframeController.h b/obj/NiKeyframeController.h
new file mode 100644
index 0000000000000000000000000000000000000000..e239a2e490c7a8b640f2ba03e65cc4c093a14bff
--- /dev/null
+++ b/obj/NiKeyframeController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIKEYFRAMECONTROLLER_H_
+#define _NIKEYFRAMECONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_KEYFRAME_CONTROLLER_INCLUDE
+
+/*
+ * NiKeyframeController
+ */
+
+class NiKeyframeController;
+typedef Ref<NiKeyframeController> NiKeyframeControllerRef;
+
+class NiKeyframeController : public NI_KEYFRAME_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	NI_KEYFRAME_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/NiKeyframeData.cpp b/obj/NiKeyframeData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a0b8b3f3b516625e8f28b582cc7003f23218657b
--- /dev/null
+++ b/obj/NiKeyframeData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiKeyframeData.h"
+
+//Definition of TYPE constant
+const Type NiKeyframeData::TYPE("NiKeyframeData", &NI_KEYFRAME_DATA_PARENT::TYPE );
+
+NiKeyframeData::NiKeyframeData() NI_KEYFRAME_DATA_CONSTRUCT {}
+
+NiKeyframeData::~NiKeyframeData() {}
+
+void NiKeyframeData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_KEYFRAME_DATA_READ
+}
+
+void NiKeyframeData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_KEYFRAME_DATA_WRITE
+}
+
+string NiKeyframeData::asString( bool verbose ) const {
+	NI_KEYFRAME_DATA_STRING
+}
+
+void NiKeyframeData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_KEYFRAME_DATA_FIXLINKS
+}
+
diff --git a/obj/NiKeyframeData.h b/obj/NiKeyframeData.h
new file mode 100644
index 0000000000000000000000000000000000000000..c5e99ee2afe2268025ed68d3fe46ace43d60b0e0
--- /dev/null
+++ b/obj/NiKeyframeData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIKEYFRAMEDATA_H_
+#define _NIKEYFRAMEDATA_H_
+
+#include "xml_extract.h"
+#include NI_KEYFRAME_DATA_INCLUDE
+
+/*
+ * NiKeyframeData
+ */
+
+class NiKeyframeData;
+typedef Ref<NiKeyframeData> NiKeyframeDataRef;
+
+class NiKeyframeData : public NI_KEYFRAME_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_KEYFRAME_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiLODNode.cpp b/obj/NiLODNode.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a1fe04445112cc8c7a9cc0125490ea2c22a79974
--- /dev/null
+++ b/obj/NiLODNode.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiLODNode.h"
+
+//Definition of TYPE constant
+const Type NiLODNode::TYPE("NiLODNode", &NI_L_O_D_NODE_PARENT::TYPE );
+
+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
+}
+
+void NiLODNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_L_O_D_NODE_WRITE
+}
+
+string NiLODNode::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiLODNode.h b/obj/NiLODNode.h
new file mode 100644
index 0000000000000000000000000000000000000000..acfeacf6de0328db1625d012435fe40976319146
--- /dev/null
+++ b/obj/NiLODNode.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NILODNODE_H_
+#define _NILODNODE_H_
+
+#include "xml_extract.h"
+#include NI_L_O_D_NODE_INCLUDE
+
+/*
+ * NiLODNode
+ */
+
+class NiLODNode;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiLight.cpp b/obj/NiLight.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..05e138927d93b927726bb276f6b708082eb2f094
--- /dev/null
+++ b/obj/NiLight.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiLight.h"
+
+//Definition of TYPE constant
+const Type NiLight::TYPE("NiLight", &NI_LIGHT_PARENT::TYPE );
+
+NiLight::NiLight() NI_LIGHT_CONSTRUCT {}
+
+NiLight::~NiLight() {}
+
+void NiLight::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_LIGHT_READ
+}
+
+void NiLight::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_LIGHT_WRITE
+}
+
+string NiLight::asString( bool verbose ) const {
+	NI_LIGHT_STRING
+}
+
+void NiLight::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_LIGHT_FIXLINKS
+}
+
diff --git a/obj/NiLight.h b/obj/NiLight.h
new file mode 100644
index 0000000000000000000000000000000000000000..ab3928abd7573e8d361a7cc1c297215ad96950b5
--- /dev/null
+++ b/obj/NiLight.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NILIGHT_H_
+#define _NILIGHT_H_
+
+#include "xml_extract.h"
+#include NI_LIGHT_INCLUDE
+
+/*
+ * NiLight
+ */
+
+class NiLight;
+typedef Ref<NiLight> NiLightRef;
+
+class NiLight : public NI_LIGHT_PARENT {
+public:
+	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 );
+private:
+	NI_LIGHT_MEMBERS
+};
+#endif
diff --git a/obj/NiLightColorController.cpp b/obj/NiLightColorController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..13fb64044ce665cab775960328cc530275a3872c
--- /dev/null
+++ b/obj/NiLightColorController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiLightColorController.h"
+
+//Definition of TYPE constant
+const Type NiLightColorController::TYPE("NiLightColorController", &NI_LIGHT_COLOR_CONTROLLER_PARENT::TYPE );
+
+NiLightColorController::NiLightColorController() NI_LIGHT_COLOR_CONTROLLER_CONSTRUCT {}
+
+NiLightColorController::~NiLightColorController() {}
+
+void NiLightColorController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_LIGHT_COLOR_CONTROLLER_READ
+}
+
+void NiLightColorController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_LIGHT_COLOR_CONTROLLER_WRITE
+}
+
+string NiLightColorController::asString( bool verbose ) const {
+	NI_LIGHT_COLOR_CONTROLLER_STRING
+}
+
+void NiLightColorController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_LIGHT_COLOR_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/NiLightColorController.h b/obj/NiLightColorController.h
new file mode 100644
index 0000000000000000000000000000000000000000..3486135452cc56cc403d159d968d66e7251afeb7
--- /dev/null
+++ b/obj/NiLightColorController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NILIGHTCOLORCONTROLLER_H_
+#define _NILIGHTCOLORCONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_LIGHT_COLOR_CONTROLLER_INCLUDE
+
+/*
+ * NiLightColorController
+ */
+
+class NiLightColorController;
+typedef Ref<NiLightColorController> NiLightColorControllerRef;
+
+class NiLightColorController : public NI_LIGHT_COLOR_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	NI_LIGHT_COLOR_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/NiLightDimmerController.cpp b/obj/NiLightDimmerController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..35894731f029e38063fa0643dc14d277e972bb34
--- /dev/null
+++ b/obj/NiLightDimmerController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiLightDimmerController.h"
+
+//Definition of TYPE constant
+const Type NiLightDimmerController::TYPE("NiLightDimmerController", &NI_LIGHT_DIMMER_CONTROLLER_PARENT::TYPE );
+
+NiLightDimmerController::NiLightDimmerController() NI_LIGHT_DIMMER_CONTROLLER_CONSTRUCT {}
+
+NiLightDimmerController::~NiLightDimmerController() {}
+
+void NiLightDimmerController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_LIGHT_DIMMER_CONTROLLER_READ
+}
+
+void NiLightDimmerController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_LIGHT_DIMMER_CONTROLLER_WRITE
+}
+
+string NiLightDimmerController::asString( bool verbose ) const {
+	NI_LIGHT_DIMMER_CONTROLLER_STRING
+}
+
+void NiLightDimmerController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_LIGHT_DIMMER_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/NiLightDimmerController.h b/obj/NiLightDimmerController.h
new file mode 100644
index 0000000000000000000000000000000000000000..7d2a5ed5d52c003f6781173053e69282f560d994
--- /dev/null
+++ b/obj/NiLightDimmerController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NILIGHTDIMMERCONTROLLER_H_
+#define _NILIGHTDIMMERCONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_LIGHT_DIMMER_CONTROLLER_INCLUDE
+
+/*
+ * NiLightDimmerController
+ */
+
+class NiLightDimmerController;
+typedef Ref<NiLightDimmerController> NiLightDimmerControllerRef;
+
+class NiLightDimmerController : public NI_LIGHT_DIMMER_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	NI_LIGHT_DIMMER_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/NiLookAtController.cpp b/obj/NiLookAtController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3c5701388379ebccadd7122f37d586f37fa9e839
--- /dev/null
+++ b/obj/NiLookAtController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiLookAtController.h"
+
+//Definition of TYPE constant
+const Type NiLookAtController::TYPE("NiLookAtController", &NI_LOOK_AT_CONTROLLER_PARENT::TYPE );
+
+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
+}
+
+void NiLookAtController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_LOOK_AT_CONTROLLER_WRITE
+}
+
+string NiLookAtController::asString( bool verbose ) const {
+	NI_LOOK_AT_CONTROLLER_STRING
+}
+
+void NiLookAtController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_LOOK_AT_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/NiLookAtController.h b/obj/NiLookAtController.h
new file mode 100644
index 0000000000000000000000000000000000000000..5b2231ee25430023fc33802ac81f1cbe35a5eec3
--- /dev/null
+++ b/obj/NiLookAtController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NILOOKATCONTROLLER_H_
+#define _NILOOKATCONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_LOOK_AT_CONTROLLER_INCLUDE
+
+/*
+ * NiLookAtController
+ */
+
+class NiLookAtController;
+typedef Ref<NiLookAtController> NiLookAtControllerRef;
+
+class NiLookAtController : public NI_LOOK_AT_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	NI_LOOK_AT_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/NiLookAtInterpolator.cpp b/obj/NiLookAtInterpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..dcc35391b8d457bc42e0167158dfb707a5dfa780
--- /dev/null
+++ b/obj/NiLookAtInterpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiLookAtInterpolator.h"
+
+//Definition of TYPE constant
+const Type NiLookAtInterpolator::TYPE("NiLookAtInterpolator", &NI_LOOK_AT_INTERPOLATOR_PARENT::TYPE );
+
+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
+}
+
+void NiLookAtInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_LOOK_AT_INTERPOLATOR_WRITE
+}
+
+string NiLookAtInterpolator::asString( bool verbose ) const {
+	NI_LOOK_AT_INTERPOLATOR_STRING
+}
+
+void NiLookAtInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_LOOK_AT_INTERPOLATOR_FIXLINKS
+}
+
diff --git a/obj/NiLookAtInterpolator.h b/obj/NiLookAtInterpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..17ac21c8821b0663fc63615d92f5b1c83ef9f806
--- /dev/null
+++ b/obj/NiLookAtInterpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NILOOKATINTERPOLATOR_H_
+#define _NILOOKATINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_LOOK_AT_INTERPOLATOR_INCLUDE
+
+/*
+ * NiLookAtInterpolator
+ */
+
+class NiLookAtInterpolator;
+typedef Ref<NiLookAtInterpolator> NiLookAtInterpolatorRef;
+
+class NiLookAtInterpolator : public NI_LOOK_AT_INTERPOLATOR_PARENT {
+public:
+	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 );
+private:
+	NI_LOOK_AT_INTERPOLATOR_MEMBERS
+};
+#endif
diff --git a/obj/NiMaterialColorController.cpp b/obj/NiMaterialColorController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ad6e2d19a5b98d63f8326418097337da5222d364
--- /dev/null
+++ b/obj/NiMaterialColorController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiMaterialColorController.h"
+
+//Definition of TYPE constant
+const Type NiMaterialColorController::TYPE("NiMaterialColorController", &NI_MATERIAL_COLOR_CONTROLLER_PARENT::TYPE );
+
+NiMaterialColorController::NiMaterialColorController() NI_MATERIAL_COLOR_CONTROLLER_CONSTRUCT {}
+
+NiMaterialColorController::~NiMaterialColorController() {}
+
+void NiMaterialColorController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_MATERIAL_COLOR_CONTROLLER_READ
+}
+
+void NiMaterialColorController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_MATERIAL_COLOR_CONTROLLER_WRITE
+}
+
+string NiMaterialColorController::asString( bool verbose ) const {
+	NI_MATERIAL_COLOR_CONTROLLER_STRING
+}
+
+void NiMaterialColorController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_MATERIAL_COLOR_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/NiMaterialColorController.h b/obj/NiMaterialColorController.h
new file mode 100644
index 0000000000000000000000000000000000000000..713542804452ac65daaa238885cf2e3fc97f78c8
--- /dev/null
+++ b/obj/NiMaterialColorController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIMATERIALCOLORCONTROLLER_H_
+#define _NIMATERIALCOLORCONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_MATERIAL_COLOR_CONTROLLER_INCLUDE
+
+/*
+ * NiMaterialColorController
+ */
+
+class NiMaterialColorController;
+typedef Ref<NiMaterialColorController> NiMaterialColorControllerRef;
+
+class NiMaterialColorController : public NI_MATERIAL_COLOR_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	NI_MATERIAL_COLOR_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/NiMaterialProperty.cpp b/obj/NiMaterialProperty.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7708f146dd25fa4c1e0c282f213f756db84064d5
--- /dev/null
+++ b/obj/NiMaterialProperty.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiMaterialProperty.h"
+
+//Definition of TYPE constant
+const Type NiMaterialProperty::TYPE("NiMaterialProperty", &NI_MATERIAL_PROPERTY_PARENT::TYPE );
+
+NiMaterialProperty::NiMaterialProperty() NI_MATERIAL_PROPERTY_CONSTRUCT {}
+
+NiMaterialProperty::~NiMaterialProperty() {}
+
+void NiMaterialProperty::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_MATERIAL_PROPERTY_READ
+}
+
+void NiMaterialProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_MATERIAL_PROPERTY_WRITE
+}
+
+string NiMaterialProperty::asString( bool verbose ) const {
+	NI_MATERIAL_PROPERTY_STRING
+}
+
+void NiMaterialProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_MATERIAL_PROPERTY_FIXLINKS
+}
+
diff --git a/obj/NiMaterialProperty.h b/obj/NiMaterialProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..33bc070fd8d4e46d695772d933134575b33578bd
--- /dev/null
+++ b/obj/NiMaterialProperty.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIMATERIALPROPERTY_H_
+#define _NIMATERIALPROPERTY_H_
+
+#include "xml_extract.h"
+#include NI_MATERIAL_PROPERTY_INCLUDE
+
+/*
+ * NiMaterialProperty
+ */
+
+class NiMaterialProperty;
+typedef Ref<NiMaterialProperty> NiMaterialPropertyRef;
+
+class NiMaterialProperty : public NI_MATERIAL_PROPERTY_PARENT {
+public:
+	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 );
+private:
+	NI_MATERIAL_PROPERTY_MEMBERS
+};
+#endif
diff --git a/obj/NiMeshPSysData.cpp b/obj/NiMeshPSysData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9b9249b066a2232b7b3424a060dca7b4feff4efb
--- /dev/null
+++ b/obj/NiMeshPSysData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiMeshPSysData.h"
+
+//Definition of TYPE constant
+const Type NiMeshPSysData::TYPE("NiMeshPSysData", &NI_MESH_P_SYS_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiMeshPSysData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_MESH_P_SYS_DATA_WRITE
+}
+
+string NiMeshPSysData::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiMeshPSysData.h b/obj/NiMeshPSysData.h
new file mode 100644
index 0000000000000000000000000000000000000000..fd111a4a8f47acf77f01fa73b7d48d9a1e9c486a
--- /dev/null
+++ b/obj/NiMeshPSysData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIMESHPSYSDATA_H_
+#define _NIMESHPSYSDATA_H_
+
+#include "xml_extract.h"
+#include NI_MESH_P_SYS_DATA_INCLUDE
+
+/*
+ * NiMeshPSysData
+ */
+
+class NiMeshPSysData;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiMeshParticleSystem.cpp b/obj/NiMeshParticleSystem.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b7862c6bc94a7112ed3dcb724fd841a21b7133fa
--- /dev/null
+++ b/obj/NiMeshParticleSystem.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiMeshParticleSystem.h"
+
+//Definition of TYPE constant
+const Type NiMeshParticleSystem::TYPE("NiMeshParticleSystem", &NI_MESH_PARTICLE_SYSTEM_PARENT::TYPE );
+
+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
+}
+
+void NiMeshParticleSystem::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_MESH_PARTICLE_SYSTEM_WRITE
+}
+
+string NiMeshParticleSystem::asString( bool verbose ) const {
+	NI_MESH_PARTICLE_SYSTEM_STRING
+}
+
+void NiMeshParticleSystem::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_MESH_PARTICLE_SYSTEM_FIXLINKS
+}
+
diff --git a/obj/NiMeshParticleSystem.h b/obj/NiMeshParticleSystem.h
new file mode 100644
index 0000000000000000000000000000000000000000..e2665159fd2c6777e32f7a9c225ea0a7490c5db6
--- /dev/null
+++ b/obj/NiMeshParticleSystem.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIMESHPARTICLESYSTEM_H_
+#define _NIMESHPARTICLESYSTEM_H_
+
+#include "xml_extract.h"
+#include NI_MESH_PARTICLE_SYSTEM_INCLUDE
+
+/*
+ * NiMeshParticleSystem
+ */
+
+class NiMeshParticleSystem;
+typedef Ref<NiMeshParticleSystem> NiMeshParticleSystemRef;
+
+class NiMeshParticleSystem : public NI_MESH_PARTICLE_SYSTEM_PARENT {
+public:
+	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 );
+private:
+	NI_MESH_PARTICLE_SYSTEM_MEMBERS
+};
+#endif
diff --git a/obj/NiMorphData.cpp b/obj/NiMorphData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a97ac1cd7d2f335d7074b386f00050c7936de43d
--- /dev/null
+++ b/obj/NiMorphData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiMorphData.h"
+
+//Definition of TYPE constant
+const Type NiMorphData::TYPE("NiMorphData", &NI_MORPH_DATA_PARENT::TYPE );
+
+NiMorphData::NiMorphData() NI_MORPH_DATA_CONSTRUCT {}
+
+NiMorphData::~NiMorphData() {}
+
+void NiMorphData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_MORPH_DATA_READ
+}
+
+void NiMorphData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_MORPH_DATA_WRITE
+}
+
+string NiMorphData::asString( bool verbose ) const {
+	NI_MORPH_DATA_STRING
+}
+
+void NiMorphData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_MORPH_DATA_FIXLINKS
+}
+
diff --git a/obj/NiMorphData.h b/obj/NiMorphData.h
new file mode 100644
index 0000000000000000000000000000000000000000..a2b5dc91a144026678e85e602b499ad57f072b47
--- /dev/null
+++ b/obj/NiMorphData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIMORPHDATA_H_
+#define _NIMORPHDATA_H_
+
+#include "xml_extract.h"
+#include NI_MORPH_DATA_INCLUDE
+
+/*
+ * NiMorphData
+ */
+
+class NiMorphData;
+typedef Ref<NiMorphData> NiMorphDataRef;
+
+class NiMorphData : public NI_MORPH_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_MORPH_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiMultiTargetTransformController.cpp b/obj/NiMultiTargetTransformController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f3ac9ff5aef7c5a9fb94e6811e887424fd1988b4
--- /dev/null
+++ b/obj/NiMultiTargetTransformController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiMultiTargetTransformController.h"
+
+//Definition of TYPE constant
+const Type NiMultiTargetTransformController::TYPE("NiMultiTargetTransformController", &NI_MULTI_TARGET_TRANSFORM_CONTROLLER_PARENT::TYPE );
+
+NiMultiTargetTransformController::NiMultiTargetTransformController() NI_MULTI_TARGET_TRANSFORM_CONTROLLER_CONSTRUCT {}
+
+NiMultiTargetTransformController::~NiMultiTargetTransformController() {}
+
+void NiMultiTargetTransformController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiMultiTargetTransformController::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiMultiTargetTransformController.h b/obj/NiMultiTargetTransformController.h
new file mode 100644
index 0000000000000000000000000000000000000000..4d63c461ef54b4a235c93fa1f156dab5b602fd02
--- /dev/null
+++ b/obj/NiMultiTargetTransformController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIMULTITARGETTRANSFORMCONTROLLER_H_
+#define _NIMULTITARGETTRANSFORMCONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_MULTI_TARGET_TRANSFORM_CONTROLLER_INCLUDE
+
+/*
+ * NiMultiTargetTransformController
+ */
+
+class NiMultiTargetTransformController;
+typedef Ref<NiMultiTargetTransformController> NiMultiTargetTransformControllerRef;
+
+class NiMultiTargetTransformController : public NI_MULTI_TARGET_TRANSFORM_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	NI_MULTI_TARGET_TRANSFORM_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/NiPSysAgeDeathModifier.cpp b/obj/NiPSysAgeDeathModifier.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..709e6870e0509db13e1aa1b4c75168bf10b990e5
--- /dev/null
+++ b/obj/NiPSysAgeDeathModifier.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysAgeDeathModifier.h"
+
+//Definition of TYPE constant
+const Type NiPSysAgeDeathModifier::TYPE("NiPSysAgeDeathModifier", &NI_P_SYS_AGE_DEATH_MODIFIER_PARENT::TYPE );
+
+NiPSysAgeDeathModifier::NiPSysAgeDeathModifier() NI_P_SYS_AGE_DEATH_MODIFIER_CONSTRUCT {}
+
+NiPSysAgeDeathModifier::~NiPSysAgeDeathModifier() {}
+
+void NiPSysAgeDeathModifier::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysAgeDeathModifier::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysAgeDeathModifier.h b/obj/NiPSysAgeDeathModifier.h
new file mode 100644
index 0000000000000000000000000000000000000000..12565f1a901d7dcde2f65f22c4422aecd8e0a98b
--- /dev/null
+++ b/obj/NiPSysAgeDeathModifier.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSAGEDEATHMODIFIER_H_
+#define _NIPSYSAGEDEATHMODIFIER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_AGE_DEATH_MODIFIER_INCLUDE
+
+/*
+ * NiPSysAgeDeathModifier
+ */
+
+class NiPSysAgeDeathModifier;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysBombModifier.cpp b/obj/NiPSysBombModifier.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b2c902d087a6a648f329be410b3454509f80437e
--- /dev/null
+++ b/obj/NiPSysBombModifier.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysBombModifier.h"
+
+//Definition of TYPE constant
+const Type NiPSysBombModifier::TYPE("NiPSysBombModifier", &NI_P_SYS_BOMB_MODIFIER_PARENT::TYPE );
+
+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
+}
+
+void NiPSysBombModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_P_SYS_BOMB_MODIFIER_WRITE
+}
+
+string NiPSysBombModifier::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysBombModifier.h b/obj/NiPSysBombModifier.h
new file mode 100644
index 0000000000000000000000000000000000000000..ef2c1f68a484f4afe1091d13bd6329a4c4e66481
--- /dev/null
+++ b/obj/NiPSysBombModifier.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSBOMBMODIFIER_H_
+#define _NIPSYSBOMBMODIFIER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_BOMB_MODIFIER_INCLUDE
+
+/*
+ * NiPSysBombModifier
+ */
+
+class NiPSysBombModifier;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysBoundUpdateModifier.cpp b/obj/NiPSysBoundUpdateModifier.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..42070725b18a83b0ffc2a8c999b796c394e2c3ff
--- /dev/null
+++ b/obj/NiPSysBoundUpdateModifier.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysBoundUpdateModifier.h"
+
+//Definition of TYPE constant
+const Type NiPSysBoundUpdateModifier::TYPE("NiPSysBoundUpdateModifier", &NI_P_SYS_BOUND_UPDATE_MODIFIER_PARENT::TYPE );
+
+NiPSysBoundUpdateModifier::NiPSysBoundUpdateModifier() NI_P_SYS_BOUND_UPDATE_MODIFIER_CONSTRUCT {}
+
+NiPSysBoundUpdateModifier::~NiPSysBoundUpdateModifier() {}
+
+void NiPSysBoundUpdateModifier::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysBoundUpdateModifier::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysBoundUpdateModifier.h b/obj/NiPSysBoundUpdateModifier.h
new file mode 100644
index 0000000000000000000000000000000000000000..077111c767a1aed7dc3e48a7a87e75f91ac01ec5
--- /dev/null
+++ b/obj/NiPSysBoundUpdateModifier.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSBOUNDUPDATEMODIFIER_H_
+#define _NIPSYSBOUNDUPDATEMODIFIER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_BOUND_UPDATE_MODIFIER_INCLUDE
+
+/*
+ * NiPSysBoundUpdateModifier
+ */
+
+class NiPSysBoundUpdateModifier;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysBoxEmitter.cpp b/obj/NiPSysBoxEmitter.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2da5ad1b9a75b4e0d62a73482bc3adeac2f76adf
--- /dev/null
+++ b/obj/NiPSysBoxEmitter.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysBoxEmitter.h"
+
+//Definition of TYPE constant
+const Type NiPSysBoxEmitter::TYPE("NiPSysBoxEmitter", &NI_P_SYS_BOX_EMITTER_PARENT::TYPE );
+
+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
+}
+
+void NiPSysBoxEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_P_SYS_BOX_EMITTER_WRITE
+}
+
+string NiPSysBoxEmitter::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysBoxEmitter.h b/obj/NiPSysBoxEmitter.h
new file mode 100644
index 0000000000000000000000000000000000000000..b6afacd534b61e39389eb2acf65a83797a6f76bb
--- /dev/null
+++ b/obj/NiPSysBoxEmitter.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSBOXEMITTER_H_
+#define _NIPSYSBOXEMITTER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_BOX_EMITTER_INCLUDE
+
+/*
+ * NiPSysBoxEmitter
+ */
+
+class NiPSysBoxEmitter;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysColliderManager.cpp b/obj/NiPSysColliderManager.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a2905ec566a56f38ea9b318eea4ea7186905c593
--- /dev/null
+++ b/obj/NiPSysColliderManager.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysColliderManager.h"
+
+//Definition of TYPE constant
+const Type NiPSysColliderManager::TYPE("NiPSysColliderManager", &NI_P_SYS_COLLIDER_MANAGER_PARENT::TYPE );
+
+NiPSysColliderManager::NiPSysColliderManager() NI_P_SYS_COLLIDER_MANAGER_CONSTRUCT {}
+
+NiPSysColliderManager::~NiPSysColliderManager() {}
+
+void NiPSysColliderManager::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysColliderManager::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysColliderManager.h b/obj/NiPSysColliderManager.h
new file mode 100644
index 0000000000000000000000000000000000000000..029a9e7f9feed9e8c4eec8aa384ff4a0b2d82781
--- /dev/null
+++ b/obj/NiPSysColliderManager.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSCOLLIDERMANAGER_H_
+#define _NIPSYSCOLLIDERMANAGER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_COLLIDER_MANAGER_INCLUDE
+
+/*
+ * NiPSysColliderManager
+ */
+
+class NiPSysColliderManager;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysColorModifier.cpp b/obj/NiPSysColorModifier.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..28ae11427303d6bd84945d91670e73619db6880f
--- /dev/null
+++ b/obj/NiPSysColorModifier.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysColorModifier.h"
+
+//Definition of TYPE constant
+const Type NiPSysColorModifier::TYPE("NiPSysColorModifier", &NI_P_SYS_COLOR_MODIFIER_PARENT::TYPE );
+
+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
+}
+
+void NiPSysColorModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_P_SYS_COLOR_MODIFIER_WRITE
+}
+
+string NiPSysColorModifier::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysColorModifier.h b/obj/NiPSysColorModifier.h
new file mode 100644
index 0000000000000000000000000000000000000000..d0a037cbc0fe05ff0fa9c89094c8a9c68f87fe65
--- /dev/null
+++ b/obj/NiPSysColorModifier.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSCOLORMODIFIER_H_
+#define _NIPSYSCOLORMODIFIER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_COLOR_MODIFIER_INCLUDE
+
+/*
+ * NiPSysColorModifier
+ */
+
+class NiPSysColorModifier;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysCylinderEmitter.cpp b/obj/NiPSysCylinderEmitter.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..61e26ba8bbd0a6c945db6d3ed5a3e987b9a63186
--- /dev/null
+++ b/obj/NiPSysCylinderEmitter.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysCylinderEmitter.h"
+
+//Definition of TYPE constant
+const Type NiPSysCylinderEmitter::TYPE("NiPSysCylinderEmitter", &NI_P_SYS_CYLINDER_EMITTER_PARENT::TYPE );
+
+NiPSysCylinderEmitter::NiPSysCylinderEmitter() NI_P_SYS_CYLINDER_EMITTER_CONSTRUCT {}
+
+NiPSysCylinderEmitter::~NiPSysCylinderEmitter() {}
+
+void NiPSysCylinderEmitter::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysCylinderEmitter::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysCylinderEmitter.h b/obj/NiPSysCylinderEmitter.h
new file mode 100644
index 0000000000000000000000000000000000000000..30111cfef5bc60a4faa92fbee37ff37e621f3570
--- /dev/null
+++ b/obj/NiPSysCylinderEmitter.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSCYLINDEREMITTER_H_
+#define _NIPSYSCYLINDEREMITTER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_CYLINDER_EMITTER_INCLUDE
+
+/*
+ * NiPSysCylinderEmitter
+ */
+
+class NiPSysCylinderEmitter;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysData.cpp b/obj/NiPSysData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d93021be40fd5cee2a6abc034adf4f4660de8a02
--- /dev/null
+++ b/obj/NiPSysData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysData.h"
+
+//Definition of TYPE constant
+const Type NiPSysData::TYPE("NiPSysData", &NI_P_SYS_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiPSysData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_P_SYS_DATA_WRITE
+}
+
+string NiPSysData::asString( bool verbose ) const {
+	NI_P_SYS_DATA_STRING
+}
+
+void NiPSysData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_P_SYS_DATA_FIXLINKS
+}
+
diff --git a/obj/NiPSysData.h b/obj/NiPSysData.h
new file mode 100644
index 0000000000000000000000000000000000000000..7ea23771e46a6f1061bbadbefee19fa536fca80c
--- /dev/null
+++ b/obj/NiPSysData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSDATA_H_
+#define _NIPSYSDATA_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_DATA_INCLUDE
+
+/*
+ * NiPSysData
+ */
+
+class NiPSysData;
+typedef Ref<NiPSysData> NiPSysDataRef;
+
+class NiPSysData : public NI_P_SYS_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_P_SYS_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiPSysDragModifier.cpp b/obj/NiPSysDragModifier.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1fb4c4c1269d7ecd3bf07e8d09414b455e6b6ab8
--- /dev/null
+++ b/obj/NiPSysDragModifier.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysDragModifier.h"
+
+//Definition of TYPE constant
+const Type NiPSysDragModifier::TYPE("NiPSysDragModifier", &NI_P_SYS_DRAG_MODIFIER_PARENT::TYPE );
+
+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
+}
+
+void NiPSysDragModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_P_SYS_DRAG_MODIFIER_WRITE
+}
+
+string NiPSysDragModifier::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysDragModifier.h b/obj/NiPSysDragModifier.h
new file mode 100644
index 0000000000000000000000000000000000000000..ba75792e5acfde733c318c5c94003ef3478df6f6
--- /dev/null
+++ b/obj/NiPSysDragModifier.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSDRAGMODIFIER_H_
+#define _NIPSYSDRAGMODIFIER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_DRAG_MODIFIER_INCLUDE
+
+/*
+ * NiPSysDragModifier
+ */
+
+class NiPSysDragModifier;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysEmitterCtlr.cpp b/obj/NiPSysEmitterCtlr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..aa394161b384285acb32321176846acedf2b8d42
--- /dev/null
+++ b/obj/NiPSysEmitterCtlr.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysEmitterCtlr.h"
+
+//Definition of TYPE constant
+const Type NiPSysEmitterCtlr::TYPE("NiPSysEmitterCtlr", &NI_P_SYS_EMITTER_CTLR_PARENT::TYPE );
+
+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
+}
+
+void NiPSysEmitterCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_P_SYS_EMITTER_CTLR_WRITE
+}
+
+string NiPSysEmitterCtlr::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysEmitterCtlr.h b/obj/NiPSysEmitterCtlr.h
new file mode 100644
index 0000000000000000000000000000000000000000..98b3b68e8cd4fa3e91dbe13de52fd4711136e89e
--- /dev/null
+++ b/obj/NiPSysEmitterCtlr.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSEMITTERCTLR_H_
+#define _NIPSYSEMITTERCTLR_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_EMITTER_CTLR_INCLUDE
+
+/*
+ * NiPSysEmitterCtlr
+ */
+
+class NiPSysEmitterCtlr;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysEmitterCtlrData.cpp b/obj/NiPSysEmitterCtlrData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d55b2c8e5084eccb8c52ac2c293af5d4dd30388a
--- /dev/null
+++ b/obj/NiPSysEmitterCtlrData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysEmitterCtlrData.h"
+
+//Definition of TYPE constant
+const Type NiPSysEmitterCtlrData::TYPE("NiPSysEmitterCtlrData", &NI_P_SYS_EMITTER_CTLR_DATA_PARENT::TYPE );
+
+NiPSysEmitterCtlrData::NiPSysEmitterCtlrData() NI_P_SYS_EMITTER_CTLR_DATA_CONSTRUCT {}
+
+NiPSysEmitterCtlrData::~NiPSysEmitterCtlrData() {}
+
+void NiPSysEmitterCtlrData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysEmitterCtlrData::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysEmitterCtlrData.h b/obj/NiPSysEmitterCtlrData.h
new file mode 100644
index 0000000000000000000000000000000000000000..993db1b49cfaa9677f574cb8c164845663394c82
--- /dev/null
+++ b/obj/NiPSysEmitterCtlrData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSEMITTERCTLRDATA_H_
+#define _NIPSYSEMITTERCTLRDATA_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_EMITTER_CTLR_DATA_INCLUDE
+
+/*
+ * NiPSysEmitterCtlrData
+ */
+
+class NiPSysEmitterCtlrData;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysEmitterDeclinationCtlr.cpp b/obj/NiPSysEmitterDeclinationCtlr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..78256e08969c3e22c139e9fa13fcf4172376f9f5
--- /dev/null
+++ b/obj/NiPSysEmitterDeclinationCtlr.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysEmitterDeclinationCtlr.h"
+
+//Definition of TYPE constant
+const Type NiPSysEmitterDeclinationCtlr::TYPE("NiPSysEmitterDeclinationCtlr", &NI_P_SYS_EMITTER_DECLINATION_CTLR_PARENT::TYPE );
+
+NiPSysEmitterDeclinationCtlr::NiPSysEmitterDeclinationCtlr() NI_P_SYS_EMITTER_DECLINATION_CTLR_CONSTRUCT {}
+
+NiPSysEmitterDeclinationCtlr::~NiPSysEmitterDeclinationCtlr() {}
+
+void NiPSysEmitterDeclinationCtlr::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysEmitterDeclinationCtlr::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysEmitterDeclinationCtlr.h b/obj/NiPSysEmitterDeclinationCtlr.h
new file mode 100644
index 0000000000000000000000000000000000000000..e9db06bceb50a52af1e916f67b94dba9bf3a9924
--- /dev/null
+++ b/obj/NiPSysEmitterDeclinationCtlr.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSEMITTERDECLINATIONCTLR_H_
+#define _NIPSYSEMITTERDECLINATIONCTLR_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_EMITTER_DECLINATION_CTLR_INCLUDE
+
+/*
+ * NiPSysEmitterDeclinationCtlr
+ */
+
+class NiPSysEmitterDeclinationCtlr;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysEmitterDeclinationVarCtlr.cpp b/obj/NiPSysEmitterDeclinationVarCtlr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f760d39347ad6ee74024bb2afe6a7f9d737450db
--- /dev/null
+++ b/obj/NiPSysEmitterDeclinationVarCtlr.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysEmitterDeclinationVarCtlr.h"
+
+//Definition of TYPE constant
+const Type NiPSysEmitterDeclinationVarCtlr::TYPE("NiPSysEmitterDeclinationVarCtlr", &NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_PARENT::TYPE );
+
+NiPSysEmitterDeclinationVarCtlr::NiPSysEmitterDeclinationVarCtlr() NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_CONSTRUCT {}
+
+NiPSysEmitterDeclinationVarCtlr::~NiPSysEmitterDeclinationVarCtlr() {}
+
+void NiPSysEmitterDeclinationVarCtlr::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysEmitterDeclinationVarCtlr::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysEmitterDeclinationVarCtlr.h b/obj/NiPSysEmitterDeclinationVarCtlr.h
new file mode 100644
index 0000000000000000000000000000000000000000..96f21f60b5bd9a0b391686bded3d9298a0d09ddb
--- /dev/null
+++ b/obj/NiPSysEmitterDeclinationVarCtlr.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSEMITTERDECLINATIONVARCTLR_H_
+#define _NIPSYSEMITTERDECLINATIONVARCTLR_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_INCLUDE
+
+/*
+ * NiPSysEmitterDeclinationVarCtlr
+ */
+
+class NiPSysEmitterDeclinationVarCtlr;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysEmitterInitialRadiusCtlr.cpp b/obj/NiPSysEmitterInitialRadiusCtlr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4169b51927eaffd4d9e5f880ae944bf9c7a6bf9f
--- /dev/null
+++ b/obj/NiPSysEmitterInitialRadiusCtlr.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysEmitterInitialRadiusCtlr.h"
+
+//Definition of TYPE constant
+const Type NiPSysEmitterInitialRadiusCtlr::TYPE("NiPSysEmitterInitialRadiusCtlr", &NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_PARENT::TYPE );
+
+NiPSysEmitterInitialRadiusCtlr::NiPSysEmitterInitialRadiusCtlr() NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_CONSTRUCT {}
+
+NiPSysEmitterInitialRadiusCtlr::~NiPSysEmitterInitialRadiusCtlr() {}
+
+void NiPSysEmitterInitialRadiusCtlr::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysEmitterInitialRadiusCtlr::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysEmitterInitialRadiusCtlr.h b/obj/NiPSysEmitterInitialRadiusCtlr.h
new file mode 100644
index 0000000000000000000000000000000000000000..4582da69e72db294dd78c273595ad1e9958934b4
--- /dev/null
+++ b/obj/NiPSysEmitterInitialRadiusCtlr.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSEMITTERINITIALRADIUSCTLR_H_
+#define _NIPSYSEMITTERINITIALRADIUSCTLR_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_INCLUDE
+
+/*
+ * NiPSysEmitterInitialRadiusCtlr
+ */
+
+class NiPSysEmitterInitialRadiusCtlr;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysEmitterLifeSpanCtlr.cpp b/obj/NiPSysEmitterLifeSpanCtlr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d3fa8a20e0c78c122538b891c44fba40cf693002
--- /dev/null
+++ b/obj/NiPSysEmitterLifeSpanCtlr.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysEmitterLifeSpanCtlr.h"
+
+//Definition of TYPE constant
+const Type NiPSysEmitterLifeSpanCtlr::TYPE("NiPSysEmitterLifeSpanCtlr", &NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_PARENT::TYPE );
+
+NiPSysEmitterLifeSpanCtlr::NiPSysEmitterLifeSpanCtlr() NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_CONSTRUCT {}
+
+NiPSysEmitterLifeSpanCtlr::~NiPSysEmitterLifeSpanCtlr() {}
+
+void NiPSysEmitterLifeSpanCtlr::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysEmitterLifeSpanCtlr::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysEmitterLifeSpanCtlr.h b/obj/NiPSysEmitterLifeSpanCtlr.h
new file mode 100644
index 0000000000000000000000000000000000000000..b4984c4c3c43cd2937797a6e8adb93444ae13336
--- /dev/null
+++ b/obj/NiPSysEmitterLifeSpanCtlr.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSEMITTERLIFESPANCTLR_H_
+#define _NIPSYSEMITTERLIFESPANCTLR_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_INCLUDE
+
+/*
+ * NiPSysEmitterLifeSpanCtlr
+ */
+
+class NiPSysEmitterLifeSpanCtlr;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysEmitterSpeedCtlr.cpp b/obj/NiPSysEmitterSpeedCtlr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2c2cd8dcb41e1bbe8a4bcb3f208ca7b263ab0910
--- /dev/null
+++ b/obj/NiPSysEmitterSpeedCtlr.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysEmitterSpeedCtlr.h"
+
+//Definition of TYPE constant
+const Type NiPSysEmitterSpeedCtlr::TYPE("NiPSysEmitterSpeedCtlr", &NI_P_SYS_EMITTER_SPEED_CTLR_PARENT::TYPE );
+
+NiPSysEmitterSpeedCtlr::NiPSysEmitterSpeedCtlr() NI_P_SYS_EMITTER_SPEED_CTLR_CONSTRUCT {}
+
+NiPSysEmitterSpeedCtlr::~NiPSysEmitterSpeedCtlr() {}
+
+void NiPSysEmitterSpeedCtlr::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysEmitterSpeedCtlr::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysEmitterSpeedCtlr.h b/obj/NiPSysEmitterSpeedCtlr.h
new file mode 100644
index 0000000000000000000000000000000000000000..0980abd081c43babd13e6ac46338d8f574be7f9e
--- /dev/null
+++ b/obj/NiPSysEmitterSpeedCtlr.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSEMITTERSPEEDCTLR_H_
+#define _NIPSYSEMITTERSPEEDCTLR_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_EMITTER_SPEED_CTLR_INCLUDE
+
+/*
+ * NiPSysEmitterSpeedCtlr
+ */
+
+class NiPSysEmitterSpeedCtlr;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysGravityModifier.cpp b/obj/NiPSysGravityModifier.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c866e80c2210cba9724f359307fcfe1c9a361e7e
--- /dev/null
+++ b/obj/NiPSysGravityModifier.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysGravityModifier.h"
+
+//Definition of TYPE constant
+const Type NiPSysGravityModifier::TYPE("NiPSysGravityModifier", &NI_P_SYS_GRAVITY_MODIFIER_PARENT::TYPE );
+
+NiPSysGravityModifier::NiPSysGravityModifier() NI_P_SYS_GRAVITY_MODIFIER_CONSTRUCT {}
+
+NiPSysGravityModifier::~NiPSysGravityModifier() {}
+
+void NiPSysGravityModifier::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysGravityModifier::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysGravityModifier.h b/obj/NiPSysGravityModifier.h
new file mode 100644
index 0000000000000000000000000000000000000000..eced5db9e0d60833ae5ba6e7144fa36a64e2dee0
--- /dev/null
+++ b/obj/NiPSysGravityModifier.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSGRAVITYMODIFIER_H_
+#define _NIPSYSGRAVITYMODIFIER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_GRAVITY_MODIFIER_INCLUDE
+
+/*
+ * NiPSysGravityModifier
+ */
+
+class NiPSysGravityModifier;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysGravityStrengthCtlr.cpp b/obj/NiPSysGravityStrengthCtlr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..202b960ec7b65532391113a6520caf1e9d5ab0a0
--- /dev/null
+++ b/obj/NiPSysGravityStrengthCtlr.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysGravityStrengthCtlr.h"
+
+//Definition of TYPE constant
+const Type NiPSysGravityStrengthCtlr::TYPE("NiPSysGravityStrengthCtlr", &NI_P_SYS_GRAVITY_STRENGTH_CTLR_PARENT::TYPE );
+
+NiPSysGravityStrengthCtlr::NiPSysGravityStrengthCtlr() NI_P_SYS_GRAVITY_STRENGTH_CTLR_CONSTRUCT {}
+
+NiPSysGravityStrengthCtlr::~NiPSysGravityStrengthCtlr() {}
+
+void NiPSysGravityStrengthCtlr::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysGravityStrengthCtlr::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysGravityStrengthCtlr.h b/obj/NiPSysGravityStrengthCtlr.h
new file mode 100644
index 0000000000000000000000000000000000000000..b4a33ecdca09eb83ab44b5a3121fb7bcd5d95911
--- /dev/null
+++ b/obj/NiPSysGravityStrengthCtlr.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSGRAVITYSTRENGTHCTLR_H_
+#define _NIPSYSGRAVITYSTRENGTHCTLR_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_GRAVITY_STRENGTH_CTLR_INCLUDE
+
+/*
+ * NiPSysGravityStrengthCtlr
+ */
+
+class NiPSysGravityStrengthCtlr;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysGrowFadeModifier.cpp b/obj/NiPSysGrowFadeModifier.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..591d1a54c1938d00e4f3265daada77a09ae82656
--- /dev/null
+++ b/obj/NiPSysGrowFadeModifier.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysGrowFadeModifier.h"
+
+//Definition of TYPE constant
+const Type NiPSysGrowFadeModifier::TYPE("NiPSysGrowFadeModifier", &NI_P_SYS_GROW_FADE_MODIFIER_PARENT::TYPE );
+
+NiPSysGrowFadeModifier::NiPSysGrowFadeModifier() NI_P_SYS_GROW_FADE_MODIFIER_CONSTRUCT {}
+
+NiPSysGrowFadeModifier::~NiPSysGrowFadeModifier() {}
+
+void NiPSysGrowFadeModifier::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysGrowFadeModifier::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysGrowFadeModifier.h b/obj/NiPSysGrowFadeModifier.h
new file mode 100644
index 0000000000000000000000000000000000000000..6b56036b6b41153153b6a266f623773cee98110e
--- /dev/null
+++ b/obj/NiPSysGrowFadeModifier.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSGROWFADEMODIFIER_H_
+#define _NIPSYSGROWFADEMODIFIER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_GROW_FADE_MODIFIER_INCLUDE
+
+/*
+ * NiPSysGrowFadeModifier
+ */
+
+class NiPSysGrowFadeModifier;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysMeshEmitter.cpp b/obj/NiPSysMeshEmitter.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4d7d57fa9b22ece3be4316e5c562528e981afb80
--- /dev/null
+++ b/obj/NiPSysMeshEmitter.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysMeshEmitter.h"
+
+//Definition of TYPE constant
+const Type NiPSysMeshEmitter::TYPE("NiPSysMeshEmitter", &NI_P_SYS_MESH_EMITTER_PARENT::TYPE );
+
+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
+}
+
+void NiPSysMeshEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_P_SYS_MESH_EMITTER_WRITE
+}
+
+string NiPSysMeshEmitter::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysMeshEmitter.h b/obj/NiPSysMeshEmitter.h
new file mode 100644
index 0000000000000000000000000000000000000000..fd5470e8234c0c551033918adf3f029f63cf217a
--- /dev/null
+++ b/obj/NiPSysMeshEmitter.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSMESHEMITTER_H_
+#define _NIPSYSMESHEMITTER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_MESH_EMITTER_INCLUDE
+
+/*
+ * NiPSysMeshEmitter
+ */
+
+class NiPSysMeshEmitter;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysMeshUpdateModifier.cpp b/obj/NiPSysMeshUpdateModifier.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1b00b49c1e3fa71679d12358b8dd5ae945f25936
--- /dev/null
+++ b/obj/NiPSysMeshUpdateModifier.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysMeshUpdateModifier.h"
+
+//Definition of TYPE constant
+const Type NiPSysMeshUpdateModifier::TYPE("NiPSysMeshUpdateModifier", &NI_P_SYS_MESH_UPDATE_MODIFIER_PARENT::TYPE );
+
+NiPSysMeshUpdateModifier::NiPSysMeshUpdateModifier() NI_P_SYS_MESH_UPDATE_MODIFIER_CONSTRUCT {}
+
+NiPSysMeshUpdateModifier::~NiPSysMeshUpdateModifier() {}
+
+void NiPSysMeshUpdateModifier::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysMeshUpdateModifier::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysMeshUpdateModifier.h b/obj/NiPSysMeshUpdateModifier.h
new file mode 100644
index 0000000000000000000000000000000000000000..1de1657cc5ef2a6aed65eecbe15812caf97867fd
--- /dev/null
+++ b/obj/NiPSysMeshUpdateModifier.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSMESHUPDATEMODIFIER_H_
+#define _NIPSYSMESHUPDATEMODIFIER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_MESH_UPDATE_MODIFIER_INCLUDE
+
+/*
+ * NiPSysMeshUpdateModifier
+ */
+
+class NiPSysMeshUpdateModifier;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysModifierActiveCtlr.cpp b/obj/NiPSysModifierActiveCtlr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..45db203439342c238ac72be5cdc7bfc050a87386
--- /dev/null
+++ b/obj/NiPSysModifierActiveCtlr.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysModifierActiveCtlr.h"
+
+//Definition of TYPE constant
+const Type NiPSysModifierActiveCtlr::TYPE("NiPSysModifierActiveCtlr", &NI_P_SYS_MODIFIER_ACTIVE_CTLR_PARENT::TYPE );
+
+NiPSysModifierActiveCtlr::NiPSysModifierActiveCtlr() NI_P_SYS_MODIFIER_ACTIVE_CTLR_CONSTRUCT {}
+
+NiPSysModifierActiveCtlr::~NiPSysModifierActiveCtlr() {}
+
+void NiPSysModifierActiveCtlr::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysModifierActiveCtlr::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysModifierActiveCtlr.h b/obj/NiPSysModifierActiveCtlr.h
new file mode 100644
index 0000000000000000000000000000000000000000..6cf3eaf9cd52c9e481681f1b9a0aa0afbf405264
--- /dev/null
+++ b/obj/NiPSysModifierActiveCtlr.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSMODIFIERACTIVECTLR_H_
+#define _NIPSYSMODIFIERACTIVECTLR_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_MODIFIER_ACTIVE_CTLR_INCLUDE
+
+/*
+ * NiPSysModifierActiveCtlr
+ */
+
+class NiPSysModifierActiveCtlr;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysPlanarCollider.cpp b/obj/NiPSysPlanarCollider.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..75d53bd997b780e4c53bb05f6ab3f8071fdf454e
--- /dev/null
+++ b/obj/NiPSysPlanarCollider.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysPlanarCollider.h"
+
+//Definition of TYPE constant
+const Type NiPSysPlanarCollider::TYPE("NiPSysPlanarCollider", &NI_P_SYS_PLANAR_COLLIDER_PARENT::TYPE );
+
+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
+}
+
+void NiPSysPlanarCollider::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_P_SYS_PLANAR_COLLIDER_WRITE
+}
+
+string NiPSysPlanarCollider::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysPlanarCollider.h b/obj/NiPSysPlanarCollider.h
new file mode 100644
index 0000000000000000000000000000000000000000..edfd19834e2051a22922bdfabc893195d367dee8
--- /dev/null
+++ b/obj/NiPSysPlanarCollider.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSPLANARCOLLIDER_H_
+#define _NIPSYSPLANARCOLLIDER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_PLANAR_COLLIDER_INCLUDE
+
+/*
+ * NiPSysPlanarCollider
+ */
+
+class NiPSysPlanarCollider;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysPositionModifier.cpp b/obj/NiPSysPositionModifier.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fec2e99ca74f324c11449990119177e50842811a
--- /dev/null
+++ b/obj/NiPSysPositionModifier.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysPositionModifier.h"
+
+//Definition of TYPE constant
+const Type NiPSysPositionModifier::TYPE("NiPSysPositionModifier", &NI_P_SYS_POSITION_MODIFIER_PARENT::TYPE );
+
+NiPSysPositionModifier::NiPSysPositionModifier() NI_P_SYS_POSITION_MODIFIER_CONSTRUCT {}
+
+NiPSysPositionModifier::~NiPSysPositionModifier() {}
+
+void NiPSysPositionModifier::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysPositionModifier::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysPositionModifier.h b/obj/NiPSysPositionModifier.h
new file mode 100644
index 0000000000000000000000000000000000000000..6679dc9ba6b46cb1bcdceaaff7cb7d3c84ab8e8a
--- /dev/null
+++ b/obj/NiPSysPositionModifier.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSPOSITIONMODIFIER_H_
+#define _NIPSYSPOSITIONMODIFIER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_POSITION_MODIFIER_INCLUDE
+
+/*
+ * NiPSysPositionModifier
+ */
+
+class NiPSysPositionModifier;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysResetOnLoopCtlr.cpp b/obj/NiPSysResetOnLoopCtlr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5a82b9320a9bfd93447c770e9b8ac331ead2e7a0
--- /dev/null
+++ b/obj/NiPSysResetOnLoopCtlr.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysResetOnLoopCtlr.h"
+
+//Definition of TYPE constant
+const Type NiPSysResetOnLoopCtlr::TYPE("NiPSysResetOnLoopCtlr", &NI_P_SYS_RESET_ON_LOOP_CTLR_PARENT::TYPE );
+
+NiPSysResetOnLoopCtlr::NiPSysResetOnLoopCtlr() NI_P_SYS_RESET_ON_LOOP_CTLR_CONSTRUCT {}
+
+NiPSysResetOnLoopCtlr::~NiPSysResetOnLoopCtlr() {}
+
+void NiPSysResetOnLoopCtlr::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysResetOnLoopCtlr::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysResetOnLoopCtlr.h b/obj/NiPSysResetOnLoopCtlr.h
new file mode 100644
index 0000000000000000000000000000000000000000..d1d426a8dfe4eb67f8623a4367993a807d09f760
--- /dev/null
+++ b/obj/NiPSysResetOnLoopCtlr.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSRESETONLOOPCTLR_H_
+#define _NIPSYSRESETONLOOPCTLR_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_RESET_ON_LOOP_CTLR_INCLUDE
+
+/*
+ * NiPSysResetOnLoopCtlr
+ */
+
+class NiPSysResetOnLoopCtlr;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysRotationModifier.cpp b/obj/NiPSysRotationModifier.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..68111eef02662b630c55fce008a5af3ab8e545ff
--- /dev/null
+++ b/obj/NiPSysRotationModifier.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysRotationModifier.h"
+
+//Definition of TYPE constant
+const Type NiPSysRotationModifier::TYPE("NiPSysRotationModifier", &NI_P_SYS_ROTATION_MODIFIER_PARENT::TYPE );
+
+NiPSysRotationModifier::NiPSysRotationModifier() NI_P_SYS_ROTATION_MODIFIER_CONSTRUCT {}
+
+NiPSysRotationModifier::~NiPSysRotationModifier() {}
+
+void NiPSysRotationModifier::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiPSysRotationModifier::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysRotationModifier.h b/obj/NiPSysRotationModifier.h
new file mode 100644
index 0000000000000000000000000000000000000000..d2fb4d03bd41e4e0d036494a0cb803bbbd982f5a
--- /dev/null
+++ b/obj/NiPSysRotationModifier.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSROTATIONMODIFIER_H_
+#define _NIPSYSROTATIONMODIFIER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_ROTATION_MODIFIER_INCLUDE
+
+/*
+ * NiPSysRotationModifier
+ */
+
+class NiPSysRotationModifier;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysSpawnModifier.cpp b/obj/NiPSysSpawnModifier.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2058fe14a438f4e0388307c686346e9f85a38041
--- /dev/null
+++ b/obj/NiPSysSpawnModifier.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysSpawnModifier.h"
+
+//Definition of TYPE constant
+const Type NiPSysSpawnModifier::TYPE("NiPSysSpawnModifier", &NI_P_SYS_SPAWN_MODIFIER_PARENT::TYPE );
+
+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
+}
+
+void NiPSysSpawnModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_P_SYS_SPAWN_MODIFIER_WRITE
+}
+
+string NiPSysSpawnModifier::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysSpawnModifier.h b/obj/NiPSysSpawnModifier.h
new file mode 100644
index 0000000000000000000000000000000000000000..95e051647d52779c8132eaf9417b707ce0a94f58
--- /dev/null
+++ b/obj/NiPSysSpawnModifier.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSSPAWNMODIFIER_H_
+#define _NIPSYSSPAWNMODIFIER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_SPAWN_MODIFIER_INCLUDE
+
+/*
+ * NiPSysSpawnModifier
+ */
+
+class NiPSysSpawnModifier;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysSphereEmitter.cpp b/obj/NiPSysSphereEmitter.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..38d58bd8b736a163c046e604e4c931624ea316ae
--- /dev/null
+++ b/obj/NiPSysSphereEmitter.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysSphereEmitter.h"
+
+//Definition of TYPE constant
+const Type NiPSysSphereEmitter::TYPE("NiPSysSphereEmitter", &NI_P_SYS_SPHERE_EMITTER_PARENT::TYPE );
+
+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
+}
+
+void NiPSysSphereEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_P_SYS_SPHERE_EMITTER_WRITE
+}
+
+string NiPSysSphereEmitter::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysSphereEmitter.h b/obj/NiPSysSphereEmitter.h
new file mode 100644
index 0000000000000000000000000000000000000000..fddc5c5aa251f10e83d4d6b2ad222c006e12ed6a
--- /dev/null
+++ b/obj/NiPSysSphereEmitter.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSSPHEREEMITTER_H_
+#define _NIPSYSSPHEREEMITTER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_SPHERE_EMITTER_INCLUDE
+
+/*
+ * NiPSysSphereEmitter
+ */
+
+class NiPSysSphereEmitter;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPSysUpdateCtlr.cpp b/obj/NiPSysUpdateCtlr.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9a1b4b633fe253d8dcdc6f2a1638b0b23022a56a
--- /dev/null
+++ b/obj/NiPSysUpdateCtlr.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysUpdateCtlr.h"
+
+//Definition of TYPE constant
+const Type NiPSysUpdateCtlr::TYPE("NiPSysUpdateCtlr", &NI_P_SYS_UPDATE_CTLR_PARENT::TYPE );
+
+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
+}
+
+void NiPSysUpdateCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_P_SYS_UPDATE_CTLR_WRITE
+}
+
+string NiPSysUpdateCtlr::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiPSysUpdateCtlr.h b/obj/NiPSysUpdateCtlr.h
new file mode 100644
index 0000000000000000000000000000000000000000..f41bfff120a1c5b86ed7cdb3f4299378908961b8
--- /dev/null
+++ b/obj/NiPSysUpdateCtlr.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSUPDATECTLR_H_
+#define _NIPSYSUPDATECTLR_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_UPDATE_CTLR_INCLUDE
+
+/*
+ * NiPSysUpdateCtlr
+ */
+
+class NiPSysUpdateCtlr;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiPalette.cpp b/obj/NiPalette.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e486e4bf5c676c8e1ae88bb2b9f428cd1d0c2a40
--- /dev/null
+++ b/obj/NiPalette.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPalette.h"
+
+//Definition of TYPE constant
+const Type NiPalette::TYPE("NiPalette", &NI_PALETTE_PARENT::TYPE );
+
+NiPalette::NiPalette() NI_PALETTE_CONSTRUCT {}
+
+NiPalette::~NiPalette() {}
+
+void NiPalette::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_PALETTE_READ
+}
+
+void NiPalette::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PALETTE_WRITE
+}
+
+string NiPalette::asString( bool verbose ) const {
+	NI_PALETTE_STRING
+}
+
+void NiPalette::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PALETTE_FIXLINKS
+}
+
diff --git a/obj/NiPalette.h b/obj/NiPalette.h
new file mode 100644
index 0000000000000000000000000000000000000000..0862fb48bec9a9b9949f99d323003fbf97aaf4cc
--- /dev/null
+++ b/obj/NiPalette.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPALETTE_H_
+#define _NIPALETTE_H_
+
+#include "xml_extract.h"
+#include NI_PALETTE_INCLUDE
+
+/*
+ * NiPalette
+ */
+
+class NiPalette;
+typedef Ref<NiPalette> NiPaletteRef;
+
+class NiPalette : public NI_PALETTE_PARENT {
+public:
+	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 );
+private:
+	NI_PALETTE_MEMBERS
+};
+#endif
diff --git a/obj/NiParticleBomb.cpp b/obj/NiParticleBomb.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..0a9a26d3d1623c4cc9306ca5d041635f62444a83
--- /dev/null
+++ b/obj/NiParticleBomb.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiParticleBomb.h"
+
+//Definition of TYPE constant
+const Type NiParticleBomb::TYPE("NiParticleBomb", &NI_PARTICLE_BOMB_PARENT::TYPE );
+
+NiParticleBomb::NiParticleBomb() NI_PARTICLE_BOMB_CONSTRUCT {}
+
+NiParticleBomb::~NiParticleBomb() {}
+
+void NiParticleBomb::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLE_BOMB_READ
+}
+
+void NiParticleBomb::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PARTICLE_BOMB_WRITE
+}
+
+string NiParticleBomb::asString( bool verbose ) const {
+	NI_PARTICLE_BOMB_STRING
+}
+
+void NiParticleBomb::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLE_BOMB_FIXLINKS
+}
+
diff --git a/obj/NiParticleBomb.h b/obj/NiParticleBomb.h
new file mode 100644
index 0000000000000000000000000000000000000000..f3a744c615a92f562dc9baa079909bd17595101b
--- /dev/null
+++ b/obj/NiParticleBomb.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPARTICLEBOMB_H_
+#define _NIPARTICLEBOMB_H_
+
+#include "xml_extract.h"
+#include NI_PARTICLE_BOMB_INCLUDE
+
+/*
+ * NiParticleBomb
+ */
+
+class NiParticleBomb;
+typedef Ref<NiParticleBomb> NiParticleBombRef;
+
+class NiParticleBomb : public NI_PARTICLE_BOMB_PARENT {
+public:
+	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 );
+private:
+	NI_PARTICLE_BOMB_MEMBERS
+};
+#endif
diff --git a/obj/NiParticleColorModifier.cpp b/obj/NiParticleColorModifier.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f932e57061087e8d7c6cc986858dc1640576e975
--- /dev/null
+++ b/obj/NiParticleColorModifier.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiParticleColorModifier.h"
+
+//Definition of TYPE constant
+const Type NiParticleColorModifier::TYPE("NiParticleColorModifier", &NI_PARTICLE_COLOR_MODIFIER_PARENT::TYPE );
+
+NiParticleColorModifier::NiParticleColorModifier() NI_PARTICLE_COLOR_MODIFIER_CONSTRUCT {}
+
+NiParticleColorModifier::~NiParticleColorModifier() {}
+
+void NiParticleColorModifier::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLE_COLOR_MODIFIER_READ
+}
+
+void NiParticleColorModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PARTICLE_COLOR_MODIFIER_WRITE
+}
+
+string NiParticleColorModifier::asString( bool verbose ) const {
+	NI_PARTICLE_COLOR_MODIFIER_STRING
+}
+
+void NiParticleColorModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLE_COLOR_MODIFIER_FIXLINKS
+}
+
diff --git a/obj/NiParticleColorModifier.h b/obj/NiParticleColorModifier.h
new file mode 100644
index 0000000000000000000000000000000000000000..5c4fea489518db1aa9fb218248e637a95fa91cc1
--- /dev/null
+++ b/obj/NiParticleColorModifier.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPARTICLECOLORMODIFIER_H_
+#define _NIPARTICLECOLORMODIFIER_H_
+
+#include "xml_extract.h"
+#include NI_PARTICLE_COLOR_MODIFIER_INCLUDE
+
+/*
+ * NiParticleColorModifier
+ */
+
+class NiParticleColorModifier;
+typedef Ref<NiParticleColorModifier> NiParticleColorModifierRef;
+
+class NiParticleColorModifier : public NI_PARTICLE_COLOR_MODIFIER_PARENT {
+public:
+	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 );
+private:
+	NI_PARTICLE_COLOR_MODIFIER_MEMBERS
+};
+#endif
diff --git a/obj/NiParticleGrowFade.cpp b/obj/NiParticleGrowFade.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..11eb0de9370fe587686fa8cdf4cdc146aa6692ef
--- /dev/null
+++ b/obj/NiParticleGrowFade.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiParticleGrowFade.h"
+
+//Definition of TYPE constant
+const Type NiParticleGrowFade::TYPE("NiParticleGrowFade", &NI_PARTICLE_GROW_FADE_PARENT::TYPE );
+
+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
+}
+
+void NiParticleGrowFade::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PARTICLE_GROW_FADE_WRITE
+}
+
+string NiParticleGrowFade::asString( bool verbose ) const {
+	NI_PARTICLE_GROW_FADE_STRING
+}
+
+void NiParticleGrowFade::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLE_GROW_FADE_FIXLINKS
+}
+
diff --git a/obj/NiParticleGrowFade.h b/obj/NiParticleGrowFade.h
new file mode 100644
index 0000000000000000000000000000000000000000..061744b8e2318374ae3865581d87dc0942693802
--- /dev/null
+++ b/obj/NiParticleGrowFade.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPARTICLEGROWFADE_H_
+#define _NIPARTICLEGROWFADE_H_
+
+#include "xml_extract.h"
+#include NI_PARTICLE_GROW_FADE_INCLUDE
+
+/*
+ * NiParticleGrowFade
+ */
+
+class NiParticleGrowFade;
+typedef Ref<NiParticleGrowFade> NiParticleGrowFadeRef;
+
+class NiParticleGrowFade : public NI_PARTICLE_GROW_FADE_PARENT {
+public:
+	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 );
+private:
+	NI_PARTICLE_GROW_FADE_MEMBERS
+};
+#endif
diff --git a/obj/NiParticleMeshModifier.cpp b/obj/NiParticleMeshModifier.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..14af84d49220030aa69b2215c2779a7c9e73394f
--- /dev/null
+++ b/obj/NiParticleMeshModifier.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiParticleMeshModifier.h"
+
+//Definition of TYPE constant
+const Type NiParticleMeshModifier::TYPE("NiParticleMeshModifier", &NI_PARTICLE_MESH_MODIFIER_PARENT::TYPE );
+
+NiParticleMeshModifier::NiParticleMeshModifier() NI_PARTICLE_MESH_MODIFIER_CONSTRUCT {}
+
+NiParticleMeshModifier::~NiParticleMeshModifier() {}
+
+void NiParticleMeshModifier::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLE_MESH_MODIFIER_READ
+}
+
+void NiParticleMeshModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PARTICLE_MESH_MODIFIER_WRITE
+}
+
+string NiParticleMeshModifier::asString( bool verbose ) const {
+	NI_PARTICLE_MESH_MODIFIER_STRING
+}
+
+void NiParticleMeshModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLE_MESH_MODIFIER_FIXLINKS
+}
+
diff --git a/obj/NiParticleMeshModifier.h b/obj/NiParticleMeshModifier.h
new file mode 100644
index 0000000000000000000000000000000000000000..89f59483624f95a06d51cbe52cb20f00a5b47f19
--- /dev/null
+++ b/obj/NiParticleMeshModifier.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPARTICLEMESHMODIFIER_H_
+#define _NIPARTICLEMESHMODIFIER_H_
+
+#include "xml_extract.h"
+#include NI_PARTICLE_MESH_MODIFIER_INCLUDE
+
+/*
+ * NiParticleMeshModifier
+ */
+
+class NiParticleMeshModifier;
+typedef Ref<NiParticleMeshModifier> NiParticleMeshModifierRef;
+
+class NiParticleMeshModifier : public NI_PARTICLE_MESH_MODIFIER_PARENT {
+public:
+	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 );
+private:
+	NI_PARTICLE_MESH_MODIFIER_MEMBERS
+};
+#endif
diff --git a/obj/NiParticleMeshes.cpp b/obj/NiParticleMeshes.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..09dda3db6899a787051f387a5e57a6d59ec402c3
--- /dev/null
+++ b/obj/NiParticleMeshes.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiParticleMeshes.h"
+
+//Definition of TYPE constant
+const Type NiParticleMeshes::TYPE("NiParticleMeshes", &NI_PARTICLE_MESHES_PARENT::TYPE );
+
+NiParticleMeshes::NiParticleMeshes() NI_PARTICLE_MESHES_CONSTRUCT {}
+
+NiParticleMeshes::~NiParticleMeshes() {}
+
+void NiParticleMeshes::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLE_MESHES_READ
+}
+
+void NiParticleMeshes::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PARTICLE_MESHES_WRITE
+}
+
+string NiParticleMeshes::asString( bool verbose ) const {
+	NI_PARTICLE_MESHES_STRING
+}
+
+void NiParticleMeshes::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLE_MESHES_FIXLINKS
+}
+
diff --git a/obj/NiParticleMeshes.h b/obj/NiParticleMeshes.h
new file mode 100644
index 0000000000000000000000000000000000000000..ed6a1c8f97b9002ce8bafb5e7654d6a13240cd9f
--- /dev/null
+++ b/obj/NiParticleMeshes.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPARTICLEMESHES_H_
+#define _NIPARTICLEMESHES_H_
+
+#include "xml_extract.h"
+#include NI_PARTICLE_MESHES_INCLUDE
+
+/*
+ * NiParticleMeshes
+ */
+
+class NiParticleMeshes;
+typedef Ref<NiParticleMeshes> NiParticleMeshesRef;
+
+class NiParticleMeshes : public NI_PARTICLE_MESHES_PARENT {
+public:
+	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 );
+private:
+	NI_PARTICLE_MESHES_MEMBERS
+};
+#endif
diff --git a/obj/NiParticleMeshesData.cpp b/obj/NiParticleMeshesData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fa18bc54209e35b0e827e36e9d4b52f338b5fc8d
--- /dev/null
+++ b/obj/NiParticleMeshesData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiParticleMeshesData.h"
+
+//Definition of TYPE constant
+const Type NiParticleMeshesData::TYPE("NiParticleMeshesData", &NI_PARTICLE_MESHES_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiParticleMeshesData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PARTICLE_MESHES_DATA_WRITE
+}
+
+string NiParticleMeshesData::asString( bool verbose ) const {
+	NI_PARTICLE_MESHES_DATA_STRING
+}
+
+void NiParticleMeshesData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLE_MESHES_DATA_FIXLINKS
+}
+
diff --git a/obj/NiParticleMeshesData.h b/obj/NiParticleMeshesData.h
new file mode 100644
index 0000000000000000000000000000000000000000..1c2ac2b3ed7944feddf638fdb7f5a81c387a5c37
--- /dev/null
+++ b/obj/NiParticleMeshesData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPARTICLEMESHESDATA_H_
+#define _NIPARTICLEMESHESDATA_H_
+
+#include "xml_extract.h"
+#include NI_PARTICLE_MESHES_DATA_INCLUDE
+
+/*
+ * NiParticleMeshesData
+ */
+
+class NiParticleMeshesData;
+typedef Ref<NiParticleMeshesData> NiParticleMeshesDataRef;
+
+class NiParticleMeshesData : public NI_PARTICLE_MESHES_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_PARTICLE_MESHES_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiParticleRotation.cpp b/obj/NiParticleRotation.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..33cd5d231477be6bbb6adf52dd2909835cb08252
--- /dev/null
+++ b/obj/NiParticleRotation.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiParticleRotation.h"
+
+//Definition of TYPE constant
+const Type NiParticleRotation::TYPE("NiParticleRotation", &NI_PARTICLE_ROTATION_PARENT::TYPE );
+
+NiParticleRotation::NiParticleRotation() NI_PARTICLE_ROTATION_CONSTRUCT {}
+
+NiParticleRotation::~NiParticleRotation() {}
+
+void NiParticleRotation::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLE_ROTATION_READ
+}
+
+void NiParticleRotation::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PARTICLE_ROTATION_WRITE
+}
+
+string NiParticleRotation::asString( bool verbose ) const {
+	NI_PARTICLE_ROTATION_STRING
+}
+
+void NiParticleRotation::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLE_ROTATION_FIXLINKS
+}
+
diff --git a/obj/NiParticleRotation.h b/obj/NiParticleRotation.h
new file mode 100644
index 0000000000000000000000000000000000000000..2872994e2b6af19eaee9815df6afdabb64f0ddfc
--- /dev/null
+++ b/obj/NiParticleRotation.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPARTICLEROTATION_H_
+#define _NIPARTICLEROTATION_H_
+
+#include "xml_extract.h"
+#include NI_PARTICLE_ROTATION_INCLUDE
+
+/*
+ * NiParticleRotation
+ */
+
+class NiParticleRotation;
+typedef Ref<NiParticleRotation> NiParticleRotationRef;
+
+class NiParticleRotation : public NI_PARTICLE_ROTATION_PARENT {
+public:
+	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 );
+private:
+	NI_PARTICLE_ROTATION_MEMBERS
+};
+#endif
diff --git a/obj/NiParticleSystem.cpp b/obj/NiParticleSystem.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6750e13902b3f6e0b61f3be6fe6e35f7caa9b5dc
--- /dev/null
+++ b/obj/NiParticleSystem.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiParticleSystem.h"
+
+//Definition of TYPE constant
+const Type NiParticleSystem::TYPE("NiParticleSystem", &NI_PARTICLE_SYSTEM_PARENT::TYPE );
+
+NiParticleSystem::NiParticleSystem() NI_PARTICLE_SYSTEM_CONSTRUCT {}
+
+NiParticleSystem::~NiParticleSystem() {}
+
+void NiParticleSystem::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLE_SYSTEM_READ
+}
+
+void NiParticleSystem::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PARTICLE_SYSTEM_WRITE
+}
+
+string NiParticleSystem::asString( bool verbose ) const {
+	NI_PARTICLE_SYSTEM_STRING
+}
+
+void NiParticleSystem::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLE_SYSTEM_FIXLINKS
+}
+
diff --git a/obj/NiParticleSystem.h b/obj/NiParticleSystem.h
new file mode 100644
index 0000000000000000000000000000000000000000..c765cf73c1ee14b07f5106c48759dd3239f90844
--- /dev/null
+++ b/obj/NiParticleSystem.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPARTICLESYSTEM_H_
+#define _NIPARTICLESYSTEM_H_
+
+#include "xml_extract.h"
+#include NI_PARTICLE_SYSTEM_INCLUDE
+
+/*
+ * NiParticleSystem
+ */
+
+class NiParticleSystem;
+typedef Ref<NiParticleSystem> NiParticleSystemRef;
+
+class NiParticleSystem : public NI_PARTICLE_SYSTEM_PARENT {
+public:
+	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 );
+private:
+	NI_PARTICLE_SYSTEM_MEMBERS
+};
+#endif
diff --git a/obj/NiParticleSystemController.cpp b/obj/NiParticleSystemController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ff8d138e1c069749a601741e51a95e422eeab6e2
--- /dev/null
+++ b/obj/NiParticleSystemController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiParticleSystemController.h"
+
+//Definition of TYPE constant
+const Type NiParticleSystemController::TYPE("NiParticleSystemController", &NI_PARTICLE_SYSTEM_CONTROLLER_PARENT::TYPE );
+
+NiParticleSystemController::NiParticleSystemController() NI_PARTICLE_SYSTEM_CONTROLLER_CONSTRUCT {}
+
+NiParticleSystemController::~NiParticleSystemController() {}
+
+void NiParticleSystemController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLE_SYSTEM_CONTROLLER_READ
+}
+
+void NiParticleSystemController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PARTICLE_SYSTEM_CONTROLLER_WRITE
+}
+
+string NiParticleSystemController::asString( bool verbose ) const {
+	NI_PARTICLE_SYSTEM_CONTROLLER_STRING
+}
+
+void NiParticleSystemController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLE_SYSTEM_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/NiParticleSystemController.h b/obj/NiParticleSystemController.h
new file mode 100644
index 0000000000000000000000000000000000000000..47284e31c56cd4c74e789af8dbbcfeb940fabdfe
--- /dev/null
+++ b/obj/NiParticleSystemController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPARTICLESYSTEMCONTROLLER_H_
+#define _NIPARTICLESYSTEMCONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_PARTICLE_SYSTEM_CONTROLLER_INCLUDE
+
+/*
+ * NiParticleSystemController
+ */
+
+class NiParticleSystemController;
+typedef Ref<NiParticleSystemController> NiParticleSystemControllerRef;
+
+class NiParticleSystemController : public NI_PARTICLE_SYSTEM_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	NI_PARTICLE_SYSTEM_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/NiParticles.cpp b/obj/NiParticles.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b1305e1c4e503652fbb34985619cfd9a3e753233
--- /dev/null
+++ b/obj/NiParticles.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiParticles.h"
+
+//Definition of TYPE constant
+const Type NiParticles::TYPE("NiParticles", &NI_PARTICLES_PARENT::TYPE );
+
+NiParticles::NiParticles() NI_PARTICLES_CONSTRUCT {}
+
+NiParticles::~NiParticles() {}
+
+void NiParticles::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLES_READ
+}
+
+void NiParticles::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PARTICLES_WRITE
+}
+
+string NiParticles::asString( bool verbose ) const {
+	NI_PARTICLES_STRING
+}
+
+void NiParticles::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLES_FIXLINKS
+}
+
diff --git a/obj/NiParticles.h b/obj/NiParticles.h
new file mode 100644
index 0000000000000000000000000000000000000000..578afcb98388537f2d467f2304704904016de4a7
--- /dev/null
+++ b/obj/NiParticles.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPARTICLES_H_
+#define _NIPARTICLES_H_
+
+#include "xml_extract.h"
+#include NI_PARTICLES_INCLUDE
+
+/*
+ * NiParticles
+ */
+
+class NiParticles;
+typedef Ref<NiParticles> NiParticlesRef;
+
+class NiParticles : public NI_PARTICLES_PARENT {
+public:
+	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 );
+private:
+	NI_PARTICLES_MEMBERS
+};
+#endif
diff --git a/obj/NiParticlesData.cpp b/obj/NiParticlesData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..726eda94e3c7c6326318e6276434aaa5e4bb2f43
--- /dev/null
+++ b/obj/NiParticlesData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiParticlesData.h"
+
+//Definition of TYPE constant
+const Type NiParticlesData::TYPE("NiParticlesData", &NI_PARTICLES_DATA_PARENT::TYPE );
+
+NiParticlesData::NiParticlesData() NI_PARTICLES_DATA_CONSTRUCT {}
+
+NiParticlesData::~NiParticlesData() {}
+
+void NiParticlesData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLES_DATA_READ
+}
+
+void NiParticlesData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PARTICLES_DATA_WRITE
+}
+
+string NiParticlesData::asString( bool verbose ) const {
+	NI_PARTICLES_DATA_STRING
+}
+
+void NiParticlesData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PARTICLES_DATA_FIXLINKS
+}
+
diff --git a/obj/NiParticlesData.h b/obj/NiParticlesData.h
new file mode 100644
index 0000000000000000000000000000000000000000..2ac42bdb2591ec3630669a9b929f37ed64ff3f97
--- /dev/null
+++ b/obj/NiParticlesData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPARTICLESDATA_H_
+#define _NIPARTICLESDATA_H_
+
+#include "xml_extract.h"
+#include NI_PARTICLES_DATA_INCLUDE
+
+/*
+ * NiParticlesData
+ */
+
+class NiParticlesData;
+typedef Ref<NiParticlesData> NiParticlesDataRef;
+
+class NiParticlesData : public NI_PARTICLES_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_PARTICLES_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiPathController.cpp b/obj/NiPathController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2939f70bfa400599bb94f5b284845cdc14ce5830
--- /dev/null
+++ b/obj/NiPathController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPathController.h"
+
+//Definition of TYPE constant
+const Type NiPathController::TYPE("NiPathController", &NI_PATH_CONTROLLER_PARENT::TYPE );
+
+NiPathController::NiPathController() NI_PATH_CONTROLLER_CONSTRUCT {}
+
+NiPathController::~NiPathController() {}
+
+void NiPathController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_PATH_CONTROLLER_READ
+}
+
+void NiPathController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PATH_CONTROLLER_WRITE
+}
+
+string NiPathController::asString( bool verbose ) const {
+	NI_PATH_CONTROLLER_STRING
+}
+
+void NiPathController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PATH_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/NiPathController.h b/obj/NiPathController.h
new file mode 100644
index 0000000000000000000000000000000000000000..7dff56c111ae862eeb42451ca4eb7ef0755994cb
--- /dev/null
+++ b/obj/NiPathController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPATHCONTROLLER_H_
+#define _NIPATHCONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_PATH_CONTROLLER_INCLUDE
+
+/*
+ * NiPathController
+ */
+
+class NiPathController;
+typedef Ref<NiPathController> NiPathControllerRef;
+
+class NiPathController : public NI_PATH_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	NI_PATH_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/NiPathInterpolator.cpp b/obj/NiPathInterpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1d977d6e204d02a6462a142e9812420772aa8d17
--- /dev/null
+++ b/obj/NiPathInterpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPathInterpolator.h"
+
+//Definition of TYPE constant
+const Type NiPathInterpolator::TYPE("NiPathInterpolator", &NI_PATH_INTERPOLATOR_PARENT::TYPE );
+
+NiPathInterpolator::NiPathInterpolator() NI_PATH_INTERPOLATOR_CONSTRUCT {}
+
+NiPathInterpolator::~NiPathInterpolator() {}
+
+void NiPathInterpolator::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_PATH_INTERPOLATOR_READ
+}
+
+void NiPathInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PATH_INTERPOLATOR_WRITE
+}
+
+string NiPathInterpolator::asString( bool verbose ) const {
+	NI_PATH_INTERPOLATOR_STRING
+}
+
+void NiPathInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PATH_INTERPOLATOR_FIXLINKS
+}
+
diff --git a/obj/NiPathInterpolator.h b/obj/NiPathInterpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..96dff644319b14ecf534862fcde35b21d6fb770f
--- /dev/null
+++ b/obj/NiPathInterpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPATHINTERPOLATOR_H_
+#define _NIPATHINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_PATH_INTERPOLATOR_INCLUDE
+
+/*
+ * NiPathInterpolator
+ */
+
+class NiPathInterpolator;
+typedef Ref<NiPathInterpolator> NiPathInterpolatorRef;
+
+class NiPathInterpolator : public NI_PATH_INTERPOLATOR_PARENT {
+public:
+	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 );
+private:
+	NI_PATH_INTERPOLATOR_MEMBERS
+};
+#endif
diff --git a/obj/NiPixelData.cpp b/obj/NiPixelData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..73d72e5dc9b39aa5e7cfd7cc6d70637c232df88f
--- /dev/null
+++ b/obj/NiPixelData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPixelData.h"
+
+//Definition of TYPE constant
+const Type NiPixelData::TYPE("NiPixelData", &NI_PIXEL_DATA_PARENT::TYPE );
+
+NiPixelData::NiPixelData() NI_PIXEL_DATA_CONSTRUCT {}
+
+NiPixelData::~NiPixelData() {}
+
+void NiPixelData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_PIXEL_DATA_READ
+}
+
+void NiPixelData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PIXEL_DATA_WRITE
+}
+
+string NiPixelData::asString( bool verbose ) const {
+	NI_PIXEL_DATA_STRING
+}
+
+void NiPixelData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PIXEL_DATA_FIXLINKS
+}
+
diff --git a/obj/NiPixelData.h b/obj/NiPixelData.h
new file mode 100644
index 0000000000000000000000000000000000000000..575bd74eb2d0fece022714c0bcf1410097be549d
--- /dev/null
+++ b/obj/NiPixelData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPIXELDATA_H_
+#define _NIPIXELDATA_H_
+
+#include "xml_extract.h"
+#include NI_PIXEL_DATA_INCLUDE
+
+/*
+ * NiPixelData
+ */
+
+class NiPixelData;
+typedef Ref<NiPixelData> NiPixelDataRef;
+
+class NiPixelData : public NI_PIXEL_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_PIXEL_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiPlanarCollider.cpp b/obj/NiPlanarCollider.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..87d2b554b20146c54332751504110e21536ea878
--- /dev/null
+++ b/obj/NiPlanarCollider.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPlanarCollider.h"
+
+//Definition of TYPE constant
+const Type NiPlanarCollider::TYPE("NiPlanarCollider", &NI_PLANAR_COLLIDER_PARENT::TYPE );
+
+NiPlanarCollider::NiPlanarCollider() NI_PLANAR_COLLIDER_CONSTRUCT {}
+
+NiPlanarCollider::~NiPlanarCollider() {}
+
+void NiPlanarCollider::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_PLANAR_COLLIDER_READ
+}
+
+void NiPlanarCollider::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PLANAR_COLLIDER_WRITE
+}
+
+string NiPlanarCollider::asString( bool verbose ) const {
+	NI_PLANAR_COLLIDER_STRING
+}
+
+void NiPlanarCollider::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PLANAR_COLLIDER_FIXLINKS
+}
+
diff --git a/obj/NiPlanarCollider.h b/obj/NiPlanarCollider.h
new file mode 100644
index 0000000000000000000000000000000000000000..5582973b61e46b2ce8f5c4654196b358b8e8fd54
--- /dev/null
+++ b/obj/NiPlanarCollider.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPLANARCOLLIDER_H_
+#define _NIPLANARCOLLIDER_H_
+
+#include "xml_extract.h"
+#include NI_PLANAR_COLLIDER_INCLUDE
+
+/*
+ * NiPlanarCollider
+ */
+
+class NiPlanarCollider;
+typedef Ref<NiPlanarCollider> NiPlanarColliderRef;
+
+class NiPlanarCollider : public NI_PLANAR_COLLIDER_PARENT {
+public:
+	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 );
+private:
+	NI_PLANAR_COLLIDER_MEMBERS
+};
+#endif
diff --git a/obj/NiPoint3Interpolator.cpp b/obj/NiPoint3Interpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..265da2fa73f63e868666153cca657b316f2a1e8b
--- /dev/null
+++ b/obj/NiPoint3Interpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPoint3Interpolator.h"
+
+//Definition of TYPE constant
+const Type NiPoint3Interpolator::TYPE("NiPoint3Interpolator", &NI_POINT3_INTERPOLATOR_PARENT::TYPE );
+
+NiPoint3Interpolator::NiPoint3Interpolator() NI_POINT3_INTERPOLATOR_CONSTRUCT {}
+
+NiPoint3Interpolator::~NiPoint3Interpolator() {}
+
+void NiPoint3Interpolator::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_POINT3_INTERPOLATOR_READ
+}
+
+void NiPoint3Interpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_POINT3_INTERPOLATOR_WRITE
+}
+
+string NiPoint3Interpolator::asString( bool verbose ) const {
+	NI_POINT3_INTERPOLATOR_STRING
+}
+
+void NiPoint3Interpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_POINT3_INTERPOLATOR_FIXLINKS
+}
+
diff --git a/obj/NiPoint3Interpolator.h b/obj/NiPoint3Interpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..b90d3fb5ee9491a0a5c929d566f4e1c961ff3c87
--- /dev/null
+++ b/obj/NiPoint3Interpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPOINT3INTERPOLATOR_H_
+#define _NIPOINT3INTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_POINT3_INTERPOLATOR_INCLUDE
+
+/*
+ * NiPoint3Interpolator
+ */
+
+class NiPoint3Interpolator;
+typedef Ref<NiPoint3Interpolator> NiPoint3InterpolatorRef;
+
+class NiPoint3Interpolator : public NI_POINT3_INTERPOLATOR_PARENT {
+public:
+	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 );
+private:
+	NI_POINT3_INTERPOLATOR_MEMBERS
+};
+#endif
diff --git a/obj/NiPointLight.cpp b/obj/NiPointLight.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4973c70226948930cf875ed4dc147600bf389d5a
--- /dev/null
+++ b/obj/NiPointLight.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPointLight.h"
+
+//Definition of TYPE constant
+const Type NiPointLight::TYPE("NiPointLight", &NI_POINT_LIGHT_PARENT::TYPE );
+
+NiPointLight::NiPointLight() NI_POINT_LIGHT_CONSTRUCT {}
+
+NiPointLight::~NiPointLight() {}
+
+void NiPointLight::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_POINT_LIGHT_READ
+}
+
+void NiPointLight::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_POINT_LIGHT_WRITE
+}
+
+string NiPointLight::asString( bool verbose ) const {
+	NI_POINT_LIGHT_STRING
+}
+
+void NiPointLight::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_POINT_LIGHT_FIXLINKS
+}
+
diff --git a/obj/NiPointLight.h b/obj/NiPointLight.h
new file mode 100644
index 0000000000000000000000000000000000000000..dbd9a40bd7d5771cb3323dde06d801a85a3c3003
--- /dev/null
+++ b/obj/NiPointLight.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPOINTLIGHT_H_
+#define _NIPOINTLIGHT_H_
+
+#include "xml_extract.h"
+#include NI_POINT_LIGHT_INCLUDE
+
+/*
+ * NiPointLight
+ */
+
+class NiPointLight;
+typedef Ref<NiPointLight> NiPointLightRef;
+
+class NiPointLight : public NI_POINT_LIGHT_PARENT {
+public:
+	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 );
+private:
+	NI_POINT_LIGHT_MEMBERS
+};
+#endif
diff --git a/obj/NiPosData.cpp b/obj/NiPosData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6f8ddd8917f0898b5dd4f203a45c38cff67c2b9b
--- /dev/null
+++ b/obj/NiPosData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPosData.h"
+
+//Definition of TYPE constant
+const Type NiPosData::TYPE("NiPosData", &NI_POS_DATA_PARENT::TYPE );
+
+NiPosData::NiPosData() NI_POS_DATA_CONSTRUCT {}
+
+NiPosData::~NiPosData() {}
+
+void NiPosData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_POS_DATA_READ
+}
+
+void NiPosData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_POS_DATA_WRITE
+}
+
+string NiPosData::asString( bool verbose ) const {
+	NI_POS_DATA_STRING
+}
+
+void NiPosData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_POS_DATA_FIXLINKS
+}
+
diff --git a/obj/NiPosData.h b/obj/NiPosData.h
new file mode 100644
index 0000000000000000000000000000000000000000..5aeb3b9265122282ebf73b1141792f900449c02d
--- /dev/null
+++ b/obj/NiPosData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPOSDATA_H_
+#define _NIPOSDATA_H_
+
+#include "xml_extract.h"
+#include NI_POS_DATA_INCLUDE
+
+/*
+ * NiPosData
+ */
+
+class NiPosData;
+typedef Ref<NiPosData> NiPosDataRef;
+
+class NiPosData : public NI_POS_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_POS_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiProperty.cpp b/obj/NiProperty.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e6c4881b530cd4d29e2ce3bc9dd576578c73c1d7
--- /dev/null
+++ b/obj/NiProperty.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiProperty.h"
+
+//Definition of TYPE constant
+const Type NiProperty::TYPE("NiProperty", &NI_PROPERTY_PARENT::TYPE );
+
+NiProperty::NiProperty() NI_PROPERTY_CONSTRUCT {}
+
+NiProperty::~NiProperty() {}
+
+void NiProperty::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_PROPERTY_READ
+}
+
+void NiProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_PROPERTY_WRITE
+}
+
+string NiProperty::asString( bool verbose ) const {
+	NI_PROPERTY_STRING
+}
+
+void NiProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_PROPERTY_FIXLINKS
+}
+
diff --git a/obj/NiProperty.h b/obj/NiProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..0d5b1aa4ba3dc26d0605006a745d08b5d15b8ce8
--- /dev/null
+++ b/obj/NiProperty.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPROPERTY_H_
+#define _NIPROPERTY_H_
+
+#include "xml_extract.h"
+#include NI_PROPERTY_INCLUDE
+
+/*
+ * NiProperty
+ */
+
+class NiProperty;
+typedef Ref<NiProperty> NiPropertyRef;
+
+class NiProperty : public NI_PROPERTY_PARENT {
+public:
+	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 );
+private:
+	NI_PROPERTY_MEMBERS
+};
+#endif
diff --git a/obj/NiRangeLODData.cpp b/obj/NiRangeLODData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..07cd41db4840864831c027180b2d8dcd9b23b0a5
--- /dev/null
+++ b/obj/NiRangeLODData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiRangeLODData.h"
+
+//Definition of TYPE constant
+const Type NiRangeLODData::TYPE("NiRangeLODData", &NI_RANGE_L_O_D_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiRangeLODData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_RANGE_L_O_D_DATA_WRITE
+}
+
+string NiRangeLODData::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiRangeLODData.h b/obj/NiRangeLODData.h
new file mode 100644
index 0000000000000000000000000000000000000000..ae85cc92bed703732de5be875673983c6454be6a
--- /dev/null
+++ b/obj/NiRangeLODData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIRANGELODDATA_H_
+#define _NIRANGELODDATA_H_
+
+#include "xml_extract.h"
+#include NI_RANGE_L_O_D_DATA_INCLUDE
+
+/*
+ * NiRangeLODData
+ */
+
+class NiRangeLODData;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiRotatingParticles.cpp b/obj/NiRotatingParticles.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1cc420657631712c636793c861d38e65eec243d0
--- /dev/null
+++ b/obj/NiRotatingParticles.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiRotatingParticles.h"
+
+//Definition of TYPE constant
+const Type NiRotatingParticles::TYPE("NiRotatingParticles", &NI_ROTATING_PARTICLES_PARENT::TYPE );
+
+NiRotatingParticles::NiRotatingParticles() NI_ROTATING_PARTICLES_CONSTRUCT {}
+
+NiRotatingParticles::~NiRotatingParticles() {}
+
+void NiRotatingParticles::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_ROTATING_PARTICLES_READ
+}
+
+void NiRotatingParticles::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_ROTATING_PARTICLES_WRITE
+}
+
+string NiRotatingParticles::asString( bool verbose ) const {
+	NI_ROTATING_PARTICLES_STRING
+}
+
+void NiRotatingParticles::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_ROTATING_PARTICLES_FIXLINKS
+}
+
diff --git a/obj/NiRotatingParticles.h b/obj/NiRotatingParticles.h
new file mode 100644
index 0000000000000000000000000000000000000000..0ae0cb2f45581c14c1c994f4e6f073a92d8546a7
--- /dev/null
+++ b/obj/NiRotatingParticles.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIROTATINGPARTICLES_H_
+#define _NIROTATINGPARTICLES_H_
+
+#include "xml_extract.h"
+#include NI_ROTATING_PARTICLES_INCLUDE
+
+/*
+ * NiRotatingParticles
+ */
+
+class NiRotatingParticles;
+typedef Ref<NiRotatingParticles> NiRotatingParticlesRef;
+
+class NiRotatingParticles : public NI_ROTATING_PARTICLES_PARENT {
+public:
+	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 );
+private:
+	NI_ROTATING_PARTICLES_MEMBERS
+};
+#endif
diff --git a/obj/NiRotatingParticlesData.cpp b/obj/NiRotatingParticlesData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1ce86dd4a1ae0e407c2508c56821c1fdf23bf30a
--- /dev/null
+++ b/obj/NiRotatingParticlesData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiRotatingParticlesData.h"
+
+//Definition of TYPE constant
+const Type NiRotatingParticlesData::TYPE("NiRotatingParticlesData", &NI_ROTATING_PARTICLES_DATA_PARENT::TYPE );
+
+NiRotatingParticlesData::NiRotatingParticlesData() NI_ROTATING_PARTICLES_DATA_CONSTRUCT {}
+
+NiRotatingParticlesData::~NiRotatingParticlesData() {}
+
+void NiRotatingParticlesData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_ROTATING_PARTICLES_DATA_READ
+}
+
+void NiRotatingParticlesData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_ROTATING_PARTICLES_DATA_WRITE
+}
+
+string NiRotatingParticlesData::asString( bool verbose ) const {
+	NI_ROTATING_PARTICLES_DATA_STRING
+}
+
+void NiRotatingParticlesData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_ROTATING_PARTICLES_DATA_FIXLINKS
+}
+
diff --git a/obj/NiRotatingParticlesData.h b/obj/NiRotatingParticlesData.h
new file mode 100644
index 0000000000000000000000000000000000000000..7715d807bfd6208f231782529b03fac61a787b65
--- /dev/null
+++ b/obj/NiRotatingParticlesData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIROTATINGPARTICLESDATA_H_
+#define _NIROTATINGPARTICLESDATA_H_
+
+#include "xml_extract.h"
+#include NI_ROTATING_PARTICLES_DATA_INCLUDE
+
+/*
+ * NiRotatingParticlesData
+ */
+
+class NiRotatingParticlesData;
+typedef Ref<NiRotatingParticlesData> NiRotatingParticlesDataRef;
+
+class NiRotatingParticlesData : public NI_ROTATING_PARTICLES_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_ROTATING_PARTICLES_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiScreenLODData.cpp b/obj/NiScreenLODData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..aa06fff184ed56db28e30b2b86d19622bb3f79d7
--- /dev/null
+++ b/obj/NiScreenLODData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiScreenLODData.h"
+
+//Definition of TYPE constant
+const Type NiScreenLODData::TYPE("NiScreenLODData", &NI_SCREEN_L_O_D_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiScreenLODData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_SCREEN_L_O_D_DATA_WRITE
+}
+
+string NiScreenLODData::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiScreenLODData.h b/obj/NiScreenLODData.h
new file mode 100644
index 0000000000000000000000000000000000000000..8cbcc0e0580ab9b46045689b324838d7c86a00c5
--- /dev/null
+++ b/obj/NiScreenLODData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NISCREENLODDATA_H_
+#define _NISCREENLODDATA_H_
+
+#include "xml_extract.h"
+#include NI_SCREEN_L_O_D_DATA_INCLUDE
+
+/*
+ * NiScreenLODData
+ */
+
+class NiScreenLODData;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiSequenceStreamHelper.cpp b/obj/NiSequenceStreamHelper.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b502690b20fe0a61f76213e32560e0ce97364422
--- /dev/null
+++ b/obj/NiSequenceStreamHelper.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiSequenceStreamHelper.h"
+
+//Definition of TYPE constant
+const Type NiSequenceStreamHelper::TYPE("NiSequenceStreamHelper", &NI_SEQUENCE_STREAM_HELPER_PARENT::TYPE );
+
+NiSequenceStreamHelper::NiSequenceStreamHelper() NI_SEQUENCE_STREAM_HELPER_CONSTRUCT {}
+
+NiSequenceStreamHelper::~NiSequenceStreamHelper() {}
+
+void NiSequenceStreamHelper::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_SEQUENCE_STREAM_HELPER_READ
+}
+
+void NiSequenceStreamHelper::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_SEQUENCE_STREAM_HELPER_WRITE
+}
+
+string NiSequenceStreamHelper::asString( bool verbose ) const {
+	NI_SEQUENCE_STREAM_HELPER_STRING
+}
+
+void NiSequenceStreamHelper::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_SEQUENCE_STREAM_HELPER_FIXLINKS
+}
+
diff --git a/obj/NiSequenceStreamHelper.h b/obj/NiSequenceStreamHelper.h
new file mode 100644
index 0000000000000000000000000000000000000000..d423408cc9af5f144028eab7a7abb28e6c05366b
--- /dev/null
+++ b/obj/NiSequenceStreamHelper.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NISEQUENCESTREAMHELPER_H_
+#define _NISEQUENCESTREAMHELPER_H_
+
+#include "xml_extract.h"
+#include NI_SEQUENCE_STREAM_HELPER_INCLUDE
+
+/*
+ * NiSequenceStreamHelper
+ */
+
+class NiSequenceStreamHelper;
+typedef Ref<NiSequenceStreamHelper> NiSequenceStreamHelperRef;
+
+class NiSequenceStreamHelper : public NI_SEQUENCE_STREAM_HELPER_PARENT {
+public:
+	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 );
+private:
+	NI_SEQUENCE_STREAM_HELPER_MEMBERS
+};
+#endif
diff --git a/obj/NiShadeProperty.cpp b/obj/NiShadeProperty.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..800c5aeebb2e485172ef2f3beea22eaaaca379cc
--- /dev/null
+++ b/obj/NiShadeProperty.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiShadeProperty.h"
+
+//Definition of TYPE constant
+const Type NiShadeProperty::TYPE("NiShadeProperty", &NI_SHADE_PROPERTY_PARENT::TYPE );
+
+NiShadeProperty::NiShadeProperty() NI_SHADE_PROPERTY_CONSTRUCT {}
+
+NiShadeProperty::~NiShadeProperty() {}
+
+void NiShadeProperty::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_SHADE_PROPERTY_READ
+}
+
+void NiShadeProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_SHADE_PROPERTY_WRITE
+}
+
+string NiShadeProperty::asString( bool verbose ) const {
+	NI_SHADE_PROPERTY_STRING
+}
+
+void NiShadeProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_SHADE_PROPERTY_FIXLINKS
+}
+
diff --git a/obj/NiShadeProperty.h b/obj/NiShadeProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..7f40b286d09ae1518a9753989d727cbaddf1d666
--- /dev/null
+++ b/obj/NiShadeProperty.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NISHADEPROPERTY_H_
+#define _NISHADEPROPERTY_H_
+
+#include "xml_extract.h"
+#include NI_SHADE_PROPERTY_INCLUDE
+
+/*
+ * NiShadeProperty
+ */
+
+class NiShadeProperty;
+typedef Ref<NiShadeProperty> NiShadePropertyRef;
+
+class NiShadeProperty : public NI_SHADE_PROPERTY_PARENT {
+public:
+	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 );
+private:
+	NI_SHADE_PROPERTY_MEMBERS
+};
+#endif
diff --git a/obj/NiSkinData.cpp b/obj/NiSkinData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ac7acd7cb6ef2a8fe8ae4eabc67be8b1075c7de1
--- /dev/null
+++ b/obj/NiSkinData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiSkinData.h"
+
+//Definition of TYPE constant
+const Type NiSkinData::TYPE("NiSkinData", &NI_SKIN_DATA_PARENT::TYPE );
+
+NiSkinData::NiSkinData() NI_SKIN_DATA_CONSTRUCT {}
+
+NiSkinData::~NiSkinData() {}
+
+void NiSkinData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_SKIN_DATA_READ
+}
+
+void NiSkinData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_SKIN_DATA_WRITE
+}
+
+string NiSkinData::asString( bool verbose ) const {
+	NI_SKIN_DATA_STRING
+}
+
+void NiSkinData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_SKIN_DATA_FIXLINKS
+}
+
diff --git a/obj/NiSkinData.h b/obj/NiSkinData.h
new file mode 100644
index 0000000000000000000000000000000000000000..526dca46f044332b81f776676a07bcf856c58d53
--- /dev/null
+++ b/obj/NiSkinData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NISKINDATA_H_
+#define _NISKINDATA_H_
+
+#include "xml_extract.h"
+#include NI_SKIN_DATA_INCLUDE
+
+/*
+ * NiSkinData
+ */
+
+class NiSkinData;
+typedef Ref<NiSkinData> NiSkinDataRef;
+
+class NiSkinData : public NI_SKIN_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_SKIN_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiSkinInstance.cpp b/obj/NiSkinInstance.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..181c272bd30b093765d05ba306b7944ee6e30909
--- /dev/null
+++ b/obj/NiSkinInstance.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiSkinInstance.h"
+
+//Definition of TYPE constant
+const Type NiSkinInstance::TYPE("NiSkinInstance", &NI_SKIN_INSTANCE_PARENT::TYPE );
+
+NiSkinInstance::NiSkinInstance() NI_SKIN_INSTANCE_CONSTRUCT {}
+
+NiSkinInstance::~NiSkinInstance() {}
+
+void NiSkinInstance::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_SKIN_INSTANCE_READ
+}
+
+void NiSkinInstance::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_SKIN_INSTANCE_WRITE
+}
+
+string NiSkinInstance::asString( bool verbose ) const {
+	NI_SKIN_INSTANCE_STRING
+}
+
+void NiSkinInstance::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_SKIN_INSTANCE_FIXLINKS
+}
+
diff --git a/obj/NiSkinInstance.h b/obj/NiSkinInstance.h
new file mode 100644
index 0000000000000000000000000000000000000000..a016d8b11fa071331aa38f19ed6be66d5503694b
--- /dev/null
+++ b/obj/NiSkinInstance.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NISKININSTANCE_H_
+#define _NISKININSTANCE_H_
+
+#include "xml_extract.h"
+#include NI_SKIN_INSTANCE_INCLUDE
+
+/*
+ * NiSkinInstance
+ */
+
+class NiSkinInstance;
+typedef Ref<NiSkinInstance> NiSkinInstanceRef;
+
+class NiSkinInstance : public NI_SKIN_INSTANCE_PARENT {
+public:
+	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 );
+private:
+	NI_SKIN_INSTANCE_MEMBERS
+};
+#endif
diff --git a/obj/NiSkinPartition.cpp b/obj/NiSkinPartition.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1764839e4dd15230b6be05177279319d7afaa612
--- /dev/null
+++ b/obj/NiSkinPartition.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiSkinPartition.h"
+
+//Definition of TYPE constant
+const Type NiSkinPartition::TYPE("NiSkinPartition", &NI_SKIN_PARTITION_PARENT::TYPE );
+
+NiSkinPartition::NiSkinPartition() NI_SKIN_PARTITION_CONSTRUCT {}
+
+NiSkinPartition::~NiSkinPartition() {}
+
+void NiSkinPartition::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_SKIN_PARTITION_READ
+}
+
+void NiSkinPartition::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_SKIN_PARTITION_WRITE
+}
+
+string NiSkinPartition::asString( bool verbose ) const {
+	NI_SKIN_PARTITION_STRING
+}
+
+void NiSkinPartition::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_SKIN_PARTITION_FIXLINKS
+}
+
diff --git a/obj/NiSkinPartition.h b/obj/NiSkinPartition.h
new file mode 100644
index 0000000000000000000000000000000000000000..f02126f304490bd53b75c9a21db27cbd0376cced
--- /dev/null
+++ b/obj/NiSkinPartition.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NISKINPARTITION_H_
+#define _NISKINPARTITION_H_
+
+#include "xml_extract.h"
+#include NI_SKIN_PARTITION_INCLUDE
+
+/*
+ * NiSkinPartition
+ */
+
+class NiSkinPartition;
+typedef Ref<NiSkinPartition> NiSkinPartitionRef;
+
+class NiSkinPartition : public NI_SKIN_PARTITION_PARENT {
+public:
+	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 );
+private:
+	NI_SKIN_PARTITION_MEMBERS
+};
+#endif
diff --git a/obj/NiSourceTexture.cpp b/obj/NiSourceTexture.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4145029138561318c09ee0bbd3c03a00f1350727
--- /dev/null
+++ b/obj/NiSourceTexture.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiSourceTexture.h"
+
+//Definition of TYPE constant
+const Type NiSourceTexture::TYPE("NiSourceTexture", &NI_SOURCE_TEXTURE_PARENT::TYPE );
+
+NiSourceTexture::NiSourceTexture() NI_SOURCE_TEXTURE_CONSTRUCT {}
+
+NiSourceTexture::~NiSourceTexture() {}
+
+void NiSourceTexture::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_SOURCE_TEXTURE_READ
+}
+
+void NiSourceTexture::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_SOURCE_TEXTURE_WRITE
+}
+
+string NiSourceTexture::asString( bool verbose ) const {
+	NI_SOURCE_TEXTURE_STRING
+}
+
+void NiSourceTexture::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_SOURCE_TEXTURE_FIXLINKS
+}
+
diff --git a/obj/NiSourceTexture.h b/obj/NiSourceTexture.h
new file mode 100644
index 0000000000000000000000000000000000000000..cea97a4612d53a0081bade3b5c1a42201babb448
--- /dev/null
+++ b/obj/NiSourceTexture.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NISOURCETEXTURE_H_
+#define _NISOURCETEXTURE_H_
+
+#include "xml_extract.h"
+#include NI_SOURCE_TEXTURE_INCLUDE
+
+/*
+ * NiSourceTexture
+ */
+
+class NiSourceTexture;
+typedef Ref<NiSourceTexture> NiSourceTextureRef;
+
+class NiSourceTexture : public NI_SOURCE_TEXTURE_PARENT {
+public:
+	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 );
+private:
+	NI_SOURCE_TEXTURE_MEMBERS
+};
+#endif
diff --git a/obj/NiSpecularProperty.cpp b/obj/NiSpecularProperty.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d140bafe62a20f6d3136c0a326f9cfcec6498e1b
--- /dev/null
+++ b/obj/NiSpecularProperty.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiSpecularProperty.h"
+
+//Definition of TYPE constant
+const Type NiSpecularProperty::TYPE("NiSpecularProperty", &NI_SPECULAR_PROPERTY_PARENT::TYPE );
+
+NiSpecularProperty::NiSpecularProperty() NI_SPECULAR_PROPERTY_CONSTRUCT {}
+
+NiSpecularProperty::~NiSpecularProperty() {}
+
+void NiSpecularProperty::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_SPECULAR_PROPERTY_READ
+}
+
+void NiSpecularProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_SPECULAR_PROPERTY_WRITE
+}
+
+string NiSpecularProperty::asString( bool verbose ) const {
+	NI_SPECULAR_PROPERTY_STRING
+}
+
+void NiSpecularProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_SPECULAR_PROPERTY_FIXLINKS
+}
+
diff --git a/obj/NiSpecularProperty.h b/obj/NiSpecularProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..1f8a98a92a0126c7e6a160a2baedb9f9d03f71c5
--- /dev/null
+++ b/obj/NiSpecularProperty.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NISPECULARPROPERTY_H_
+#define _NISPECULARPROPERTY_H_
+
+#include "xml_extract.h"
+#include NI_SPECULAR_PROPERTY_INCLUDE
+
+/*
+ * NiSpecularProperty
+ */
+
+class NiSpecularProperty;
+typedef Ref<NiSpecularProperty> NiSpecularPropertyRef;
+
+class NiSpecularProperty : public NI_SPECULAR_PROPERTY_PARENT {
+public:
+	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 );
+private:
+	NI_SPECULAR_PROPERTY_MEMBERS
+};
+#endif
diff --git a/obj/NiSphericalCollider.cpp b/obj/NiSphericalCollider.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3d57cbde09c3494b658528f878ab6838753bed80
--- /dev/null
+++ b/obj/NiSphericalCollider.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiSphericalCollider.h"
+
+//Definition of TYPE constant
+const Type NiSphericalCollider::TYPE("NiSphericalCollider", &NI_SPHERICAL_COLLIDER_PARENT::TYPE );
+
+NiSphericalCollider::NiSphericalCollider() NI_SPHERICAL_COLLIDER_CONSTRUCT {}
+
+NiSphericalCollider::~NiSphericalCollider() {}
+
+void NiSphericalCollider::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_SPHERICAL_COLLIDER_READ
+}
+
+void NiSphericalCollider::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_SPHERICAL_COLLIDER_WRITE
+}
+
+string NiSphericalCollider::asString( bool verbose ) const {
+	NI_SPHERICAL_COLLIDER_STRING
+}
+
+void NiSphericalCollider::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_SPHERICAL_COLLIDER_FIXLINKS
+}
+
diff --git a/obj/NiSphericalCollider.h b/obj/NiSphericalCollider.h
new file mode 100644
index 0000000000000000000000000000000000000000..0190766289405228f07b0164ea1ef711a9edf816
--- /dev/null
+++ b/obj/NiSphericalCollider.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NISPHERICALCOLLIDER_H_
+#define _NISPHERICALCOLLIDER_H_
+
+#include "xml_extract.h"
+#include NI_SPHERICAL_COLLIDER_INCLUDE
+
+/*
+ * NiSphericalCollider
+ */
+
+class NiSphericalCollider;
+typedef Ref<NiSphericalCollider> NiSphericalColliderRef;
+
+class NiSphericalCollider : public NI_SPHERICAL_COLLIDER_PARENT {
+public:
+	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 );
+private:
+	NI_SPHERICAL_COLLIDER_MEMBERS
+};
+#endif
diff --git a/obj/NiSpotLight.cpp b/obj/NiSpotLight.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..39801cf32a4a89d1a36d3e0ae8b6b96a6e09b1b8
--- /dev/null
+++ b/obj/NiSpotLight.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiSpotLight.h"
+
+//Definition of TYPE constant
+const Type NiSpotLight::TYPE("NiSpotLight", &NI_SPOT_LIGHT_PARENT::TYPE );
+
+NiSpotLight::NiSpotLight() NI_SPOT_LIGHT_CONSTRUCT {}
+
+NiSpotLight::~NiSpotLight() {}
+
+void NiSpotLight::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_SPOT_LIGHT_READ
+}
+
+void NiSpotLight::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_SPOT_LIGHT_WRITE
+}
+
+string NiSpotLight::asString( bool verbose ) const {
+	NI_SPOT_LIGHT_STRING
+}
+
+void NiSpotLight::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_SPOT_LIGHT_FIXLINKS
+}
+
diff --git a/obj/NiSpotLight.h b/obj/NiSpotLight.h
new file mode 100644
index 0000000000000000000000000000000000000000..4bf6a27ab2fb13306b96fb8f1270fc4a05af9719
--- /dev/null
+++ b/obj/NiSpotLight.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NISPOTLIGHT_H_
+#define _NISPOTLIGHT_H_
+
+#include "xml_extract.h"
+#include NI_SPOT_LIGHT_INCLUDE
+
+/*
+ * NiSpotLight
+ */
+
+class NiSpotLight;
+typedef Ref<NiSpotLight> NiSpotLightRef;
+
+class NiSpotLight : public NI_SPOT_LIGHT_PARENT {
+public:
+	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 );
+private:
+	NI_SPOT_LIGHT_MEMBERS
+};
+#endif
diff --git a/obj/NiStencilProperty.cpp b/obj/NiStencilProperty.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a6012f2b8a9686ebe0b4424bdb4c86f40c143159
--- /dev/null
+++ b/obj/NiStencilProperty.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiStencilProperty.h"
+
+//Definition of TYPE constant
+const Type NiStencilProperty::TYPE("NiStencilProperty", &NI_STENCIL_PROPERTY_PARENT::TYPE );
+
+NiStencilProperty::NiStencilProperty() NI_STENCIL_PROPERTY_CONSTRUCT {}
+
+NiStencilProperty::~NiStencilProperty() {}
+
+void NiStencilProperty::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_STENCIL_PROPERTY_READ
+}
+
+void NiStencilProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_STENCIL_PROPERTY_WRITE
+}
+
+string NiStencilProperty::asString( bool verbose ) const {
+	NI_STENCIL_PROPERTY_STRING
+}
+
+void NiStencilProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_STENCIL_PROPERTY_FIXLINKS
+}
+
diff --git a/obj/NiStencilProperty.h b/obj/NiStencilProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..3bd94465bc4bcf87ae9693cfcbbac882d47723a2
--- /dev/null
+++ b/obj/NiStencilProperty.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NISTENCILPROPERTY_H_
+#define _NISTENCILPROPERTY_H_
+
+#include "xml_extract.h"
+#include NI_STENCIL_PROPERTY_INCLUDE
+
+/*
+ * NiStencilProperty
+ */
+
+class NiStencilProperty;
+typedef Ref<NiStencilProperty> NiStencilPropertyRef;
+
+class NiStencilProperty : public NI_STENCIL_PROPERTY_PARENT {
+public:
+	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 );
+private:
+	NI_STENCIL_PROPERTY_MEMBERS
+};
+#endif
diff --git a/obj/NiStringExtraData.cpp b/obj/NiStringExtraData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5b03cd62dae8e456daeacdef460fc6da3e8bafbd
--- /dev/null
+++ b/obj/NiStringExtraData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiStringExtraData.h"
+
+//Definition of TYPE constant
+const Type NiStringExtraData::TYPE("NiStringExtraData", &NI_STRING_EXTRA_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiStringExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_STRING_EXTRA_DATA_WRITE
+}
+
+string NiStringExtraData::asString( bool verbose ) const {
+	NI_STRING_EXTRA_DATA_STRING
+}
+
+void NiStringExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_STRING_EXTRA_DATA_FIXLINKS
+}
+
diff --git a/obj/NiStringExtraData.h b/obj/NiStringExtraData.h
new file mode 100644
index 0000000000000000000000000000000000000000..8b8dc4d4ed6059c320a7ec24081147c30cf13329
--- /dev/null
+++ b/obj/NiStringExtraData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NISTRINGEXTRADATA_H_
+#define _NISTRINGEXTRADATA_H_
+
+#include "xml_extract.h"
+#include NI_STRING_EXTRA_DATA_INCLUDE
+
+/*
+ * NiStringExtraData
+ */
+
+class NiStringExtraData;
+typedef Ref<NiStringExtraData> NiStringExtraDataRef;
+
+class NiStringExtraData : public NI_STRING_EXTRA_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_STRING_EXTRA_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiStringPalette.cpp b/obj/NiStringPalette.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ed94deaa6b422ccf2d3601acc8bb38398ef38b71
--- /dev/null
+++ b/obj/NiStringPalette.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiStringPalette.h"
+
+//Definition of TYPE constant
+const Type NiStringPalette::TYPE("NiStringPalette", &NI_STRING_PALETTE_PARENT::TYPE );
+
+NiStringPalette::NiStringPalette() NI_STRING_PALETTE_CONSTRUCT {}
+
+NiStringPalette::~NiStringPalette() {}
+
+void NiStringPalette::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_STRING_PALETTE_READ
+}
+
+void NiStringPalette::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_STRING_PALETTE_WRITE
+}
+
+string NiStringPalette::asString( bool verbose ) const {
+	NI_STRING_PALETTE_STRING
+}
+
+void NiStringPalette::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_STRING_PALETTE_FIXLINKS
+}
+
diff --git a/obj/NiStringPalette.h b/obj/NiStringPalette.h
new file mode 100644
index 0000000000000000000000000000000000000000..0ecb63cdcbcbc230d81d10a39ac90449fe97741f
--- /dev/null
+++ b/obj/NiStringPalette.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NISTRINGPALETTE_H_
+#define _NISTRINGPALETTE_H_
+
+#include "xml_extract.h"
+#include NI_STRING_PALETTE_INCLUDE
+
+/*
+ * NiStringPalette
+ */
+
+class NiStringPalette;
+typedef Ref<NiStringPalette> NiStringPaletteRef;
+
+class NiStringPalette : public NI_STRING_PALETTE_PARENT {
+public:
+	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 );
+private:
+	NI_STRING_PALETTE_MEMBERS
+};
+#endif
diff --git a/obj/NiStringsExtraData.cpp b/obj/NiStringsExtraData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..889759b9a7ef92555254c78673b6ca295d8b494f
--- /dev/null
+++ b/obj/NiStringsExtraData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiStringsExtraData.h"
+
+//Definition of TYPE constant
+const Type NiStringsExtraData::TYPE("NiStringsExtraData", &NI_STRINGS_EXTRA_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiStringsExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_STRINGS_EXTRA_DATA_WRITE
+}
+
+string NiStringsExtraData::asString( bool verbose ) const {
+	NI_STRINGS_EXTRA_DATA_STRING
+}
+
+void NiStringsExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_STRINGS_EXTRA_DATA_FIXLINKS
+}
+
diff --git a/obj/NiStringsExtraData.h b/obj/NiStringsExtraData.h
new file mode 100644
index 0000000000000000000000000000000000000000..53f6d8adca3ac3bd5946e0378489651861faa61c
--- /dev/null
+++ b/obj/NiStringsExtraData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NISTRINGSEXTRADATA_H_
+#define _NISTRINGSEXTRADATA_H_
+
+#include "xml_extract.h"
+#include NI_STRINGS_EXTRA_DATA_INCLUDE
+
+/*
+ * NiStringsExtraData
+ */
+
+class NiStringsExtraData;
+typedef Ref<NiStringsExtraData> NiStringsExtraDataRef;
+
+class NiStringsExtraData : public NI_STRINGS_EXTRA_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_STRINGS_EXTRA_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiTextKeyExtraData.cpp b/obj/NiTextKeyExtraData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b828f81ff2b38707ecd7753bd450ba0343ec4f46
--- /dev/null
+++ b/obj/NiTextKeyExtraData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiTextKeyExtraData.h"
+
+//Definition of TYPE constant
+const Type NiTextKeyExtraData::TYPE("NiTextKeyExtraData", &NI_TEXT_KEY_EXTRA_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiTextKeyExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_TEXT_KEY_EXTRA_DATA_WRITE
+}
+
+string NiTextKeyExtraData::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiTextKeyExtraData.h b/obj/NiTextKeyExtraData.h
new file mode 100644
index 0000000000000000000000000000000000000000..6a27dcb789c46eb2e44a22ad06d10ce9e73e86bd
--- /dev/null
+++ b/obj/NiTextKeyExtraData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NITEXTKEYEXTRADATA_H_
+#define _NITEXTKEYEXTRADATA_H_
+
+#include "xml_extract.h"
+#include NI_TEXT_KEY_EXTRA_DATA_INCLUDE
+
+/*
+ * NiTextKeyExtraData
+ */
+
+class NiTextKeyExtraData;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiTextureEffect.cpp b/obj/NiTextureEffect.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..854a05ba5a661fc0195a5cdea934ffc88e3c7530
--- /dev/null
+++ b/obj/NiTextureEffect.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiTextureEffect.h"
+
+//Definition of TYPE constant
+const Type NiTextureEffect::TYPE("NiTextureEffect", &NI_TEXTURE_EFFECT_PARENT::TYPE );
+
+NiTextureEffect::NiTextureEffect() NI_TEXTURE_EFFECT_CONSTRUCT {}
+
+NiTextureEffect::~NiTextureEffect() {}
+
+void NiTextureEffect::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_TEXTURE_EFFECT_READ
+}
+
+void NiTextureEffect::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_TEXTURE_EFFECT_WRITE
+}
+
+string NiTextureEffect::asString( bool verbose ) const {
+	NI_TEXTURE_EFFECT_STRING
+}
+
+void NiTextureEffect::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_TEXTURE_EFFECT_FIXLINKS
+}
+
diff --git a/obj/NiTextureEffect.h b/obj/NiTextureEffect.h
new file mode 100644
index 0000000000000000000000000000000000000000..383eb1b6770ebd83dd3b2f9592336cd69e6e2110
--- /dev/null
+++ b/obj/NiTextureEffect.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NITEXTUREEFFECT_H_
+#define _NITEXTUREEFFECT_H_
+
+#include "xml_extract.h"
+#include NI_TEXTURE_EFFECT_INCLUDE
+
+/*
+ * NiTextureEffect
+ */
+
+class NiTextureEffect;
+typedef Ref<NiTextureEffect> NiTextureEffectRef;
+
+class NiTextureEffect : public NI_TEXTURE_EFFECT_PARENT {
+public:
+	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 );
+private:
+	NI_TEXTURE_EFFECT_MEMBERS
+};
+#endif
diff --git a/obj/NiTextureTransformController.cpp b/obj/NiTextureTransformController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4999aebefe78d2d45cb802b318577e29550c8813
--- /dev/null
+++ b/obj/NiTextureTransformController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiTextureTransformController.h"
+
+//Definition of TYPE constant
+const Type NiTextureTransformController::TYPE("NiTextureTransformController", &NI_TEXTURE_TRANSFORM_CONTROLLER_PARENT::TYPE );
+
+NiTextureTransformController::NiTextureTransformController() NI_TEXTURE_TRANSFORM_CONTROLLER_CONSTRUCT {}
+
+NiTextureTransformController::~NiTextureTransformController() {}
+
+void NiTextureTransformController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_TEXTURE_TRANSFORM_CONTROLLER_READ
+}
+
+void NiTextureTransformController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_TEXTURE_TRANSFORM_CONTROLLER_WRITE
+}
+
+string NiTextureTransformController::asString( bool verbose ) const {
+	NI_TEXTURE_TRANSFORM_CONTROLLER_STRING
+}
+
+void NiTextureTransformController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_TEXTURE_TRANSFORM_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/NiTextureTransformController.h b/obj/NiTextureTransformController.h
new file mode 100644
index 0000000000000000000000000000000000000000..c47d4bda2a2c57e72b417febf90d6bc39e1487f4
--- /dev/null
+++ b/obj/NiTextureTransformController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NITEXTURETRANSFORMCONTROLLER_H_
+#define _NITEXTURETRANSFORMCONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_TEXTURE_TRANSFORM_CONTROLLER_INCLUDE
+
+/*
+ * NiTextureTransformController
+ */
+
+class NiTextureTransformController;
+typedef Ref<NiTextureTransformController> NiTextureTransformControllerRef;
+
+class NiTextureTransformController : public NI_TEXTURE_TRANSFORM_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	NI_TEXTURE_TRANSFORM_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/NiTexturingProperty.cpp b/obj/NiTexturingProperty.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..03940a97cc7112ec63d5250fba7a8e5964795088
--- /dev/null
+++ b/obj/NiTexturingProperty.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiTexturingProperty.h"
+
+//Definition of TYPE constant
+const Type NiTexturingProperty::TYPE("NiTexturingProperty", &NI_TEXTURING_PROPERTY_PARENT::TYPE );
+
+NiTexturingProperty::NiTexturingProperty() NI_TEXTURING_PROPERTY_CONSTRUCT {}
+
+NiTexturingProperty::~NiTexturingProperty() {}
+
+void NiTexturingProperty::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_TEXTURING_PROPERTY_READ
+}
+
+void NiTexturingProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_TEXTURING_PROPERTY_WRITE
+}
+
+string NiTexturingProperty::asString( bool verbose ) const {
+	NI_TEXTURING_PROPERTY_STRING
+}
+
+void NiTexturingProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_TEXTURING_PROPERTY_FIXLINKS
+}
+
diff --git a/obj/NiTexturingProperty.h b/obj/NiTexturingProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..90b1cb4cee71c365d71247c64d72c5f161e154e1
--- /dev/null
+++ b/obj/NiTexturingProperty.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NITEXTURINGPROPERTY_H_
+#define _NITEXTURINGPROPERTY_H_
+
+#include "xml_extract.h"
+#include NI_TEXTURING_PROPERTY_INCLUDE
+
+/*
+ * NiTexturingProperty
+ */
+
+class NiTexturingProperty;
+typedef Ref<NiTexturingProperty> NiTexturingPropertyRef;
+
+class NiTexturingProperty : public NI_TEXTURING_PROPERTY_PARENT {
+public:
+	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 );
+private:
+	NI_TEXTURING_PROPERTY_MEMBERS
+};
+#endif
diff --git a/obj/NiTimeController.cpp b/obj/NiTimeController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2c64c3aa3a2a75477d0bfeb6823a49bcb7a7eac4
--- /dev/null
+++ b/obj/NiTimeController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiTimeController.h"
+
+//Definition of TYPE constant
+const Type NiTimeController::TYPE("NiTimeController", &NI_TIME_CONTROLLER_PARENT::TYPE );
+
+NiTimeController::NiTimeController() NI_TIME_CONTROLLER_CONSTRUCT {}
+
+NiTimeController::~NiTimeController() {}
+
+void NiTimeController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_TIME_CONTROLLER_READ
+}
+
+void NiTimeController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_TIME_CONTROLLER_WRITE
+}
+
+string NiTimeController::asString( bool verbose ) const {
+	NI_TIME_CONTROLLER_STRING
+}
+
+void NiTimeController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_TIME_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/NiTimeController.h b/obj/NiTimeController.h
new file mode 100644
index 0000000000000000000000000000000000000000..a40a950ff67ba5cc6e81ad75c4be3a45ef1882fc
--- /dev/null
+++ b/obj/NiTimeController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NITIMECONTROLLER_H_
+#define _NITIMECONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_TIME_CONTROLLER_INCLUDE
+
+/*
+ * NiTimeController
+ */
+
+class NiTimeController;
+typedef Ref<NiTimeController> NiTimeControllerRef;
+
+class NiTimeController : public NI_TIME_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	NI_TIME_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/NiTransformController.cpp b/obj/NiTransformController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fb0138184b84eaa19f09fda138917413b488777e
--- /dev/null
+++ b/obj/NiTransformController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiTransformController.h"
+
+//Definition of TYPE constant
+const Type NiTransformController::TYPE("NiTransformController", &NI_TRANSFORM_CONTROLLER_PARENT::TYPE );
+
+NiTransformController::NiTransformController() NI_TRANSFORM_CONTROLLER_CONSTRUCT {}
+
+NiTransformController::~NiTransformController() {}
+
+void NiTransformController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_TRANSFORM_CONTROLLER_READ
+}
+
+void NiTransformController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_TRANSFORM_CONTROLLER_WRITE
+}
+
+string NiTransformController::asString( bool verbose ) const {
+	NI_TRANSFORM_CONTROLLER_STRING
+}
+
+void NiTransformController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_TRANSFORM_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/NiTransformController.h b/obj/NiTransformController.h
new file mode 100644
index 0000000000000000000000000000000000000000..62b262f55fa13e3df1360338cefc79a086d0d8c8
--- /dev/null
+++ b/obj/NiTransformController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NITRANSFORMCONTROLLER_H_
+#define _NITRANSFORMCONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_TRANSFORM_CONTROLLER_INCLUDE
+
+/*
+ * NiTransformController
+ */
+
+class NiTransformController;
+typedef Ref<NiTransformController> NiTransformControllerRef;
+
+class NiTransformController : public NI_TRANSFORM_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	NI_TRANSFORM_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/NiTransformData.cpp b/obj/NiTransformData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ca37afd08055362207de333a3b74a069597aab67
--- /dev/null
+++ b/obj/NiTransformData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiTransformData.h"
+
+//Definition of TYPE constant
+const Type NiTransformData::TYPE("NiTransformData", &NI_TRANSFORM_DATA_PARENT::TYPE );
+
+NiTransformData::NiTransformData() NI_TRANSFORM_DATA_CONSTRUCT {}
+
+NiTransformData::~NiTransformData() {}
+
+void NiTransformData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_TRANSFORM_DATA_READ
+}
+
+void NiTransformData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_TRANSFORM_DATA_WRITE
+}
+
+string NiTransformData::asString( bool verbose ) const {
+	NI_TRANSFORM_DATA_STRING
+}
+
+void NiTransformData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_TRANSFORM_DATA_FIXLINKS
+}
+
diff --git a/obj/NiTransformData.h b/obj/NiTransformData.h
new file mode 100644
index 0000000000000000000000000000000000000000..c2e05fc0b6b6c680e9f6b02055ddaa484aa4ca6d
--- /dev/null
+++ b/obj/NiTransformData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NITRANSFORMDATA_H_
+#define _NITRANSFORMDATA_H_
+
+#include "xml_extract.h"
+#include NI_TRANSFORM_DATA_INCLUDE
+
+/*
+ * NiTransformData
+ */
+
+class NiTransformData;
+typedef Ref<NiTransformData> NiTransformDataRef;
+
+class NiTransformData : public NI_TRANSFORM_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_TRANSFORM_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiTransformInterpolator.cpp b/obj/NiTransformInterpolator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2c1d13801da108332c83d37aa88bd83be0aef75b
--- /dev/null
+++ b/obj/NiTransformInterpolator.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiTransformInterpolator.h"
+
+//Definition of TYPE constant
+const Type NiTransformInterpolator::TYPE("NiTransformInterpolator", &NI_TRANSFORM_INTERPOLATOR_PARENT::TYPE );
+
+NiTransformInterpolator::NiTransformInterpolator() NI_TRANSFORM_INTERPOLATOR_CONSTRUCT {}
+
+NiTransformInterpolator::~NiTransformInterpolator() {}
+
+void NiTransformInterpolator::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_TRANSFORM_INTERPOLATOR_READ
+}
+
+void NiTransformInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_TRANSFORM_INTERPOLATOR_WRITE
+}
+
+string NiTransformInterpolator::asString( bool verbose ) const {
+	NI_TRANSFORM_INTERPOLATOR_STRING
+}
+
+void NiTransformInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_TRANSFORM_INTERPOLATOR_FIXLINKS
+}
+
diff --git a/obj/NiTransformInterpolator.h b/obj/NiTransformInterpolator.h
new file mode 100644
index 0000000000000000000000000000000000000000..ef5120427663e22a36b9c2beb81265ee63d2c215
--- /dev/null
+++ b/obj/NiTransformInterpolator.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NITRANSFORMINTERPOLATOR_H_
+#define _NITRANSFORMINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_TRANSFORM_INTERPOLATOR_INCLUDE
+
+/*
+ * NiTransformInterpolator
+ */
+
+class NiTransformInterpolator;
+typedef Ref<NiTransformInterpolator> NiTransformInterpolatorRef;
+
+class NiTransformInterpolator : public NI_TRANSFORM_INTERPOLATOR_PARENT {
+public:
+	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 );
+private:
+	NI_TRANSFORM_INTERPOLATOR_MEMBERS
+};
+#endif
diff --git a/obj/NiTriBasedGeom.cpp b/obj/NiTriBasedGeom.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..90feaa316b4140d90140186bfd34befaedd6f559
--- /dev/null
+++ b/obj/NiTriBasedGeom.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiTriBasedGeom.h"
+
+//Definition of TYPE constant
+const Type NiTriBasedGeom::TYPE("NiTriBasedGeom", &NI_TRI_BASED_GEOM_PARENT::TYPE );
+
+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
+}
+
+void NiTriBasedGeom::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_TRI_BASED_GEOM_WRITE
+}
+
+string NiTriBasedGeom::asString( bool verbose ) const {
+	NI_TRI_BASED_GEOM_STRING
+}
+
+void NiTriBasedGeom::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_TRI_BASED_GEOM_FIXLINKS
+}
+
diff --git a/obj/NiTriBasedGeom.h b/obj/NiTriBasedGeom.h
new file mode 100644
index 0000000000000000000000000000000000000000..263ea33cca874a225ec6e8fbf7cc748160ceb172
--- /dev/null
+++ b/obj/NiTriBasedGeom.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NITRIBASEDGEOM_H_
+#define _NITRIBASEDGEOM_H_
+
+#include "xml_extract.h"
+#include NI_TRI_BASED_GEOM_INCLUDE
+
+/*
+ * NiTriBasedGeom
+ */
+
+class NiTriBasedGeom;
+typedef Ref<NiTriBasedGeom> NiTriBasedGeomRef;
+
+class NiTriBasedGeom : public NI_TRI_BASED_GEOM_PARENT {
+public:
+	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 );
+private:
+	NI_TRI_BASED_GEOM_MEMBERS
+};
+#endif
diff --git a/obj/NiTriShape.cpp b/obj/NiTriShape.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6f0e62ce1d71fa9d95327d3745cf2587377eba6a
--- /dev/null
+++ b/obj/NiTriShape.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiTriShape.h"
+
+//Definition of TYPE constant
+const Type NiTriShape::TYPE("NiTriShape", &NI_TRI_SHAPE_PARENT::TYPE );
+
+NiTriShape::NiTriShape() NI_TRI_SHAPE_CONSTRUCT {}
+
+NiTriShape::~NiTriShape() {}
+
+void NiTriShape::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_TRI_SHAPE_READ
+}
+
+void NiTriShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_TRI_SHAPE_WRITE
+}
+
+string NiTriShape::asString( bool verbose ) const {
+	NI_TRI_SHAPE_STRING
+}
+
+void NiTriShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_TRI_SHAPE_FIXLINKS
+}
+
diff --git a/obj/NiTriShape.h b/obj/NiTriShape.h
new file mode 100644
index 0000000000000000000000000000000000000000..fe28b1bde85e2dd3aad13d3f540b03c456e7064a
--- /dev/null
+++ b/obj/NiTriShape.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NITRISHAPE_H_
+#define _NITRISHAPE_H_
+
+#include "xml_extract.h"
+#include NI_TRI_SHAPE_INCLUDE
+
+/*
+ * NiTriShape
+ */
+
+class NiTriShape;
+typedef Ref<NiTriShape> NiTriShapeRef;
+
+class NiTriShape : public NI_TRI_SHAPE_PARENT {
+public:
+	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 );
+private:
+	NI_TRI_SHAPE_MEMBERS
+};
+#endif
diff --git a/obj/NiTriShapeData.cpp b/obj/NiTriShapeData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d4264124aad237640b2c4dc5e8c2a655521d2d3b
--- /dev/null
+++ b/obj/NiTriShapeData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiTriShapeData.h"
+
+//Definition of TYPE constant
+const Type NiTriShapeData::TYPE("NiTriShapeData", &NI_TRI_SHAPE_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiTriShapeData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_TRI_SHAPE_DATA_WRITE
+}
+
+string NiTriShapeData::asString( bool verbose ) const {
+	NI_TRI_SHAPE_DATA_STRING
+}
+
+void NiTriShapeData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_TRI_SHAPE_DATA_FIXLINKS
+}
+
diff --git a/obj/NiTriShapeData.h b/obj/NiTriShapeData.h
new file mode 100644
index 0000000000000000000000000000000000000000..6bd84ac1258ad9eca3c3d31f9ccff61cb8df5c67
--- /dev/null
+++ b/obj/NiTriShapeData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NITRISHAPEDATA_H_
+#define _NITRISHAPEDATA_H_
+
+#include "xml_extract.h"
+#include NI_TRI_SHAPE_DATA_INCLUDE
+
+/*
+ * NiTriShapeData
+ */
+
+class NiTriShapeData;
+typedef Ref<NiTriShapeData> NiTriShapeDataRef;
+
+class NiTriShapeData : public NI_TRI_SHAPE_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_TRI_SHAPE_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiTriStrips.cpp b/obj/NiTriStrips.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e6538486abb1212ca5c6d24876df5a1345e4699b
--- /dev/null
+++ b/obj/NiTriStrips.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiTriStrips.h"
+
+//Definition of TYPE constant
+const Type NiTriStrips::TYPE("NiTriStrips", &NI_TRI_STRIPS_PARENT::TYPE );
+
+NiTriStrips::NiTriStrips() NI_TRI_STRIPS_CONSTRUCT {}
+
+NiTriStrips::~NiTriStrips() {}
+
+void NiTriStrips::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_TRI_STRIPS_READ
+}
+
+void NiTriStrips::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_TRI_STRIPS_WRITE
+}
+
+string NiTriStrips::asString( bool verbose ) const {
+	NI_TRI_STRIPS_STRING
+}
+
+void NiTriStrips::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_TRI_STRIPS_FIXLINKS
+}
+
diff --git a/obj/NiTriStrips.h b/obj/NiTriStrips.h
new file mode 100644
index 0000000000000000000000000000000000000000..c1a03c1a4c9cdcad08403bfa55bbb7b59ef99ea1
--- /dev/null
+++ b/obj/NiTriStrips.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NITRISTRIPS_H_
+#define _NITRISTRIPS_H_
+
+#include "xml_extract.h"
+#include NI_TRI_STRIPS_INCLUDE
+
+/*
+ * NiTriStrips
+ */
+
+class NiTriStrips;
+typedef Ref<NiTriStrips> NiTriStripsRef;
+
+class NiTriStrips : public NI_TRI_STRIPS_PARENT {
+public:
+	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 );
+private:
+	NI_TRI_STRIPS_MEMBERS
+};
+#endif
diff --git a/obj/NiTriStripsData.cpp b/obj/NiTriStripsData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..20c4a24cf58607b011ffbfe69eb6b81b4a208fca
--- /dev/null
+++ b/obj/NiTriStripsData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiTriStripsData.h"
+
+//Definition of TYPE constant
+const Type NiTriStripsData::TYPE("NiTriStripsData", &NI_TRI_STRIPS_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiTriStripsData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_TRI_STRIPS_DATA_WRITE
+}
+
+string NiTriStripsData::asString( bool verbose ) const {
+	NI_TRI_STRIPS_DATA_STRING
+}
+
+void NiTriStripsData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_TRI_STRIPS_DATA_FIXLINKS
+}
+
diff --git a/obj/NiTriStripsData.h b/obj/NiTriStripsData.h
new file mode 100644
index 0000000000000000000000000000000000000000..1ee5fd3e1917a7273798f6fdfd5750151035e7fc
--- /dev/null
+++ b/obj/NiTriStripsData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NITRISTRIPSDATA_H_
+#define _NITRISTRIPSDATA_H_
+
+#include "xml_extract.h"
+#include NI_TRI_STRIPS_DATA_INCLUDE
+
+/*
+ * NiTriStripsData
+ */
+
+class NiTriStripsData;
+typedef Ref<NiTriStripsData> NiTriStripsDataRef;
+
+class NiTriStripsData : public NI_TRI_STRIPS_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_TRI_STRIPS_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiUVController.cpp b/obj/NiUVController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..855015a3d5e9eb67e48fded7cfcaacd011849d5e
--- /dev/null
+++ b/obj/NiUVController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiUVController.h"
+
+//Definition of TYPE constant
+const Type NiUVController::TYPE("NiUVController", &NI_U_V_CONTROLLER_PARENT::TYPE );
+
+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
+}
+
+void NiUVController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_U_V_CONTROLLER_WRITE
+}
+
+string NiUVController::asString( bool verbose ) const {
+	NI_U_V_CONTROLLER_STRING
+}
+
+void NiUVController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_U_V_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/NiUVController.h b/obj/NiUVController.h
new file mode 100644
index 0000000000000000000000000000000000000000..564a721d9233de288ea9c0200efcae4b6e304200
--- /dev/null
+++ b/obj/NiUVController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIUVCONTROLLER_H_
+#define _NIUVCONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_U_V_CONTROLLER_INCLUDE
+
+/*
+ * NiUVController
+ */
+
+class NiUVController;
+typedef Ref<NiUVController> NiUVControllerRef;
+
+class NiUVController : public NI_U_V_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	NI_U_V_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/NiUVData.cpp b/obj/NiUVData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6c73f66fc7c7b4b1d58228f8bf27acc6fb55e8b0
--- /dev/null
+++ b/obj/NiUVData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiUVData.h"
+
+//Definition of TYPE constant
+const Type NiUVData::TYPE("NiUVData", &NI_U_V_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiUVData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_U_V_DATA_WRITE
+}
+
+string NiUVData::asString( bool verbose ) const {
+	NI_U_V_DATA_STRING
+}
+
+void NiUVData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_U_V_DATA_FIXLINKS
+}
+
diff --git a/obj/NiUVData.h b/obj/NiUVData.h
new file mode 100644
index 0000000000000000000000000000000000000000..545ba7d2776cd2096351d854bdc6f2db763719c5
--- /dev/null
+++ b/obj/NiUVData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIUVDATA_H_
+#define _NIUVDATA_H_
+
+#include "xml_extract.h"
+#include NI_U_V_DATA_INCLUDE
+
+/*
+ * NiUVData
+ */
+
+class NiUVData;
+typedef Ref<NiUVData> NiUVDataRef;
+
+class NiUVData : public NI_U_V_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_U_V_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiVectorExtraData.cpp b/obj/NiVectorExtraData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9cb68b8b7fdc190f05a64f722584bffe4df5f4c3
--- /dev/null
+++ b/obj/NiVectorExtraData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiVectorExtraData.h"
+
+//Definition of TYPE constant
+const Type NiVectorExtraData::TYPE("NiVectorExtraData", &NI_VECTOR_EXTRA_DATA_PARENT::TYPE );
+
+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
+}
+
+void NiVectorExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_VECTOR_EXTRA_DATA_WRITE
+}
+
+string NiVectorExtraData::asString( bool verbose ) const {
+	NI_VECTOR_EXTRA_DATA_STRING
+}
+
+void NiVectorExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_VECTOR_EXTRA_DATA_FIXLINKS
+}
+
diff --git a/obj/NiVectorExtraData.h b/obj/NiVectorExtraData.h
new file mode 100644
index 0000000000000000000000000000000000000000..fe7ca061e2c0eb9efd55ce3fd156569e84db9e8f
--- /dev/null
+++ b/obj/NiVectorExtraData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIVECTOREXTRADATA_H_
+#define _NIVECTOREXTRADATA_H_
+
+#include "xml_extract.h"
+#include NI_VECTOR_EXTRA_DATA_INCLUDE
+
+/*
+ * NiVectorExtraData
+ */
+
+class NiVectorExtraData;
+typedef Ref<NiVectorExtraData> NiVectorExtraDataRef;
+
+class NiVectorExtraData : public NI_VECTOR_EXTRA_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_VECTOR_EXTRA_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiVertWeightsExtraData.cpp b/obj/NiVertWeightsExtraData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..447cb11bbb4c487517af7d758b64b59136af6ef6
--- /dev/null
+++ b/obj/NiVertWeightsExtraData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiVertWeightsExtraData.h"
+
+//Definition of TYPE constant
+const Type NiVertWeightsExtraData::TYPE("NiVertWeightsExtraData", &NI_VERT_WEIGHTS_EXTRA_DATA_PARENT::TYPE );
+
+NiVertWeightsExtraData::NiVertWeightsExtraData() NI_VERT_WEIGHTS_EXTRA_DATA_CONSTRUCT {}
+
+NiVertWeightsExtraData::~NiVertWeightsExtraData() {}
+
+void NiVertWeightsExtraData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string NiVertWeightsExtraData::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/NiVertWeightsExtraData.h b/obj/NiVertWeightsExtraData.h
new file mode 100644
index 0000000000000000000000000000000000000000..2400e42f41e0cb2632efb3c8796a44dfe69cbfe2
--- /dev/null
+++ b/obj/NiVertWeightsExtraData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIVERTWEIGHTSEXTRADATA_H_
+#define _NIVERTWEIGHTSEXTRADATA_H_
+
+#include "xml_extract.h"
+#include NI_VERT_WEIGHTS_EXTRA_DATA_INCLUDE
+
+/*
+ * NiVertWeightsExtraData
+ */
+
+class NiVertWeightsExtraData;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/NiVertexColorProperty.cpp b/obj/NiVertexColorProperty.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a198d9cacafcd2fd898f7b344659526386400f43
--- /dev/null
+++ b/obj/NiVertexColorProperty.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiVertexColorProperty.h"
+
+//Definition of TYPE constant
+const Type NiVertexColorProperty::TYPE("NiVertexColorProperty", &NI_VERTEX_COLOR_PROPERTY_PARENT::TYPE );
+
+NiVertexColorProperty::NiVertexColorProperty() NI_VERTEX_COLOR_PROPERTY_CONSTRUCT {}
+
+NiVertexColorProperty::~NiVertexColorProperty() {}
+
+void NiVertexColorProperty::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_VERTEX_COLOR_PROPERTY_READ
+}
+
+void NiVertexColorProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_VERTEX_COLOR_PROPERTY_WRITE
+}
+
+string NiVertexColorProperty::asString( bool verbose ) const {
+	NI_VERTEX_COLOR_PROPERTY_STRING
+}
+
+void NiVertexColorProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_VERTEX_COLOR_PROPERTY_FIXLINKS
+}
+
diff --git a/obj/NiVertexColorProperty.h b/obj/NiVertexColorProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..560c17da81988c997ae1b5dd1eaf6e6d9176b7c0
--- /dev/null
+++ b/obj/NiVertexColorProperty.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIVERTEXCOLORPROPERTY_H_
+#define _NIVERTEXCOLORPROPERTY_H_
+
+#include "xml_extract.h"
+#include NI_VERTEX_COLOR_PROPERTY_INCLUDE
+
+/*
+ * NiVertexColorProperty
+ */
+
+class NiVertexColorProperty;
+typedef Ref<NiVertexColorProperty> NiVertexColorPropertyRef;
+
+class NiVertexColorProperty : public NI_VERTEX_COLOR_PROPERTY_PARENT {
+public:
+	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 );
+private:
+	NI_VERTEX_COLOR_PROPERTY_MEMBERS
+};
+#endif
diff --git a/obj/NiVisController.cpp b/obj/NiVisController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..df8e90d1a3de58ac59bdec80b5d20670c31a0424
--- /dev/null
+++ b/obj/NiVisController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiVisController.h"
+
+//Definition of TYPE constant
+const Type NiVisController::TYPE("NiVisController", &NI_VIS_CONTROLLER_PARENT::TYPE );
+
+NiVisController::NiVisController() NI_VIS_CONTROLLER_CONSTRUCT {}
+
+NiVisController::~NiVisController() {}
+
+void NiVisController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_VIS_CONTROLLER_READ
+}
+
+void NiVisController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_VIS_CONTROLLER_WRITE
+}
+
+string NiVisController::asString( bool verbose ) const {
+	NI_VIS_CONTROLLER_STRING
+}
+
+void NiVisController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_VIS_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/NiVisController.h b/obj/NiVisController.h
new file mode 100644
index 0000000000000000000000000000000000000000..354c5ddd8a9aced86bca5d68dbe7e1a346c39946
--- /dev/null
+++ b/obj/NiVisController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIVISCONTROLLER_H_
+#define _NIVISCONTROLLER_H_
+
+#include "xml_extract.h"
+#include NI_VIS_CONTROLLER_INCLUDE
+
+/*
+ * NiVisController
+ */
+
+class NiVisController;
+typedef Ref<NiVisController> NiVisControllerRef;
+
+class NiVisController : public NI_VIS_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	NI_VIS_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/NiVisData.cpp b/obj/NiVisData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..114262ed1ab6d79aae06a12a50d1ed851f097e99
--- /dev/null
+++ b/obj/NiVisData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiVisData.h"
+
+//Definition of TYPE constant
+const Type NiVisData::TYPE("NiVisData", &NI_VIS_DATA_PARENT::TYPE );
+
+NiVisData::NiVisData() NI_VIS_DATA_CONSTRUCT {}
+
+NiVisData::~NiVisData() {}
+
+void NiVisData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_VIS_DATA_READ
+}
+
+void NiVisData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_VIS_DATA_WRITE
+}
+
+string NiVisData::asString( bool verbose ) const {
+	NI_VIS_DATA_STRING
+}
+
+void NiVisData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_VIS_DATA_FIXLINKS
+}
+
diff --git a/obj/NiVisData.h b/obj/NiVisData.h
new file mode 100644
index 0000000000000000000000000000000000000000..3468fe2798f36cd9e10a231d5935b606b82b42c0
--- /dev/null
+++ b/obj/NiVisData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIVISDATA_H_
+#define _NIVISDATA_H_
+
+#include "xml_extract.h"
+#include NI_VIS_DATA_INCLUDE
+
+/*
+ * NiVisData
+ */
+
+class NiVisData;
+typedef Ref<NiVisData> NiVisDataRef;
+
+class NiVisData : public NI_VIS_DATA_PARENT {
+public:
+	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 );
+private:
+	NI_VIS_DATA_MEMBERS
+};
+#endif
diff --git a/obj/NiWireframeProperty.cpp b/obj/NiWireframeProperty.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..48ddb1cea69b268e7e1c7a2c7f39cda22119e619
--- /dev/null
+++ b/obj/NiWireframeProperty.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiWireframeProperty.h"
+
+//Definition of TYPE constant
+const Type NiWireframeProperty::TYPE("NiWireframeProperty", &NI_WIREFRAME_PROPERTY_PARENT::TYPE );
+
+NiWireframeProperty::NiWireframeProperty() NI_WIREFRAME_PROPERTY_CONSTRUCT {}
+
+NiWireframeProperty::~NiWireframeProperty() {}
+
+void NiWireframeProperty::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	NI_WIREFRAME_PROPERTY_READ
+}
+
+void NiWireframeProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_WIREFRAME_PROPERTY_WRITE
+}
+
+string NiWireframeProperty::asString( bool verbose ) const {
+	NI_WIREFRAME_PROPERTY_STRING
+}
+
+void NiWireframeProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_WIREFRAME_PROPERTY_FIXLINKS
+}
+
diff --git a/obj/NiWireframeProperty.h b/obj/NiWireframeProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..b1fea2ec0a98893883c79d3bb3735912338ab8ee
--- /dev/null
+++ b/obj/NiWireframeProperty.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIWIREFRAMEPROPERTY_H_
+#define _NIWIREFRAMEPROPERTY_H_
+
+#include "xml_extract.h"
+#include NI_WIREFRAME_PROPERTY_INCLUDE
+
+/*
+ * NiWireframeProperty
+ */
+
+class NiWireframeProperty;
+typedef Ref<NiWireframeProperty> NiWireframePropertyRef;
+
+class NiWireframeProperty : public NI_WIREFRAME_PROPERTY_PARENT {
+public:
+	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 );
+private:
+	NI_WIREFRAME_PROPERTY_MEMBERS
+};
+#endif
diff --git a/obj/NiZBufferProperty.cpp b/obj/NiZBufferProperty.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..825887cbfd8ba48d8436843e0277cdf6647a2e5a
--- /dev/null
+++ b/obj/NiZBufferProperty.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiZBufferProperty.h"
+
+//Definition of TYPE constant
+const Type NiZBufferProperty::TYPE("NiZBufferProperty", &NI_Z_BUFFER_PROPERTY_PARENT::TYPE );
+
+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
+}
+
+void NiZBufferProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	NI_Z_BUFFER_PROPERTY_WRITE
+}
+
+string NiZBufferProperty::asString( bool verbose ) const {
+	NI_Z_BUFFER_PROPERTY_STRING
+}
+
+void NiZBufferProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	NI_Z_BUFFER_PROPERTY_FIXLINKS
+}
+
diff --git a/obj/NiZBufferProperty.h b/obj/NiZBufferProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..fdc9c95e89594f1a6c1fc0de26b2bccf3599deef
--- /dev/null
+++ b/obj/NiZBufferProperty.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIZBUFFERPROPERTY_H_
+#define _NIZBUFFERPROPERTY_H_
+
+#include "xml_extract.h"
+#include NI_Z_BUFFER_PROPERTY_INCLUDE
+
+/*
+ * NiZBufferProperty
+ */
+
+class NiZBufferProperty;
+typedef Ref<NiZBufferProperty> NiZBufferPropertyRef;
+
+class NiZBufferProperty : public NI_Z_BUFFER_PROPERTY_PARENT {
+public:
+	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 );
+private:
+	NI_Z_BUFFER_PROPERTY_MEMBERS
+};
+#endif
diff --git a/obj/RootCollisionNode.cpp b/obj/RootCollisionNode.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..abee6c25053a5c58b489031d3b60641557fc9a23
--- /dev/null
+++ b/obj/RootCollisionNode.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "RootCollisionNode.h"
+
+//Definition of TYPE constant
+const Type RootCollisionNode::TYPE("RootCollisionNode", &ROOT_COLLISION_NODE_PARENT::TYPE );
+
+RootCollisionNode::RootCollisionNode() ROOT_COLLISION_NODE_CONSTRUCT {}
+
+RootCollisionNode::~RootCollisionNode() {}
+
+void RootCollisionNode::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	ROOT_COLLISION_NODE_READ
+}
+
+void RootCollisionNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	ROOT_COLLISION_NODE_WRITE
+}
+
+string RootCollisionNode::asString( bool verbose ) const {
+	ROOT_COLLISION_NODE_STRING
+}
+
+void RootCollisionNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	ROOT_COLLISION_NODE_FIXLINKS
+}
+
diff --git a/obj/RootCollisionNode.h b/obj/RootCollisionNode.h
new file mode 100644
index 0000000000000000000000000000000000000000..03f863d2de0bbd4fc620545dd07baccdd8bc80ba
--- /dev/null
+++ b/obj/RootCollisionNode.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _ROOTCOLLISIONNODE_H_
+#define _ROOTCOLLISIONNODE_H_
+
+#include "xml_extract.h"
+#include ROOT_COLLISION_NODE_INCLUDE
+
+/*
+ * RootCollisionNode
+ */
+
+class RootCollisionNode;
+typedef Ref<RootCollisionNode> RootCollisionNodeRef;
+
+class RootCollisionNode : public ROOT_COLLISION_NODE_PARENT {
+public:
+	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 );
+private:
+	ROOT_COLLISION_NODE_MEMBERS
+};
+#endif
diff --git a/obj/TriBasedGeomData.cpp b/obj/TriBasedGeomData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..35af6a25d299fbd11d41faa53b59cef03810f215
--- /dev/null
+++ b/obj/TriBasedGeomData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "TriBasedGeomData.h"
+
+//Definition of TYPE constant
+const Type TriBasedGeomData::TYPE("TriBasedGeomData", &TRI_BASED_GEOM_DATA_PARENT::TYPE );
+
+TriBasedGeomData::TriBasedGeomData() TRI_BASED_GEOM_DATA_CONSTRUCT {}
+
+TriBasedGeomData::~TriBasedGeomData() {}
+
+void TriBasedGeomData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	TRI_BASED_GEOM_DATA_READ
+}
+
+void TriBasedGeomData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	TRI_BASED_GEOM_DATA_WRITE
+}
+
+string TriBasedGeomData::asString( bool verbose ) const {
+	TRI_BASED_GEOM_DATA_STRING
+}
+
+void TriBasedGeomData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	TRI_BASED_GEOM_DATA_FIXLINKS
+}
+
diff --git a/obj/TriBasedGeomData.h b/obj/TriBasedGeomData.h
new file mode 100644
index 0000000000000000000000000000000000000000..8f8a9abaee91c3abe6ab523787e89f0887586810
--- /dev/null
+++ b/obj/TriBasedGeomData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _TRIBASEDGEOMDATA_H_
+#define _TRIBASEDGEOMDATA_H_
+
+#include "xml_extract.h"
+#include TRI_BASED_GEOM_DATA_INCLUDE
+
+/*
+ * TriBasedGeomData
+ */
+
+class TriBasedGeomData;
+typedef Ref<TriBasedGeomData> TriBasedGeomDataRef;
+
+class TriBasedGeomData : public TRI_BASED_GEOM_DATA_PARENT {
+public:
+	TriBasedGeomData();
+	~TriBasedGeomData();
+	//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 );
+private:
+	TRI_BASED_GEOM_DATA_MEMBERS
+};
+#endif
diff --git a/obj/bhkBlendCollisionObject.cpp b/obj/bhkBlendCollisionObject.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..27214d787fc013218aa3c955a63605b79183a4ac
--- /dev/null
+++ b/obj/bhkBlendCollisionObject.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkBlendCollisionObject.h"
+
+//Definition of TYPE constant
+const Type bhkBlendCollisionObject::TYPE("bhkBlendCollisionObject", &BHK_BLEND_COLLISION_OBJECT_PARENT::TYPE );
+
+bhkBlendCollisionObject::bhkBlendCollisionObject() BHK_BLEND_COLLISION_OBJECT_CONSTRUCT {}
+
+bhkBlendCollisionObject::~bhkBlendCollisionObject() {}
+
+void bhkBlendCollisionObject::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_BLEND_COLLISION_OBJECT_READ
+}
+
+void bhkBlendCollisionObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_BLEND_COLLISION_OBJECT_WRITE
+}
+
+string bhkBlendCollisionObject::asString( bool verbose ) const {
+	BHK_BLEND_COLLISION_OBJECT_STRING
+}
+
+void bhkBlendCollisionObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_BLEND_COLLISION_OBJECT_FIXLINKS
+}
+
diff --git a/obj/bhkBlendCollisionObject.h b/obj/bhkBlendCollisionObject.h
new file mode 100644
index 0000000000000000000000000000000000000000..a82460c068be637d5383b7d61ffaf9b67063de8f
--- /dev/null
+++ b/obj/bhkBlendCollisionObject.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKBLENDCOLLISIONOBJECT_H_
+#define _BHKBLENDCOLLISIONOBJECT_H_
+
+#include "xml_extract.h"
+#include BHK_BLEND_COLLISION_OBJECT_INCLUDE
+
+/*
+ * bhkBlendCollisionObject
+ */
+
+class bhkBlendCollisionObject;
+typedef Ref<bhkBlendCollisionObject> bhkBlendCollisionObjectRef;
+
+class bhkBlendCollisionObject : public BHK_BLEND_COLLISION_OBJECT_PARENT {
+public:
+	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 );
+private:
+	BHK_BLEND_COLLISION_OBJECT_MEMBERS
+};
+#endif
diff --git a/obj/bhkBlendController.cpp b/obj/bhkBlendController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d309565f1415c205badb7bae99f77ab3bdd14b36
--- /dev/null
+++ b/obj/bhkBlendController.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkBlendController.h"
+
+//Definition of TYPE constant
+const Type bhkBlendController::TYPE("bhkBlendController", &BHK_BLEND_CONTROLLER_PARENT::TYPE );
+
+bhkBlendController::bhkBlendController() BHK_BLEND_CONTROLLER_CONSTRUCT {}
+
+bhkBlendController::~bhkBlendController() {}
+
+void bhkBlendController::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_BLEND_CONTROLLER_READ
+}
+
+void bhkBlendController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_BLEND_CONTROLLER_WRITE
+}
+
+string bhkBlendController::asString( bool verbose ) const {
+	BHK_BLEND_CONTROLLER_STRING
+}
+
+void bhkBlendController::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_BLEND_CONTROLLER_FIXLINKS
+}
+
diff --git a/obj/bhkBlendController.h b/obj/bhkBlendController.h
new file mode 100644
index 0000000000000000000000000000000000000000..34a11c51c0c7ec133340cdfd00c14437024ea213
--- /dev/null
+++ b/obj/bhkBlendController.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKBLENDCONTROLLER_H_
+#define _BHKBLENDCONTROLLER_H_
+
+#include "xml_extract.h"
+#include BHK_BLEND_CONTROLLER_INCLUDE
+
+/*
+ * bhkBlendController
+ */
+
+class bhkBlendController;
+typedef Ref<bhkBlendController> bhkBlendControllerRef;
+
+class bhkBlendController : public BHK_BLEND_CONTROLLER_PARENT {
+public:
+	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 );
+private:
+	BHK_BLEND_CONTROLLER_MEMBERS
+};
+#endif
diff --git a/obj/bhkBoxShape.cpp b/obj/bhkBoxShape.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ddf34e16ec2181a0cd13b4191042b9886ea6eca1
--- /dev/null
+++ b/obj/bhkBoxShape.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkBoxShape.h"
+
+//Definition of TYPE constant
+const Type bhkBoxShape::TYPE("bhkBoxShape", &BHK_BOX_SHAPE_PARENT::TYPE );
+
+bhkBoxShape::bhkBoxShape() BHK_BOX_SHAPE_CONSTRUCT {}
+
+bhkBoxShape::~bhkBoxShape() {}
+
+void bhkBoxShape::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_BOX_SHAPE_READ
+}
+
+void bhkBoxShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_BOX_SHAPE_WRITE
+}
+
+string bhkBoxShape::asString( bool verbose ) const {
+	BHK_BOX_SHAPE_STRING
+}
+
+void bhkBoxShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_BOX_SHAPE_FIXLINKS
+}
+
diff --git a/obj/bhkBoxShape.h b/obj/bhkBoxShape.h
new file mode 100644
index 0000000000000000000000000000000000000000..ef2066746671be4354eca13597cfafa0eb011dc6
--- /dev/null
+++ b/obj/bhkBoxShape.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKBOXSHAPE_H_
+#define _BHKBOXSHAPE_H_
+
+#include "xml_extract.h"
+#include BHK_BOX_SHAPE_INCLUDE
+
+/*
+ * bhkBoxShape
+ */
+
+class bhkBoxShape;
+typedef Ref<bhkBoxShape> bhkBoxShapeRef;
+
+class bhkBoxShape : public BHK_BOX_SHAPE_PARENT {
+public:
+	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 );
+private:
+	BHK_BOX_SHAPE_MEMBERS
+};
+#endif
diff --git a/obj/bhkCapsuleShape.cpp b/obj/bhkCapsuleShape.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..00046dc555d801e4c595aa1e3b75181f5a20f3ff
--- /dev/null
+++ b/obj/bhkCapsuleShape.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkCapsuleShape.h"
+
+//Definition of TYPE constant
+const Type bhkCapsuleShape::TYPE("bhkCapsuleShape", &BHK_CAPSULE_SHAPE_PARENT::TYPE );
+
+bhkCapsuleShape::bhkCapsuleShape() BHK_CAPSULE_SHAPE_CONSTRUCT {}
+
+bhkCapsuleShape::~bhkCapsuleShape() {}
+
+void bhkCapsuleShape::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_CAPSULE_SHAPE_READ
+}
+
+void bhkCapsuleShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_CAPSULE_SHAPE_WRITE
+}
+
+string bhkCapsuleShape::asString( bool verbose ) const {
+	BHK_CAPSULE_SHAPE_STRING
+}
+
+void bhkCapsuleShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_CAPSULE_SHAPE_FIXLINKS
+}
+
diff --git a/obj/bhkCapsuleShape.h b/obj/bhkCapsuleShape.h
new file mode 100644
index 0000000000000000000000000000000000000000..7adf103fe979bf6e71f9784663afe86e17ad222e
--- /dev/null
+++ b/obj/bhkCapsuleShape.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKCAPSULESHAPE_H_
+#define _BHKCAPSULESHAPE_H_
+
+#include "xml_extract.h"
+#include BHK_CAPSULE_SHAPE_INCLUDE
+
+/*
+ * bhkCapsuleShape
+ */
+
+class bhkCapsuleShape;
+typedef Ref<bhkCapsuleShape> bhkCapsuleShapeRef;
+
+class bhkCapsuleShape : public BHK_CAPSULE_SHAPE_PARENT {
+public:
+	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 );
+private:
+	BHK_CAPSULE_SHAPE_MEMBERS
+};
+#endif
diff --git a/obj/bhkCollisionObject.cpp b/obj/bhkCollisionObject.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5da7ae6c9d2b433073c03eb65364ec98ff426fe2
--- /dev/null
+++ b/obj/bhkCollisionObject.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkCollisionObject.h"
+
+//Definition of TYPE constant
+const Type bhkCollisionObject::TYPE("bhkCollisionObject", &BHK_COLLISION_OBJECT_PARENT::TYPE );
+
+bhkCollisionObject::bhkCollisionObject() BHK_COLLISION_OBJECT_CONSTRUCT {}
+
+bhkCollisionObject::~bhkCollisionObject() {}
+
+void bhkCollisionObject::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_COLLISION_OBJECT_READ
+}
+
+void bhkCollisionObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_COLLISION_OBJECT_WRITE
+}
+
+string bhkCollisionObject::asString( bool verbose ) const {
+	BHK_COLLISION_OBJECT_STRING
+}
+
+void bhkCollisionObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_COLLISION_OBJECT_FIXLINKS
+}
+
diff --git a/obj/bhkCollisionObject.h b/obj/bhkCollisionObject.h
new file mode 100644
index 0000000000000000000000000000000000000000..fe5f2e65350ecc6dcea38d4db9c6336ee4bb948f
--- /dev/null
+++ b/obj/bhkCollisionObject.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKCOLLISIONOBJECT_H_
+#define _BHKCOLLISIONOBJECT_H_
+
+#include "xml_extract.h"
+#include BHK_COLLISION_OBJECT_INCLUDE
+
+/*
+ * bhkCollisionObject
+ */
+
+class bhkCollisionObject;
+typedef Ref<bhkCollisionObject> bhkCollisionObjectRef;
+
+class bhkCollisionObject : public BHK_COLLISION_OBJECT_PARENT {
+public:
+	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 );
+private:
+	BHK_COLLISION_OBJECT_MEMBERS
+};
+#endif
diff --git a/obj/bhkConvexShape.cpp b/obj/bhkConvexShape.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..eb863a6d613b5054e21259860c7fd7dbe8047127
--- /dev/null
+++ b/obj/bhkConvexShape.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkConvexShape.h"
+
+//Definition of TYPE constant
+const Type bhkConvexShape::TYPE("bhkConvexShape", &BHK_CONVEX_SHAPE_PARENT::TYPE );
+
+bhkConvexShape::bhkConvexShape() BHK_CONVEX_SHAPE_CONSTRUCT {}
+
+bhkConvexShape::~bhkConvexShape() {}
+
+void bhkConvexShape::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_CONVEX_SHAPE_READ
+}
+
+void bhkConvexShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_CONVEX_SHAPE_WRITE
+}
+
+string bhkConvexShape::asString( bool verbose ) const {
+	BHK_CONVEX_SHAPE_STRING
+}
+
+void bhkConvexShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_CONVEX_SHAPE_FIXLINKS
+}
+
diff --git a/obj/bhkConvexShape.h b/obj/bhkConvexShape.h
new file mode 100644
index 0000000000000000000000000000000000000000..8fdbf43cfb6cc3f51980c92cf7c4dfd25d0c7fc2
--- /dev/null
+++ b/obj/bhkConvexShape.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKCONVEXSHAPE_H_
+#define _BHKCONVEXSHAPE_H_
+
+#include "xml_extract.h"
+#include BHK_CONVEX_SHAPE_INCLUDE
+
+/*
+ * bhkConvexShape
+ */
+
+class bhkConvexShape;
+typedef Ref<bhkConvexShape> bhkConvexShapeRef;
+
+class bhkConvexShape : public BHK_CONVEX_SHAPE_PARENT {
+public:
+	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 );
+private:
+	BHK_CONVEX_SHAPE_MEMBERS
+};
+#endif
diff --git a/obj/bhkConvexTransformShape.cpp b/obj/bhkConvexTransformShape.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a781b9d7dbdaabfd429d7fe49ee2a7e23f9a9a57
--- /dev/null
+++ b/obj/bhkConvexTransformShape.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkConvexTransformShape.h"
+
+//Definition of TYPE constant
+const Type bhkConvexTransformShape::TYPE("bhkConvexTransformShape", &BHK_CONVEX_TRANSFORM_SHAPE_PARENT::TYPE );
+
+bhkConvexTransformShape::bhkConvexTransformShape() BHK_CONVEX_TRANSFORM_SHAPE_CONSTRUCT {}
+
+bhkConvexTransformShape::~bhkConvexTransformShape() {}
+
+void bhkConvexTransformShape::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_CONVEX_TRANSFORM_SHAPE_READ
+}
+
+void bhkConvexTransformShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_CONVEX_TRANSFORM_SHAPE_WRITE
+}
+
+string bhkConvexTransformShape::asString( bool verbose ) const {
+	BHK_CONVEX_TRANSFORM_SHAPE_STRING
+}
+
+void bhkConvexTransformShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_CONVEX_TRANSFORM_SHAPE_FIXLINKS
+}
+
diff --git a/obj/bhkConvexTransformShape.h b/obj/bhkConvexTransformShape.h
new file mode 100644
index 0000000000000000000000000000000000000000..9be7b37aeadd658f0db7a272cb88ee37a6678fa8
--- /dev/null
+++ b/obj/bhkConvexTransformShape.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKCONVEXTRANSFORMSHAPE_H_
+#define _BHKCONVEXTRANSFORMSHAPE_H_
+
+#include "xml_extract.h"
+#include BHK_CONVEX_TRANSFORM_SHAPE_INCLUDE
+
+/*
+ * bhkConvexTransformShape
+ */
+
+class bhkConvexTransformShape;
+typedef Ref<bhkConvexTransformShape> bhkConvexTransformShapeRef;
+
+class bhkConvexTransformShape : public BHK_CONVEX_TRANSFORM_SHAPE_PARENT {
+public:
+	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 );
+private:
+	BHK_CONVEX_TRANSFORM_SHAPE_MEMBERS
+};
+#endif
diff --git a/obj/bhkConvexVerticesShape.cpp b/obj/bhkConvexVerticesShape.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..932a1f470250bdf3d3f6a36ec62218dc2bb238b7
--- /dev/null
+++ b/obj/bhkConvexVerticesShape.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkConvexVerticesShape.h"
+
+//Definition of TYPE constant
+const Type bhkConvexVerticesShape::TYPE("bhkConvexVerticesShape", &BHK_CONVEX_VERTICES_SHAPE_PARENT::TYPE );
+
+bhkConvexVerticesShape::bhkConvexVerticesShape() BHK_CONVEX_VERTICES_SHAPE_CONSTRUCT {}
+
+bhkConvexVerticesShape::~bhkConvexVerticesShape() {}
+
+void bhkConvexVerticesShape::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_CONVEX_VERTICES_SHAPE_READ
+}
+
+void bhkConvexVerticesShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_CONVEX_VERTICES_SHAPE_WRITE
+}
+
+string bhkConvexVerticesShape::asString( bool verbose ) const {
+	BHK_CONVEX_VERTICES_SHAPE_STRING
+}
+
+void bhkConvexVerticesShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_CONVEX_VERTICES_SHAPE_FIXLINKS
+}
+
diff --git a/obj/bhkConvexVerticesShape.h b/obj/bhkConvexVerticesShape.h
new file mode 100644
index 0000000000000000000000000000000000000000..fc629043a1244acc559e4111de4f62b28debe203
--- /dev/null
+++ b/obj/bhkConvexVerticesShape.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKCONVEXVERTICESSHAPE_H_
+#define _BHKCONVEXVERTICESSHAPE_H_
+
+#include "xml_extract.h"
+#include BHK_CONVEX_VERTICES_SHAPE_INCLUDE
+
+/*
+ * bhkConvexVerticesShape
+ */
+
+class bhkConvexVerticesShape;
+typedef Ref<bhkConvexVerticesShape> bhkConvexVerticesShapeRef;
+
+class bhkConvexVerticesShape : public BHK_CONVEX_VERTICES_SHAPE_PARENT {
+public:
+	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 );
+private:
+	BHK_CONVEX_VERTICES_SHAPE_MEMBERS
+};
+#endif
diff --git a/obj/bhkEntity.cpp b/obj/bhkEntity.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ee45da1bf5f8881a9f9e6b596212b81f0416f8cf
--- /dev/null
+++ b/obj/bhkEntity.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkEntity.h"
+
+//Definition of TYPE constant
+const Type bhkEntity::TYPE("bhkEntity", &BHK_ENTITY_PARENT::TYPE );
+
+bhkEntity::bhkEntity() BHK_ENTITY_CONSTRUCT {}
+
+bhkEntity::~bhkEntity() {}
+
+void bhkEntity::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_ENTITY_READ
+}
+
+void bhkEntity::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_ENTITY_WRITE
+}
+
+string bhkEntity::asString( bool verbose ) const {
+	BHK_ENTITY_STRING
+}
+
+void bhkEntity::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_ENTITY_FIXLINKS
+}
+
diff --git a/obj/bhkEntity.h b/obj/bhkEntity.h
new file mode 100644
index 0000000000000000000000000000000000000000..3f1959dcf35d28f1435a01bfd84bd3f0a12d8391
--- /dev/null
+++ b/obj/bhkEntity.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKENTITY_H_
+#define _BHKENTITY_H_
+
+#include "xml_extract.h"
+#include BHK_ENTITY_INCLUDE
+
+/*
+ * bhkEntity
+ */
+
+class bhkEntity;
+typedef Ref<bhkEntity> bhkEntityRef;
+
+class bhkEntity : public BHK_ENTITY_PARENT {
+public:
+	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 );
+private:
+	BHK_ENTITY_MEMBERS
+};
+#endif
diff --git a/obj/bhkHingeConstraint.cpp b/obj/bhkHingeConstraint.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6c2d3f83142daf09eb6392654a72e2f71f5063c2
--- /dev/null
+++ b/obj/bhkHingeConstraint.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkHingeConstraint.h"
+
+//Definition of TYPE constant
+const Type bhkHingeConstraint::TYPE("bhkHingeConstraint", &BHK_HINGE_CONSTRAINT_PARENT::TYPE );
+
+bhkHingeConstraint::bhkHingeConstraint() BHK_HINGE_CONSTRAINT_CONSTRUCT {}
+
+bhkHingeConstraint::~bhkHingeConstraint() {}
+
+void bhkHingeConstraint::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_HINGE_CONSTRAINT_READ
+}
+
+void bhkHingeConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_HINGE_CONSTRAINT_WRITE
+}
+
+string bhkHingeConstraint::asString( bool verbose ) const {
+	BHK_HINGE_CONSTRAINT_STRING
+}
+
+void bhkHingeConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_HINGE_CONSTRAINT_FIXLINKS
+}
+
diff --git a/obj/bhkHingeConstraint.h b/obj/bhkHingeConstraint.h
new file mode 100644
index 0000000000000000000000000000000000000000..b911a4fa5fefdd1e4004a5081c8f7fdc0ae030a5
--- /dev/null
+++ b/obj/bhkHingeConstraint.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKHINGECONSTRAINT_H_
+#define _BHKHINGECONSTRAINT_H_
+
+#include "xml_extract.h"
+#include BHK_HINGE_CONSTRAINT_INCLUDE
+
+/*
+ * bhkHingeConstraint
+ */
+
+class bhkHingeConstraint;
+typedef Ref<bhkHingeConstraint> bhkHingeConstraintRef;
+
+class bhkHingeConstraint : public BHK_HINGE_CONSTRAINT_PARENT {
+public:
+	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 );
+private:
+	BHK_HINGE_CONSTRAINT_MEMBERS
+};
+#endif
diff --git a/obj/bhkLimitedHingeConstraint.cpp b/obj/bhkLimitedHingeConstraint.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..aa19c58b2d7ed25403051217dd7ec477f9ca0bc4
--- /dev/null
+++ b/obj/bhkLimitedHingeConstraint.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkLimitedHingeConstraint.h"
+
+//Definition of TYPE constant
+const Type bhkLimitedHingeConstraint::TYPE("bhkLimitedHingeConstraint", &BHK_LIMITED_HINGE_CONSTRAINT_PARENT::TYPE );
+
+bhkLimitedHingeConstraint::bhkLimitedHingeConstraint() BHK_LIMITED_HINGE_CONSTRAINT_CONSTRUCT {}
+
+bhkLimitedHingeConstraint::~bhkLimitedHingeConstraint() {}
+
+void bhkLimitedHingeConstraint::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_LIMITED_HINGE_CONSTRAINT_READ
+}
+
+void bhkLimitedHingeConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_LIMITED_HINGE_CONSTRAINT_WRITE
+}
+
+string bhkLimitedHingeConstraint::asString( bool verbose ) const {
+	BHK_LIMITED_HINGE_CONSTRAINT_STRING
+}
+
+void bhkLimitedHingeConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_LIMITED_HINGE_CONSTRAINT_FIXLINKS
+}
+
diff --git a/obj/bhkLimitedHingeConstraint.h b/obj/bhkLimitedHingeConstraint.h
new file mode 100644
index 0000000000000000000000000000000000000000..3253ae18af6d5f1ff5daf2dbb0f3c0516215e20b
--- /dev/null
+++ b/obj/bhkLimitedHingeConstraint.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKLIMITEDHINGECONSTRAINT_H_
+#define _BHKLIMITEDHINGECONSTRAINT_H_
+
+#include "xml_extract.h"
+#include BHK_LIMITED_HINGE_CONSTRAINT_INCLUDE
+
+/*
+ * bhkLimitedHingeConstraint
+ */
+
+class bhkLimitedHingeConstraint;
+typedef Ref<bhkLimitedHingeConstraint> bhkLimitedHingeConstraintRef;
+
+class bhkLimitedHingeConstraint : public BHK_LIMITED_HINGE_CONSTRAINT_PARENT {
+public:
+	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 );
+private:
+	BHK_LIMITED_HINGE_CONSTRAINT_MEMBERS
+};
+#endif
diff --git a/obj/bhkListShape.cpp b/obj/bhkListShape.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8ca07d4710e7ab9f91394a2824bb994087e79b69
--- /dev/null
+++ b/obj/bhkListShape.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkListShape.h"
+
+//Definition of TYPE constant
+const Type bhkListShape::TYPE("bhkListShape", &BHK_LIST_SHAPE_PARENT::TYPE );
+
+bhkListShape::bhkListShape() BHK_LIST_SHAPE_CONSTRUCT {}
+
+bhkListShape::~bhkListShape() {}
+
+void bhkListShape::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_LIST_SHAPE_READ
+}
+
+void bhkListShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_LIST_SHAPE_WRITE
+}
+
+string bhkListShape::asString( bool verbose ) const {
+	BHK_LIST_SHAPE_STRING
+}
+
+void bhkListShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_LIST_SHAPE_FIXLINKS
+}
+
diff --git a/obj/bhkListShape.h b/obj/bhkListShape.h
new file mode 100644
index 0000000000000000000000000000000000000000..2711eb3eb48ac9f4379c35ded4c74ff8c4900c5d
--- /dev/null
+++ b/obj/bhkListShape.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKLISTSHAPE_H_
+#define _BHKLISTSHAPE_H_
+
+#include "xml_extract.h"
+#include BHK_LIST_SHAPE_INCLUDE
+
+/*
+ * bhkListShape
+ */
+
+class bhkListShape;
+typedef Ref<bhkListShape> bhkListShapeRef;
+
+class bhkListShape : public BHK_LIST_SHAPE_PARENT {
+public:
+	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 );
+private:
+	BHK_LIST_SHAPE_MEMBERS
+};
+#endif
diff --git a/obj/bhkMalleableConstraint.cpp b/obj/bhkMalleableConstraint.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1bd788ed54a3b53690a9f1dcd7b87665a70bc434
--- /dev/null
+++ b/obj/bhkMalleableConstraint.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkMalleableConstraint.h"
+
+//Definition of TYPE constant
+const Type bhkMalleableConstraint::TYPE("bhkMalleableConstraint", &BHK_MALLEABLE_CONSTRAINT_PARENT::TYPE );
+
+bhkMalleableConstraint::bhkMalleableConstraint() BHK_MALLEABLE_CONSTRAINT_CONSTRUCT {}
+
+bhkMalleableConstraint::~bhkMalleableConstraint() {}
+
+void bhkMalleableConstraint::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_MALLEABLE_CONSTRAINT_READ
+}
+
+void bhkMalleableConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_MALLEABLE_CONSTRAINT_WRITE
+}
+
+string bhkMalleableConstraint::asString( bool verbose ) const {
+	BHK_MALLEABLE_CONSTRAINT_STRING
+}
+
+void bhkMalleableConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_MALLEABLE_CONSTRAINT_FIXLINKS
+}
+
diff --git a/obj/bhkMalleableConstraint.h b/obj/bhkMalleableConstraint.h
new file mode 100644
index 0000000000000000000000000000000000000000..26193e5dc9c30279da23b86c4eac4c0f761d5f8a
--- /dev/null
+++ b/obj/bhkMalleableConstraint.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKMALLEABLECONSTRAINT_H_
+#define _BHKMALLEABLECONSTRAINT_H_
+
+#include "xml_extract.h"
+#include BHK_MALLEABLE_CONSTRAINT_INCLUDE
+
+/*
+ * bhkMalleableConstraint
+ */
+
+class bhkMalleableConstraint;
+typedef Ref<bhkMalleableConstraint> bhkMalleableConstraintRef;
+
+class bhkMalleableConstraint : public BHK_MALLEABLE_CONSTRAINT_PARENT {
+public:
+	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 );
+private:
+	BHK_MALLEABLE_CONSTRAINT_MEMBERS
+};
+#endif
diff --git a/obj/bhkMoppBvTreeShape.cpp b/obj/bhkMoppBvTreeShape.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..0cb2129a6185e4e58bae44777c2e07489f23e946
--- /dev/null
+++ b/obj/bhkMoppBvTreeShape.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkMoppBvTreeShape.h"
+
+//Definition of TYPE constant
+const Type bhkMoppBvTreeShape::TYPE("bhkMoppBvTreeShape", &BHK_MOPP_BV_TREE_SHAPE_PARENT::TYPE );
+
+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
+}
+
+void bhkMoppBvTreeShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_MOPP_BV_TREE_SHAPE_WRITE
+}
+
+string bhkMoppBvTreeShape::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/bhkMoppBvTreeShape.h b/obj/bhkMoppBvTreeShape.h
new file mode 100644
index 0000000000000000000000000000000000000000..7da687e9d9e393691f9c3e99339891e7fd10f08d
--- /dev/null
+++ b/obj/bhkMoppBvTreeShape.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKMOPPBVTREESHAPE_H_
+#define _BHKMOPPBVTREESHAPE_H_
+
+#include "xml_extract.h"
+#include BHK_MOPP_BV_TREE_SHAPE_INCLUDE
+
+/*
+ * bhkMoppBvTreeShape
+ */
+
+class bhkMoppBvTreeShape;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/bhkMultiSphereShape.cpp b/obj/bhkMultiSphereShape.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..047f71d146618ab782e4cffdef18c9786cb5fa90
--- /dev/null
+++ b/obj/bhkMultiSphereShape.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkMultiSphereShape.h"
+
+//Definition of TYPE constant
+const Type bhkMultiSphereShape::TYPE("bhkMultiSphereShape", &BHK_MULTI_SPHERE_SHAPE_PARENT::TYPE );
+
+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
+}
+
+void bhkMultiSphereShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_MULTI_SPHERE_SHAPE_WRITE
+}
+
+string bhkMultiSphereShape::asString( bool verbose ) const {
+	BHK_MULTI_SPHERE_SHAPE_STRING
+}
+
+void bhkMultiSphereShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_MULTI_SPHERE_SHAPE_FIXLINKS
+}
+
diff --git a/obj/bhkMultiSphereShape.h b/obj/bhkMultiSphereShape.h
new file mode 100644
index 0000000000000000000000000000000000000000..291e7a7d473ffe445c10f91a953e50a61e5c6874
--- /dev/null
+++ b/obj/bhkMultiSphereShape.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKMULTISPHERESHAPE_H_
+#define _BHKMULTISPHERESHAPE_H_
+
+#include "xml_extract.h"
+#include BHK_MULTI_SPHERE_SHAPE_INCLUDE
+
+/*
+ * bhkMultiSphereShape
+ */
+
+class bhkMultiSphereShape;
+typedef Ref<bhkMultiSphereShape> bhkMultiSphereShapeRef;
+
+class bhkMultiSphereShape : public BHK_MULTI_SPHERE_SHAPE_PARENT {
+public:
+	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 );
+private:
+	BHK_MULTI_SPHERE_SHAPE_MEMBERS
+};
+#endif
diff --git a/obj/bhkNiTriStripsShape.cpp b/obj/bhkNiTriStripsShape.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b1d324a491ae7e0425d89ba4b70c66dcf1202e16
--- /dev/null
+++ b/obj/bhkNiTriStripsShape.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkNiTriStripsShape.h"
+
+//Definition of TYPE constant
+const Type bhkNiTriStripsShape::TYPE("bhkNiTriStripsShape", &BHK_NI_TRI_STRIPS_SHAPE_PARENT::TYPE );
+
+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
+}
+
+void bhkNiTriStripsShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_NI_TRI_STRIPS_SHAPE_WRITE
+}
+
+string bhkNiTriStripsShape::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/bhkNiTriStripsShape.h b/obj/bhkNiTriStripsShape.h
new file mode 100644
index 0000000000000000000000000000000000000000..6b01d2d84c5d798faaa2872bedf878c9eb8ec663
--- /dev/null
+++ b/obj/bhkNiTriStripsShape.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKNITRISTRIPSSHAPE_H_
+#define _BHKNITRISTRIPSSHAPE_H_
+
+#include "xml_extract.h"
+#include BHK_NI_TRI_STRIPS_SHAPE_INCLUDE
+
+/*
+ * bhkNiTriStripsShape
+ */
+
+class bhkNiTriStripsShape;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/bhkPackedNiTriStripsShape.cpp b/obj/bhkPackedNiTriStripsShape.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..551d643ab1f097cae0322a5e32798a9fd1e04800
--- /dev/null
+++ b/obj/bhkPackedNiTriStripsShape.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkPackedNiTriStripsShape.h"
+
+//Definition of TYPE constant
+const Type bhkPackedNiTriStripsShape::TYPE("bhkPackedNiTriStripsShape", &BHK_PACKED_NI_TRI_STRIPS_SHAPE_PARENT::TYPE );
+
+bhkPackedNiTriStripsShape::bhkPackedNiTriStripsShape() BHK_PACKED_NI_TRI_STRIPS_SHAPE_CONSTRUCT {}
+
+bhkPackedNiTriStripsShape::~bhkPackedNiTriStripsShape() {}
+
+void bhkPackedNiTriStripsShape::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string bhkPackedNiTriStripsShape::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/bhkPackedNiTriStripsShape.h b/obj/bhkPackedNiTriStripsShape.h
new file mode 100644
index 0000000000000000000000000000000000000000..ac9e82a802a0ac9bb70a21f62e4191d7a1b25b2b
--- /dev/null
+++ b/obj/bhkPackedNiTriStripsShape.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKPACKEDNITRISTRIPSSHAPE_H_
+#define _BHKPACKEDNITRISTRIPSSHAPE_H_
+
+#include "xml_extract.h"
+#include BHK_PACKED_NI_TRI_STRIPS_SHAPE_INCLUDE
+
+/*
+ * bhkPackedNiTriStripsShape
+ */
+
+class bhkPackedNiTriStripsShape;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/bhkPrismaticConstraint.cpp b/obj/bhkPrismaticConstraint.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fea2c86c680359198b16f495a81efd3752cfd23e
--- /dev/null
+++ b/obj/bhkPrismaticConstraint.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkPrismaticConstraint.h"
+
+//Definition of TYPE constant
+const Type bhkPrismaticConstraint::TYPE("bhkPrismaticConstraint", &BHK_PRISMATIC_CONSTRAINT_PARENT::TYPE );
+
+bhkPrismaticConstraint::bhkPrismaticConstraint() BHK_PRISMATIC_CONSTRAINT_CONSTRUCT {}
+
+bhkPrismaticConstraint::~bhkPrismaticConstraint() {}
+
+void bhkPrismaticConstraint::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_PRISMATIC_CONSTRAINT_READ
+}
+
+void bhkPrismaticConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_PRISMATIC_CONSTRAINT_WRITE
+}
+
+string bhkPrismaticConstraint::asString( bool verbose ) const {
+	BHK_PRISMATIC_CONSTRAINT_STRING
+}
+
+void bhkPrismaticConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_PRISMATIC_CONSTRAINT_FIXLINKS
+}
+
diff --git a/obj/bhkPrismaticConstraint.h b/obj/bhkPrismaticConstraint.h
new file mode 100644
index 0000000000000000000000000000000000000000..dcccd0bd1f24a6ae10764b0156810674a415ee86
--- /dev/null
+++ b/obj/bhkPrismaticConstraint.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKPRISMATICCONSTRAINT_H_
+#define _BHKPRISMATICCONSTRAINT_H_
+
+#include "xml_extract.h"
+#include BHK_PRISMATIC_CONSTRAINT_INCLUDE
+
+/*
+ * bhkPrismaticConstraint
+ */
+
+class bhkPrismaticConstraint;
+typedef Ref<bhkPrismaticConstraint> bhkPrismaticConstraintRef;
+
+class bhkPrismaticConstraint : public BHK_PRISMATIC_CONSTRAINT_PARENT {
+public:
+	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 );
+private:
+	BHK_PRISMATIC_CONSTRAINT_MEMBERS
+};
+#endif
diff --git a/obj/bhkRagdollConstraint.cpp b/obj/bhkRagdollConstraint.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3d889c84891e38ff20345383fe1b4d7d5a533b0d
--- /dev/null
+++ b/obj/bhkRagdollConstraint.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkRagdollConstraint.h"
+
+//Definition of TYPE constant
+const Type bhkRagdollConstraint::TYPE("bhkRagdollConstraint", &BHK_RAGDOLL_CONSTRAINT_PARENT::TYPE );
+
+bhkRagdollConstraint::bhkRagdollConstraint() BHK_RAGDOLL_CONSTRAINT_CONSTRUCT {}
+
+bhkRagdollConstraint::~bhkRagdollConstraint() {}
+
+void bhkRagdollConstraint::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_RAGDOLL_CONSTRAINT_READ
+}
+
+void bhkRagdollConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_RAGDOLL_CONSTRAINT_WRITE
+}
+
+string bhkRagdollConstraint::asString( bool verbose ) const {
+	BHK_RAGDOLL_CONSTRAINT_STRING
+}
+
+void bhkRagdollConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_RAGDOLL_CONSTRAINT_FIXLINKS
+}
+
diff --git a/obj/bhkRagdollConstraint.h b/obj/bhkRagdollConstraint.h
new file mode 100644
index 0000000000000000000000000000000000000000..ae6cccf0798454c3d2fb06457e2810a2fb48625a
--- /dev/null
+++ b/obj/bhkRagdollConstraint.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKRAGDOLLCONSTRAINT_H_
+#define _BHKRAGDOLLCONSTRAINT_H_
+
+#include "xml_extract.h"
+#include BHK_RAGDOLL_CONSTRAINT_INCLUDE
+
+/*
+ * bhkRagdollConstraint
+ */
+
+class bhkRagdollConstraint;
+typedef Ref<bhkRagdollConstraint> bhkRagdollConstraintRef;
+
+class bhkRagdollConstraint : public BHK_RAGDOLL_CONSTRAINT_PARENT {
+public:
+	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 );
+private:
+	BHK_RAGDOLL_CONSTRAINT_MEMBERS
+};
+#endif
diff --git a/obj/bhkRefObject.cpp b/obj/bhkRefObject.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..485db7c6c7634a94618a73614d5773980e272e12
--- /dev/null
+++ b/obj/bhkRefObject.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkRefObject.h"
+
+//Definition of TYPE constant
+const Type bhkRefObject::TYPE("bhkRefObject", &BHK_REF_OBJECT_PARENT::TYPE );
+
+bhkRefObject::bhkRefObject() BHK_REF_OBJECT_CONSTRUCT {}
+
+bhkRefObject::~bhkRefObject() {}
+
+void bhkRefObject::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_REF_OBJECT_READ
+}
+
+void bhkRefObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_REF_OBJECT_WRITE
+}
+
+string bhkRefObject::asString( bool verbose ) const {
+	BHK_REF_OBJECT_STRING
+}
+
+void bhkRefObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_REF_OBJECT_FIXLINKS
+}
+
diff --git a/obj/bhkRefObject.h b/obj/bhkRefObject.h
new file mode 100644
index 0000000000000000000000000000000000000000..dac4d8b1b36ee09058d483ecaa7c3590731f5598
--- /dev/null
+++ b/obj/bhkRefObject.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKREFOBJECT_H_
+#define _BHKREFOBJECT_H_
+
+#include "xml_extract.h"
+#include BHK_REF_OBJECT_INCLUDE
+
+/*
+ * bhkRefObject
+ */
+
+class bhkRefObject;
+typedef Ref<bhkRefObject> bhkRefObjectRef;
+
+class bhkRefObject : public BHK_REF_OBJECT_PARENT {
+public:
+	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 );
+private:
+	BHK_REF_OBJECT_MEMBERS
+};
+#endif
diff --git a/obj/bhkRigidBody.cpp b/obj/bhkRigidBody.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7242817680282bdf94458b704505fba640df372e
--- /dev/null
+++ b/obj/bhkRigidBody.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkRigidBody.h"
+
+//Definition of TYPE constant
+const Type bhkRigidBody::TYPE("bhkRigidBody", &BHK_RIGID_BODY_PARENT::TYPE );
+
+bhkRigidBody::bhkRigidBody() BHK_RIGID_BODY_CONSTRUCT {}
+
+bhkRigidBody::~bhkRigidBody() {}
+
+void bhkRigidBody::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_RIGID_BODY_READ
+}
+
+void bhkRigidBody::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_RIGID_BODY_WRITE
+}
+
+string bhkRigidBody::asString( bool verbose ) const {
+	BHK_RIGID_BODY_STRING
+}
+
+void bhkRigidBody::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_RIGID_BODY_FIXLINKS
+}
+
diff --git a/obj/bhkRigidBody.h b/obj/bhkRigidBody.h
new file mode 100644
index 0000000000000000000000000000000000000000..074e0471d80cf4f69c53eabc64c7db05b5e4b2b2
--- /dev/null
+++ b/obj/bhkRigidBody.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKRIGIDBODY_H_
+#define _BHKRIGIDBODY_H_
+
+#include "xml_extract.h"
+#include BHK_RIGID_BODY_INCLUDE
+
+/*
+ * bhkRigidBody
+ */
+
+class bhkRigidBody;
+typedef Ref<bhkRigidBody> bhkRigidBodyRef;
+
+class bhkRigidBody : public BHK_RIGID_BODY_PARENT {
+public:
+	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 );
+private:
+	BHK_RIGID_BODY_MEMBERS
+};
+#endif
diff --git a/obj/bhkRigidBodyT.cpp b/obj/bhkRigidBodyT.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..59bc18a193e588560b5a4d46ebef9aad96713f0e
--- /dev/null
+++ b/obj/bhkRigidBodyT.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkRigidBodyT.h"
+
+//Definition of TYPE constant
+const Type bhkRigidBodyT::TYPE("bhkRigidBodyT", &BHK_RIGID_BODY_T_PARENT::TYPE );
+
+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
+}
+
+void bhkRigidBodyT::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_RIGID_BODY_T_WRITE
+}
+
+string bhkRigidBodyT::asString( bool verbose ) const {
+	BHK_RIGID_BODY_T_STRING
+}
+
+void bhkRigidBodyT::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_RIGID_BODY_T_FIXLINKS
+}
+
diff --git a/obj/bhkRigidBodyT.h b/obj/bhkRigidBodyT.h
new file mode 100644
index 0000000000000000000000000000000000000000..aabc38aa447206c6bb98f0d2e474aa87e9a43781
--- /dev/null
+++ b/obj/bhkRigidBodyT.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKRIGIDBODYT_H_
+#define _BHKRIGIDBODYT_H_
+
+#include "xml_extract.h"
+#include BHK_RIGID_BODY_T_INCLUDE
+
+/*
+ * bhkRigidBodyT
+ */
+
+class bhkRigidBodyT;
+typedef Ref<bhkRigidBodyT> bhkRigidBodyTRef;
+
+class bhkRigidBodyT : public BHK_RIGID_BODY_T_PARENT {
+public:
+	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 );
+private:
+	BHK_RIGID_BODY_T_MEMBERS
+};
+#endif
diff --git a/obj/bhkSPCollisionObject.cpp b/obj/bhkSPCollisionObject.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d39de7bea45d75e4f9639cd127405de65df37fe1
--- /dev/null
+++ b/obj/bhkSPCollisionObject.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkSPCollisionObject.h"
+
+//Definition of TYPE constant
+const Type bhkSPCollisionObject::TYPE("bhkSPCollisionObject", &BHK_S_P_COLLISION_OBJECT_PARENT::TYPE );
+
+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
+}
+
+void bhkSPCollisionObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_S_P_COLLISION_OBJECT_WRITE
+}
+
+string bhkSPCollisionObject::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/bhkSPCollisionObject.h b/obj/bhkSPCollisionObject.h
new file mode 100644
index 0000000000000000000000000000000000000000..c60fb362388cc0cf839796582f612408ab384807
--- /dev/null
+++ b/obj/bhkSPCollisionObject.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKSPCOLLISIONOBJECT_H_
+#define _BHKSPCOLLISIONOBJECT_H_
+
+#include "xml_extract.h"
+#include BHK_S_P_COLLISION_OBJECT_INCLUDE
+
+/*
+ * bhkSPCollisionObject
+ */
+
+class bhkSPCollisionObject;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/obj/bhkSerializable.cpp b/obj/bhkSerializable.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..200da352e6c13f14681fdda869e27b1417f0f855
--- /dev/null
+++ b/obj/bhkSerializable.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkSerializable.h"
+
+//Definition of TYPE constant
+const Type bhkSerializable::TYPE("bhkSerializable", &BHK_SERIALIZABLE_PARENT::TYPE );
+
+bhkSerializable::bhkSerializable() BHK_SERIALIZABLE_CONSTRUCT {}
+
+bhkSerializable::~bhkSerializable() {}
+
+void bhkSerializable::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_SERIALIZABLE_READ
+}
+
+void bhkSerializable::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_SERIALIZABLE_WRITE
+}
+
+string bhkSerializable::asString( bool verbose ) const {
+	BHK_SERIALIZABLE_STRING
+}
+
+void bhkSerializable::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_SERIALIZABLE_FIXLINKS
+}
+
diff --git a/obj/bhkSerializable.h b/obj/bhkSerializable.h
new file mode 100644
index 0000000000000000000000000000000000000000..c58b1eaf8d654832e6aa7234c6b95f981a95a812
--- /dev/null
+++ b/obj/bhkSerializable.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKSERIALIZABLE_H_
+#define _BHKSERIALIZABLE_H_
+
+#include "xml_extract.h"
+#include BHK_SERIALIZABLE_INCLUDE
+
+/*
+ * bhkSerializable
+ */
+
+class bhkSerializable;
+typedef Ref<bhkSerializable> bhkSerializableRef;
+
+class bhkSerializable : public BHK_SERIALIZABLE_PARENT {
+public:
+	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 );
+private:
+	BHK_SERIALIZABLE_MEMBERS
+};
+#endif
diff --git a/obj/bhkShape.cpp b/obj/bhkShape.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2a1bca1648964dbc2c6ddedbc7ec68f43164b063
--- /dev/null
+++ b/obj/bhkShape.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkShape.h"
+
+//Definition of TYPE constant
+const Type bhkShape::TYPE("bhkShape", &BHK_SHAPE_PARENT::TYPE );
+
+bhkShape::bhkShape() BHK_SHAPE_CONSTRUCT {}
+
+bhkShape::~bhkShape() {}
+
+void bhkShape::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_SHAPE_READ
+}
+
+void bhkShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_SHAPE_WRITE
+}
+
+string bhkShape::asString( bool verbose ) const {
+	BHK_SHAPE_STRING
+}
+
+void bhkShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_SHAPE_FIXLINKS
+}
+
diff --git a/obj/bhkShape.h b/obj/bhkShape.h
new file mode 100644
index 0000000000000000000000000000000000000000..f541c99c25303a6a7dd40ee95e7328a17d891223
--- /dev/null
+++ b/obj/bhkShape.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKSHAPE_H_
+#define _BHKSHAPE_H_
+
+#include "xml_extract.h"
+#include BHK_SHAPE_INCLUDE
+
+/*
+ * bhkShape
+ */
+
+class bhkShape;
+typedef Ref<bhkShape> bhkShapeRef;
+
+class bhkShape : public BHK_SHAPE_PARENT {
+public:
+	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 );
+private:
+	BHK_SHAPE_MEMBERS
+};
+#endif
diff --git a/obj/bhkSimpleShapePhantom.cpp b/obj/bhkSimpleShapePhantom.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3b4fa84fa694512dfa7dbcdc0830e9e7acff0140
--- /dev/null
+++ b/obj/bhkSimpleShapePhantom.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkSimpleShapePhantom.h"
+
+//Definition of TYPE constant
+const Type bhkSimpleShapePhantom::TYPE("bhkSimpleShapePhantom", &BHK_SIMPLE_SHAPE_PHANTOM_PARENT::TYPE );
+
+bhkSimpleShapePhantom::bhkSimpleShapePhantom() BHK_SIMPLE_SHAPE_PHANTOM_CONSTRUCT {}
+
+bhkSimpleShapePhantom::~bhkSimpleShapePhantom() {}
+
+void bhkSimpleShapePhantom::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_SIMPLE_SHAPE_PHANTOM_READ
+}
+
+void bhkSimpleShapePhantom::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_SIMPLE_SHAPE_PHANTOM_WRITE
+}
+
+string bhkSimpleShapePhantom::asString( bool verbose ) const {
+	BHK_SIMPLE_SHAPE_PHANTOM_STRING
+}
+
+void bhkSimpleShapePhantom::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_SIMPLE_SHAPE_PHANTOM_FIXLINKS
+}
+
diff --git a/obj/bhkSimpleShapePhantom.h b/obj/bhkSimpleShapePhantom.h
new file mode 100644
index 0000000000000000000000000000000000000000..f985eb0f991568ad0daf9c3770729f58f01a9dfd
--- /dev/null
+++ b/obj/bhkSimpleShapePhantom.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKSIMPLESHAPEPHANTOM_H_
+#define _BHKSIMPLESHAPEPHANTOM_H_
+
+#include "xml_extract.h"
+#include BHK_SIMPLE_SHAPE_PHANTOM_INCLUDE
+
+/*
+ * bhkSimpleShapePhantom
+ */
+
+class bhkSimpleShapePhantom;
+typedef Ref<bhkSimpleShapePhantom> bhkSimpleShapePhantomRef;
+
+class bhkSimpleShapePhantom : public BHK_SIMPLE_SHAPE_PHANTOM_PARENT {
+public:
+	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 );
+private:
+	BHK_SIMPLE_SHAPE_PHANTOM_MEMBERS
+};
+#endif
diff --git a/obj/bhkSphereRepShape.cpp b/obj/bhkSphereRepShape.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b2d4e231ec37765a72a037132fcf1378e57edd34
--- /dev/null
+++ b/obj/bhkSphereRepShape.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkSphereRepShape.h"
+
+//Definition of TYPE constant
+const Type bhkSphereRepShape::TYPE("bhkSphereRepShape", &BHK_SPHERE_REP_SHAPE_PARENT::TYPE );
+
+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
+}
+
+void bhkSphereRepShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_SPHERE_REP_SHAPE_WRITE
+}
+
+string bhkSphereRepShape::asString( bool verbose ) const {
+	BHK_SPHERE_REP_SHAPE_STRING
+}
+
+void bhkSphereRepShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_SPHERE_REP_SHAPE_FIXLINKS
+}
+
diff --git a/obj/bhkSphereRepShape.h b/obj/bhkSphereRepShape.h
new file mode 100644
index 0000000000000000000000000000000000000000..f48935a4172ddede81462f82ac6ac6729d148511
--- /dev/null
+++ b/obj/bhkSphereRepShape.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKSPHEREREPSHAPE_H_
+#define _BHKSPHEREREPSHAPE_H_
+
+#include "xml_extract.h"
+#include BHK_SPHERE_REP_SHAPE_INCLUDE
+
+/*
+ * bhkSphereRepShape
+ */
+
+class bhkSphereRepShape;
+typedef Ref<bhkSphereRepShape> bhkSphereRepShapeRef;
+
+class bhkSphereRepShape : public BHK_SPHERE_REP_SHAPE_PARENT {
+public:
+	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 );
+private:
+	BHK_SPHERE_REP_SHAPE_MEMBERS
+};
+#endif
diff --git a/obj/bhkSphereShape.cpp b/obj/bhkSphereShape.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d110f9cbe43edff2f04dffa148e1591843d79761
--- /dev/null
+++ b/obj/bhkSphereShape.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkSphereShape.h"
+
+//Definition of TYPE constant
+const Type bhkSphereShape::TYPE("bhkSphereShape", &BHK_SPHERE_SHAPE_PARENT::TYPE );
+
+bhkSphereShape::bhkSphereShape() BHK_SPHERE_SHAPE_CONSTRUCT {}
+
+bhkSphereShape::~bhkSphereShape() {}
+
+void bhkSphereShape::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_SPHERE_SHAPE_READ
+}
+
+void bhkSphereShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_SPHERE_SHAPE_WRITE
+}
+
+string bhkSphereShape::asString( bool verbose ) const {
+	BHK_SPHERE_SHAPE_STRING
+}
+
+void bhkSphereShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_SPHERE_SHAPE_FIXLINKS
+}
+
diff --git a/obj/bhkSphereShape.h b/obj/bhkSphereShape.h
new file mode 100644
index 0000000000000000000000000000000000000000..51a6bca381330d11e0accc8335f3293c3cd83d9c
--- /dev/null
+++ b/obj/bhkSphereShape.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKSPHERESHAPE_H_
+#define _BHKSPHERESHAPE_H_
+
+#include "xml_extract.h"
+#include BHK_SPHERE_SHAPE_INCLUDE
+
+/*
+ * bhkSphereShape
+ */
+
+class bhkSphereShape;
+typedef Ref<bhkSphereShape> bhkSphereShapeRef;
+
+class bhkSphereShape : public BHK_SPHERE_SHAPE_PARENT {
+public:
+	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 );
+private:
+	BHK_SPHERE_SHAPE_MEMBERS
+};
+#endif
diff --git a/obj/bhkStiffSpringConstraint.cpp b/obj/bhkStiffSpringConstraint.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fc2366b39ef07d57520325aae5fdcbddce97e5a0
--- /dev/null
+++ b/obj/bhkStiffSpringConstraint.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkStiffSpringConstraint.h"
+
+//Definition of TYPE constant
+const Type bhkStiffSpringConstraint::TYPE("bhkStiffSpringConstraint", &BHK_STIFF_SPRING_CONSTRAINT_PARENT::TYPE );
+
+bhkStiffSpringConstraint::bhkStiffSpringConstraint() BHK_STIFF_SPRING_CONSTRAINT_CONSTRUCT {}
+
+bhkStiffSpringConstraint::~bhkStiffSpringConstraint() {}
+
+void bhkStiffSpringConstraint::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_STIFF_SPRING_CONSTRAINT_READ
+}
+
+void bhkStiffSpringConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_STIFF_SPRING_CONSTRAINT_WRITE
+}
+
+string bhkStiffSpringConstraint::asString( bool verbose ) const {
+	BHK_STIFF_SPRING_CONSTRAINT_STRING
+}
+
+void bhkStiffSpringConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_STIFF_SPRING_CONSTRAINT_FIXLINKS
+}
+
diff --git a/obj/bhkStiffSpringConstraint.h b/obj/bhkStiffSpringConstraint.h
new file mode 100644
index 0000000000000000000000000000000000000000..62db183f7eadf405b730a2f0b7258febffd149aa
--- /dev/null
+++ b/obj/bhkStiffSpringConstraint.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKSTIFFSPRINGCONSTRAINT_H_
+#define _BHKSTIFFSPRINGCONSTRAINT_H_
+
+#include "xml_extract.h"
+#include BHK_STIFF_SPRING_CONSTRAINT_INCLUDE
+
+/*
+ * bhkStiffSpringConstraint
+ */
+
+class bhkStiffSpringConstraint;
+typedef Ref<bhkStiffSpringConstraint> bhkStiffSpringConstraintRef;
+
+class bhkStiffSpringConstraint : public BHK_STIFF_SPRING_CONSTRAINT_PARENT {
+public:
+	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 );
+private:
+	BHK_STIFF_SPRING_CONSTRAINT_MEMBERS
+};
+#endif
diff --git a/obj/bhkTransformShape.cpp b/obj/bhkTransformShape.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f323cb78008bafa591f81ea07d9c049139ba5344
--- /dev/null
+++ b/obj/bhkTransformShape.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkTransformShape.h"
+
+//Definition of TYPE constant
+const Type bhkTransformShape::TYPE("bhkTransformShape", &BHK_TRANSFORM_SHAPE_PARENT::TYPE );
+
+bhkTransformShape::bhkTransformShape() BHK_TRANSFORM_SHAPE_CONSTRUCT {}
+
+bhkTransformShape::~bhkTransformShape() {}
+
+void bhkTransformShape::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_TRANSFORM_SHAPE_READ
+}
+
+void bhkTransformShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_TRANSFORM_SHAPE_WRITE
+}
+
+string bhkTransformShape::asString( bool verbose ) const {
+	BHK_TRANSFORM_SHAPE_STRING
+}
+
+void bhkTransformShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_TRANSFORM_SHAPE_FIXLINKS
+}
+
diff --git a/obj/bhkTransformShape.h b/obj/bhkTransformShape.h
new file mode 100644
index 0000000000000000000000000000000000000000..bb6739fb4ced903fec3aed58bec4a5af10c092f7
--- /dev/null
+++ b/obj/bhkTransformShape.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKTRANSFORMSHAPE_H_
+#define _BHKTRANSFORMSHAPE_H_
+
+#include "xml_extract.h"
+#include BHK_TRANSFORM_SHAPE_INCLUDE
+
+/*
+ * bhkTransformShape
+ */
+
+class bhkTransformShape;
+typedef Ref<bhkTransformShape> bhkTransformShapeRef;
+
+class bhkTransformShape : public BHK_TRANSFORM_SHAPE_PARENT {
+public:
+	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 );
+private:
+	BHK_TRANSFORM_SHAPE_MEMBERS
+};
+#endif
diff --git a/obj/bhkWorldObject.cpp b/obj/bhkWorldObject.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..304b51a4d2a1f8a50166af81b3ce393fc5274cc6
--- /dev/null
+++ b/obj/bhkWorldObject.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "bhkWorldObject.h"
+
+//Definition of TYPE constant
+const Type bhkWorldObject::TYPE("bhkWorldObject", &BHK_WORLD_OBJECT_PARENT::TYPE );
+
+bhkWorldObject::bhkWorldObject() BHK_WORLD_OBJECT_CONSTRUCT {}
+
+bhkWorldObject::~bhkWorldObject() {}
+
+void bhkWorldObject::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	BHK_WORLD_OBJECT_READ
+}
+
+void bhkWorldObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+	BHK_WORLD_OBJECT_WRITE
+}
+
+string bhkWorldObject::asString( bool verbose ) const {
+	BHK_WORLD_OBJECT_STRING
+}
+
+void bhkWorldObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
+	BHK_WORLD_OBJECT_FIXLINKS
+}
+
diff --git a/obj/bhkWorldObject.h b/obj/bhkWorldObject.h
new file mode 100644
index 0000000000000000000000000000000000000000..d4250ef7a72ed11bc200db1ca222ed8ede20db7f
--- /dev/null
+++ b/obj/bhkWorldObject.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _BHKWORLDOBJECT_H_
+#define _BHKWORLDOBJECT_H_
+
+#include "xml_extract.h"
+#include BHK_WORLD_OBJECT_INCLUDE
+
+/*
+ * bhkWorldObject
+ */
+
+class bhkWorldObject;
+typedef Ref<bhkWorldObject> bhkWorldObjectRef;
+
+class bhkWorldObject : public BHK_WORLD_OBJECT_PARENT {
+public:
+	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 );
+private:
+	BHK_WORLD_OBJECT_MEMBERS
+};
+#endif
diff --git a/obj/hkPackedNiTriStripsData.cpp b/obj/hkPackedNiTriStripsData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2c04f1ee405b44763b2b345883181b8a6a249f85
--- /dev/null
+++ b/obj/hkPackedNiTriStripsData.cpp
@@ -0,0 +1,28 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "hkPackedNiTriStripsData.h"
+
+//Definition of TYPE constant
+const Type hkPackedNiTriStripsData::TYPE("hkPackedNiTriStripsData", &HK_PACKED_NI_TRI_STRIPS_DATA_PARENT::TYPE );
+
+hkPackedNiTriStripsData::hkPackedNiTriStripsData() HK_PACKED_NI_TRI_STRIPS_DATA_CONSTRUCT {}
+
+hkPackedNiTriStripsData::~hkPackedNiTriStripsData() {}
+
+void hkPackedNiTriStripsData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
+	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
+}
+
+string hkPackedNiTriStripsData::asString( bool verbose ) const {
+	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
+}
+
diff --git a/obj/hkPackedNiTriStripsData.h b/obj/hkPackedNiTriStripsData.h
new file mode 100644
index 0000000000000000000000000000000000000000..f148dc32a86bb3029225d69bb659cf3aea1b194b
--- /dev/null
+++ b/obj/hkPackedNiTriStripsData.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _HKPACKEDNITRISTRIPSDATA_H_
+#define _HKPACKEDNITRISTRIPSDATA_H_
+
+#include "xml_extract.h"
+#include HK_PACKED_NI_TRI_STRIPS_DATA_INCLUDE
+
+/*
+ * hkPackedNiTriStripsData
+ */
+
+class hkPackedNiTriStripsData;
+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 void Read( istream& in, list<uint> link_stack, unsigned int version );
+	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned 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
+};
+#endif
diff --git a/xml_extract.h b/xml_extract.h
index 8f73b46d24194b8b5f553726fb60e33eb1b7b4c5..a1b4e88b41d8504479e91dd0ccea1de3467c844f 100644
--- a/xml_extract.h
+++ b/xml_extract.h
@@ -1161,7 +1161,9 @@ struct SkinData {
 
 #define NI_OBJECT_MEMBERS \
 
-#define NI_OBJECT_PARENTS ABlock \
+#define NI_OBJECT_INCLUDE ".h" \
+
+#define NI_OBJECT_PARENT \
 
 #define NI_OBJECT_CONSTRUCT \
 
@@ -1177,7 +1179,9 @@ return out.str(); \
 
 #define A_INTERPOLATOR_MEMBERS \
 
-#define A_INTERPOLATOR_PARENTS NiObject \
+#define A_INTERPOLATOR_INCLUDE "NiObject.h" \
+
+#define A_INTERPOLATOR_PARENT NiObject \
 
 #define A_INTERPOLATOR_CONSTRUCT \
 
@@ -1199,7 +1203,9 @@ NiObject::FixLinks( objects, link_stack, version ); \
 ushort unknownShort; \
 uint unknownInt; \
 
-#define A_BLEND_INTERPOLATOR_PARENTS AInterpolator \
+#define A_BLEND_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+
+#define A_BLEND_INTERPOLATOR_PARENT AInterpolator \
 
 #define A_BLEND_INTERPOLATOR_CONSTRUCT \
 
@@ -1227,7 +1233,9 @@ AInterpolator::FixLinks( objects, link_stack, version ); \
 float startTime; \
 float stopTime; \
 
-#define A_B_SPLINE_COMP_INTERPOLATOR_PARENTS AInterpolator \
+#define A_B_SPLINE_COMP_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+
+#define A_B_SPLINE_COMP_INTERPOLATOR_PARENT AInterpolator \
 
 #define A_B_SPLINE_COMP_INTERPOLATOR_CONSTRUCT \
 
@@ -1253,7 +1261,9 @@ AInterpolator::FixLinks( objects, link_stack, version ); \
 
 #define A_KEYED_DATA_MEMBERS \
 
-#define A_KEYED_DATA_PARENTS NiObject \
+#define A_KEYED_DATA_INCLUDE "NiObject.h" \
+
+#define A_KEYED_DATA_PARENT NiObject \
 
 #define A_KEYED_DATA_CONSTRUCT \
 
@@ -1275,7 +1285,9 @@ NiObject::FixLinks( objects, link_stack, version ); \
 Ref<AParticleModifier > nextModifier; \
 AParticleModifier * previousModifier; \
 
-#define A_PARTICLE_MODIFIER_PARENTS NiObject
+#define A_PARTICLE_MODIFIER_INCLUDE "NiObject.h" \
+
+#define A_PARTICLE_MODIFIER_PARENT NiObject \
 
 #define A_PARTICLE_MODIFIER_CONSTRUCT \
 
@@ -1312,7 +1324,9 @@ uint order; \
 NiParticleSystem * target; \
 bool active; \
 
-#define A_P_SYS_MODIFIER_PARENTS NiObject \
+#define A_P_SYS_MODIFIER_INCLUDE "NiObject.h" \
+
+#define A_P_SYS_MODIFIER_PARENT NiObject \
 
 #define A_P_SYS_MODIFIER_CONSTRUCT \
 
@@ -1328,7 +1342,7 @@ NifStream( active, in, version ); \
 NiObject::Write( out, link_map, version ); \
 NifStream( name, out, version ); \
 NifStream( order, out, version ); \
-NifStream( link_map[target], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(target)], out, version ); \
 NifStream( active, out, version ); \
 
 #define A_P_SYS_MODIFIER_STRING \
@@ -1342,7 +1356,7 @@ return out.str(); \
 
 #define A_P_SYS_MODIFIER_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-target = blocks[link_stack.front()]; \
+target = DynamicCast<NiParticleSystem>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define A_P_SYS_EMITTER_MEMBERS \
@@ -1358,7 +1372,9 @@ float radiusVariation; \
 float lifeSpan; \
 float lifeSpanVariation; \
 
-#define A_P_SYS_EMITTER_PARENTS APSysModifier \
+#define A_P_SYS_EMITTER_INCLUDE "APSysModifier.h" \
+
+#define A_P_SYS_EMITTER_PARENT APSysModifier \
 
 #define A_P_SYS_EMITTER_CONSTRUCT \
 
@@ -1412,7 +1428,9 @@ APSysModifier::FixLinks( objects, link_stack, version ); \
 #define A_P_SYS_VOLUME_EMITTER_MEMBERS \
 NiNode * emitterObject; \
 
-#define A_P_SYS_VOLUME_EMITTER_PARENTS APSysEmitter \
+#define A_P_SYS_VOLUME_EMITTER_INCLUDE "APSysEmitter.h" \
+
+#define A_P_SYS_VOLUME_EMITTER_PARENT APSysEmitter \
 
 #define A_P_SYS_VOLUME_EMITTER_CONSTRUCT \
 
@@ -1426,7 +1444,7 @@ if ( version >= 0x14000004 ) { \
 #define A_P_SYS_VOLUME_EMITTER_WRITE \
 APSysEmitter::Write( out, link_map, version ); \
 if ( version >= 0x14000004 ) { \
-  NifStream( link_map[emitterObject], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(emitterObject)], out, version ); \
 }; \
 
 #define A_P_SYS_VOLUME_EMITTER_STRING \
@@ -1438,13 +1456,15 @@ return out.str(); \
 #define A_P_SYS_VOLUME_EMITTER_FIXLINKS \
 APSysEmitter::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x14000004 ) { \
-  emitterObject = blocks[link_stack.front()]; \
+  emitterObject = DynamicCast<NiNode>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
 #define BHK_REF_OBJECT_MEMBERS \
 
-#define BHK_REF_OBJECT_PARENTS NiObject \
+#define BHK_REF_OBJECT_INCLUDE "NiObject.h" \
+
+#define BHK_REF_OBJECT_PARENT NiObject \
 
 #define BHK_REF_OBJECT_CONSTRUCT \
 
@@ -1464,7 +1484,9 @@ NiObject::FixLinks( objects, link_stack, version ); \
 
 #define BHK_SERIALIZABLE_MEMBERS \
 
-#define BHK_SERIALIZABLE_PARENTS bhkRefObject \
+#define BHK_SERIALIZABLE_INCLUDE "bhkRefObject.h" \
+
+#define BHK_SERIALIZABLE_PARENT bhkRefObject \
 
 #define BHK_SERIALIZABLE_CONSTRUCT \
 
@@ -1486,7 +1508,9 @@ bhkRefObject::FixLinks( objects, link_stack, version ); \
 vector<* > bodies; \
 uint priority; \
 
-#define ABHK_CONSTRAINT_PARENTS bhkSerializable \
+#define ABHK_CONSTRAINT_INCLUDE "bhkSerializable.h" \
+
+#define ABHK_CONSTRAINT_PARENT bhkSerializable \
 
 #define ABHK_CONSTRAINT_CONSTRUCT \
  : priority(1) \
@@ -1505,10 +1529,10 @@ NifStream( priority, in, version ); \
 #define ABHK_CONSTRAINT_WRITE \
 bhkSerializable::Write( out, link_map, version ); \
 uint numBodies; \
-numBodies = uint(numBodies.size()); \
+numBodies = uint(bodies.size()); \
 NifStream( numBodies, out, version ); \
 for (uint i0 = 0; i0 < numBodies; i0++) { \
-  NifStream( link_map[bodies[i0]], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(bodies[i0])], out, version ); \
 }; \
 NifStream( priority, out, version ); \
 
@@ -1525,7 +1549,7 @@ return out.str(); \
 #define ABHK_CONSTRAINT_FIXLINKS \
 bhkSerializable::FixLinks( objects, link_stack, version ); \
 for (uint i0 = 0; i0 < numBodies; i0++) { \
-  bodies[i0] = blocks[link_stack.front()]; \
+  bodies[i0] = DynamicCast<>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
@@ -1543,7 +1567,9 @@ float twistMinAngle; \
 float twistMaxAngle; \
 float maxFriction; \
 
-#define ABHK_RAGDOLL_CONSTRAINT_PARENTS AbhkConstraint \
+#define ABHK_RAGDOLL_CONSTRAINT_INCLUDE "AbhkConstraint.h" \
+
+#define ABHK_RAGDOLL_CONSTRAINT_PARENT AbhkConstraint \
 
 #define ABHK_RAGDOLL_CONSTRAINT_CONSTRUCT \
 
@@ -1599,7 +1625,9 @@ AbhkConstraint::FixLinks( objects, link_stack, version ); \
 
 #define BHK_SHAPE_MEMBERS \
 
-#define BHK_SHAPE_PARENTS bhkSerializable \
+#define BHK_SHAPE_INCLUDE "bhkSerializable.h" \
+
+#define BHK_SHAPE_PARENT bhkSerializable \
 
 #define BHK_SHAPE_CONSTRUCT \
 
@@ -1619,7 +1647,9 @@ bhkSerializable::FixLinks( objects, link_stack, version ); \
 
 #define ABHK_SHAPE_COLLECTION_MEMBERS \
 
-#define ABHK_SHAPE_COLLECTION_PARENTS bhkShape \
+#define ABHK_SHAPE_COLLECTION_INCLUDE "bhkShape.h" \
+
+#define ABHK_SHAPE_COLLECTION_PARENT bhkShape \
 
 #define ABHK_SHAPE_COLLECTION_CONSTRUCT \
 
@@ -1640,7 +1670,9 @@ bhkShape::FixLinks( objects, link_stack, version ); \
 #define BHK_SPHERE_REP_SHAPE_MEMBERS \
 uint material; \
 
-#define BHK_SPHERE_REP_SHAPE_PARENTS bhkShape \
+#define BHK_SPHERE_REP_SHAPE_INCLUDE "bhkShape.h" \
+
+#define BHK_SPHERE_REP_SHAPE_PARENT bhkShape \
 
 #define BHK_SPHERE_REP_SHAPE_CONSTRUCT \
 
@@ -1663,7 +1695,9 @@ bhkShape::FixLinks( objects, link_stack, version ); \
 
 #define BHK_CONVEX_SHAPE_MEMBERS \
 
-#define BHK_CONVEX_SHAPE_PARENTS bhkSphereRepShape \
+#define BHK_CONVEX_SHAPE_INCLUDE "bhkSphereRepShape.h" \
+
+#define BHK_CONVEX_SHAPE_PARENT bhkSphereRepShape \
 
 #define BHK_CONVEX_SHAPE_CONSTRUCT \
 
@@ -1683,7 +1717,9 @@ bhkSphereRepShape::FixLinks( objects, link_stack, version ); \
 
 #define BHK_WORLD_OBJECT_MEMBERS \
 
-#define BHK_WORLD_OBJECT_PARENTS bhkSerializable \
+#define BHK_WORLD_OBJECT_INCLUDE "bhkSerializable.h" \
+
+#define BHK_WORLD_OBJECT_PARENT bhkSerializable \
 
 #define BHK_WORLD_OBJECT_CONSTRUCT \
 
@@ -1705,7 +1741,9 @@ bhkSerializable::FixLinks( objects, link_stack, version ); \
 Ref<bhkSphereRepShape > shape; \
 uint layer; \
 
-#define BHK_ENTITY_PARENTS bhkWorldObject \
+#define BHK_ENTITY_INCLUDE "bhkWorldObject.h" \
+
+#define BHK_ENTITY_PARENT bhkWorldObject \
 
 #define BHK_ENTITY_CONSTRUCT \
 
@@ -1718,7 +1756,7 @@ NifStream( layer, in, version ); \
 
 #define BHK_ENTITY_WRITE \
 bhkWorldObject::Write( out, link_map, version ); \
-NifStream( link_map[shape], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(shape)], out, version ); \
 NifStream( layer, out, version ); \
 
 #define BHK_ENTITY_STRING \
@@ -1730,14 +1768,16 @@ return out.str(); \
 
 #define BHK_ENTITY_FIXLINKS \
 bhkWorldObject::FixLinks( objects, link_stack, version ); \
-shape = blocks[link_stack.front()]; \
+shape = DynamicCast<bhkSphereRepShape>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_COLLISION_OBJECT_MEMBERS \
 ushort unknownShort; \
 Ref<NiObject > body; \
 
-#define NI_COLLISION_OBJECT_PARENTS NiObject \
+#define NI_COLLISION_OBJECT_INCLUDE "NiObject.h" \
+
+#define NI_COLLISION_OBJECT_PARENT NiObject \
 
 #define NI_COLLISION_OBJECT_CONSTRUCT \
 
@@ -1765,16 +1805,18 @@ return out.str(); \
 
 #define NI_COLLISION_OBJECT_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-parent = blocks[link_stack.front()]; \
+parent = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
-body = blocks[link_stack.front()]; \
+body = DynamicCast<NiObject>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_EXTRA_DATA_MEMBERS \
 string name; \
 Ref<NiExtraData > nextExtraData; \
 
-#define NI_EXTRA_DATA_PARENTS NiObject \
+#define NI_EXTRA_DATA_INCLUDE "NiObject.h" \
+
+#define NI_EXTRA_DATA_PARENT NiObject \
 
 #define NI_EXTRA_DATA_CONSTRUCT \
 
@@ -1795,7 +1837,7 @@ if ( version >= 0x0A000100 ) { \
   NifStream( name, out, version ); \
 }; \
 if ( version <= 0x04020200 ) { \
-  NifStream( link_map[nextExtraData], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(nextExtraData)], out, version ); \
 }; \
 
 #define NI_EXTRA_DATA_STRING \
@@ -1810,7 +1852,7 @@ NiObject::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x0A000100 ) { \
 }; \
 if ( version <= 0x04020200 ) { \
-  nextExtraData = blocks[link_stack.front()]; \
+  nextExtraData = DynamicCast<NiExtraData>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
@@ -1820,7 +1862,9 @@ Ref<NiExtraData > extraData; \
 vector<Ref<NiExtraData > > extraDataList; \
 Ref<NiTimeController > controller; \
 
-#define NI_OBJECT_N_E_T_PARENTS NiObject \
+#define NI_OBJECT_N_E_T_INCLUDE "NiObject.h" \
+
+#define NI_OBJECT_N_E_T_PARENT NiObject \
 
 #define NI_OBJECT_N_E_T_CONSTRUCT \
 
@@ -1847,18 +1891,18 @@ link_stack.push_back( block_num ); \
 #define NI_OBJECT_N_E_T_WRITE \
 NiObject::Write( out, link_map, version ); \
 uint numExtraDataList; \
-numExtraDataList = uint(numExtraDataList.size()); \
+numExtraDataList = uint(extraDataList.size()); \
 NifStream( name, out, version ); \
 if ( version <= 0x04020200 ) { \
-  NifStream( link_map[extraData], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(extraData)], out, version ); \
 }; \
 if ( version >= 0x0A000100 ) { \
   NifStream( numExtraDataList, out, version ); \
   for (uint i1 = 0; i1 < numExtraDataList; i1++) { \
-    NifStream( link_map[extraDataList[i1]], out, version ); \
+    NifStream( link_map[StaticCast<NiObject>(extraDataList[i1])], out, version ); \
   }; \
 }; \
-NifStream( link_map[controller], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(controller)], out, version ); \
 
 #define NI_OBJECT_N_E_T_STRING \
 stringstream out; \
@@ -1875,16 +1919,16 @@ return out.str(); \
 #define NI_OBJECT_N_E_T_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
 if ( version <= 0x04020200 ) { \
-  extraData = blocks[link_stack.front()]; \
+  extraData = DynamicCast<NiExtraData>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x0A000100 ) { \
   for (uint i1 = 0; i1 < numExtraDataList; i1++) { \
-    extraDataList[i1] = blocks[link_stack.front()]; \
+    extraDataList[i1] = DynamicCast<NiExtraData>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
   }; \
 }; \
-controller = blocks[link_stack.front()]; \
+controller = DynamicCast<NiTimeController>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_A_V_OBJECT_MEMBERS \
@@ -1898,7 +1942,9 @@ bool hasBoundingBox; \
 BoundingBox boundingBox; \
 Ref<NiCollisionData > collisionData; \
 
-#define NI_A_V_OBJECT_PARENTS NiObjectNET \
+#define NI_A_V_OBJECT_INCLUDE "NiObjectNET.h" \
+
+#define NI_A_V_OBJECT_PARENT NiObjectNET \
 
 #define NI_A_V_OBJECT_CONSTRUCT \
  : scale(1.0f) \
@@ -1937,7 +1983,7 @@ if ( version >= 0x0A000100 ) { \
 #define NI_A_V_OBJECT_WRITE \
 NiObjectNET::Write( out, link_map, version ); \
 uint numProperties; \
-numProperties = uint(numProperties.size()); \
+numProperties = uint(properties.size()); \
 NifStream( flags, out, version ); \
 NifStream( translation, out, version ); \
 NifStream( rotation, out, version ); \
@@ -1947,7 +1993,7 @@ if ( version <= 0x04020200 ) { \
 }; \
 NifStream( numProperties, out, version ); \
 for (uint i0 = 0; i0 < numProperties; i0++) { \
-  NifStream( link_map[properties[i0]], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(properties[i0])], out, version ); \
 }; \
 if ( version <= 0x04020200 ) { \
   NifStream( hasBoundingBox, out, version ); \
@@ -1959,7 +2005,7 @@ if ( version <= 0x04020200 ) { \
   }; \
 }; \
 if ( version >= 0x0A000100 ) { \
-  NifStream( link_map[collisionData], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(collisionData)], out, version ); \
 }; \
 
 #define NI_A_V_OBJECT_STRING \
@@ -1989,7 +2035,7 @@ NiObjectNET::FixLinks( objects, link_stack, version ); \
 if ( version <= 0x04020200 ) { \
 }; \
 for (uint i0 = 0; i0 < numProperties; i0++) { \
-  properties[i0] = blocks[link_stack.front()]; \
+  properties[i0] = DynamicCast<NiProperty>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 if ( version <= 0x04020200 ) { \
@@ -1997,7 +2043,7 @@ if ( version <= 0x04020200 ) { \
   }; \
 }; \
 if ( version >= 0x0A000100 ) { \
-  collisionData = blocks[link_stack.front()]; \
+  collisionData = DynamicCast<NiCollisionData>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
@@ -2007,7 +2053,9 @@ uint affectedNodeList_; \
 bool switchState; \
 vector<Ref<NiAVObject > > affectedNodes; \
 
-#define NI_DYNAMIC_EFFECT_PARENTS NiAVObject \
+#define NI_DYNAMIC_EFFECT_INCLUDE "NiAVObject.h" \
+
+#define NI_DYNAMIC_EFFECT_PARENT NiAVObject \
 
 #define NI_DYNAMIC_EFFECT_CONSTRUCT \
 
@@ -2036,7 +2084,7 @@ if ( version >= 0x0A010000 ) { \
 #define NI_DYNAMIC_EFFECT_WRITE \
 NiAVObject::Write( out, link_map, version ); \
 uint numAffectedNodes; \
-numAffectedNodes = uint(numAffectedNodes.size()); \
+numAffectedNodes = uint(affectedNodes.size()); \
 if ( version <= 0x04000002 ) { \
   NifStream( hasAffectedNodeList_, out, version ); \
   if ( hasAffectedNodeList_ != 0 ) { \
@@ -2049,7 +2097,7 @@ if ( version >= 0x0A020000 ) { \
 if ( version >= 0x0A010000 ) { \
   NifStream( numAffectedNodes, out, version ); \
   for (uint i1 = 0; i1 < numAffectedNodes; i1++) { \
-    NifStream( link_map[affectedNodes[i1]], out, version ); \
+    NifStream( link_map[StaticCast<NiObject>(affectedNodes[i1])], out, version ); \
   }; \
 }; \
 
@@ -2077,7 +2125,7 @@ if ( version >= 0x0A020000 ) { \
 }; \
 if ( version >= 0x0A010000 ) { \
   for (uint i1 = 0; i1 < numAffectedNodes; i1++) { \
-    affectedNodes[i1] = blocks[link_stack.front()]; \
+    affectedNodes[i1] = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
   }; \
 }; \
@@ -2088,7 +2136,9 @@ Color3 ambientColor; \
 Color3 diffuseColor; \
 Color3 specularColor; \
 
-#define NI_LIGHT_PARENTS NiDynamicEffect \
+#define NI_LIGHT_INCLUDE "NiDynamicEffect.h" \
+
+#define NI_LIGHT_PARENT NiDynamicEffect \
 
 #define NI_LIGHT_CONSTRUCT \
 
@@ -2120,7 +2170,9 @@ NiDynamicEffect::FixLinks( objects, link_stack, version ); \
 
 #define NI_PROPERTY_MEMBERS \
 
-#define NI_PROPERTY_PARENTS NiObjectNET \
+#define NI_PROPERTY_INCLUDE "NiObjectNET.h" \
+
+#define NI_PROPERTY_PARENT NiObjectNET \
 
 #define NI_PROPERTY_CONSTRUCT \
 
@@ -2147,7 +2199,9 @@ float startTime; \
 float stopTime; \
 NiAVObject * target; \
 
-#define NI_TIME_CONTROLLER_PARENTS NiObject \
+#define NI_TIME_CONTROLLER_INCLUDE "NiObject.h" \
+
+#define NI_TIME_CONTROLLER_PARENT NiObject \
 
 #define NI_TIME_CONTROLLER_CONSTRUCT \
 
@@ -2166,13 +2220,13 @@ link_stack.push_back( block_num ); \
 
 #define NI_TIME_CONTROLLER_WRITE \
 NiObject::Write( out, link_map, version ); \
-NifStream( link_map[nextController], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(nextController)], out, version ); \
 NifStream( flags, out, version ); \
 NifStream( frequency, out, version ); \
 NifStream( phase, out, version ); \
 NifStream( startTime, out, version ); \
 NifStream( stopTime, out, version ); \
-NifStream( link_map[target], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(target)], out, version ); \
 
 #define NI_TIME_CONTROLLER_STRING \
 stringstream out; \
@@ -2188,9 +2242,9 @@ return out.str(); \
 
 #define NI_TIME_CONTROLLER_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-nextController = blocks[link_stack.front()]; \
+nextController = DynamicCast<NiTimeController>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
-target = blocks[link_stack.front()]; \
+target = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define A_BONE_L_O_D_CONTROLLER_MEMBERS \
@@ -2198,7 +2252,9 @@ uint unknownInt1; \
 uint unknownInt2; \
 vector<NodeGroup > nodeGroups; \
 
-#define A_BONE_L_O_D_CONTROLLER_PARENTS NiTimeController \
+#define A_BONE_L_O_D_CONTROLLER_INCLUDE "NiTimeController.h" \
+
+#define A_BONE_L_O_D_CONTROLLER_PARENT NiTimeController \
 
 #define A_BONE_L_O_D_CONTROLLER_CONSTRUCT \
 
@@ -2223,16 +2279,16 @@ for (uint i0 = 0; i0 < numNodeGroups; i0++) { \
 #define A_BONE_L_O_D_CONTROLLER_WRITE \
 NiTimeController::Write( out, link_map, version ); \
 uint numNodeGroups; \
-numNodeGroups = uint(numNodeGroups.size()); \
+numNodeGroups = uint(nodeGroups.size()); \
 NifStream( unknownInt1, out, version ); \
 NifStream( numNodeGroups, out, version ); \
 NifStream( unknownInt2, out, version ); \
 for (uint i0 = 0; i0 < numNodeGroups; i0++) { \
   uint nodeGroups_numNodes; \
-  nodeGroups_numNodes = uint(nodeGroups[i0].numNodes.size()); \
+  nodeGroups_numNodes = uint(nodeGroups[i0].nodes.size()); \
   NifStream( nodeGroups_numNodes, out, version ); \
   for (uint i1 = 0; i1 < nodeGroups_numNodes; i1++) { \
-    NifStream( link_map[nodeGroups[i0].nodes[i1]], out, version ); \
+    NifStream( link_map[StaticCast<NiObject>(nodeGroups[i0].nodes[i1])], out, version ); \
   }; \
 }; \
 
@@ -2254,7 +2310,7 @@ return out.str(); \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 for (uint i0 = 0; i0 < numNodeGroups; i0++) { \
   for (uint i1 = 0; i1 < nodeGroups_numNodes; i1++) { \
-    nodeGroups[i0].nodes[i1] = blocks[link_stack.front()]; \
+    nodeGroups[i0].nodes[i1] = DynamicCast<NiNode>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
   }; \
 }; \
@@ -2262,7 +2318,9 @@ for (uint i0 = 0; i0 < numNodeGroups; i0++) { \
 #define A_SINGLE_INTERPOLATOR_CONTROLLER_MEMBERS \
 Ref<AInterpolator > interpolator; \
 
-#define A_SINGLE_INTERPOLATOR_CONTROLLER_PARENTS NiTimeController \
+#define A_SINGLE_INTERPOLATOR_CONTROLLER_INCLUDE "NiTimeController.h" \
+
+#define A_SINGLE_INTERPOLATOR_CONTROLLER_PARENT NiTimeController \
 
 #define A_SINGLE_INTERPOLATOR_CONTROLLER_CONSTRUCT \
 
@@ -2277,7 +2335,7 @@ if ( version >= 0x0A020000 ) { \
 #define A_SINGLE_INTERPOLATOR_CONTROLLER_WRITE \
 NiTimeController::Write( out, link_map, version ); \
 if ( version >= 0x0A020000 ) { \
-  NifStream( link_map[interpolator], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(interpolator)], out, version ); \
 }; \
 
 #define A_SINGLE_INTERPOLATOR_CONTROLLER_STRING \
@@ -2289,14 +2347,16 @@ return out.str(); \
 #define A_SINGLE_INTERPOLATOR_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x0A020000 ) { \
-  interpolator = blocks[link_stack.front()]; \
+  interpolator = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
 #define A_P_SYS_CTLR_MEMBERS \
 string modifierName; \
 
-#define A_P_SYS_CTLR_PARENTS ASingleInterpolatorController \
+#define A_P_SYS_CTLR_INCLUDE "ASingleInterpolatorController.h" \
+
+#define A_P_SYS_CTLR_PARENT ASingleInterpolatorController \
 
 #define A_P_SYS_CTLR_CONSTRUCT \
 
@@ -2324,7 +2384,9 @@ bool hasShader; \
 string shaderName; \
 Ref<NiObject > unknownLink; \
 
-#define NI_TRI_BASED_GEOM_PARENTS NiAVObject \
+#define NI_TRI_BASED_GEOM_INCLUDE "NiAVObject.h" \
+
+#define NI_TRI_BASED_GEOM_PARENT NiAVObject \
 
 #define NI_TRI_BASED_GEOM_CONSTRUCT \
 
@@ -2346,13 +2408,13 @@ if ( version >= 0x0A000100 ) { \
 
 #define NI_TRI_BASED_GEOM_WRITE \
 NiAVObject::Write( out, link_map, version ); \
-NifStream( link_map[data], out, version ); \
-NifStream( link_map[skinInstance], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(skinInstance)], out, version ); \
 if ( version >= 0x0A000100 ) { \
   NifStream( hasShader, out, version ); \
   if ( hasShader != 0 ) { \
     NifStream( shaderName, out, version ); \
-    NifStream( link_map[unknownLink], out, version ); \
+    NifStream( link_map[StaticCast<NiObject>(unknownLink)], out, version ); \
   }; \
 }; \
 
@@ -2370,13 +2432,13 @@ return out.str(); \
 
 #define NI_TRI_BASED_GEOM_FIXLINKS \
 NiAVObject::FixLinks( objects, link_stack, version ); \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<TriBasedGeomData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
-skinInstance = blocks[link_stack.front()]; \
+skinInstance = DynamicCast<NiSkinInstance>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 if ( version >= 0x0A000100 ) { \
   if ( hasShader != 0 ) { \
-    unknownLink = blocks[link_stack.front()]; \
+    unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
   }; \
 }; \
@@ -2400,7 +2462,9 @@ vector<vector<TexCoord > > uvSets2; \
 ushort unknownShort2; \
 Ref<NiObject > unknownLink; \
 
-#define TRI_BASED_GEOM_DATA_PARENTS NiObject \
+#define TRI_BASED_GEOM_DATA_INCLUDE "NiObject.h" \
+
+#define TRI_BASED_GEOM_DATA_PARENT NiObject \
 
 #define TRI_BASED_GEOM_DATA_CONSTRUCT \
 
@@ -2437,7 +2501,7 @@ if ( hasNormals != 0 ) { \
   }; \
 }; \
 if ( version >= 0x0A010000 ) { \
-  if ( _hasNormals != 0) && (Unknown Byte & 16) ) { \
+  if ( (hasNormals != 0) && (unknownByte & 16) ) { \
     unknownVectors1.resize(numVertices); \
     for (uint i2 = 0; i2 < numVertices; i2++) { \
       NifStream( unknownVectors1[i2], in, version ); \
@@ -2492,7 +2556,7 @@ if ( version >= 0x14000004 ) { \
 #define TRI_BASED_GEOM_DATA_WRITE \
 NiObject::Write( out, link_map, version ); \
 ushort numVertices; \
-numVertices = ushort(numVertices.size()); \
+numVertices = ushort(vertices.size()); \
 Vector3 center; \
 
 #define TRI_BASED_GEOM_DATA_STRING \
@@ -2515,7 +2579,7 @@ if ( hasNormals != 0 ) { \
     out << "    Normals[" << i1 << "]:  " << normals[i1] << endl; \
   }; \
 }; \
-if ( _hasNormals != 0) && (Unknown Byte & 16) ) { \
+if ( (hasNormals != 0) && (unknownByte & 16) ) { \
   for (uint i1 = 0; i1 < numVertices; i1++) { \
     out << "    Unknown Vectors 1[" << i1 << "]:  " << unknownVectors1[i1] << endl; \
   }; \
@@ -2564,7 +2628,7 @@ if ( hasNormals != 0 ) { \
   }; \
 }; \
 if ( version >= 0x0A010000 ) { \
-  if ( _hasNormals != 0) && (Unknown Byte & 16) ) { \
+  if ( (hasNormals != 0) && (unknownByte & 16) ) { \
     for (uint i2 = 0; i2 < numVertices; i2++) { \
     }; \
     for (uint i2 = 0; i2 < numVertices; i2++) { \
@@ -2592,7 +2656,7 @@ if ( version >= 0x0A000100 ) { \
   }; \
 }; \
 if ( version >= 0x14000004 ) { \
-  unknownLink = blocks[link_stack.front()]; \
+  unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
@@ -2604,7 +2668,9 @@ bool hasUnknownFloats2; \
 vector<float > unknownFloats2; \
 byte unknownByte1; \
 
-#define A_P_SYS_DATA_PARENTS TriBasedGeomData \
+#define A_P_SYS_DATA_INCLUDE "TriBasedGeomData.h" \
+
+#define A_P_SYS_DATA_PARENT TriBasedGeomData \
 
 #define A_P_SYS_DATA_CONSTRUCT \
 
@@ -2678,7 +2744,9 @@ if ( hasUnknownFloats2 != 0 ) { \
 float unknownFloat1; \
 float unknownFloat2; \
 
-#define BHK_BLEND_COLLISION_OBJECT_PARENTS NiCollisionObject \
+#define BHK_BLEND_COLLISION_OBJECT_INCLUDE "NiCollisionObject.h" \
+
+#define BHK_BLEND_COLLISION_OBJECT_PARENT NiCollisionObject \
 
 #define BHK_BLEND_COLLISION_OBJECT_CONSTRUCT \
 
@@ -2705,7 +2773,9 @@ NiCollisionObject::FixLinks( objects, link_stack, version ); \
 #define BHK_BLEND_CONTROLLER_MEMBERS \
 uint unknownInt; \
 
-#define BHK_BLEND_CONTROLLER_PARENTS NiTimeController \
+#define BHK_BLEND_CONTROLLER_INCLUDE "NiTimeController.h" \
+
+#define BHK_BLEND_CONTROLLER_PARENT NiTimeController \
 
 #define BHK_BLEND_CONTROLLER_CONSTRUCT \
 
@@ -2735,7 +2805,9 @@ ushort unknownShort4; \
 Vector3 unknownVector; \
 float unknownFloat2; \
 
-#define BHK_BOX_SHAPE_PARENTS bhkConvexShape \
+#define BHK_BOX_SHAPE_INCLUDE "bhkConvexShape.h" \
+
+#define BHK_BOX_SHAPE_PARENT bhkConvexShape \
 
 #define BHK_BOX_SHAPE_CONSTRUCT \
 
@@ -2785,7 +2857,9 @@ float radius1; \
 Vector3 unknownVector2; \
 float radius2; \
 
-#define BHK_CAPSULE_SHAPE_PARENTS bhkConvexShape \
+#define BHK_CAPSULE_SHAPE_INCLUDE "bhkConvexShape.h" \
+
+#define BHK_CAPSULE_SHAPE_PARENT bhkConvexShape \
 
 #define BHK_CAPSULE_SHAPE_CONSTRUCT \
 
@@ -2832,7 +2906,9 @@ bhkConvexShape::FixLinks( objects, link_stack, version ); \
 
 #define BHK_COLLISION_OBJECT_MEMBERS \
 
-#define BHK_COLLISION_OBJECT_PARENTS NiCollisionObject \
+#define BHK_COLLISION_OBJECT_INCLUDE "NiCollisionObject.h" \
+
+#define BHK_COLLISION_OBJECT_PARENT NiCollisionObject \
 
 #define BHK_COLLISION_OBJECT_CONSTRUCT \
 
@@ -2855,7 +2931,9 @@ vector<float > unknownFloats1; \
 vector<Float4 > unknownVectors1; \
 vector<Float4 > unknownVectors2; \
 
-#define BHK_CONVEX_VERTICES_SHAPE_PARENTS bhkSphereRepShape \
+#define BHK_CONVEX_VERTICES_SHAPE_INCLUDE "bhkSphereRepShape.h" \
+
+#define BHK_CONVEX_VERTICES_SHAPE_PARENT bhkSphereRepShape \
 
 #define BHK_CONVEX_VERTICES_SHAPE_CONSTRUCT \
 
@@ -2881,9 +2959,9 @@ for (uint i0 = 0; i0 < num2; i0++) { \
 #define BHK_CONVEX_VERTICES_SHAPE_WRITE \
 bhkSphereRepShape::Write( out, link_map, version ); \
 uint num1; \
-num1 = uint(num1.size()); \
+num1 = uint(unknownVectors1.size()); \
 uint num2; \
-num2 = uint(num2.size()); \
+num2 = uint(unknownVectors2.size()); \
 for (uint i0 = 0; i0 < 7; i0++) { \
   NifStream( unknownFloats1[i0], out, version ); \
 }; \
@@ -2924,7 +3002,9 @@ for (uint i0 = 0; i0 < num2; i0++) { \
 #define BHK_HINGE_CONSTRAINT_MEMBERS \
 vector<vector<float > > unknownFloats; \
 
-#define BHK_HINGE_CONSTRAINT_PARENTS AbhkConstraint \
+#define BHK_HINGE_CONSTRAINT_INCLUDE "AbhkConstraint.h" \
+
+#define BHK_HINGE_CONSTRAINT_PARENT AbhkConstraint \
 
 #define BHK_HINGE_CONSTRAINT_CONSTRUCT \
 
@@ -2967,7 +3047,9 @@ for (uint i0 = 0; i0 < 5; i0++) { \
 #define BHK_LIMITED_HINGE_CONSTRAINT_MEMBERS \
 uint unknownInt; \
 
-#define BHK_LIMITED_HINGE_CONSTRAINT_PARENTS AbhkRagdollConstraint \
+#define BHK_LIMITED_HINGE_CONSTRAINT_INCLUDE "AbhkRagdollConstraint.h" \
+
+#define BHK_LIMITED_HINGE_CONSTRAINT_PARENT AbhkRagdollConstraint \
 
 #define BHK_LIMITED_HINGE_CONSTRAINT_CONSTRUCT \
 
@@ -2994,7 +3076,9 @@ uint material; \
 vector<float > unknownFloats; \
 vector<uint > unknownInts; \
 
-#define BHK_LIST_SHAPE_PARENTS AbhkShapeCollection \
+#define BHK_LIST_SHAPE_INCLUDE "AbhkShapeCollection.h" \
+
+#define BHK_LIST_SHAPE_PARENT AbhkShapeCollection \
 
 #define BHK_LIST_SHAPE_CONSTRUCT \
 
@@ -3023,12 +3107,12 @@ for (uint i0 = 0; i0 < numUnknownInts; i0++) { \
 #define BHK_LIST_SHAPE_WRITE \
 AbhkShapeCollection::Write( out, link_map, version ); \
 uint numSubShapes; \
-numSubShapes = uint(numSubShapes.size()); \
+numSubShapes = uint(subShapes.size()); \
 uint numUnknownInts; \
-numUnknownInts = uint(numUnknownInts.size()); \
+numUnknownInts = uint(unknownInts.size()); \
 NifStream( numSubShapes, out, version ); \
 for (uint i0 = 0; i0 < numSubShapes; i0++) { \
-  NifStream( link_map[subShapes[i0]], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(subShapes[i0])], out, version ); \
 }; \
 NifStream( material, out, version ); \
 for (uint i0 = 0; i0 < 6; i0++) { \
@@ -3059,7 +3143,7 @@ return out.str(); \
 #define BHK_LIST_SHAPE_FIXLINKS \
 AbhkShapeCollection::FixLinks( objects, link_stack, version ); \
 for (uint i0 = 0; i0 < numSubShapes; i0++) { \
-  subShapes[i0] = blocks[link_stack.front()]; \
+  subShapes[i0] = DynamicCast<bhkSphereRepShape>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 for (uint i0 = 0; i0 < 6; i0++) { \
@@ -3078,7 +3162,9 @@ vector<vector<float > > unknownFloats; \
 float unknownFloat1; \
 float unknownFloat2; \
 
-#define BHK_MALLEABLE_CONSTRAINT_PARENTS AbhkConstraint \
+#define BHK_MALLEABLE_CONSTRAINT_INCLUDE "AbhkConstraint.h" \
+
+#define BHK_MALLEABLE_CONSTRAINT_PARENT AbhkConstraint \
 
 #define BHK_MALLEABLE_CONSTRAINT_CONSTRUCT \
 
@@ -3113,8 +3199,8 @@ if ( type == 2 ) { \
 AbhkConstraint::Write( out, link_map, version ); \
 NifStream( type, out, version ); \
 NifStream( unknownInt2, out, version ); \
-NifStream( link_map[unknownLink1], out, version ); \
-NifStream( link_map[unknownLink2], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(unknownLink1)], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(unknownLink2)], out, version ); \
 NifStream( unknownInt3, out, version ); \
 for (uint i0 = 0; i0 < 3; i0++) { \
   NifStream( unknownFloats1[i0], out, version ); \
@@ -3153,9 +3239,9 @@ return out.str(); \
 
 #define BHK_MALLEABLE_CONSTRAINT_FIXLINKS \
 AbhkConstraint::FixLinks( objects, link_stack, version ); \
-unknownLink1 = blocks[link_stack.front()]; \
+unknownLink1 = DynamicCast<NiObject>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
-unknownLink2 = blocks[link_stack.front()]; \
+unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < 3; i0++) { \
 }; \
@@ -3173,7 +3259,9 @@ vector<byte > unknownBytes2; \
 Vector3 unknownVector; \
 float unknownFloat2; \
 
-#define BHK_MOPP_BV_TREE_SHAPE_PARENTS bhkEntity \
+#define BHK_MOPP_BV_TREE_SHAPE_INCLUDE "bhkEntity.h" \
+
+#define BHK_MOPP_BV_TREE_SHAPE_PARENT bhkEntity \
 
 #define BHK_MOPP_BV_TREE_SHAPE_CONSTRUCT \
 
@@ -3196,7 +3284,7 @@ NifStream( unknownFloat2, in, version ); \
 #define BHK_MOPP_BV_TREE_SHAPE_WRITE \
 bhkEntity::Write( out, link_map, version ); \
 uint numUnknownBytes2; \
-numUnknownBytes2 = uint(numUnknownBytes2.size()); \
+numUnknownBytes2 = uint(unknownBytes2.size()); \
 for (uint i0 = 0; i0 < 8; i0++) { \
   NifStream( unknownBytes1[i0], out, version ); \
 }; \
@@ -3237,7 +3325,9 @@ float unknownFloat3; \
 uint unknownInt2; \
 vector<float > unknownFloats; \
 
-#define BHK_MULTI_SPHERE_SHAPE_PARENTS bhkSphereRepShape \
+#define BHK_MULTI_SPHERE_SHAPE_INCLUDE "bhkSphereRepShape.h" \
+
+#define BHK_MULTI_SPHERE_SHAPE_PARENT bhkSphereRepShape \
 
 #define BHK_MULTI_SPHERE_SHAPE_CONSTRUCT \
 
@@ -3287,7 +3377,9 @@ uint unknownInt2; \
 vector<Ref<NiTriStripsData > > stripsData; \
 vector<uint > unknownInts3; \
 
-#define BHK_NI_TRI_STRIPS_SHAPE_PARENTS bhkSphereRepShape \
+#define BHK_NI_TRI_STRIPS_SHAPE_INCLUDE "bhkSphereRepShape.h" \
+
+#define BHK_NI_TRI_STRIPS_SHAPE_PARENT bhkSphereRepShape \
 
 #define BHK_NI_TRI_STRIPS_SHAPE_CONSTRUCT \
 
@@ -3324,9 +3416,9 @@ for (uint i0 = 0; i0 < numUnknownInts3; i0++) { \
 #define BHK_NI_TRI_STRIPS_SHAPE_WRITE \
 bhkSphereRepShape::Write( out, link_map, version ); \
 uint numStripsData; \
-numStripsData = uint(numStripsData.size()); \
+numStripsData = uint(stripsData.size()); \
 uint numUnknownInts3; \
-numUnknownInts3 = uint(numUnknownInts3.size()); \
+numUnknownInts3 = uint(unknownInts3.size()); \
 for (uint i0 = 0; i0 < 2; i0++) { \
   NifStream( unknownFloats1[i0], out, version ); \
 }; \
@@ -3339,7 +3431,7 @@ for (uint i0 = 0; i0 < 3; i0++) { \
 NifStream( unknownInt2, out, version ); \
 NifStream( numStripsData, out, version ); \
 for (uint i0 = 0; i0 < numStripsData; i0++) { \
-  NifStream( link_map[stripsData[i0]], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(stripsData[i0])], out, version ); \
 }; \
 NifStream( numUnknownInts3, out, version ); \
 for (uint i0 = 0; i0 < numUnknownInts3; i0++) { \
@@ -3378,7 +3470,7 @@ for (uint i0 = 0; i0 < 5; i0++) { \
 for (uint i0 = 0; i0 < 3; i0++) { \
 }; \
 for (uint i0 = 0; i0 < numStripsData; i0++) { \
-  stripsData[i0] = blocks[link_stack.front()]; \
+  stripsData[i0] = DynamicCast<NiTriStripsData>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 for (uint i0 = 0; i0 < numUnknownInts3; i0++) { \
@@ -3389,7 +3481,9 @@ vector<vector<uint > > unknownInts; \
 vector<float > unknownFloats; \
 Ref<NiTriStripsData > data; \
 
-#define BHK_PACKED_NI_TRI_STRIPS_SHAPE_PARENTS AbhkShapeCollection \
+#define BHK_PACKED_NI_TRI_STRIPS_SHAPE_INCLUDE "AbhkShapeCollection.h" \
+
+#define BHK_PACKED_NI_TRI_STRIPS_SHAPE_PARENT AbhkShapeCollection \
 
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_CONSTRUCT \
 
@@ -3416,7 +3510,7 @@ link_stack.push_back( block_num ); \
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_WRITE \
 AbhkShapeCollection::Write( out, link_map, version ); \
 ushort numUnknownInts; \
-numUnknownInts = ushort(numUnknownInts.size()); \
+numUnknownInts = ushort(unknownInts.size()); \
 NifStream( numUnknownInts, out, version ); \
 for (uint i0 = 0; i0 < numUnknownInts; i0++) { \
   for (uint i1 = 0; i1 < 3; i1++) { \
@@ -3426,7 +3520,7 @@ for (uint i0 = 0; i0 < numUnknownInts; i0++) { \
 for (uint i0 = 0; i0 < 13; i0++) { \
   NifStream( unknownFloats[i0], out, version ); \
 }; \
-NifStream( link_map[data], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_STRING \
 stringstream out; \
@@ -3451,14 +3545,16 @@ for (uint i0 = 0; i0 < numUnknownInts; i0++) { \
 }; \
 for (uint i0 = 0; i0 < 13; i0++) { \
 }; \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<NiTriStripsData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define BHK_PRISMATIC_CONSTRAINT_MEMBERS \
 vector<vector<float > > unknownFloats; \
 vector<float > unknownFloats2; \
 
-#define BHK_PRISMATIC_CONSTRAINT_PARENTS AbhkConstraint \
+#define BHK_PRISMATIC_CONSTRAINT_INCLUDE "AbhkConstraint.h" \
+
+#define BHK_PRISMATIC_CONSTRAINT_PARENT AbhkConstraint \
 
 #define BHK_PRISMATIC_CONSTRAINT_CONSTRUCT \
 
@@ -3512,7 +3608,9 @@ for (uint i0 = 0; i0 < 3; i0++) { \
 
 #define BHK_RAGDOLL_CONSTRAINT_MEMBERS \
 
-#define BHK_RAGDOLL_CONSTRAINT_PARENTS AbhkRagdollConstraint \
+#define BHK_RAGDOLL_CONSTRAINT_INCLUDE "AbhkRagdollConstraint.h" \
+
+#define BHK_RAGDOLL_CONSTRAINT_PARENT AbhkRagdollConstraint \
 
 #define BHK_RAGDOLL_CONSTRAINT_CONSTRUCT \
 
@@ -3562,7 +3660,9 @@ uint unknownInt7; \
 uint unknownInt8; \
 vector<Ref<AbhkConstraint > > constraints; \
 
-#define BHK_RIGID_BODY_PARENTS bhkEntity \
+#define BHK_RIGID_BODY_INCLUDE "bhkEntity.h" \
+
+#define BHK_RIGID_BODY_PARENT bhkEntity \
 
 #define BHK_RIGID_BODY_CONSTRUCT \
  : maxAngularVelocity(31.415926535f) \
@@ -3626,7 +3726,7 @@ NifStream( unknownInt6, in, version ); \
 #define BHK_RIGID_BODY_WRITE \
 bhkEntity::Write( out, link_map, version ); \
 uint numConstraints; \
-numConstraints = uint(numConstraints.size()); \
+numConstraints = uint(constraints.size()); \
 for (uint i0 = 0; i0 < 5; i0++) { \
   NifStream( unknownFloats1[i0], out, version ); \
 }; \
@@ -3669,7 +3769,7 @@ NifStream( unknownInt7, out, version ); \
 NifStream( unknownInt8, out, version ); \
 NifStream( numConstraints, out, version ); \
 for (uint i0 = 0; i0 < numConstraints; i0++) { \
-  NifStream( link_map[constraints[i0]], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(constraints[i0])], out, version ); \
 }; \
 NifStream( unknownInt6, out, version ); \
 
@@ -3734,13 +3834,15 @@ for (uint i0 = 0; i0 < 6; i0++) { \
 for (uint i0 = 0; i0 < 12; i0++) { \
 }; \
 for (uint i0 = 0; i0 < numConstraints; i0++) { \
-  constraints[i0] = blocks[link_stack.front()]; \
+  constraints[i0] = DynamicCast<AbhkConstraint>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
 #define BHK_RIGID_BODY_T_MEMBERS \
 
-#define BHK_RIGID_BODY_T_PARENTS bhkRigidBody \
+#define BHK_RIGID_BODY_T_INCLUDE "bhkRigidBody.h" \
+
+#define BHK_RIGID_BODY_T_PARENT bhkRigidBody \
 
 #define BHK_RIGID_BODY_T_CONSTRUCT \
 
@@ -3763,7 +3865,9 @@ vector<float > unkownFloats; \
 vector<vector<float > > unknownFloats2; \
 float unknownFloat; \
 
-#define BHK_SIMPLE_SHAPE_PHANTOM_PARENTS bhkEntity \
+#define BHK_SIMPLE_SHAPE_PHANTOM_INCLUDE "bhkEntity.h" \
+
+#define BHK_SIMPLE_SHAPE_PHANTOM_PARENT bhkEntity \
 
 #define BHK_SIMPLE_SHAPE_PHANTOM_CONSTRUCT \
 
@@ -3820,7 +3924,9 @@ for (uint i0 = 0; i0 < 3; i0++) { \
 
 #define BHK_S_P_COLLISION_OBJECT_MEMBERS \
 
-#define BHK_S_P_COLLISION_OBJECT_PARENTS NiCollisionObject \
+#define BHK_S_P_COLLISION_OBJECT_INCLUDE "NiCollisionObject.h" \
+
+#define BHK_S_P_COLLISION_OBJECT_PARENT NiCollisionObject \
 
 #define BHK_S_P_COLLISION_OBJECT_CONSTRUCT \
 
@@ -3841,7 +3947,9 @@ NiCollisionObject::FixLinks( objects, link_stack, version ); \
 #define BHK_SPHERE_SHAPE_MEMBERS \
 float radius; \
 
-#define BHK_SPHERE_SHAPE_PARENTS bhkConvexShape \
+#define BHK_SPHERE_SHAPE_INCLUDE "bhkConvexShape.h" \
+
+#define BHK_SPHERE_SHAPE_PARENT bhkConvexShape \
 
 #define BHK_SPHERE_SHAPE_CONSTRUCT \
 
@@ -3866,7 +3974,9 @@ bhkConvexShape::FixLinks( objects, link_stack, version ); \
 vector<vector<float > > unknownFloats; \
 float unknownFloat; \
 
-#define BHK_STIFF_SPRING_CONSTRAINT_PARENTS AbhkConstraint \
+#define BHK_STIFF_SPRING_CONSTRAINT_INCLUDE "AbhkConstraint.h" \
+
+#define BHK_STIFF_SPRING_CONSTRAINT_PARENT AbhkConstraint \
 
 #define BHK_STIFF_SPRING_CONSTRAINT_CONSTRUCT \
 
@@ -3915,7 +4025,9 @@ float unknownFloat2; \
 float unknownFloat3; \
 Matrix44 transform; \
 
-#define BHK_TRANSFORM_SHAPE_PARENTS bhkEntity \
+#define BHK_TRANSFORM_SHAPE_INCLUDE "bhkEntity.h" \
+
+#define BHK_TRANSFORM_SHAPE_PARENT bhkEntity \
 
 #define BHK_TRANSFORM_SHAPE_CONSTRUCT \
 
@@ -3947,7 +4059,9 @@ bhkEntity::FixLinks( objects, link_stack, version ); \
 
 #define BHK_CONVEX_TRANSFORM_SHAPE_MEMBERS \
 
-#define BHK_CONVEX_TRANSFORM_SHAPE_PARENTS bhkTransformShape \
+#define BHK_CONVEX_TRANSFORM_SHAPE_INCLUDE "bhkTransformShape.h" \
+
+#define BHK_CONVEX_TRANSFORM_SHAPE_PARENT bhkTransformShape \
 
 #define BHK_CONVEX_TRANSFORM_SHAPE_CONSTRUCT \
 
@@ -3969,7 +4083,9 @@ bhkTransformShape::FixLinks( objects, link_stack, version ); \
 string name; \
 vector<float > unknownFloats; \
 
-#define B_S_BOUND_PARENTS NiObject \
+#define B_S_BOUND_INCLUDE "NiObject.h" \
+
+#define B_S_BOUND_PARENT NiObject \
 
 #define B_S_BOUND_CONSTRUCT \
 
@@ -4006,7 +4122,9 @@ for (uint i0 = 0; i0 < 6; i0++) { \
 string name; \
 vector<FurniturePosition > positions; \
 
-#define B_S_FURNITURE_MARKER_PARENTS NiObject \
+#define B_S_FURNITURE_MARKER_INCLUDE "NiObject.h" \
+
+#define B_S_FURNITURE_MARKER_PARENT NiObject \
 
 #define B_S_FURNITURE_MARKER_CONSTRUCT \
 
@@ -4028,7 +4146,7 @@ for (uint i0 = 0; i0 < numPositions; i0++) { \
 #define B_S_FURNITURE_MARKER_WRITE \
 NiObject::Write( out, link_map, version ); \
 uint numPositions; \
-numPositions = uint(numPositions.size()); \
+numPositions = uint(positions.size()); \
 if ( version <= 0x14000005 ) { \
   NifStream( name, out, version ); \
 }; \
@@ -4063,7 +4181,9 @@ for (uint i0 = 0; i0 < numPositions; i0++) { \
 #define B_S_PARENT_VELOCITY_MODIFIER_MEMBERS \
 float unknownFloat; \
 
-#define B_S_PARENT_VELOCITY_MODIFIER_PARENTS APSysModifier \
+#define B_S_PARENT_VELOCITY_MODIFIER_INCLUDE "APSysModifier.h" \
+
+#define B_S_PARENT_VELOCITY_MODIFIER_PARENT APSysModifier \
 
 #define B_S_PARENT_VELOCITY_MODIFIER_CONSTRUCT \
 
@@ -4086,7 +4206,9 @@ APSysModifier::FixLinks( objects, link_stack, version ); \
 
 #define B_S_P_SYS_ARRAY_EMITTER_MEMBERS \
 
-#define B_S_P_SYS_ARRAY_EMITTER_PARENTS APSysVolumeEmitter \
+#define B_S_P_SYS_ARRAY_EMITTER_INCLUDE "APSysVolumeEmitter.h" \
+
+#define B_S_P_SYS_ARRAY_EMITTER_PARENT APSysVolumeEmitter \
 
 #define B_S_P_SYS_ARRAY_EMITTER_CONSTRUCT \
 
@@ -4108,7 +4230,9 @@ APSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
 string name; \
 uint flags; \
 
-#define B_S_X_FLAGS_PARENTS NiObject \
+#define B_S_X_FLAGS_INCLUDE "NiObject.h" \
+
+#define B_S_X_FLAGS_PARENT NiObject \
 
 #define B_S_X_FLAGS_CONSTRUCT \
  : name("BSX") \
@@ -4137,7 +4261,9 @@ NiObject::FixLinks( objects, link_stack, version ); \
 vector<hkTriangle > triangles; \
 vector<Vector3 > vertices; \
 
-#define HK_PACKED_NI_TRI_STRIPS_DATA_PARENTS AbhkShapeCollection \
+#define HK_PACKED_NI_TRI_STRIPS_DATA_INCLUDE "AbhkShapeCollection.h" \
+
+#define HK_PACKED_NI_TRI_STRIPS_DATA_PARENT AbhkShapeCollection \
 
 #define HK_PACKED_NI_TRI_STRIPS_DATA_CONSTRUCT \
 
@@ -4161,9 +4287,9 @@ for (uint i0 = 0; i0 < numVertices; i0++) { \
 #define HK_PACKED_NI_TRI_STRIPS_DATA_WRITE \
 AbhkShapeCollection::Write( out, link_map, version ); \
 uint numTriangles; \
-numTriangles = uint(numTriangles.size()); \
+numTriangles = uint(triangles.size()); \
 uint numVertices; \
-numVertices = uint(numVertices.size()); \
+numVertices = uint(vertices.size()); \
 NifStream( numTriangles, out, version ); \
 for (uint i0 = 0; i0 < numTriangles; i0++) { \
   NifStream( triangles[i0].triangle, out, version ); \
@@ -4200,7 +4326,9 @@ for (uint i0 = 0; i0 < numVertices; i0++) { \
 #define NI_ALPHA_CONTROLLER_MEMBERS \
 Ref<NiFloatData > data; \
 
-#define NI_ALPHA_CONTROLLER_PARENTS ASingleInterpolatorController \
+#define NI_ALPHA_CONTROLLER_INCLUDE "ASingleInterpolatorController.h" \
+
+#define NI_ALPHA_CONTROLLER_PARENT ASingleInterpolatorController \
 
 #define NI_ALPHA_CONTROLLER_CONSTRUCT \
 
@@ -4215,7 +4343,7 @@ if ( version <= 0x0A010000 ) { \
 #define NI_ALPHA_CONTROLLER_WRITE \
 ASingleInterpolatorController::Write( out, link_map, version ); \
 if ( version <= 0x0A010000 ) { \
-  NifStream( link_map[data], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 }; \
 
 #define NI_ALPHA_CONTROLLER_STRING \
@@ -4227,7 +4355,7 @@ return out.str(); \
 #define NI_ALPHA_CONTROLLER_FIXLINKS \
 ASingleInterpolatorController::FixLinks( objects, link_stack, version ); \
 if ( version <= 0x0A010000 ) { \
-  data = blocks[link_stack.front()]; \
+  data = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
@@ -4235,7 +4363,9 @@ if ( version <= 0x0A010000 ) { \
 Flags flags; \
 byte threshold; \
 
-#define NI_ALPHA_PROPERTY_PARENTS NiProperty \
+#define NI_ALPHA_PROPERTY_INCLUDE "NiProperty.h" \
+
+#define NI_ALPHA_PROPERTY_PARENT NiProperty \
 
 #define NI_ALPHA_PROPERTY_CONSTRUCT \
  : flags(237) \
@@ -4262,7 +4392,9 @@ NiProperty::FixLinks( objects, link_stack, version ); \
 
 #define NI_AMBIENT_LIGHT_MEMBERS \
 
-#define NI_AMBIENT_LIGHT_PARENTS NiLight \
+#define NI_AMBIENT_LIGHT_INCLUDE "NiLight.h" \
+
+#define NI_AMBIENT_LIGHT_PARENT NiLight \
 
 #define NI_AMBIENT_LIGHT_CONSTRUCT \
 
@@ -4288,7 +4420,9 @@ ushort unknownShort; \
 bool hasSizes; \
 vector<float > sizes; \
 
-#define NI_AUTO_NORMAL_PARTICLES_DATA_PARENTS TriBasedGeomData \
+#define NI_AUTO_NORMAL_PARTICLES_DATA_INCLUDE "TriBasedGeomData.h" \
+
+#define NI_AUTO_NORMAL_PARTICLES_DATA_PARENT TriBasedGeomData \
 
 #define NI_AUTO_NORMAL_PARTICLES_DATA_CONSTRUCT \
 
@@ -4368,7 +4502,9 @@ if ( hasSizes != 0 ) { \
 #define NI_BINARY_EXTRA_DATA_MEMBERS \
 ByteArray binaryData; \
 
-#define NI_BINARY_EXTRA_DATA_PARENTS NiExtraData \
+#define NI_BINARY_EXTRA_DATA_INCLUDE "NiExtraData.h" \
+
+#define NI_BINARY_EXTRA_DATA_PARENT NiExtraData \
 
 #define NI_BINARY_EXTRA_DATA_CONSTRUCT \
 
@@ -4387,7 +4523,7 @@ for (uint i0 = 0; i0 < binaryData_size; i0++) { \
 #define NI_BINARY_EXTRA_DATA_WRITE \
 NiExtraData::Write( out, link_map, version ); \
 uint binaryData_size; \
-binaryData_size = uint(binaryData.size.size()); \
+binaryData_size = uint(binaryData.data.size()); \
 NifStream( binaryData_size, out, version ); \
 if ( version >= 0x14000004 ) { \
   NifStream( binaryData.unknownInt, out, version ); \
@@ -4416,7 +4552,9 @@ for (uint i0 = 0; i0 < binaryData_size; i0++) { \
 #define NI_BLEND_BOOL_INTERPOLATOR_MEMBERS \
 byte bool; \
 
-#define NI_BLEND_BOOL_INTERPOLATOR_PARENTS ABlendInterpolator \
+#define NI_BLEND_BOOL_INTERPOLATOR_INCLUDE "ABlendInterpolator.h" \
+
+#define NI_BLEND_BOOL_INTERPOLATOR_PARENT ABlendInterpolator \
 
 #define NI_BLEND_BOOL_INTERPOLATOR_CONSTRUCT \
 
@@ -4440,7 +4578,9 @@ ABlendInterpolator::FixLinks( objects, link_stack, version ); \
 #define NI_BLEND_FLOAT_INTERPOLATOR_MEMBERS \
 float float; \
 
-#define NI_BLEND_FLOAT_INTERPOLATOR_PARENTS ABlendInterpolator \
+#define NI_BLEND_FLOAT_INTERPOLATOR_INCLUDE "ABlendInterpolator.h" \
+
+#define NI_BLEND_FLOAT_INTERPOLATOR_PARENT ABlendInterpolator \
 
 #define NI_BLEND_FLOAT_INTERPOLATOR_CONSTRUCT \
 
@@ -4464,7 +4604,9 @@ ABlendInterpolator::FixLinks( objects, link_stack, version ); \
 #define NI_BLEND_POINT3_INTERPOLATOR_MEMBERS \
 Vector3 point; \
 
-#define NI_BLEND_POINT3_INTERPOLATOR_PARENTS ABlendInterpolator \
+#define NI_BLEND_POINT3_INTERPOLATOR_INCLUDE "ABlendInterpolator.h" \
+
+#define NI_BLEND_POINT3_INTERPOLATOR_PARENT ABlendInterpolator \
 
 #define NI_BLEND_POINT3_INTERPOLATOR_CONSTRUCT \
 
@@ -4487,7 +4629,9 @@ ABlendInterpolator::FixLinks( objects, link_stack, version ); \
 
 #define NI_BLEND_TRANSFORM_INTERPOLATOR_MEMBERS \
 
-#define NI_BLEND_TRANSFORM_INTERPOLATOR_PARENTS ABlendInterpolator \
+#define NI_BLEND_TRANSFORM_INTERPOLATOR_INCLUDE "ABlendInterpolator.h" \
+
+#define NI_BLEND_TRANSFORM_INTERPOLATOR_PARENT ABlendInterpolator \
 
 #define NI_BLEND_TRANSFORM_INTERPOLATOR_CONSTRUCT \
 
@@ -4509,7 +4653,9 @@ ABlendInterpolator::FixLinks( objects, link_stack, version ); \
 vector<SkinShapeGroup > shapeGroups1; \
 vector<Ref<NiTriShape > > shapeGroups2; \
 
-#define NI_BONE_L_O_D_CONTROLLER_PARENTS ABoneLODController \
+#define NI_BONE_L_O_D_CONTROLLER_INCLUDE "ABoneLODController.h" \
+
+#define NI_BONE_L_O_D_CONTROLLER_PARENT ABoneLODController \
 
 #define NI_BONE_L_O_D_CONTROLLER_CONSTRUCT \
 
@@ -4541,22 +4687,22 @@ for (uint i0 = 0; i0 < numShapeGroups2; i0++) { \
 #define NI_BONE_L_O_D_CONTROLLER_WRITE \
 ABoneLODController::Write( out, link_map, version ); \
 uint numShapeGroups; \
-numShapeGroups = uint(numShapeGroups.size()); \
+numShapeGroups = uint(shapeGroups1.size()); \
 uint numShapeGroups2; \
-numShapeGroups2 = uint(numShapeGroups2.size()); \
+numShapeGroups2 = uint(shapeGroups2.size()); \
 NifStream( numShapeGroups, out, version ); \
 for (uint i0 = 0; i0 < numShapeGroups; i0++) { \
   uint shapeGroups1_numLinkPairs; \
-  shapeGroups1_numLinkPairs = uint(shapeGroups1[i0].numLinkPairs.size()); \
+  shapeGroups1_numLinkPairs = uint(shapeGroups1[i0].linkPairs.size()); \
   NifStream( shapeGroups1_numLinkPairs, out, version ); \
   for (uint i1 = 0; i1 < shapeGroups1_numLinkPairs; i1++) { \
-    NifStream( link_map[shapeGroups1[i0].linkPairs[i1].shape], out, version ); \
-    NifStream( link_map[shapeGroups1[i0].linkPairs[i1].skinInstance], out, version ); \
+    NifStream( link_map[StaticCast<NiObject>(shapeGroups1[i0].linkPairs[i1].shape)], out, version ); \
+    NifStream( link_map[StaticCast<NiObject>(shapeGroups1[i0].linkPairs[i1].skinInstance)], out, version ); \
   }; \
 }; \
 NifStream( numShapeGroups2, out, version ); \
 for (uint i0 = 0; i0 < numShapeGroups2; i0++) { \
-  NifStream( link_map[shapeGroups2[i0]], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(shapeGroups2[i0])], out, version ); \
 }; \
 
 #define NI_BONE_L_O_D_CONTROLLER_STRING \
@@ -4580,21 +4726,23 @@ return out.str(); \
 ABoneLODController::FixLinks( objects, link_stack, version ); \
 for (uint i0 = 0; i0 < numShapeGroups; i0++) { \
   for (uint i1 = 0; i1 < shapeGroups1_numLinkPairs; i1++) { \
-    shapeGroups1[i0].linkPairs[i1].shape = blocks[link_stack.front()]; \
+    shapeGroups1[i0].linkPairs[i1].shape = DynamicCast<NiTriShape>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
-    shapeGroups1[i0].linkPairs[i1].skinInstance = blocks[link_stack.front()]; \
+    shapeGroups1[i0].linkPairs[i1].skinInstance = DynamicCast<NiSkinInstance>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
   }; \
 }; \
 for (uint i0 = 0; i0 < numShapeGroups2; i0++) { \
-  shapeGroups2[i0] = blocks[link_stack.front()]; \
+  shapeGroups2[i0] = DynamicCast<NiTriShape>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
 #define NI_BOOL_DATA_MEMBERS \
 KeyGroup<byte > data; \
 
-#define NI_BOOL_DATA_PARENTS AKeyedData \
+#define NI_BOOL_DATA_INCLUDE "AKeyedData.h" \
+
+#define NI_BOOL_DATA_PARENT AKeyedData \
 
 #define NI_BOOL_DATA_CONSTRUCT \
 
@@ -4641,7 +4789,9 @@ for (uint i0 = 0; i0 < data.numKeys; i0++) { \
 #define NI_BOOLEAN_EXTRA_DATA_MEMBERS \
 byte booleanData; \
 
-#define NI_BOOLEAN_EXTRA_DATA_PARENTS NiExtraData \
+#define NI_BOOLEAN_EXTRA_DATA_INCLUDE "NiExtraData.h" \
+
+#define NI_BOOLEAN_EXTRA_DATA_PARENT NiExtraData \
 
 #define NI_BOOLEAN_EXTRA_DATA_CONSTRUCT \
 
@@ -4666,7 +4816,9 @@ NiExtraData::FixLinks( objects, link_stack, version ); \
 bool boolValue; \
 Ref<NiBoolData > data; \
 
-#define NI_BOOL_INTERPOLATOR_PARENTS AInterpolator \
+#define NI_BOOL_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+
+#define NI_BOOL_INTERPOLATOR_PARENT AInterpolator \
 
 #define NI_BOOL_INTERPOLATOR_CONSTRUCT \
 
@@ -4680,7 +4832,7 @@ link_stack.push_back( block_num ); \
 #define NI_BOOL_INTERPOLATOR_WRITE \
 AInterpolator::Write( out, link_map, version ); \
 NifStream( boolValue, out, version ); \
-NifStream( link_map[data], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_BOOL_INTERPOLATOR_STRING \
 stringstream out; \
@@ -4691,14 +4843,16 @@ return out.str(); \
 
 #define NI_BOOL_INTERPOLATOR_FIXLINKS \
 AInterpolator::FixLinks( objects, link_stack, version ); \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<NiBoolData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_BOOL_TIMELINE_INTERPOLATOR_MEMBERS \
 byte bool; \
 Ref<NiBoolData > data; \
 
-#define NI_BOOL_TIMELINE_INTERPOLATOR_PARENTS AInterpolator \
+#define NI_BOOL_TIMELINE_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+
+#define NI_BOOL_TIMELINE_INTERPOLATOR_PARENT AInterpolator \
 
 #define NI_BOOL_TIMELINE_INTERPOLATOR_CONSTRUCT \
 
@@ -4712,7 +4866,7 @@ link_stack.push_back( block_num ); \
 #define NI_BOOL_TIMELINE_INTERPOLATOR_WRITE \
 AInterpolator::Write( out, link_map, version ); \
 NifStream( bool, out, version ); \
-NifStream( link_map[data], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_BOOL_TIMELINE_INTERPOLATOR_STRING \
 stringstream out; \
@@ -4723,12 +4877,14 @@ return out.str(); \
 
 #define NI_BOOL_TIMELINE_INTERPOLATOR_FIXLINKS \
 AInterpolator::FixLinks( objects, link_stack, version ); \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<NiBoolData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_B_S_BONE_L_O_D_CONTROLLER_MEMBERS \
 
-#define NI_B_S_BONE_L_O_D_CONTROLLER_PARENTS ABoneLODController \
+#define NI_B_S_BONE_L_O_D_CONTROLLER_INCLUDE "ABoneLODController.h" \
+
+#define NI_B_S_BONE_L_O_D_CONTROLLER_PARENT ABoneLODController \
 
 #define NI_B_S_BONE_L_O_D_CONTROLLER_CONSTRUCT \
 
@@ -4749,7 +4905,9 @@ ABoneLODController::FixLinks( objects, link_stack, version ); \
 #define NI_B_SPLINE_BASIS_DATA_MEMBERS \
 uint unknownInt; \
 
-#define NI_B_SPLINE_BASIS_DATA_PARENTS NiObject \
+#define NI_B_SPLINE_BASIS_DATA_INCLUDE "NiObject.h" \
+
+#define NI_B_SPLINE_BASIS_DATA_PARENT NiObject \
 
 #define NI_B_SPLINE_BASIS_DATA_CONSTRUCT \
 
@@ -4773,7 +4931,9 @@ NiObject::FixLinks( objects, link_stack, version ); \
 #define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_MEMBERS \
 vector<float > unknownFloats; \
 
-#define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_PARENTS ABSplineCompInterpolator \
+#define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_INCLUDE "ABSplineCompInterpolator.h" \
+
+#define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_PARENT ABSplineCompInterpolator \
 
 #define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_CONSTRUCT \
 
@@ -4808,7 +4968,9 @@ Ref<NiBSplineData > data; \
 Ref<NiObject > unknownLink; \
 vector<float > unknownFloats; \
 
-#define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENTS ABSplineCompInterpolator \
+#define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_INCLUDE "ABSplineCompInterpolator.h" \
+
+#define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENT ABSplineCompInterpolator \
 
 #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_CONSTRUCT \
 
@@ -4826,8 +4988,8 @@ for (uint i0 = 0; i0 < 6; i0++) { \
 
 #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_WRITE \
 ABSplineCompInterpolator::Write( out, link_map, version ); \
-NifStream( link_map[data], out, version ); \
-NifStream( link_map[unknownLink], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(unknownLink)], out, version ); \
 for (uint i0 = 0; i0 < 6; i0++) { \
   NifStream( unknownFloats[i0], out, version ); \
 }; \
@@ -4844,9 +5006,9 @@ return out.str(); \
 
 #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_FIXLINKS \
 ABSplineCompInterpolator::FixLinks( objects, link_stack, version ); \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<NiBSplineData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
-unknownLink = blocks[link_stack.front()]; \
+unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < 6; i0++) { \
 }; \
@@ -4856,7 +5018,9 @@ Ref<NiBSplineData > data; \
 Ref<NiBSplineBasisData > basisData; \
 vector<float > unknown4; \
 
-#define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_PARENTS ABSplineCompInterpolator \
+#define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_INCLUDE "ABSplineCompInterpolator.h" \
+
+#define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_PARENT ABSplineCompInterpolator \
 
 #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_CONSTRUCT \
 
@@ -4874,8 +5038,8 @@ for (uint i0 = 0; i0 < 17; i0++) { \
 
 #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_WRITE \
 ABSplineCompInterpolator::Write( out, link_map, version ); \
-NifStream( link_map[data], out, version ); \
-NifStream( link_map[basisData], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(basisData)], out, version ); \
 for (uint i0 = 0; i0 < 17; i0++) { \
   NifStream( unknown4[i0], out, version ); \
 }; \
@@ -4892,9 +5056,9 @@ return out.str(); \
 
 #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_FIXLINKS \
 ABSplineCompInterpolator::FixLinks( objects, link_stack, version ); \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<NiBSplineData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
-basisData = blocks[link_stack.front()]; \
+basisData = DynamicCast<NiBSplineBasisData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < 17; i0++) { \
 }; \
@@ -4903,7 +5067,9 @@ for (uint i0 = 0; i0 < 17; i0++) { \
 uint unknownInt; \
 vector<vector<byte > > unknownData; \
 
-#define NI_B_SPLINE_DATA_PARENTS NiObject \
+#define NI_B_SPLINE_DATA_INCLUDE "NiObject.h" \
+
+#define NI_B_SPLINE_DATA_PARENT NiObject \
 
 #define NI_B_SPLINE_DATA_CONSTRUCT \
 
@@ -4924,7 +5090,7 @@ for (uint i0 = 0; i0 < count; i0++) { \
 #define NI_B_SPLINE_DATA_WRITE \
 NiObject::Write( out, link_map, version ); \
 uint count; \
-count = uint(count.size()); \
+count = uint(unknownData.size()); \
 NifStream( unknownInt, out, version ); \
 NifStream( count, out, version ); \
 for (uint i0 = 0; i0 < count; i0++) { \
@@ -4970,7 +5136,9 @@ Ref<NiObject > unknownLink_; \
 uint unknownInt; \
 uint unknownInt2; \
 
-#define NI_CAMERA_PARENTS NiAVObject \
+#define NI_CAMERA_INCLUDE "NiAVObject.h" \
+
+#define NI_CAMERA_PARENT NiAVObject \
 
 #define NI_CAMERA_CONSTRUCT \
 
@@ -5020,7 +5188,7 @@ NifStream( viewportRight, out, version ); \
 NifStream( viewportTop, out, version ); \
 NifStream( viewportBottom, out, version ); \
 NifStream( lodAdjust, out, version ); \
-NifStream( link_map[unknownLink_], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(unknownLink_)], out, version ); \
 NifStream( unknownInt, out, version ); \
 if ( version >= 0x04020100 ) { \
   NifStream( unknownInt2, out, version ); \
@@ -5053,7 +5221,7 @@ if ( version >= 0x0A010000 ) { \
 }; \
 if ( version >= 0x0A010000 ) { \
 }; \
-unknownLink_ = blocks[link_stack.front()]; \
+unknownLink_ = DynamicCast<NiObject>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 if ( version >= 0x04020100 ) { \
 }; \
@@ -5068,7 +5236,9 @@ Vector3 unknown7; \
 vector<float > unknown6; \
 vector<float > unknown8; \
 
-#define NI_COLLISION_DATA_PARENTS NiObject \
+#define NI_COLLISION_DATA_INCLUDE "NiObject.h" \
+
+#define NI_COLLISION_DATA_PARENT NiObject \
 
 #define NI_COLLISION_DATA_CONSTRUCT \
 
@@ -5098,7 +5268,7 @@ if ( collisionType == 1 ) { \
 
 #define NI_COLLISION_DATA_WRITE \
 NiObject::Write( out, link_map, version ); \
-NifStream( link_map[targetNode], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(targetNode)], out, version ); \
 NifStream( unknown2, out, version ); \
 NifStream( unknown3, out, version ); \
 NifStream( collisionType, out, version ); \
@@ -5142,7 +5312,7 @@ return out.str(); \
 
 #define NI_COLLISION_DATA_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-targetNode = blocks[link_stack.front()]; \
+targetNode = DynamicCast<NiNode>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 if ( collisionType == 0 ) { \
 }; \
@@ -5158,7 +5328,9 @@ if ( collisionType == 1 ) { \
 #define NI_COLOR_DATA_MEMBERS \
 KeyGroup<Color4 > data; \
 
-#define NI_COLOR_DATA_PARENTS AKeyedData \
+#define NI_COLOR_DATA_INCLUDE "AKeyedData.h" \
+
+#define NI_COLOR_DATA_PARENT AKeyedData \
 
 #define NI_COLOR_DATA_CONSTRUCT \
 
@@ -5205,7 +5377,9 @@ for (uint i0 = 0; i0 < data.numKeys; i0++) { \
 #define NI_COLOR_EXTRA_DATA_MEMBERS \
 Color4 data; \
 
-#define NI_COLOR_EXTRA_DATA_PARENTS NiExtraData \
+#define NI_COLOR_EXTRA_DATA_INCLUDE "NiExtraData.h" \
+
+#define NI_COLOR_EXTRA_DATA_PARENT NiExtraData \
 
 #define NI_COLOR_EXTRA_DATA_CONSTRUCT \
 
@@ -5231,7 +5405,9 @@ bool cumulative; \
 vector<Ref<NiControllerSequence > > controllerSequences; \
 Ref<NiDefaultAVObjectPalette > objectPalette; \
 
-#define NI_CONTROLLER_MANAGER_PARENTS NiTimeController \
+#define NI_CONTROLLER_MANAGER_INCLUDE "NiTimeController.h" \
+
+#define NI_CONTROLLER_MANAGER_PARENT NiTimeController \
 
 #define NI_CONTROLLER_MANAGER_CONSTRUCT \
 
@@ -5252,13 +5428,13 @@ link_stack.push_back( block_num ); \
 #define NI_CONTROLLER_MANAGER_WRITE \
 NiTimeController::Write( out, link_map, version ); \
 uint numControllerSequences; \
-numControllerSequences = uint(numControllerSequences.size()); \
+numControllerSequences = uint(controllerSequences.size()); \
 NifStream( cumulative, out, version ); \
 NifStream( numControllerSequences, out, version ); \
 for (uint i0 = 0; i0 < numControllerSequences; i0++) { \
-  NifStream( link_map[controllerSequences[i0]], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(controllerSequences[i0])], out, version ); \
 }; \
-NifStream( link_map[objectPalette], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(objectPalette)], out, version ); \
 
 #define NI_CONTROLLER_MANAGER_STRING \
 stringstream out; \
@@ -5274,10 +5450,10 @@ return out.str(); \
 #define NI_CONTROLLER_MANAGER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 for (uint i0 = 0; i0 < numControllerSequences; i0++) { \
-  controllerSequences[i0] = blocks[link_stack.front()]; \
+  controllerSequences[i0] = DynamicCast<NiControllerSequence>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
-objectPalette = blocks[link_stack.front()]; \
+objectPalette = DynamicCast<NiDefaultAVObjectPalette>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_CONTROLLER_SEQUENCE_MEMBERS \
@@ -5297,7 +5473,9 @@ byte unknownByte; \
 string unknownString; \
 Ref<NiStringPalette > stringPalette; \
 
-#define NI_CONTROLLER_SEQUENCE_PARENTS NiObject \
+#define NI_CONTROLLER_SEQUENCE_INCLUDE "NiObject.h" \
+
+#define NI_CONTROLLER_SEQUENCE_PARENT NiObject \
 
 #define NI_CONTROLLER_SEQUENCE_CONSTRUCT \
  : weight(1.0f) \
@@ -5462,7 +5640,7 @@ if ( version >= 0x0A020000 ) { \
 #define NI_CONTROLLER_SEQUENCE_WRITE \
 NiObject::Write( out, link_map, version ); \
 uint numControlledBlocks; \
-numControlledBlocks = uint(numControlledBlocks.size()); \
+numControlledBlocks = uint(controlledBlocks.size()); \
 NiControllerManager * manager; \
 
 #define NI_CONTROLLER_SEQUENCE_STRING \
@@ -5536,20 +5714,20 @@ NiObject::FixLinks( objects, link_stack, version ); \
 if ( version <= 0x0A010000 ) { \
   if ( version <= 0x0A010000 ) { \
   }; \
-  textKeys.interpolator = blocks[link_stack.front()]; \
+  textKeys.interpolator = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
   if ( version >= 0x0A01006A ) { \
-    textKeys.unknownLink1 = blocks[link_stack.front()]; \
+    textKeys.unknownLink1 = DynamicCast<NiObject>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
   }; \
   if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
-    textKeys.unknownLink2 = blocks[link_stack.front()]; \
+    textKeys.unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
   }; \
   if ( version >= 0x0A01006A ) { \
   }; \
   if ( version >= 0x0A020000 ) { \
-    textKeys.stringPalette = blocks[link_stack.front()]; \
+    textKeys.stringPalette = DynamicCast<NiStringPalette>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
   }; \
   if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
@@ -5578,20 +5756,20 @@ if ( version >= 0x0A01006A ) { \
 for (uint i0 = 0; i0 < numControlledBlocks; i0++) { \
   if ( version <= 0x0A010000 ) { \
   }; \
-  controlledBlocks[i0].interpolator = blocks[link_stack.front()]; \
+  controlledBlocks[i0].interpolator = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
   if ( version >= 0x0A01006A ) { \
-    controlledBlocks[i0].unknownLink1 = blocks[link_stack.front()]; \
+    controlledBlocks[i0].unknownLink1 = DynamicCast<NiObject>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
   }; \
   if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
-    controlledBlocks[i0].unknownLink2 = blocks[link_stack.front()]; \
+    controlledBlocks[i0].unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
   }; \
   if ( version >= 0x0A01006A ) { \
   }; \
   if ( version >= 0x0A020000 ) { \
-    controlledBlocks[i0].stringPalette = blocks[link_stack.front()]; \
+    controlledBlocks[i0].stringPalette = DynamicCast<NiStringPalette>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
   }; \
   if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
@@ -5616,7 +5794,7 @@ for (uint i0 = 0; i0 < numControlledBlocks; i0++) { \
   }; \
 }; \
 if ( version >= 0x0A01006A ) { \
-  textKeys2 = blocks[link_stack.front()]; \
+  textKeys2 = DynamicCast<NiTextKeyExtraData>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
@@ -5628,11 +5806,11 @@ if ( ( version >= 0x0A020000 ) && ( version <= 0x0A020000 ) ) { \
 if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
 }; \
 if ( version >= 0x0A01006A ) { \
-  manager = blocks[link_stack.front()]; \
+  manager = DynamicCast<NiControllerManager>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x0A020000 ) { \
-  stringPalette = blocks[link_stack.front()]; \
+  stringPalette = DynamicCast<NiStringPalette>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
@@ -5640,7 +5818,9 @@ if ( version >= 0x0A020000 ) { \
 uint unknownInt; \
 vector<AVObject > objects; \
 
-#define NI_DEFAULT_A_V_OBJECT_PALETTE_PARENTS NiObject \
+#define NI_DEFAULT_A_V_OBJECT_PALETTE_INCLUDE "NiObject.h" \
+
+#define NI_DEFAULT_A_V_OBJECT_PALETTE_PARENT NiObject \
 
 #define NI_DEFAULT_A_V_OBJECT_PALETTE_CONSTRUCT \
 
@@ -5659,12 +5839,12 @@ for (uint i0 = 0; i0 < numObjects; i0++) { \
 #define NI_DEFAULT_A_V_OBJECT_PALETTE_WRITE \
 NiObject::Write( out, link_map, version ); \
 uint numObjects; \
-numObjects = uint(numObjects.size()); \
+numObjects = uint(objects.size()); \
 NifStream( unknownInt, out, version ); \
 NifStream( numObjects, out, version ); \
 for (uint i0 = 0; i0 < numObjects; i0++) { \
   NifStream( objects[i0].name, out, version ); \
-  NifStream( link_map[objects[i0].object], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(objects[i0].object)], out, version ); \
 }; \
 
 #define NI_DEFAULT_A_V_OBJECT_PALETTE_STRING \
@@ -5681,13 +5861,15 @@ return out.str(); \
 #define NI_DEFAULT_A_V_OBJECT_PALETTE_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
 for (uint i0 = 0; i0 < numObjects; i0++) { \
-  objects[i0].object = blocks[link_stack.front()]; \
+  objects[i0].object = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
 #define NI_DIRECTIONAL_LIGHT_MEMBERS \
 
-#define NI_DIRECTIONAL_LIGHT_PARENTS NiLight \
+#define NI_DIRECTIONAL_LIGHT_INCLUDE "NiLight.h" \
+
+#define NI_DIRECTIONAL_LIGHT_PARENT NiLight \
 
 #define NI_DIRECTIONAL_LIGHT_CONSTRUCT \
 
@@ -5708,7 +5890,9 @@ NiLight::FixLinks( objects, link_stack, version ); \
 #define NI_DITHER_PROPERTY_MEMBERS \
 Flags flags; \
 
-#define NI_DITHER_PROPERTY_PARENTS NiProperty \
+#define NI_DITHER_PROPERTY_INCLUDE "NiProperty.h" \
+
+#define NI_DITHER_PROPERTY_PARENT NiProperty \
 
 #define NI_DITHER_PROPERTY_CONSTRUCT \
 
@@ -5735,7 +5919,9 @@ uint unknownInt2; \
 float delta; \
 vector<Ref<NiSourceTexture > > sources; \
 
-#define NI_FLIP_CONTROLLER_PARENTS ASingleInterpolatorController \
+#define NI_FLIP_CONTROLLER_INCLUDE "ASingleInterpolatorController.h" \
+
+#define NI_FLIP_CONTROLLER_PARENT ASingleInterpolatorController \
 
 #define NI_FLIP_CONTROLLER_CONSTRUCT \
 
@@ -5758,7 +5944,7 @@ for (uint i0 = 0; i0 < numSources; i0++) { \
 #define NI_FLIP_CONTROLLER_WRITE \
 ASingleInterpolatorController::Write( out, link_map, version ); \
 uint numSources; \
-numSources = uint(numSources.size()); \
+numSources = uint(sources.size()); \
 NifStream( textureSlot, out, version ); \
 if ( version <= 0x0A010000 ) { \
   NifStream( unknownInt2, out, version ); \
@@ -5766,7 +5952,7 @@ if ( version <= 0x0A010000 ) { \
 }; \
 NifStream( numSources, out, version ); \
 for (uint i0 = 0; i0 < numSources; i0++) { \
-  NifStream( link_map[sources[i0]], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(sources[i0])], out, version ); \
 }; \
 
 #define NI_FLIP_CONTROLLER_STRING \
@@ -5786,14 +5972,16 @@ ASingleInterpolatorController::FixLinks( objects, link_stack, version ); \
 if ( version <= 0x0A010000 ) { \
 }; \
 for (uint i0 = 0; i0 < numSources; i0++) { \
-  sources[i0] = blocks[link_stack.front()]; \
+  sources[i0] = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
 #define NI_FLOAT_DATA_MEMBERS \
 KeyGroup<float > data; \
 
-#define NI_FLOAT_DATA_PARENTS AKeyedData \
+#define NI_FLOAT_DATA_INCLUDE "AKeyedData.h" \
+
+#define NI_FLOAT_DATA_PARENT AKeyedData \
 
 #define NI_FLOAT_DATA_CONSTRUCT \
 
@@ -5840,7 +6028,9 @@ for (uint i0 = 0; i0 < data.numKeys; i0++) { \
 #define NI_FLOAT_EXTRA_DATA_MEMBERS \
 float floatData; \
 
-#define NI_FLOAT_EXTRA_DATA_PARENTS NiExtraData \
+#define NI_FLOAT_EXTRA_DATA_INCLUDE "NiExtraData.h" \
+
+#define NI_FLOAT_EXTRA_DATA_PARENT NiExtraData \
 
 #define NI_FLOAT_EXTRA_DATA_CONSTRUCT \
 
@@ -5865,7 +6055,9 @@ NiExtraData::FixLinks( objects, link_stack, version ); \
 Ref<NiObject > unknownLink; \
 string unknownString; \
 
-#define NI_FLOAT_EXTRA_DATA_CONTROLLER_PARENTS NiTimeController \
+#define NI_FLOAT_EXTRA_DATA_CONTROLLER_INCLUDE "NiTimeController.h" \
+
+#define NI_FLOAT_EXTRA_DATA_CONTROLLER_PARENT NiTimeController \
 
 #define NI_FLOAT_EXTRA_DATA_CONTROLLER_CONSTRUCT \
 
@@ -5881,7 +6073,7 @@ if ( version >= 0x14000004 ) { \
 #define NI_FLOAT_EXTRA_DATA_CONTROLLER_WRITE \
 NiTimeController::Write( out, link_map, version ); \
 if ( version >= 0x14000004 ) { \
-  NifStream( link_map[unknownLink], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(unknownLink)], out, version ); \
   NifStream( unknownString, out, version ); \
 }; \
 
@@ -5895,7 +6087,7 @@ return out.str(); \
 #define NI_FLOAT_EXTRA_DATA_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x14000004 ) { \
-  unknownLink = blocks[link_stack.front()]; \
+  unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
@@ -5903,7 +6095,9 @@ if ( version >= 0x14000004 ) { \
 float floatValue; \
 Ref<NiFloatData > data; \
 
-#define NI_FLOAT_INTERPOLATOR_PARENTS AInterpolator \
+#define NI_FLOAT_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+
+#define NI_FLOAT_INTERPOLATOR_PARENT AInterpolator \
 
 #define NI_FLOAT_INTERPOLATOR_CONSTRUCT \
 
@@ -5917,7 +6111,7 @@ link_stack.push_back( block_num ); \
 #define NI_FLOAT_INTERPOLATOR_WRITE \
 AInterpolator::Write( out, link_map, version ); \
 NifStream( floatValue, out, version ); \
-NifStream( link_map[data], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_FLOAT_INTERPOLATOR_STRING \
 stringstream out; \
@@ -5928,13 +6122,15 @@ return out.str(); \
 
 #define NI_FLOAT_INTERPOLATOR_FIXLINKS \
 AInterpolator::FixLinks( objects, link_stack, version ); \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_FLOATS_EXTRA_DATA_MEMBERS \
 vector<float > data; \
 
-#define NI_FLOATS_EXTRA_DATA_PARENTS NiExtraData \
+#define NI_FLOATS_EXTRA_DATA_INCLUDE "NiExtraData.h" \
+
+#define NI_FLOATS_EXTRA_DATA_PARENT NiExtraData \
 
 #define NI_FLOATS_EXTRA_DATA_CONSTRUCT \
 
@@ -5950,7 +6146,7 @@ for (uint i0 = 0; i0 < numFloats; i0++) { \
 #define NI_FLOATS_EXTRA_DATA_WRITE \
 NiExtraData::Write( out, link_map, version ); \
 uint numFloats; \
-numFloats = uint(numFloats.size()); \
+numFloats = uint(data.size()); \
 NifStream( numFloats, out, version ); \
 for (uint i0 = 0; i0 < numFloats; i0++) { \
   NifStream( data[i0], out, version ); \
@@ -5975,7 +6171,9 @@ Flags flags; \
 float fogDepth; \
 Color3 fogColor; \
 
-#define NI_FOG_PROPERTY_PARENTS NiProperty \
+#define NI_FOG_PROPERTY_INCLUDE "NiProperty.h" \
+
+#define NI_FOG_PROPERTY_PARENT NiProperty \
 
 #define NI_FOG_PROPERTY_CONSTRUCT \
 
@@ -6010,7 +6208,9 @@ byte unknownByte; \
 vector<Ref<AInterpolator > > interpolators; \
 vector<uint > unknownInts; \
 
-#define NI_GEOM_MORPHER_CONTROLLER_PARENTS NiTimeController \
+#define NI_GEOM_MORPHER_CONTROLLER_INCLUDE "NiTimeController.h" \
+
+#define NI_GEOM_MORPHER_CONTROLLER_PARENT NiTimeController \
 
 #define NI_GEOM_MORPHER_CONTROLLER_CONSTRUCT \
 
@@ -6047,21 +6247,21 @@ if ( version >= 0x0A020000 ) { \
 #define NI_GEOM_MORPHER_CONTROLLER_WRITE \
 NiTimeController::Write( out, link_map, version ); \
 uint numInterpolators; \
-numInterpolators = uint(numInterpolators.size()); \
+numInterpolators = uint(interpolators.size()); \
 uint numUnknownInts; \
-numUnknownInts = uint(numUnknownInts.size()); \
+numUnknownInts = uint(unknownInts.size()); \
 if ( version >= 0x0A010000 ) { \
   NifStream( unknown, out, version ); \
 }; \
 if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
   NifStream( unknown2, out, version ); \
 }; \
-NifStream( link_map[data], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 NifStream( unknownByte, out, version ); \
 if ( version >= 0x0A01006A ) { \
   NifStream( numInterpolators, out, version ); \
   for (uint i1 = 0; i1 < numInterpolators; i1++) { \
-    NifStream( link_map[interpolators[i1]], out, version ); \
+    NifStream( link_map[StaticCast<NiObject>(interpolators[i1])], out, version ); \
   }; \
 }; \
 if ( version >= 0x0A020000 ) { \
@@ -6094,11 +6294,11 @@ if ( version >= 0x0A010000 ) { \
 }; \
 if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
 }; \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<NiMorphData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 if ( version >= 0x0A01006A ) { \
   for (uint i1 = 0; i1 < numInterpolators; i1++) { \
-    interpolators[i1] = blocks[link_stack.front()]; \
+    interpolators[i1] = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
   }; \
 }; \
@@ -6114,7 +6314,9 @@ uint type; \
 Vector3 position; \
 Vector3 direction; \
 
-#define NI_GRAVITY_PARENTS AParticleModifier \
+#define NI_GRAVITY_INCLUDE "AParticleModifier.h" \
+
+#define NI_GRAVITY_PARENT AParticleModifier \
 
 #define NI_GRAVITY_CONSTRUCT \
 
@@ -6150,7 +6352,9 @@ AParticleModifier::FixLinks( objects, link_stack, version ); \
 #define NI_INTEGER_EXTRA_DATA_MEMBERS \
 uint integerData; \
 
-#define NI_INTEGER_EXTRA_DATA_PARENTS NiExtraData \
+#define NI_INTEGER_EXTRA_DATA_INCLUDE "NiExtraData.h" \
+
+#define NI_INTEGER_EXTRA_DATA_PARENT NiExtraData \
 
 #define NI_INTEGER_EXTRA_DATA_CONSTRUCT \
 
@@ -6174,7 +6378,9 @@ NiExtraData::FixLinks( objects, link_stack, version ); \
 #define NI_INTEGERS_EXTRA_DATA_MEMBERS \
 vector<uint > data; \
 
-#define NI_INTEGERS_EXTRA_DATA_PARENTS NiExtraData \
+#define NI_INTEGERS_EXTRA_DATA_INCLUDE "NiExtraData.h" \
+
+#define NI_INTEGERS_EXTRA_DATA_PARENT NiExtraData \
 
 #define NI_INTEGERS_EXTRA_DATA_CONSTRUCT \
 
@@ -6190,7 +6396,7 @@ for (uint i0 = 0; i0 < numIntegers; i0++) { \
 #define NI_INTEGERS_EXTRA_DATA_WRITE \
 NiExtraData::Write( out, link_map, version ); \
 uint numIntegers; \
-numIntegers = uint(numIntegers.size()); \
+numIntegers = uint(data.size()); \
 NifStream( numIntegers, out, version ); \
 for (uint i0 = 0; i0 < numIntegers; i0++) { \
   NifStream( data[i0], out, version ); \
@@ -6213,7 +6419,9 @@ for (uint i0 = 0; i0 < numIntegers; i0++) { \
 #define NI_KEYFRAME_CONTROLLER_MEMBERS \
 Ref<NiKeyframeData > data; \
 
-#define NI_KEYFRAME_CONTROLLER_PARENTS NiTimeController \
+#define NI_KEYFRAME_CONTROLLER_INCLUDE "NiTimeController.h" \
+
+#define NI_KEYFRAME_CONTROLLER_PARENT NiTimeController \
 
 #define NI_KEYFRAME_CONTROLLER_CONSTRUCT \
 
@@ -6225,7 +6433,7 @@ link_stack.push_back( block_num ); \
 
 #define NI_KEYFRAME_CONTROLLER_WRITE \
 NiTimeController::Write( out, link_map, version ); \
-NifStream( link_map[data], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_KEYFRAME_CONTROLLER_STRING \
 stringstream out; \
@@ -6235,13 +6443,15 @@ return out.str(); \
 
 #define NI_KEYFRAME_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<NiKeyframeData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define B_S_KEYFRAME_CONTROLLER_MEMBERS \
 Ref<NiKeyframeData > data2; \
 
-#define B_S_KEYFRAME_CONTROLLER_PARENTS NiKeyframeController \
+#define B_S_KEYFRAME_CONTROLLER_INCLUDE "NiKeyframeController.h" \
+
+#define B_S_KEYFRAME_CONTROLLER_PARENT NiKeyframeController \
 
 #define B_S_KEYFRAME_CONTROLLER_CONSTRUCT \
 
@@ -6253,7 +6463,7 @@ link_stack.push_back( block_num ); \
 
 #define B_S_KEYFRAME_CONTROLLER_WRITE \
 NiKeyframeController::Write( out, link_map, version ); \
-NifStream( link_map[data2], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data2)], out, version ); \
 
 #define B_S_KEYFRAME_CONTROLLER_STRING \
 stringstream out; \
@@ -6263,7 +6473,7 @@ return out.str(); \
 
 #define B_S_KEYFRAME_CONTROLLER_FIXLINKS \
 NiKeyframeController::FixLinks( objects, link_stack, version ); \
-data2 = blocks[link_stack.front()]; \
+data2 = DynamicCast<NiKeyframeData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_KEYFRAME_DATA_MEMBERS \
@@ -6275,7 +6485,9 @@ vector<KeyGroup<float > > xyzRotations; \
 KeyGroup<Vector3 > translations; \
 KeyGroup<float > scales; \
 
-#define NI_KEYFRAME_DATA_PARENTS AKeyedData \
+#define NI_KEYFRAME_DATA_INCLUDE "AKeyedData.h" \
+
+#define NI_KEYFRAME_DATA_PARENT AKeyedData \
 
 #define NI_KEYFRAME_DATA_CONSTRUCT \
 
@@ -6442,7 +6654,9 @@ ushort unknownShort; \
 Ref<NiPosData > data; \
 Ref<NiPoint3Interpolator > interpolator; \
 
-#define NI_LIGHT_COLOR_CONTROLLER_PARENTS NiTimeController \
+#define NI_LIGHT_COLOR_CONTROLLER_INCLUDE "NiTimeController.h" \
+
+#define NI_LIGHT_COLOR_CONTROLLER_PARENT NiTimeController \
 
 #define NI_LIGHT_COLOR_CONTROLLER_CONSTRUCT \
 
@@ -6468,10 +6682,10 @@ if ( ( version >= 0x0A010000 ) && ( version <= 0x0A010000 ) ) { \
   NifStream( unknownShort, out, version ); \
 }; \
 if ( version <= 0x0A010000 ) { \
-  NifStream( link_map[data], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 }; \
 if ( version >= 0x0A020000 ) { \
-  NifStream( link_map[interpolator], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(interpolator)], out, version ); \
   NifStream( unknownShort, out, version ); \
 }; \
 
@@ -6489,18 +6703,20 @@ NiTimeController::FixLinks( objects, link_stack, version ); \
 if ( ( version >= 0x0A010000 ) && ( version <= 0x0A010000 ) ) { \
 }; \
 if ( version <= 0x0A010000 ) { \
-  data = blocks[link_stack.front()]; \
+  data = DynamicCast<NiPosData>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x0A020000 ) { \
-  interpolator = blocks[link_stack.front()]; \
+  interpolator = DynamicCast<NiPoint3Interpolator>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
 #define NI_LIGHT_DIMMER_CONTROLLER_MEMBERS \
 Ref<AInterpolator > unknownLink; \
 
-#define NI_LIGHT_DIMMER_CONTROLLER_PARENTS NiTimeController \
+#define NI_LIGHT_DIMMER_CONTROLLER_INCLUDE "NiTimeController.h" \
+
+#define NI_LIGHT_DIMMER_CONTROLLER_PARENT NiTimeController \
 
 #define NI_LIGHT_DIMMER_CONTROLLER_CONSTRUCT \
 
@@ -6512,7 +6728,7 @@ link_stack.push_back( block_num ); \
 
 #define NI_LIGHT_DIMMER_CONTROLLER_WRITE \
 NiTimeController::Write( out, link_map, version ); \
-NifStream( link_map[unknownLink], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(unknownLink)], out, version ); \
 
 #define NI_LIGHT_DIMMER_CONTROLLER_STRING \
 stringstream out; \
@@ -6522,14 +6738,16 @@ return out.str(); \
 
 #define NI_LIGHT_DIMMER_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
-unknownLink = blocks[link_stack.front()]; \
+unknownLink = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_LOOK_AT_CONTROLLER_MEMBERS \
 ushort unknown1; \
 Ref<NiNode > lookAtNode; \
 
-#define NI_LOOK_AT_CONTROLLER_PARENTS NiTimeController \
+#define NI_LOOK_AT_CONTROLLER_INCLUDE "NiTimeController.h" \
+
+#define NI_LOOK_AT_CONTROLLER_PARENT NiTimeController \
 
 #define NI_LOOK_AT_CONTROLLER_CONSTRUCT \
 
@@ -6547,7 +6765,7 @@ NiTimeController::Write( out, link_map, version ); \
 if ( version >= 0x0A010000 ) { \
   NifStream( unknown1, out, version ); \
 }; \
-NifStream( link_map[lookAtNode], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(lookAtNode)], out, version ); \
 
 #define NI_LOOK_AT_CONTROLLER_STRING \
 stringstream out; \
@@ -6560,7 +6778,7 @@ return out.str(); \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x0A010000 ) { \
 }; \
-lookAtNode = blocks[link_stack.front()]; \
+lookAtNode = DynamicCast<NiNode>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_LOOK_AT_INTERPOLATOR_MEMBERS \
@@ -6574,7 +6792,9 @@ Ref<NiPoint3Interpolator > unknownLink1; \
 Ref<NiFloatInterpolator > unknownLink2; \
 Ref<NiFloatInterpolator > unknownLink3; \
 
-#define NI_LOOK_AT_INTERPOLATOR_PARENTS AInterpolator \
+#define NI_LOOK_AT_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+
+#define NI_LOOK_AT_INTERPOLATOR_PARENT AInterpolator \
 
 #define NI_LOOK_AT_INTERPOLATOR_CONSTRUCT \
 
@@ -6598,14 +6818,14 @@ link_stack.push_back( block_num ); \
 #define NI_LOOK_AT_INTERPOLATOR_WRITE \
 AInterpolator::Write( out, link_map, version ); \
 NifStream( unknownShort, out, version ); \
-NifStream( link_map[lookAt], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(lookAt)], out, version ); \
 NifStream( unknownFloat, out, version ); \
 NifStream( translation, out, version ); \
 NifStream( rotation, out, version ); \
 NifStream( scale, out, version ); \
-NifStream( link_map[unknownLink1], out, version ); \
-NifStream( link_map[unknownLink2], out, version ); \
-NifStream( link_map[unknownLink3], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(unknownLink1)], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(unknownLink2)], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(unknownLink3)], out, version ); \
 
 #define NI_LOOK_AT_INTERPOLATOR_STRING \
 stringstream out; \
@@ -6623,13 +6843,13 @@ return out.str(); \
 
 #define NI_LOOK_AT_INTERPOLATOR_FIXLINKS \
 AInterpolator::FixLinks( objects, link_stack, version ); \
-lookAt = blocks[link_stack.front()]; \
+lookAt = DynamicCast<NiNode>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
-unknownLink1 = blocks[link_stack.front()]; \
+unknownLink1 = DynamicCast<NiPoint3Interpolator>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
-unknownLink2 = blocks[link_stack.front()]; \
+unknownLink2 = DynamicCast<NiFloatInterpolator>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
-unknownLink3 = blocks[link_stack.front()]; \
+unknownLink3 = DynamicCast<NiFloatInterpolator>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_MATERIAL_COLOR_CONTROLLER_MEMBERS \
@@ -6637,7 +6857,9 @@ ushort unknown; \
 Ref<NiColorData > data; \
 ushort unknownShort; \
 
-#define NI_MATERIAL_COLOR_CONTROLLER_PARENTS NiTimeController \
+#define NI_MATERIAL_COLOR_CONTROLLER_INCLUDE "NiTimeController.h" \
+
+#define NI_MATERIAL_COLOR_CONTROLLER_PARENT NiTimeController \
 
 #define NI_MATERIAL_COLOR_CONTROLLER_CONSTRUCT \
 
@@ -6658,7 +6880,7 @@ NiTimeController::Write( out, link_map, version ); \
 if ( ( version >= 0x0A010000 ) && ( version <= 0x0A010000 ) ) { \
   NifStream( unknown, out, version ); \
 }; \
-NifStream( link_map[data], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 if ( version >= 0x0A020000 ) { \
   NifStream( unknownShort, out, version ); \
 }; \
@@ -6675,7 +6897,7 @@ return out.str(); \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 if ( ( version >= 0x0A010000 ) && ( version <= 0x0A010000 ) ) { \
 }; \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<NiColorData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 if ( version >= 0x0A020000 ) { \
 }; \
@@ -6689,7 +6911,9 @@ Color3 emissiveColor; \
 float glossiness; \
 float alpha; \
 
-#define NI_MATERIAL_PROPERTY_PARENTS NiProperty \
+#define NI_MATERIAL_PROPERTY_INCLUDE "NiProperty.h" \
+
+#define NI_MATERIAL_PROPERTY_PARENT NiProperty \
 
 #define NI_MATERIAL_PROPERTY_CONSTRUCT \
 
@@ -6750,7 +6974,9 @@ uint unknownInt3; \
 uint unknownInt4; \
 Ref<NiNode > unknownLink2; \
 
-#define NI_MESH_P_SYS_DATA_PARENTS APSysData \
+#define NI_MESH_P_SYS_DATA_INCLUDE "APSysData.h" \
+
+#define NI_MESH_P_SYS_DATA_PARENT APSysData \
 
 #define NI_MESH_P_SYS_DATA_CONSTRUCT \
 
@@ -6818,7 +7044,7 @@ if ( version >= 0x0A020000 ) { \
 #define NI_MESH_P_SYS_DATA_WRITE \
 APSysData::Write( out, link_map, version ); \
 uint numUnknownLinks; \
-numUnknownLinks = uint(numUnknownLinks.size()); \
+numUnknownLinks = uint(unknownLinks.size()); \
 if ( version >= 0x14000005 ) { \
   NifStream( unknownByte11, out, version ); \
 }; \
@@ -6843,13 +7069,13 @@ if ( version >= 0x14000005 ) { \
 }; \
 NifStream( unknownInt1, out, version ); \
 if ( version <= 0x14000004 ) { \
-  NifStream( link_map[modifier], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(modifier)], out, version ); \
 }; \
 if ( ( version >= 0x0A020000 ) && ( version <= 0x14000004 ) ) { \
   NifStream( unknownByte2, out, version ); \
   NifStream( numUnknownLinks, out, version ); \
   for (uint i1 = 0; i1 < numUnknownLinks; i1++) { \
-    NifStream( link_map[unknownLinks[i1]], out, version ); \
+    NifStream( link_map[StaticCast<NiObject>(unknownLinks[i1])], out, version ); \
   }; \
 }; \
 if ( version >= 0x14000005 ) { \
@@ -6860,7 +7086,7 @@ if ( version >= 0x14000005 ) { \
   NifStream( unknownInt4, out, version ); \
 }; \
 if ( version >= 0x0A020000 ) { \
-  NifStream( link_map[unknownLink2], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(unknownLink2)], out, version ); \
 }; \
 
 #define NI_MESH_P_SYS_DATA_STRING \
@@ -6918,19 +7144,19 @@ if ( version >= 0x14000005 ) { \
   }; \
 }; \
 if ( version <= 0x14000004 ) { \
-  modifier = blocks[link_stack.front()]; \
+  modifier = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 if ( ( version >= 0x0A020000 ) && ( version <= 0x14000004 ) ) { \
   for (uint i1 = 0; i1 < numUnknownLinks; i1++) { \
-    unknownLinks[i1] = blocks[link_stack.front()]; \
+    unknownLinks[i1] = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
   }; \
 }; \
 if ( version >= 0x14000005 ) { \
 }; \
 if ( version >= 0x0A020000 ) { \
-  unknownLink2 = blocks[link_stack.front()]; \
+  unknownLink2 = DynamicCast<NiNode>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
@@ -6939,7 +7165,9 @@ uint numVertices; \
 byte unknownByte; \
 vector<Morph > morphs; \
 
-#define NI_MORPH_DATA_PARENTS NiObject \
+#define NI_MORPH_DATA_INCLUDE "NiObject.h" \
+
+#define NI_MORPH_DATA_PARENT NiObject \
 
 #define NI_MORPH_DATA_CONSTRUCT \
 
@@ -6973,13 +7201,13 @@ for (uint i0 = 0; i0 < numMorphs; i0++) { \
 #define NI_MORPH_DATA_WRITE \
 NiObject::Write( out, link_map, version ); \
 uint numMorphs; \
-numMorphs = uint(numMorphs.size()); \
+numMorphs = uint(morphs.size()); \
 NifStream( numMorphs, out, version ); \
 NifStream( numVertices, out, version ); \
 NifStream( unknownByte, out, version ); \
 for (uint i0 = 0; i0 < numMorphs; i0++) { \
   uint morphs_numMorphKeys; \
-  morphs_numMorphKeys = uint(morphs[i0].numMorphKeys.size()); \
+  morphs_numMorphKeys = uint(morphs[i0].morphKeys.size()); \
   if ( version >= 0x0A01006A ) { \
     NifStream( morphs[i0].frameName, out, version ); \
   }; \
@@ -7032,7 +7260,9 @@ for (uint i0 = 0; i0 < numMorphs; i0++) { \
 #define NI_MULTI_TARGET_TRANSFORM_CONTROLLER_MEMBERS \
 vector<NiNode * > extraTargets; \
 
-#define NI_MULTI_TARGET_TRANSFORM_CONTROLLER_PARENTS NiTimeController \
+#define NI_MULTI_TARGET_TRANSFORM_CONTROLLER_INCLUDE "NiTimeController.h" \
+
+#define NI_MULTI_TARGET_TRANSFORM_CONTROLLER_PARENT NiTimeController \
 
 #define NI_MULTI_TARGET_TRANSFORM_CONTROLLER_CONSTRUCT \
 
@@ -7049,10 +7279,10 @@ for (uint i0 = 0; i0 < numExtraTargets; i0++) { \
 #define NI_MULTI_TARGET_TRANSFORM_CONTROLLER_WRITE \
 NiTimeController::Write( out, link_map, version ); \
 ushort numExtraTargets; \
-numExtraTargets = ushort(numExtraTargets.size()); \
+numExtraTargets = ushort(extraTargets.size()); \
 NifStream( numExtraTargets, out, version ); \
 for (uint i0 = 0; i0 < numExtraTargets; i0++) { \
-  NifStream( link_map[extraTargets[i0]], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(extraTargets[i0])], out, version ); \
 }; \
 
 #define NI_MULTI_TARGET_TRANSFORM_CONTROLLER_STRING \
@@ -7067,7 +7297,7 @@ return out.str(); \
 #define NI_MULTI_TARGET_TRANSFORM_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 for (uint i0 = 0; i0 < numExtraTargets; i0++) { \
-  extraTargets[i0] = blocks[link_stack.front()]; \
+  extraTargets[i0] = DynamicCast<NiNode>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
@@ -7075,7 +7305,9 @@ for (uint i0 = 0; i0 < numExtraTargets; i0++) { \
 vector<Ref<NiAVObject > > children; \
 vector<Ref<NiDynamicEffect > > effects; \
 
-#define NI_NODE_PARENTS NiAVObject \
+#define NI_NODE_INCLUDE "NiAVObject.h" \
+
+#define NI_NODE_PARENT NiAVObject \
 
 #define NI_NODE_CONSTRUCT \
 
@@ -7100,16 +7332,16 @@ for (uint i0 = 0; i0 < numEffects; i0++) { \
 #define NI_NODE_WRITE \
 NiAVObject::Write( out, link_map, version ); \
 uint numChildren; \
-numChildren = uint(numChildren.size()); \
+numChildren = uint(children.size()); \
 uint numEffects; \
-numEffects = uint(numEffects.size()); \
+numEffects = uint(effects.size()); \
 NifStream( numChildren, out, version ); \
 for (uint i0 = 0; i0 < numChildren; i0++) { \
-  NifStream( link_map[children[i0]], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(children[i0])], out, version ); \
 }; \
 NifStream( numEffects, out, version ); \
 for (uint i0 = 0; i0 < numEffects; i0++) { \
-  NifStream( link_map[effects[i0]], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(effects[i0])], out, version ); \
 }; \
 
 #define NI_NODE_STRING \
@@ -7128,17 +7360,19 @@ return out.str(); \
 #define NI_NODE_FIXLINKS \
 NiAVObject::FixLinks( objects, link_stack, version ); \
 for (uint i0 = 0; i0 < numChildren; i0++) { \
-  children[i0] = blocks[link_stack.front()]; \
+  children[i0] = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 for (uint i0 = 0; i0 < numEffects; i0++) { \
-  effects[i0] = blocks[link_stack.front()]; \
+  effects[i0] = DynamicCast<NiDynamicEffect>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
 #define AVOID_NODE_MEMBERS \
 
-#define AVOID_NODE_PARENTS NiNode \
+#define AVOID_NODE_INCLUDE "NiNode.h" \
+
+#define AVOID_NODE_PARENT NiNode \
 
 #define AVOID_NODE_CONSTRUCT \
 
@@ -7160,7 +7394,9 @@ NiNode::FixLinks( objects, link_stack, version ); \
 byte unknown1; \
 vector<byte > unknown292Bytes; \
 
-#define FX_WIDGET_PARENTS NiNode \
+#define FX_WIDGET_INCLUDE "NiNode.h" \
+
+#define FX_WIDGET_PARENT NiNode \
 
 #define FX_WIDGET_CONSTRUCT \
 
@@ -7195,7 +7431,9 @@ for (uint i0 = 0; i0 < 292; i0++) { \
 
 #define FX_BUTTON_MEMBERS \
 
-#define FX_BUTTON_PARENTS FxWidget \
+#define FX_BUTTON_INCLUDE "FxWidget.h" \
+
+#define FX_BUTTON_PARENT FxWidget \
 
 #define FX_BUTTON_CONSTRUCT \
 
@@ -7219,7 +7457,9 @@ uint unknownInt2; \
 uint unknownInt3; \
 vector<Ref<NiObject > > unknownLinks; \
 
-#define FX_RADIO_BUTTON_PARENTS FxWidget \
+#define FX_RADIO_BUTTON_INCLUDE "FxWidget.h" \
+
+#define FX_RADIO_BUTTON_PARENT FxWidget \
 
 #define FX_RADIO_BUTTON_CONSTRUCT \
 
@@ -7240,13 +7480,13 @@ for (uint i0 = 0; i0 < numUnknownLinks; i0++) { \
 #define FX_RADIO_BUTTON_WRITE \
 FxWidget::Write( out, link_map, version ); \
 uint numUnknownLinks; \
-numUnknownLinks = uint(numUnknownLinks.size()); \
+numUnknownLinks = uint(unknownLinks.size()); \
 NifStream( unknownInt1, out, version ); \
 NifStream( unknownInt2, out, version ); \
 NifStream( unknownInt3, out, version ); \
 NifStream( numUnknownLinks, out, version ); \
 for (uint i0 = 0; i0 < numUnknownLinks; i0++) { \
-  NifStream( link_map[unknownLinks[i0]], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(unknownLinks[i0])], out, version ); \
 }; \
 
 #define FX_RADIO_BUTTON_STRING \
@@ -7264,14 +7504,16 @@ return out.str(); \
 #define FX_RADIO_BUTTON_FIXLINKS \
 FxWidget::FixLinks( objects, link_stack, version ); \
 for (uint i0 = 0; i0 < numUnknownLinks; i0++) { \
-  unknownLinks[i0] = blocks[link_stack.front()]; \
+  unknownLinks[i0] = DynamicCast<NiObject>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
 #define NI_BILLBOARD_NODE_MEMBERS \
 ushort billboardMode; \
 
-#define NI_BILLBOARD_NODE_PARENTS NiNode \
+#define NI_BILLBOARD_NODE_INCLUDE "NiNode.h" \
+
+#define NI_BILLBOARD_NODE_PARENT NiNode \
 
 #define NI_BILLBOARD_NODE_CONSTRUCT \
 
@@ -7300,7 +7542,9 @@ if ( version >= 0x0A010000 ) { \
 
 #define NI_B_S_ANIMATION_NODE_MEMBERS \
 
-#define NI_B_S_ANIMATION_NODE_PARENTS NiNode \
+#define NI_B_S_ANIMATION_NODE_INCLUDE "NiNode.h" \
+
+#define NI_B_S_ANIMATION_NODE_PARENT NiNode \
 
 #define NI_B_S_ANIMATION_NODE_CONSTRUCT \
 
@@ -7320,7 +7564,9 @@ NiNode::FixLinks( objects, link_stack, version ); \
 
 #define NI_B_S_PARTICLE_NODE_MEMBERS \
 
-#define NI_B_S_PARTICLE_NODE_PARENTS NiNode \
+#define NI_B_S_PARTICLE_NODE_INCLUDE "NiNode.h" \
+
+#define NI_B_S_PARTICLE_NODE_PARENT NiNode \
 
 #define NI_B_S_PARTICLE_NODE_CONSTRUCT \
 
@@ -7345,7 +7591,9 @@ vector<LODRange > lodLevels; \
 ushort unknownShort; \
 Ref<NiRangeLODData > rangeData; \
 
-#define NI_L_O_D_NODE_PARENTS NiNode \
+#define NI_L_O_D_NODE_INCLUDE "NiNode.h" \
+
+#define NI_L_O_D_NODE_PARENT NiNode \
 
 #define NI_L_O_D_NODE_CONSTRUCT \
 
@@ -7372,7 +7620,7 @@ if ( lodType == 1 ) { \
 #define NI_L_O_D_NODE_WRITE \
 NiNode::Write( out, link_map, version ); \
 uint numLodLevels; \
-numLodLevels = uint(numLodLevels.size()); \
+numLodLevels = uint(lodLevels.size()); \
 NifStream( lodType, out, version ); \
 if ( lodType == 0 ) { \
   NifStream( lodCenter, out, version ); \
@@ -7384,7 +7632,7 @@ if ( lodType == 0 ) { \
 }; \
 if ( lodType == 1 ) { \
   NifStream( unknownShort, out, version ); \
-  NifStream( link_map[rangeData], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(rangeData)], out, version ); \
 }; \
 
 #define NI_L_O_D_NODE_STRING \
@@ -7412,7 +7660,7 @@ if ( lodType == 0 ) { \
   }; \
 }; \
 if ( lodType == 1 ) { \
-  rangeData = blocks[link_stack.front()]; \
+  rangeData = DynamicCast<NiRangeLODData>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
@@ -7421,7 +7669,9 @@ byte unknownByte; \
 uint numEntries_; \
 vector<vector<byte > > palette; \
 
-#define NI_PALETTE_PARENTS NiObject \
+#define NI_PALETTE_INCLUDE "NiObject.h" \
+
+#define NI_PALETTE_PARENT NiObject \
 
 #define NI_PALETTE_CONSTRUCT \
 
@@ -7481,7 +7731,9 @@ float unknownFloat8; \
 float unknownFloat9; \
 float unknownFloat10; \
 
-#define NI_PARTICLE_BOMB_PARENTS AParticleModifier \
+#define NI_PARTICLE_BOMB_INCLUDE "AParticleModifier.h" \
+
+#define NI_PARTICLE_BOMB_PARENT AParticleModifier \
 
 #define NI_PARTICLE_BOMB_CONSTRUCT \
 
@@ -7538,7 +7790,9 @@ AParticleModifier::FixLinks( objects, link_stack, version ); \
 #define NI_PARTICLE_COLOR_MODIFIER_MEMBERS \
 Ref<NiColorData > colorData; \
 
-#define NI_PARTICLE_COLOR_MODIFIER_PARENTS AParticleModifier \
+#define NI_PARTICLE_COLOR_MODIFIER_INCLUDE "AParticleModifier.h" \
+
+#define NI_PARTICLE_COLOR_MODIFIER_PARENT AParticleModifier \
 
 #define NI_PARTICLE_COLOR_MODIFIER_CONSTRUCT \
 
@@ -7550,7 +7804,7 @@ link_stack.push_back( block_num ); \
 
 #define NI_PARTICLE_COLOR_MODIFIER_WRITE \
 AParticleModifier::Write( out, link_map, version ); \
-NifStream( link_map[colorData], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(colorData)], out, version ); \
 
 #define NI_PARTICLE_COLOR_MODIFIER_STRING \
 stringstream out; \
@@ -7560,14 +7814,16 @@ return out.str(); \
 
 #define NI_PARTICLE_COLOR_MODIFIER_FIXLINKS \
 AParticleModifier::FixLinks( objects, link_stack, version ); \
-colorData = blocks[link_stack.front()]; \
+colorData = DynamicCast<NiColorData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_PARTICLE_GROW_FADE_MEMBERS \
 float grow; \
 float fade; \
 
-#define NI_PARTICLE_GROW_FADE_PARENTS AParticleModifier \
+#define NI_PARTICLE_GROW_FADE_INCLUDE "AParticleModifier.h" \
+
+#define NI_PARTICLE_GROW_FADE_PARENT AParticleModifier \
 
 #define NI_PARTICLE_GROW_FADE_CONSTRUCT \
 
@@ -7595,7 +7851,9 @@ AParticleModifier::FixLinks( objects, link_stack, version ); \
 uint numParticleMeshes; \
 Ref<NiTriBasedGeom > particleMeshes; \
 
-#define NI_PARTICLE_MESH_MODIFIER_PARENTS AParticleModifier \
+#define NI_PARTICLE_MESH_MODIFIER_INCLUDE "AParticleModifier.h" \
+
+#define NI_PARTICLE_MESH_MODIFIER_PARENT AParticleModifier \
 
 #define NI_PARTICLE_MESH_MODIFIER_CONSTRUCT \
 
@@ -7609,7 +7867,7 @@ link_stack.push_back( block_num ); \
 #define NI_PARTICLE_MESH_MODIFIER_WRITE \
 AParticleModifier::Write( out, link_map, version ); \
 NifStream( numParticleMeshes, out, version ); \
-NifStream( link_map[particleMeshes], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(particleMeshes)], out, version ); \
 
 #define NI_PARTICLE_MESH_MODIFIER_STRING \
 stringstream out; \
@@ -7620,7 +7878,7 @@ return out.str(); \
 
 #define NI_PARTICLE_MESH_MODIFIER_FIXLINKS \
 AParticleModifier::FixLinks( objects, link_stack, version ); \
-particleMeshes = blocks[link_stack.front()]; \
+particleMeshes = DynamicCast<NiTriBasedGeom>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_PARTICLE_ROTATION_MEMBERS \
@@ -7630,7 +7888,9 @@ float unknownFloat2; \
 float unknownFloat3; \
 float unknownFloat4; \
 
-#define NI_PARTICLE_ROTATION_PARENTS AParticleModifier \
+#define NI_PARTICLE_ROTATION_INCLUDE "AParticleModifier.h" \
+
+#define NI_PARTICLE_ROTATION_PARENT AParticleModifier \
 
 #define NI_PARTICLE_ROTATION_CONSTRUCT \
 
@@ -7665,7 +7925,9 @@ AParticleModifier::FixLinks( objects, link_stack, version ); \
 
 #define NI_PARTICLES_MEMBERS \
 
-#define NI_PARTICLES_PARENTS NiTriBasedGeom \
+#define NI_PARTICLES_INCLUDE "NiTriBasedGeom.h" \
+
+#define NI_PARTICLES_PARENT NiTriBasedGeom \
 
 #define NI_PARTICLES_CONSTRUCT \
 
@@ -7685,7 +7947,9 @@ NiTriBasedGeom::FixLinks( objects, link_stack, version ); \
 
 #define NI_AUTO_NORMAL_PARTICLES_MEMBERS \
 
-#define NI_AUTO_NORMAL_PARTICLES_PARENTS NiParticles \
+#define NI_AUTO_NORMAL_PARTICLES_INCLUDE "NiParticles.h" \
+
+#define NI_AUTO_NORMAL_PARTICLES_PARENT NiParticles \
 
 #define NI_AUTO_NORMAL_PARTICLES_CONSTRUCT \
 
@@ -7705,7 +7969,9 @@ NiParticles::FixLinks( objects, link_stack, version ); \
 
 #define NI_PARTICLE_MESHES_MEMBERS \
 
-#define NI_PARTICLE_MESHES_PARENTS NiParticles \
+#define NI_PARTICLE_MESHES_INCLUDE "NiParticles.h" \
+
+#define NI_PARTICLE_MESHES_PARENT NiParticles \
 
 #define NI_PARTICLE_MESHES_CONSTRUCT \
 
@@ -7730,7 +7996,9 @@ vector<float > unknownFloats; \
 bool hasRotations; \
 vector<Quaternion > rotations; \
 
-#define NI_PARTICLES_DATA_PARENTS NiAutoNormalParticlesData \
+#define NI_PARTICLES_DATA_INCLUDE "NiAutoNormalParticlesData.h" \
+
+#define NI_PARTICLES_DATA_PARENT NiAutoNormalParticlesData \
 
 #define NI_PARTICLES_DATA_CONSTRUCT \
 
@@ -7806,7 +8074,9 @@ if ( hasRotations != 0 ) { \
 #define NI_PARTICLE_MESHES_DATA_MEMBERS \
 Ref<NiTriBasedGeom > unknownLink2; \
 
-#define NI_PARTICLE_MESHES_DATA_PARENTS NiParticlesData \
+#define NI_PARTICLE_MESHES_DATA_INCLUDE "NiParticlesData.h" \
+
+#define NI_PARTICLE_MESHES_DATA_PARENT NiParticlesData \
 
 #define NI_PARTICLE_MESHES_DATA_CONSTRUCT \
 
@@ -7818,7 +8088,7 @@ link_stack.push_back( block_num ); \
 
 #define NI_PARTICLE_MESHES_DATA_WRITE \
 NiParticlesData::Write( out, link_map, version ); \
-NifStream( link_map[unknownLink2], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(unknownLink2)], out, version ); \
 
 #define NI_PARTICLE_MESHES_DATA_STRING \
 stringstream out; \
@@ -7828,7 +8098,7 @@ return out.str(); \
 
 #define NI_PARTICLE_MESHES_DATA_FIXLINKS \
 NiParticlesData::FixLinks( objects, link_stack, version ); \
-unknownLink2 = blocks[link_stack.front()]; \
+unknownLink2 = DynamicCast<NiTriBasedGeom>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_PARTICLE_SYSTEM_MEMBERS \
@@ -7836,7 +8106,9 @@ bool hasModifiers; \
 uint numModifiers; \
 vector<Ref<AParticleModifier > > modifiers; \
 
-#define NI_PARTICLE_SYSTEM_PARENTS NiParticles \
+#define NI_PARTICLE_SYSTEM_INCLUDE "NiParticles.h" \
+
+#define NI_PARTICLE_SYSTEM_PARENT NiParticles \
 
 #define NI_PARTICLE_SYSTEM_CONSTRUCT \
 
@@ -7862,7 +8134,7 @@ if ( version >= 0x0A010000 ) { \
   if ( hasModifiers != 0 ) { \
     NifStream( numModifiers, out, version ); \
     for (uint i2 = 0; i2 < hasModifiers; i2++) { \
-      NifStream( link_map[modifiers[i2]], out, version ); \
+      NifStream( link_map[StaticCast<NiObject>(modifiers[i2])], out, version ); \
     }; \
   }; \
 }; \
@@ -7884,7 +8156,7 @@ NiParticles::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x0A010000 ) { \
   if ( hasModifiers != 0 ) { \
     for (uint i2 = 0; i2 < hasModifiers; i2++) { \
-      modifiers[i2] = blocks[link_stack.front()]; \
+      modifiers[i2] = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
       link_stack.pop_front(); \
     }; \
   }; \
@@ -7892,7 +8164,9 @@ if ( version >= 0x0A010000 ) { \
 
 #define NI_MESH_PARTICLE_SYSTEM_MEMBERS \
 
-#define NI_MESH_PARTICLE_SYSTEM_PARENTS NiParticleSystem \
+#define NI_MESH_PARTICLE_SYSTEM_INCLUDE "NiParticleSystem.h" \
+
+#define NI_MESH_PARTICLE_SYSTEM_PARENT NiParticleSystem \
 
 #define NI_MESH_PARTICLE_SYSTEM_CONSTRUCT \
 
@@ -7946,7 +8220,9 @@ Ref<AParticleModifier > particleExtra; \
 Ref<NiObject > unknownLink2; \
 byte trailer; \
 
-#define NI_PARTICLE_SYSTEM_CONTROLLER_PARENTS NiTimeController \
+#define NI_PARTICLE_SYSTEM_CONTROLLER_INCLUDE "NiTimeController.h" \
+
+#define NI_PARTICLE_SYSTEM_CONTROLLER_PARENT NiTimeController \
 
 #define NI_PARTICLE_SYSTEM_CONTROLLER_CONSTRUCT \
 
@@ -8006,7 +8282,7 @@ NifStream( trailer, in, version ); \
 #define NI_PARTICLE_SYSTEM_CONTROLLER_WRITE \
 NiTimeController::Write( out, link_map, version ); \
 ushort numParticles; \
-numParticles = ushort(numParticles.size()); \
+numParticles = ushort(particles.size()); \
 NifStream( speed, out, version ); \
 NifStream( speedRandom, out, version ); \
 NifStream( verticalDirection, out, version ); \
@@ -8029,7 +8305,7 @@ NifStream( lifetime, out, version ); \
 NifStream( lifetimeRandom, out, version ); \
 NifStream( emitFlags, out, version ); \
 NifStream( startRandom, out, version ); \
-NifStream( link_map[emitter], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(emitter)], out, version ); \
 NifStream( unknownShort2_, out, version ); \
 NifStream( unknownFloat13_, out, version ); \
 NifStream( unknownInt1_, out, version ); \
@@ -8046,9 +8322,9 @@ for (uint i0 = 0; i0 < numParticles; i0++) { \
   NifStream( particles[i0].unknownShort, out, version ); \
   NifStream( particles[i0].vertexId, out, version ); \
 }; \
-NifStream( link_map[unknownLink], out, version ); \
-NifStream( link_map[particleExtra], out, version ); \
-NifStream( link_map[unknownLink2], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(unknownLink)], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(particleExtra)], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(unknownLink2)], out, version ); \
 NifStream( trailer, out, version ); \
 
 #define NI_PARTICLE_SYSTEM_CONTROLLER_STRING \
@@ -8101,20 +8377,22 @@ return out.str(); \
 
 #define NI_PARTICLE_SYSTEM_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
-emitter = blocks[link_stack.front()]; \
+emitter = DynamicCast<NiObject>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < numParticles; i0++) { \
 }; \
-unknownLink = blocks[link_stack.front()]; \
+unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
-particleExtra = blocks[link_stack.front()]; \
+particleExtra = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
-unknownLink2 = blocks[link_stack.front()]; \
+unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_B_S_P_ARRAY_CONTROLLER_MEMBERS \
 
-#define NI_B_S_P_ARRAY_CONTROLLER_PARENTS NiParticleSystemController \
+#define NI_B_S_P_ARRAY_CONTROLLER_INCLUDE "NiParticleSystemController.h" \
+
+#define NI_B_S_P_ARRAY_CONTROLLER_PARENT NiParticleSystemController \
 
 #define NI_B_S_P_ARRAY_CONTROLLER_CONSTRUCT \
 
@@ -8141,7 +8419,9 @@ ushort unknownShort; \
 Ref<NiPosData > posData; \
 Ref<NiFloatData > floatData; \
 
-#define NI_PATH_CONTROLLER_PARENTS NiTimeController \
+#define NI_PATH_CONTROLLER_INCLUDE "NiTimeController.h" \
+
+#define NI_PATH_CONTROLLER_PARENT NiTimeController \
 
 #define NI_PATH_CONTROLLER_CONSTRUCT \
 
@@ -8169,8 +8449,8 @@ NifStream( unknownInt1, out, version ); \
 NifStream( unknownInt2, out, version ); \
 NifStream( unknownInt3, out, version ); \
 NifStream( unknownShort, out, version ); \
-NifStream( link_map[posData], out, version ); \
-NifStream( link_map[floatData], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(posData)], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(floatData)], out, version ); \
 
 #define NI_PATH_CONTROLLER_STRING \
 stringstream out; \
@@ -8188,9 +8468,9 @@ return out.str(); \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x0A010000 ) { \
 }; \
-posData = blocks[link_stack.front()]; \
+posData = DynamicCast<NiPosData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
-floatData = blocks[link_stack.front()]; \
+floatData = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_PATH_INTERPOLATOR_MEMBERS \
@@ -8200,7 +8480,9 @@ ushort unknownShort2; \
 Ref<NiPosData > posData; \
 Ref<NiFloatData > floatData; \
 
-#define NI_PATH_INTERPOLATOR_PARENTS ABlendInterpolator \
+#define NI_PATH_INTERPOLATOR_INCLUDE "ABlendInterpolator.h" \
+
+#define NI_PATH_INTERPOLATOR_PARENT ABlendInterpolator \
 
 #define NI_PATH_INTERPOLATOR_CONSTRUCT \
 
@@ -8220,8 +8502,8 @@ ABlendInterpolator::Write( out, link_map, version ); \
 NifStream( unknownFloat1, out, version ); \
 NifStream( unknownFloat2, out, version ); \
 NifStream( unknownShort2, out, version ); \
-NifStream( link_map[posData], out, version ); \
-NifStream( link_map[floatData], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(posData)], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(floatData)], out, version ); \
 
 #define NI_PATH_INTERPOLATOR_STRING \
 stringstream out; \
@@ -8235,9 +8517,9 @@ return out.str(); \
 
 #define NI_PATH_INTERPOLATOR_FIXLINKS \
 ABlendInterpolator::FixLinks( objects, link_stack, version ); \
-posData = blocks[link_stack.front()]; \
+posData = DynamicCast<NiPosData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
-floatData = blocks[link_stack.front()]; \
+floatData = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_PIXEL_DATA_MEMBERS \
@@ -8255,7 +8537,9 @@ uint bytesPerPixel; \
 vector<MipMap > mipmaps; \
 ByteArray pixelData; \
 
-#define NI_PIXEL_DATA_PARENTS NiObject \
+#define NI_PIXEL_DATA_INCLUDE "NiObject.h" \
+
+#define NI_PIXEL_DATA_PARENT NiObject \
 
 #define NI_PIXEL_DATA_CONSTRUCT \
 
@@ -8307,7 +8591,7 @@ for (uint i0 = 0; i0 < pixelData_size; i0++) { \
 #define NI_PIXEL_DATA_WRITE \
 NiObject::Write( out, link_map, version ); \
 uint numMipmaps; \
-numMipmaps = uint(numMipmaps.size()); \
+numMipmaps = uint(mipmaps.size()); \
 NifStream( pixelFormat, out, version ); \
 if ( version <= 0x0A020000 ) { \
   NifStream( redMask, out, version ); \
@@ -8327,7 +8611,7 @@ if ( version >= 0x14000004 ) { \
     NifStream( unknown54Bytes[i1], out, version ); \
   }; \
 }; \
-NifStream( link_map[palette], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(palette)], out, version ); \
 NifStream( numMipmaps, out, version ); \
 NifStream( bytesPerPixel, out, version ); \
 for (uint i0 = 0; i0 < numMipmaps; i0++) { \
@@ -8336,7 +8620,7 @@ for (uint i0 = 0; i0 < numMipmaps; i0++) { \
   NifStream( mipmaps[i0].offset, out, version ); \
 }; \
 uint pixelData_size; \
-pixelData_size = uint(pixelData.size.size()); \
+pixelData_size = uint(pixelData.data.size()); \
 NifStream( pixelData_size, out, version ); \
 if ( version >= 0x14000004 ) { \
   NifStream( pixelData.unknownInt, out, version ); \
@@ -8388,7 +8672,7 @@ if ( version >= 0x14000004 ) { \
   for (uint i1 = 0; i1 < 54; i1++) { \
   }; \
 }; \
-palette = blocks[link_stack.front()]; \
+palette = DynamicCast<NiPalette>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < numMipmaps; i0++) { \
 }; \
@@ -8417,7 +8701,9 @@ float unknownFloat14; \
 float unknownFloat15; \
 float unknownFloat16; \
 
-#define NI_PLANAR_COLLIDER_PARENTS AParticleModifier \
+#define NI_PLANAR_COLLIDER_INCLUDE "AParticleModifier.h" \
+
+#define NI_PLANAR_COLLIDER_PARENT AParticleModifier \
 
 #define NI_PLANAR_COLLIDER_CONSTRUCT \
 
@@ -8505,7 +8791,9 @@ if ( ( version >= 0x04020200 ) && ( version <= 0x04020200 ) ) { \
 Vector3 point3Value; \
 Ref<NiPosData > data; \
 
-#define NI_POINT3_INTERPOLATOR_PARENTS AInterpolator \
+#define NI_POINT3_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+
+#define NI_POINT3_INTERPOLATOR_PARENT AInterpolator \
 
 #define NI_POINT3_INTERPOLATOR_CONSTRUCT \
 
@@ -8519,7 +8807,7 @@ link_stack.push_back( block_num ); \
 #define NI_POINT3_INTERPOLATOR_WRITE \
 AInterpolator::Write( out, link_map, version ); \
 NifStream( point3Value, out, version ); \
-NifStream( link_map[data], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_POINT3_INTERPOLATOR_STRING \
 stringstream out; \
@@ -8530,7 +8818,7 @@ return out.str(); \
 
 #define NI_POINT3_INTERPOLATOR_FIXLINKS \
 AInterpolator::FixLinks( objects, link_stack, version ); \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<NiPosData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_POINT_LIGHT_MEMBERS \
@@ -8538,7 +8826,9 @@ float constantAttenuation; \
 float linearAttenuation; \
 float quadraticAttenuation; \
 
-#define NI_POINT_LIGHT_PARENTS NiLight \
+#define NI_POINT_LIGHT_INCLUDE "NiLight.h" \
+
+#define NI_POINT_LIGHT_PARENT NiLight \
 
 #define NI_POINT_LIGHT_CONSTRUCT \
 
@@ -8568,7 +8858,9 @@ NiLight::FixLinks( objects, link_stack, version ); \
 #define NI_POS_DATA_MEMBERS \
 KeyGroup<Vector3 > data; \
 
-#define NI_POS_DATA_PARENTS AKeyedData \
+#define NI_POS_DATA_INCLUDE "AKeyedData.h" \
+
+#define NI_POS_DATA_PARENT AKeyedData \
 
 #define NI_POS_DATA_CONSTRUCT \
 
@@ -8616,7 +8908,9 @@ for (uint i0 = 0; i0 < data.numKeys; i0++) { \
 bool spawnOnDeath; \
 Ref<NiPSysSpawnModifier > spawnModifier; \
 
-#define NI_P_SYS_AGE_DEATH_MODIFIER_PARENTS APSysModifier \
+#define NI_P_SYS_AGE_DEATH_MODIFIER_INCLUDE "APSysModifier.h" \
+
+#define NI_P_SYS_AGE_DEATH_MODIFIER_PARENT APSysModifier \
 
 #define NI_P_SYS_AGE_DEATH_MODIFIER_CONSTRUCT \
 
@@ -8630,7 +8924,7 @@ link_stack.push_back( block_num ); \
 #define NI_P_SYS_AGE_DEATH_MODIFIER_WRITE \
 APSysModifier::Write( out, link_map, version ); \
 NifStream( spawnOnDeath, out, version ); \
-NifStream( link_map[spawnModifier], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(spawnModifier)], out, version ); \
 
 #define NI_P_SYS_AGE_DEATH_MODIFIER_STRING \
 stringstream out; \
@@ -8641,7 +8935,7 @@ return out.str(); \
 
 #define NI_P_SYS_AGE_DEATH_MODIFIER_FIXLINKS \
 APSysModifier::FixLinks( objects, link_stack, version ); \
-spawnModifier = blocks[link_stack.front()]; \
+spawnModifier = DynamicCast<NiPSysSpawnModifier>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_BOMB_MODIFIER_MEMBERS \
@@ -8650,7 +8944,9 @@ vector<uint > unknownInts1; \
 vector<float > unknownFloats; \
 vector<uint > unknownInts2; \
 
-#define NI_P_SYS_BOMB_MODIFIER_PARENTS APSysModifier \
+#define NI_P_SYS_BOMB_MODIFIER_INCLUDE "APSysModifier.h" \
+
+#define NI_P_SYS_BOMB_MODIFIER_PARENT APSysModifier \
 
 #define NI_P_SYS_BOMB_MODIFIER_CONSTRUCT \
 
@@ -8673,7 +8969,7 @@ for (uint i0 = 0; i0 < 2; i0++) { \
 
 #define NI_P_SYS_BOMB_MODIFIER_WRITE \
 APSysModifier::Write( out, link_map, version ); \
-NifStream( link_map[unknownLink], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(unknownLink)], out, version ); \
 for (uint i0 = 0; i0 < 2; i0++) { \
   NifStream( unknownInts1[i0], out, version ); \
 }; \
@@ -8701,7 +8997,7 @@ return out.str(); \
 
 #define NI_P_SYS_BOMB_MODIFIER_FIXLINKS \
 APSysModifier::FixLinks( objects, link_stack, version ); \
-unknownLink = blocks[link_stack.front()]; \
+unknownLink = DynamicCast<NiNode>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < 2; i0++) { \
 }; \
@@ -8713,7 +9009,9 @@ for (uint i0 = 0; i0 < 2; i0++) { \
 #define NI_P_SYS_BOUND_UPDATE_MODIFIER_MEMBERS \
 ushort updateSkip; \
 
-#define NI_P_SYS_BOUND_UPDATE_MODIFIER_PARENTS APSysModifier \
+#define NI_P_SYS_BOUND_UPDATE_MODIFIER_INCLUDE "APSysModifier.h" \
+
+#define NI_P_SYS_BOUND_UPDATE_MODIFIER_PARENT APSysModifier \
 
 #define NI_P_SYS_BOUND_UPDATE_MODIFIER_CONSTRUCT \
 
@@ -8739,7 +9037,9 @@ float width; \
 float height; \
 float depth; \
 
-#define NI_P_SYS_BOX_EMITTER_PARENTS APSysVolumeEmitter \
+#define NI_P_SYS_BOX_EMITTER_INCLUDE "APSysVolumeEmitter.h" \
+
+#define NI_P_SYS_BOX_EMITTER_PARENT APSysVolumeEmitter \
 
 #define NI_P_SYS_BOX_EMITTER_CONSTRUCT \
 
@@ -8769,7 +9069,9 @@ APSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
 #define NI_P_SYS_COLLIDER_MANAGER_MEMBERS \
 Ref<NiPSysPlanarCollider > collider; \
 
-#define NI_P_SYS_COLLIDER_MANAGER_PARENTS APSysModifier \
+#define NI_P_SYS_COLLIDER_MANAGER_INCLUDE "APSysModifier.h" \
+
+#define NI_P_SYS_COLLIDER_MANAGER_PARENT APSysModifier \
 
 #define NI_P_SYS_COLLIDER_MANAGER_CONSTRUCT \
 
@@ -8781,7 +9083,7 @@ link_stack.push_back( block_num ); \
 
 #define NI_P_SYS_COLLIDER_MANAGER_WRITE \
 APSysModifier::Write( out, link_map, version ); \
-NifStream( link_map[collider], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(collider)], out, version ); \
 
 #define NI_P_SYS_COLLIDER_MANAGER_STRING \
 stringstream out; \
@@ -8791,13 +9093,15 @@ return out.str(); \
 
 #define NI_P_SYS_COLLIDER_MANAGER_FIXLINKS \
 APSysModifier::FixLinks( objects, link_stack, version ); \
-collider = blocks[link_stack.front()]; \
+collider = DynamicCast<NiPSysPlanarCollider>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_COLOR_MODIFIER_MEMBERS \
 Ref<NiColorData > data; \
 
-#define NI_P_SYS_COLOR_MODIFIER_PARENTS APSysModifier \
+#define NI_P_SYS_COLOR_MODIFIER_INCLUDE "APSysModifier.h" \
+
+#define NI_P_SYS_COLOR_MODIFIER_PARENT APSysModifier \
 
 #define NI_P_SYS_COLOR_MODIFIER_CONSTRUCT \
 
@@ -8809,7 +9113,7 @@ link_stack.push_back( block_num ); \
 
 #define NI_P_SYS_COLOR_MODIFIER_WRITE \
 APSysModifier::Write( out, link_map, version ); \
-NifStream( link_map[data], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_P_SYS_COLOR_MODIFIER_STRING \
 stringstream out; \
@@ -8819,14 +9123,16 @@ return out.str(); \
 
 #define NI_P_SYS_COLOR_MODIFIER_FIXLINKS \
 APSysModifier::FixLinks( objects, link_stack, version ); \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<NiColorData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_CYLINDER_EMITTER_MEMBERS \
 float radius; \
 float height; \
 
-#define NI_P_SYS_CYLINDER_EMITTER_PARENTS APSysVolumeEmitter \
+#define NI_P_SYS_CYLINDER_EMITTER_INCLUDE "APSysVolumeEmitter.h" \
+
+#define NI_P_SYS_CYLINDER_EMITTER_PARENT APSysVolumeEmitter \
 
 #define NI_P_SYS_CYLINDER_EMITTER_CONSTRUCT \
 
@@ -8860,7 +9166,9 @@ bool unknownBool2; \
 vector<vector<byte > > unknownBytes2; \
 uint unknownInt1; \
 
-#define NI_P_SYS_DATA_PARENTS APSysData \
+#define NI_P_SYS_DATA_INCLUDE "APSysData.h" \
+
+#define NI_P_SYS_DATA_PARENT APSysData \
 
 #define NI_P_SYS_DATA_CONSTRUCT \
 
@@ -9021,7 +9329,9 @@ float percentage; \
 float range; \
 float rangeFalloff; \
 
-#define NI_P_SYS_DRAG_MODIFIER_PARENTS APSysModifier \
+#define NI_P_SYS_DRAG_MODIFIER_INCLUDE "APSysModifier.h" \
+
+#define NI_P_SYS_DRAG_MODIFIER_PARENT APSysModifier \
 
 #define NI_P_SYS_DRAG_MODIFIER_CONSTRUCT \
 
@@ -9036,7 +9346,7 @@ NifStream( rangeFalloff, in, version ); \
 
 #define NI_P_SYS_DRAG_MODIFIER_WRITE \
 APSysModifier::Write( out, link_map, version ); \
-NifStream( link_map[parent], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(parent)], out, version ); \
 NifStream( dragAxis, out, version ); \
 NifStream( percentage, out, version ); \
 NifStream( range, out, version ); \
@@ -9054,13 +9364,15 @@ return out.str(); \
 
 #define NI_P_SYS_DRAG_MODIFIER_FIXLINKS \
 APSysModifier::FixLinks( objects, link_stack, version ); \
-parent = blocks[link_stack.front()]; \
+parent = DynamicCast<NiObject>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_EMITTER_CTLR_MEMBERS \
 Ref<NiPSysData > data; \
 
-#define NI_P_SYS_EMITTER_CTLR_PARENTS APSysCtlr \
+#define NI_P_SYS_EMITTER_CTLR_INCLUDE "APSysCtlr.h" \
+
+#define NI_P_SYS_EMITTER_CTLR_PARENT APSysCtlr \
 
 #define NI_P_SYS_EMITTER_CTLR_CONSTRUCT \
 
@@ -9072,7 +9384,7 @@ link_stack.push_back( block_num ); \
 
 #define NI_P_SYS_EMITTER_CTLR_WRITE \
 APSysCtlr::Write( out, link_map, version ); \
-NifStream( link_map[data], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_P_SYS_EMITTER_CTLR_STRING \
 stringstream out; \
@@ -9082,14 +9394,16 @@ return out.str(); \
 
 #define NI_P_SYS_EMITTER_CTLR_FIXLINKS \
 APSysCtlr::FixLinks( objects, link_stack, version ); \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<NiPSysData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_EMITTER_CTLR_DATA_MEMBERS \
 KeyGroup<float > floatKeys_; \
 vector<Key<byte > > visibilityKeys_; \
 
-#define NI_P_SYS_EMITTER_CTLR_DATA_PARENTS NiObject \
+#define NI_P_SYS_EMITTER_CTLR_DATA_INCLUDE "NiObject.h" \
+
+#define NI_P_SYS_EMITTER_CTLR_DATA_PARENT NiObject \
 
 #define NI_P_SYS_EMITTER_CTLR_DATA_CONSTRUCT \
 
@@ -9113,7 +9427,7 @@ for (uint i0 = 0; i0 < numVisibilityKeys_; i0++) { \
 #define NI_P_SYS_EMITTER_CTLR_DATA_WRITE \
 NiObject::Write( out, link_map, version ); \
 uint numVisibilityKeys_; \
-numVisibilityKeys_ = uint(numVisibilityKeys_.size()); \
+numVisibilityKeys_ = uint(visibilityKeys_.size()); \
 NifStream( floatKeys_.numKeys, out, version ); \
 if ( floatKeys_.numKeys != 0 ) { \
   NifStream( floatKeys_.interpolation, out, version ); \
@@ -9153,7 +9467,9 @@ for (uint i0 = 0; i0 < numVisibilityKeys_; i0++) { \
 
 #define NI_P_SYS_EMITTER_DECLINATION_CTLR_MEMBERS \
 
-#define NI_P_SYS_EMITTER_DECLINATION_CTLR_PARENTS APSysCtlr \
+#define NI_P_SYS_EMITTER_DECLINATION_CTLR_INCLUDE "APSysCtlr.h" \
+
+#define NI_P_SYS_EMITTER_DECLINATION_CTLR_PARENT APSysCtlr \
 
 #define NI_P_SYS_EMITTER_DECLINATION_CTLR_CONSTRUCT \
 
@@ -9173,7 +9489,9 @@ APSysCtlr::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_MEMBERS \
 
-#define NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_PARENTS APSysCtlr \
+#define NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_INCLUDE "APSysCtlr.h" \
+
+#define NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_PARENT APSysCtlr \
 
 #define NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_CONSTRUCT \
 
@@ -9193,7 +9511,9 @@ APSysCtlr::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_MEMBERS \
 
-#define NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_PARENTS APSysCtlr \
+#define NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_INCLUDE "APSysCtlr.h" \
+
+#define NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_PARENT APSysCtlr \
 
 #define NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_CONSTRUCT \
 
@@ -9213,7 +9533,9 @@ APSysCtlr::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_MEMBERS \
 
-#define NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_PARENTS APSysCtlr \
+#define NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_INCLUDE "APSysCtlr.h" \
+
+#define NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_PARENT APSysCtlr \
 
 #define NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_CONSTRUCT \
 
@@ -9233,7 +9555,9 @@ APSysCtlr::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_EMITTER_SPEED_CTLR_MEMBERS \
 
-#define NI_P_SYS_EMITTER_SPEED_CTLR_PARENTS APSysCtlr \
+#define NI_P_SYS_EMITTER_SPEED_CTLR_INCLUDE "APSysCtlr.h" \
+
+#define NI_P_SYS_EMITTER_SPEED_CTLR_PARENT APSysCtlr \
 
 #define NI_P_SYS_EMITTER_SPEED_CTLR_CONSTRUCT \
 
@@ -9260,7 +9584,9 @@ uint forceType; \
 float turbulence; \
 float turbulenceScale; \
 
-#define NI_P_SYS_GRAVITY_MODIFIER_PARENTS APSysModifier \
+#define NI_P_SYS_GRAVITY_MODIFIER_INCLUDE "APSysModifier.h" \
+
+#define NI_P_SYS_GRAVITY_MODIFIER_PARENT APSysModifier \
 
 #define NI_P_SYS_GRAVITY_MODIFIER_CONSTRUCT \
  : turbulenceScale(1.0f) \
@@ -9278,7 +9604,7 @@ NifStream( turbulenceScale, in, version ); \
 
 #define NI_P_SYS_GRAVITY_MODIFIER_WRITE \
 APSysModifier::Write( out, link_map, version ); \
-NifStream( link_map[gravityObject], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(gravityObject)], out, version ); \
 NifStream( gravityAxis, out, version ); \
 NifStream( decay, out, version ); \
 NifStream( strength, out, version ); \
@@ -9300,12 +9626,14 @@ return out.str(); \
 
 #define NI_P_SYS_GRAVITY_MODIFIER_FIXLINKS \
 APSysModifier::FixLinks( objects, link_stack, version ); \
-gravityObject = blocks[link_stack.front()]; \
+gravityObject = DynamicCast<NiNode>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_GRAVITY_STRENGTH_CTLR_MEMBERS \
 
-#define NI_P_SYS_GRAVITY_STRENGTH_CTLR_PARENTS APSysCtlr \
+#define NI_P_SYS_GRAVITY_STRENGTH_CTLR_INCLUDE "APSysCtlr.h" \
+
+#define NI_P_SYS_GRAVITY_STRENGTH_CTLR_PARENT APSysCtlr \
 
 #define NI_P_SYS_GRAVITY_STRENGTH_CTLR_CONSTRUCT \
 
@@ -9329,7 +9657,9 @@ ushort growGeneration; \
 float fadeTime; \
 ushort fadeGeneration; \
 
-#define NI_P_SYS_GROW_FADE_MODIFIER_PARENTS APSysModifier \
+#define NI_P_SYS_GROW_FADE_MODIFIER_INCLUDE "APSysModifier.h" \
+
+#define NI_P_SYS_GROW_FADE_MODIFIER_PARENT APSysModifier \
 
 #define NI_P_SYS_GROW_FADE_MODIFIER_CONSTRUCT \
 
@@ -9365,7 +9695,9 @@ uint initialVelocityType; \
 uint emissionType; \
 Vector3 emissionAxis; \
 
-#define NI_P_SYS_MESH_EMITTER_PARENTS APSysEmitter \
+#define NI_P_SYS_MESH_EMITTER_INCLUDE "APSysEmitter.h" \
+
+#define NI_P_SYS_MESH_EMITTER_PARENT APSysEmitter \
 
 #define NI_P_SYS_MESH_EMITTER_CONSTRUCT \
 
@@ -9386,10 +9718,10 @@ NifStream( emissionAxis, in, version ); \
 #define NI_P_SYS_MESH_EMITTER_WRITE \
 APSysEmitter::Write( out, link_map, version ); \
 uint numEmitterMeshes; \
-numEmitterMeshes = uint(numEmitterMeshes.size()); \
+numEmitterMeshes = uint(emitterMeshes.size()); \
 NifStream( numEmitterMeshes, out, version ); \
 for (uint i0 = 0; i0 < numEmitterMeshes; i0++) { \
-  NifStream( link_map[emitterMeshes[i0]], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(emitterMeshes[i0])], out, version ); \
 }; \
 NifStream( initialVelocityType, out, version ); \
 NifStream( emissionType, out, version ); \
@@ -9410,14 +9742,16 @@ return out.str(); \
 #define NI_P_SYS_MESH_EMITTER_FIXLINKS \
 APSysEmitter::FixLinks( objects, link_stack, version ); \
 for (uint i0 = 0; i0 < numEmitterMeshes; i0++) { \
-  emitterMeshes[i0] = blocks[link_stack.front()]; \
+  emitterMeshes[i0] = DynamicCast<NiTriBasedGeom>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_MEMBERS \
 vector<Ref<NiNode > > meshes; \
 
-#define NI_P_SYS_MESH_UPDATE_MODIFIER_PARENTS APSysModifier \
+#define NI_P_SYS_MESH_UPDATE_MODIFIER_INCLUDE "APSysModifier.h" \
+
+#define NI_P_SYS_MESH_UPDATE_MODIFIER_PARENT APSysModifier \
 
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_CONSTRUCT \
 
@@ -9435,10 +9769,10 @@ for (uint i0 = 0; i0 < numMeshes; i0++) { \
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_WRITE \
 APSysModifier::Write( out, link_map, version ); \
 uint numMeshes; \
-numMeshes = uint(numMeshes.size()); \
+numMeshes = uint(meshes.size()); \
 NifStream( numMeshes, out, version ); \
 for (uint i0 = 0; i0 < numMeshes; i0++) { \
-  NifStream( link_map[meshes[i0]], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(meshes[i0])], out, version ); \
 }; \
 
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_STRING \
@@ -9453,13 +9787,15 @@ return out.str(); \
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_FIXLINKS \
 APSysModifier::FixLinks( objects, link_stack, version ); \
 for (uint i0 = 0; i0 < numMeshes; i0++) { \
-  meshes[i0] = blocks[link_stack.front()]; \
+  meshes[i0] = DynamicCast<NiNode>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
 #define NI_P_SYS_MODIFIER_ACTIVE_CTLR_MEMBERS \
 
-#define NI_P_SYS_MODIFIER_ACTIVE_CTLR_PARENTS APSysCtlr \
+#define NI_P_SYS_MODIFIER_ACTIVE_CTLR_INCLUDE "APSysCtlr.h" \
+
+#define NI_P_SYS_MODIFIER_ACTIVE_CTLR_PARENT APSysCtlr \
 
 #define NI_P_SYS_MODIFIER_ACTIVE_CTLR_CONSTRUCT \
 
@@ -9490,7 +9826,9 @@ float height; \
 Vector3 xAxis; \
 Vector3 yAxis; \
 
-#define NI_P_SYS_PLANAR_COLLIDER_PARENTS NiObject \
+#define NI_P_SYS_PLANAR_COLLIDER_INCLUDE "NiObject.h" \
+
+#define NI_P_SYS_PLANAR_COLLIDER_PARENT NiObject \
 
 #define NI_P_SYS_PLANAR_COLLIDER_CONSTRUCT \
 
@@ -9518,10 +9856,10 @@ NiObject::Write( out, link_map, version ); \
 NifStream( bounce, out, version ); \
 NifStream( spawnOnCollide, out, version ); \
 NifStream( dieOnCollide, out, version ); \
-NifStream( link_map[spawnModifier], out, version ); \
-NifStream( link_map[parent], out, version ); \
-NifStream( link_map[unknownLink_], out, version ); \
-NifStream( link_map[colliderObject], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(spawnModifier)], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(parent)], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(unknownLink_)], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(colliderObject)], out, version ); \
 NifStream( width, out, version ); \
 NifStream( height, out, version ); \
 NifStream( xAxis, out, version ); \
@@ -9545,18 +9883,20 @@ return out.str(); \
 
 #define NI_P_SYS_PLANAR_COLLIDER_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-spawnModifier = blocks[link_stack.front()]; \
+spawnModifier = DynamicCast<NiPSysSpawnModifier>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
-parent = blocks[link_stack.front()]; \
+parent = DynamicCast<NiObject>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
-unknownLink_ = blocks[link_stack.front()]; \
+unknownLink_ = DynamicCast<NiObject>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
-colliderObject = blocks[link_stack.front()]; \
+colliderObject = DynamicCast<NiNode>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_POSITION_MODIFIER_MEMBERS \
 
-#define NI_P_SYS_POSITION_MODIFIER_PARENTS APSysModifier \
+#define NI_P_SYS_POSITION_MODIFIER_INCLUDE "APSysModifier.h" \
+
+#define NI_P_SYS_POSITION_MODIFIER_PARENT APSysModifier \
 
 #define NI_P_SYS_POSITION_MODIFIER_CONSTRUCT \
 
@@ -9576,7 +9916,9 @@ APSysModifier::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_RESET_ON_LOOP_CTLR_MEMBERS \
 
-#define NI_P_SYS_RESET_ON_LOOP_CTLR_PARENTS NiTimeController \
+#define NI_P_SYS_RESET_ON_LOOP_CTLR_INCLUDE "NiTimeController.h" \
+
+#define NI_P_SYS_RESET_ON_LOOP_CTLR_PARENT NiTimeController \
 
 #define NI_P_SYS_RESET_ON_LOOP_CTLR_CONSTRUCT \
 
@@ -9603,7 +9945,9 @@ bool randomRotSpeedSign; \
 bool randomInitialAxis; \
 Vector3 initialAxis; \
 
-#define NI_P_SYS_ROTATION_MODIFIER_PARENTS APSysModifier \
+#define NI_P_SYS_ROTATION_MODIFIER_INCLUDE "APSysModifier.h" \
+
+#define NI_P_SYS_ROTATION_MODIFIER_PARENT APSysModifier \
 
 #define NI_P_SYS_ROTATION_MODIFIER_CONSTRUCT \
 
@@ -9658,7 +10002,9 @@ float spawnDirChaos; \
 float lifeSpan; \
 float lifeSpanVariation; \
 
-#define NI_P_SYS_SPAWN_MODIFIER_PARENTS APSysModifier \
+#define NI_P_SYS_SPAWN_MODIFIER_INCLUDE "APSysModifier.h" \
+
+#define NI_P_SYS_SPAWN_MODIFIER_PARENT APSysModifier \
 
 #define NI_P_SYS_SPAWN_MODIFIER_CONSTRUCT \
 
@@ -9703,7 +10049,9 @@ APSysModifier::FixLinks( objects, link_stack, version ); \
 #define NI_P_SYS_SPHERE_EMITTER_MEMBERS \
 float radius; \
 
-#define NI_P_SYS_SPHERE_EMITTER_PARENTS APSysVolumeEmitter \
+#define NI_P_SYS_SPHERE_EMITTER_INCLUDE "APSysVolumeEmitter.h" \
+
+#define NI_P_SYS_SPHERE_EMITTER_PARENT APSysVolumeEmitter \
 
 #define NI_P_SYS_SPHERE_EMITTER_CONSTRUCT \
 
@@ -9726,7 +10074,9 @@ APSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_UPDATE_CTLR_MEMBERS \
 
-#define NI_P_SYS_UPDATE_CTLR_PARENTS NiTimeController \
+#define NI_P_SYS_UPDATE_CTLR_INCLUDE "NiTimeController.h" \
+
+#define NI_P_SYS_UPDATE_CTLR_PARENT NiTimeController \
 
 #define NI_P_SYS_UPDATE_CTLR_CONSTRUCT \
 
@@ -9748,7 +10098,9 @@ NiTimeController::FixLinks( objects, link_stack, version ); \
 Vector3 lodCenter; \
 vector<LODRange > lodLevels; \
 
-#define NI_RANGE_L_O_D_DATA_PARENTS NiObject \
+#define NI_RANGE_L_O_D_DATA_INCLUDE "NiObject.h" \
+
+#define NI_RANGE_L_O_D_DATA_PARENT NiObject \
 
 #define NI_RANGE_L_O_D_DATA_CONSTRUCT \
 
@@ -9766,7 +10118,7 @@ for (uint i0 = 0; i0 < numLodLevels; i0++) { \
 #define NI_RANGE_L_O_D_DATA_WRITE \
 NiObject::Write( out, link_map, version ); \
 uint numLodLevels; \
-numLodLevels = uint(numLodLevels.size()); \
+numLodLevels = uint(lodLevels.size()); \
 NifStream( lodCenter, out, version ); \
 NifStream( numLodLevels, out, version ); \
 for (uint i0 = 0; i0 < numLodLevels; i0++) { \
@@ -9792,7 +10144,9 @@ for (uint i0 = 0; i0 < numLodLevels; i0++) { \
 
 #define NI_ROTATING_PARTICLES_MEMBERS \
 
-#define NI_ROTATING_PARTICLES_PARENTS NiParticles \
+#define NI_ROTATING_PARTICLES_INCLUDE "NiParticles.h" \
+
+#define NI_ROTATING_PARTICLES_PARENT NiParticles \
 
 #define NI_ROTATING_PARTICLES_CONSTRUCT \
 
@@ -9812,7 +10166,9 @@ NiParticles::FixLinks( objects, link_stack, version ); \
 
 #define NI_ROTATING_PARTICLES_DATA_MEMBERS \
 
-#define NI_ROTATING_PARTICLES_DATA_PARENTS NiParticlesData \
+#define NI_ROTATING_PARTICLES_DATA_INCLUDE "NiParticlesData.h" \
+
+#define NI_ROTATING_PARTICLES_DATA_PARENT NiParticlesData \
 
 #define NI_ROTATING_PARTICLES_DATA_CONSTRUCT \
 
@@ -9834,7 +10190,9 @@ NiParticlesData::FixLinks( objects, link_stack, version ); \
 vector<float > unknownFloats; \
 vector<float > unknownFloats2; \
 
-#define NI_SCREEN_L_O_D_DATA_PARENTS NiObject \
+#define NI_SCREEN_L_O_D_DATA_INCLUDE "NiObject.h" \
+
+#define NI_SCREEN_L_O_D_DATA_PARENT NiObject \
 
 #define NI_SCREEN_L_O_D_DATA_CONSTRUCT \
 
@@ -9854,7 +10212,7 @@ for (uint i0 = 0; i0 < unknownCount; i0++) { \
 #define NI_SCREEN_L_O_D_DATA_WRITE \
 NiObject::Write( out, link_map, version ); \
 uint unknownCount; \
-unknownCount = uint(unknownCount.size()); \
+unknownCount = uint(unknownFloats2.size()); \
 for (uint i0 = 0; i0 < 8; i0++) { \
   NifStream( unknownFloats[i0], out, version ); \
 }; \
@@ -9884,7 +10242,9 @@ for (uint i0 = 0; i0 < unknownCount; i0++) { \
 
 #define NI_SEQUENCE_STREAM_HELPER_MEMBERS \
 
-#define NI_SEQUENCE_STREAM_HELPER_PARENTS NiObjectNET \
+#define NI_SEQUENCE_STREAM_HELPER_INCLUDE "NiObjectNET.h" \
+
+#define NI_SEQUENCE_STREAM_HELPER_PARENT NiObjectNET \
 
 #define NI_SEQUENCE_STREAM_HELPER_CONSTRUCT \
 
@@ -9905,7 +10265,9 @@ NiObjectNET::FixLinks( objects, link_stack, version ); \
 #define NI_SHADE_PROPERTY_MEMBERS \
 Flags flags; \
 
-#define NI_SHADE_PROPERTY_PARENTS NiProperty \
+#define NI_SHADE_PROPERTY_INCLUDE "NiProperty.h" \
+
+#define NI_SHADE_PROPERTY_PARENT NiProperty \
 
 #define NI_SHADE_PROPERTY_CONSTRUCT \
 
@@ -9934,7 +10296,9 @@ Ref<NiSkinPartition > skinPartition; \
 byte unknownByte; \
 vector<SkinData > boneList; \
 
-#define NI_SKIN_DATA_PARENTS NiObject \
+#define NI_SKIN_DATA_INCLUDE "NiObject.h" \
+
+#define NI_SKIN_DATA_PARENT NiObject \
 
 #define NI_SKIN_DATA_CONSTRUCT \
 
@@ -9974,20 +10338,20 @@ for (uint i0 = 0; i0 < numBones; i0++) { \
 #define NI_SKIN_DATA_WRITE \
 NiObject::Write( out, link_map, version ); \
 uint numBones; \
-numBones = uint(numBones.size()); \
+numBones = uint(boneList.size()); \
 NifStream( rotation, out, version ); \
 NifStream( translation, out, version ); \
 NifStream( scale, out, version ); \
 NifStream( numBones, out, version ); \
 if ( version <= 0x0A010000 ) { \
-  NifStream( link_map[skinPartition], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(skinPartition)], out, version ); \
 }; \
 if ( version >= 0x04020100 ) { \
   NifStream( unknownByte, out, version ); \
 }; \
 for (uint i0 = 0; i0 < numBones; i0++) { \
   ushort boneList_numVertices; \
-  boneList_numVertices = ushort(boneList[i0].numVertices.size()); \
+  boneList_numVertices = ushort(boneList[i0].vertexWeights.size()); \
   NifStream( boneList[i0].rotation, out, version ); \
   NifStream( boneList[i0].translation, out, version ); \
   NifStream( boneList[i0].scale, out, version ); \
@@ -10028,7 +10392,7 @@ return out.str(); \
 #define NI_SKIN_DATA_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
 if ( version <= 0x0A010000 ) { \
-  skinPartition = blocks[link_stack.front()]; \
+  skinPartition = DynamicCast<NiSkinPartition>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x04020100 ) { \
@@ -10045,7 +10409,9 @@ Ref<NiSkinData > data; \
 Ref<NiSkinPartition > skinPartition; \
 Bones bones; \
 
-#define NI_SKIN_INSTANCE_PARENTS NiObject \
+#define NI_SKIN_INSTANCE_INCLUDE "NiObject.h" \
+
+#define NI_SKIN_INSTANCE_PARENT NiObject \
 
 #define NI_SKIN_INSTANCE_CONSTRUCT \
 
@@ -10087,23 +10453,25 @@ return out.str(); \
 
 #define NI_SKIN_INSTANCE_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<NiSkinData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 if ( version >= 0x0A020000 ) { \
-  skinPartition = blocks[link_stack.front()]; \
+  skinPartition = DynamicCast<NiSkinPartition>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
-skeletonRoot = blocks[link_stack.front()]; \
+skeletonRoot = DynamicCast<NiNode>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < bones_numBones; i0++) { \
-  bones.bones[i0] = blocks[link_stack.front()]; \
+  bones.bones[i0] = DynamicCast<NiNode>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
 #define NI_SKIN_PARTITION_MEMBERS \
 vector<SkinPartition > skinPartitionBlocks; \
 
-#define NI_SKIN_PARTITION_PARENTS NiObject \
+#define NI_SKIN_PARTITION_INCLUDE "NiObject.h" \
+
+#define NI_SKIN_PARTITION_PARENT NiObject \
 
 #define NI_SKIN_PARTITION_CONSTRUCT \
 
@@ -10218,21 +10586,21 @@ for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
 #define NI_SKIN_PARTITION_WRITE \
 NiObject::Write( out, link_map, version ); \
 uint numSkinPartitionBlocks; \
-numSkinPartitionBlocks = uint(numSkinPartitionBlocks.size()); \
+numSkinPartitionBlocks = uint(skinPartitionBlocks.size()); \
 NifStream( numSkinPartitionBlocks, out, version ); \
 for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
   ushort skinPartitionBlocks_numVertices; \
-  skinPartitionBlocks_numVertices = ushort(skinPartitionBlocks[i0].numVertices.size()); \
+  skinPartitionBlocks_numVertices = ushort(skinPartitionBlocks[i0].vertexMap.size()); \
   ushort skinPartitionBlocks_numTriangles; \
-  skinPartitionBlocks_numTriangles = ushort(skinPartitionBlocks[i0].numTriangles.size()); \
+  skinPartitionBlocks_numTriangles = ushort(skinPartitionBlocks[i0].triangles.size()); \
   ushort skinPartitionBlocks_numBones; \
-  skinPartitionBlocks_numBones = ushort(skinPartitionBlocks[i0].numBones.size()); \
+  skinPartitionBlocks_numBones = ushort(skinPartitionBlocks[i0].bones.size()); \
   ushort skinPartitionBlocks_numWeightsPerVertex; \
-  skinPartitionBlocks_numWeightsPerVertex = ushort(skinPartitionBlocks[i0].numWeightsPerVertex.size()); \
+  skinPartitionBlocks_numWeightsPerVertex = ushort(skinPartitionBlocks[i0].vertexWeights.size()); \
   vector<ushort > skinPartitionBlocks_stripLengths; \
-  skinPartitionBlocks_stripLengths.resize(skinPartitionBlocks[i0].stripLengths.size()); \
-  for (uint i1 = 0; i < skinPartitionBlocks[i0].stripLengths.size(); i++) \
-    skinPartitionBlocks_stripLengths[i1] = ushort(skinPartitionBlocks[i0].stripLengths[i1].size()); \
+  skinPartitionBlocks_stripLengths.resize(skinPartitionBlocks[i0].strips.size()); \
+  for (uint i1 = 0; i < skinPartitionBlocks[i0].strips.size(); i++) \
+    skinPartitionBlocks_stripLengths[i1] = ushort(skinPartitionBlocks[i0].strips[i1].size()); \
   NifStream( skinPartitionBlocks_numVertices, out, version ); \
   NifStream( skinPartitionBlocks_numTriangles, out, version ); \
   NifStream( skinPartitionBlocks_numBones, out, version ); \
@@ -10446,7 +10814,9 @@ AlphaFormat alphaFormat; \
 byte unknownByte; \
 byte unknownByte2; \
 
-#define NI_SOURCE_TEXTURE_PARENTS NiObjectNET \
+#define NI_SOURCE_TEXTURE_INCLUDE "NiObjectNET.h" \
+
+#define NI_SOURCE_TEXTURE_PARENT NiObjectNET \
 
 #define NI_SOURCE_TEXTURE_CONSTRUCT \
  : unknownByte(1), unknownByte2(1) \
@@ -10494,7 +10864,7 @@ if ( textureSource.useExternal == 1 ) { \
 }; \
 if ( version >= 0x0A010000 ) { \
   if ( textureSource.useExternal == 1 ) { \
-    NifStream( link_map[textureSource.unknownLink], out, version ); \
+    NifStream( link_map[StaticCast<NiObject>(textureSource.unknownLink)], out, version ); \
   }; \
 }; \
 if ( version <= 0x0A000100 ) { \
@@ -10508,7 +10878,7 @@ if ( version >= 0x0A010000 ) { \
   }; \
 }; \
 if ( textureSource.useExternal == 0 ) { \
-  NifStream( link_map[textureSource.pixelData], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(textureSource.pixelData)], out, version ); \
 }; \
 NifStream( pixelLayout, out, version ); \
 NifStream( useMipmaps, out, version ); \
@@ -10544,7 +10914,7 @@ if ( textureSource.useExternal == 1 ) { \
 }; \
 if ( version >= 0x0A010000 ) { \
   if ( textureSource.useExternal == 1 ) { \
-    textureSource.unknownLink = blocks[link_stack.front()]; \
+    textureSource.unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
   }; \
 }; \
@@ -10557,7 +10927,7 @@ if ( version >= 0x0A010000 ) { \
   }; \
 }; \
 if ( textureSource.useExternal == 0 ) { \
-  textureSource.pixelData = blocks[link_stack.front()]; \
+  textureSource.pixelData = DynamicCast<NiPixelData>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x0A01006A ) { \
@@ -10566,7 +10936,9 @@ if ( version >= 0x0A01006A ) { \
 #define NI_SPECULAR_PROPERTY_MEMBERS \
 Flags flags; \
 
-#define NI_SPECULAR_PROPERTY_PARENTS NiProperty \
+#define NI_SPECULAR_PROPERTY_INCLUDE "NiProperty.h" \
+
+#define NI_SPECULAR_PROPERTY_PARENT NiProperty \
 
 #define NI_SPECULAR_PROPERTY_CONSTRUCT \
 
@@ -10595,7 +10967,9 @@ float unknownFloat3; \
 float unknownFloat4; \
 float unknownFloat5; \
 
-#define NI_SPHERICAL_COLLIDER_PARENTS AParticleModifier \
+#define NI_SPHERICAL_COLLIDER_INCLUDE "AParticleModifier.h" \
+
+#define NI_SPHERICAL_COLLIDER_PARENT AParticleModifier \
 
 #define NI_SPHERICAL_COLLIDER_CONSTRUCT \
 
@@ -10635,7 +11009,9 @@ AParticleModifier::FixLinks( objects, link_stack, version ); \
 float cutoffAngle; \
 float exponent; \
 
-#define NI_SPOT_LIGHT_PARENTS NiPointLight \
+#define NI_SPOT_LIGHT_INCLUDE "NiPointLight.h" \
+
+#define NI_SPOT_LIGHT_PARENT NiPointLight \
 
 #define NI_SPOT_LIGHT_CONSTRUCT \
 
@@ -10670,7 +11046,9 @@ uint zFailAction; \
 uint passAction; \
 uint drawMode; \
 
-#define NI_STENCIL_PROPERTY_PARENTS NiProperty \
+#define NI_STENCIL_PROPERTY_INCLUDE "NiProperty.h" \
+
+#define NI_STENCIL_PROPERTY_PARENT NiProperty \
 
 #define NI_STENCIL_PROPERTY_CONSTRUCT \
 
@@ -10724,7 +11102,9 @@ if ( version <= 0x0A000102 ) { \
 #define NI_STRING_EXTRA_DATA_MEMBERS \
 string stringData; \
 
-#define NI_STRING_EXTRA_DATA_PARENTS NiExtraData \
+#define NI_STRING_EXTRA_DATA_INCLUDE "NiExtraData.h" \
+
+#define NI_STRING_EXTRA_DATA_PARENT NiExtraData \
 
 #define NI_STRING_EXTRA_DATA_CONSTRUCT \
 
@@ -10755,7 +11135,9 @@ if ( version <= 0x04020200 ) { \
 #define NI_STRING_PALETTE_MEMBERS \
 StringPalette palette; \
 
-#define NI_STRING_PALETTE_PARENTS NiObject \
+#define NI_STRING_PALETTE_INCLUDE "NiObject.h" \
+
+#define NI_STRING_PALETTE_PARENT NiObject \
 
 #define NI_STRING_PALETTE_CONSTRUCT \
 
@@ -10782,7 +11164,9 @@ NiObject::FixLinks( objects, link_stack, version ); \
 #define NI_STRINGS_EXTRA_DATA_MEMBERS \
 vector<string > data; \
 
-#define NI_STRINGS_EXTRA_DATA_PARENTS NiExtraData \
+#define NI_STRINGS_EXTRA_DATA_INCLUDE "NiExtraData.h" \
+
+#define NI_STRINGS_EXTRA_DATA_PARENT NiExtraData \
 
 #define NI_STRINGS_EXTRA_DATA_CONSTRUCT \
 
@@ -10798,7 +11182,7 @@ for (uint i0 = 0; i0 < numStrings; i0++) { \
 #define NI_STRINGS_EXTRA_DATA_WRITE \
 NiExtraData::Write( out, link_map, version ); \
 uint numStrings; \
-numStrings = uint(numStrings.size()); \
+numStrings = uint(data.size()); \
 NifStream( numStrings, out, version ); \
 for (uint i0 = 0; i0 < numStrings; i0++) { \
   NifStream( data[i0], out, version ); \
@@ -10822,7 +11206,9 @@ for (uint i0 = 0; i0 < numStrings; i0++) { \
 uint unknownInt1; \
 vector<Key<string > > textKeys; \
 
-#define NI_TEXT_KEY_EXTRA_DATA_PARENTS NiExtraData \
+#define NI_TEXT_KEY_EXTRA_DATA_INCLUDE "NiExtraData.h" \
+
+#define NI_TEXT_KEY_EXTRA_DATA_PARENT NiExtraData \
 
 #define NI_TEXT_KEY_EXTRA_DATA_CONSTRUCT \
 
@@ -10841,7 +11227,7 @@ for (uint i0 = 0; i0 < numTextKeys; i0++) { \
 #define NI_TEXT_KEY_EXTRA_DATA_WRITE \
 NiExtraData::Write( out, link_map, version ); \
 uint numTextKeys; \
-numTextKeys = uint(numTextKeys.size()); \
+numTextKeys = uint(textKeys.size()); \
 if ( version <= 0x04020200 ) { \
   NifStream( unknownInt1, out, version ); \
 }; \
@@ -10882,7 +11268,9 @@ ushort ps2L; \
 ushort ps2K; \
 ushort unknownShort; \
 
-#define NI_TEXTURE_EFFECT_PARENTS NiDynamicEffect \
+#define NI_TEXTURE_EFFECT_INCLUDE "NiDynamicEffect.h" \
+
+#define NI_TEXTURE_EFFECT_PARENT NiDynamicEffect \
 
 #define NI_TEXTURE_EFFECT_CONSTRUCT \
 
@@ -10916,7 +11304,7 @@ NifStream( textureFiltering, out, version ); \
 NifStream( textureClamping, out, version ); \
 NifStream( textureType, out, version ); \
 NifStream( coordinateGenerationType, out, version ); \
-NifStream( link_map[sourceTexture], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(sourceTexture)], out, version ); \
 NifStream( clippingPlane, out, version ); \
 NifStream( unknownVector, out, version ); \
 NifStream( unknownFloat, out, version ); \
@@ -10948,7 +11336,7 @@ return out.str(); \
 
 #define NI_TEXTURE_EFFECT_FIXLINKS \
 NiDynamicEffect::FixLinks( objects, link_stack, version ); \
-sourceTexture = blocks[link_stack.front()]; \
+sourceTexture = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 if ( version <= 0x0A020000 ) { \
 }; \
@@ -10961,7 +11349,9 @@ uint textureSlot; \
 uint operation; \
 Ref<NiFloatData > data; \
 
-#define NI_TEXTURE_TRANSFORM_CONTROLLER_PARENTS ASingleInterpolatorController \
+#define NI_TEXTURE_TRANSFORM_CONTROLLER_INCLUDE "ASingleInterpolatorController.h" \
+
+#define NI_TEXTURE_TRANSFORM_CONTROLLER_PARENT ASingleInterpolatorController \
 
 #define NI_TEXTURE_TRANSFORM_CONTROLLER_CONSTRUCT \
 
@@ -10982,7 +11372,7 @@ NifStream( unknown2, out, version ); \
 NifStream( textureSlot, out, version ); \
 NifStream( operation, out, version ); \
 if ( version <= 0x0A010000 ) { \
-  NifStream( link_map[data], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 }; \
 
 #define NI_TEXTURE_TRANSFORM_CONTROLLER_STRING \
@@ -10997,7 +11387,7 @@ return out.str(); \
 #define NI_TEXTURE_TRANSFORM_CONTROLLER_FIXLINKS \
 ASingleInterpolatorController::FixLinks( objects, link_stack, version ); \
 if ( version <= 0x0A010000 ) { \
-  data = blocks[link_stack.front()]; \
+  data = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
 }; \
 
@@ -11027,7 +11417,9 @@ TexDesc decal1Texture; \
 uint numShaderTextures; \
 ShaderTexDesc shaderTextures; \
 
-#define NI_TEXTURING_PROPERTY_PARENTS NiProperty \
+#define NI_TEXTURING_PROPERTY_INCLUDE "NiProperty.h" \
+
+#define NI_TEXTURING_PROPERTY_PARENT NiProperty \
 
 #define NI_TEXTURING_PROPERTY_CONSTRUCT \
  : applyMode(2), textureCount(7) \
@@ -11222,7 +11614,7 @@ if ( textureCount == 8 ) { \
   NifStream( hasDecal1Texture, in, version ); \
 }; \
 if ( version >= 0x14000004 ) { \
-  if ( _textureCount == 8) && (Has Decal 1 Texture != 0) ) { \
+  if ( (textureCount == 8) && (hasDecal1Texture != 0) ) { \
     NifStream( block_num, in, version ); \
     link_stack.push_back( block_num ); \
     NifStream( decal1Texture.clampMode, in, version ); \
@@ -11286,7 +11678,7 @@ NifStream( applyMode, out, version ); \
 NifStream( textureCount, out, version ); \
 NifStream( hasBaseTexture, out, version ); \
 if ( hasBaseTexture != 0 ) { \
-  NifStream( link_map[baseTexture.source], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(baseTexture.source)], out, version ); \
   NifStream( baseTexture.clampMode, out, version ); \
   NifStream( baseTexture.filterMode, out, version ); \
   NifStream( baseTexture.textureSet, out, version ); \
@@ -11310,7 +11702,7 @@ if ( hasBaseTexture != 0 ) { \
 }; \
 NifStream( hasDarkTexture, out, version ); \
 if ( hasDarkTexture != 0 ) { \
-  NifStream( link_map[darkTexture.source], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(darkTexture.source)], out, version ); \
   NifStream( darkTexture.clampMode, out, version ); \
   NifStream( darkTexture.filterMode, out, version ); \
   NifStream( darkTexture.textureSet, out, version ); \
@@ -11334,7 +11726,7 @@ if ( hasDarkTexture != 0 ) { \
 }; \
 NifStream( hasDetailTexture, out, version ); \
 if ( hasDetailTexture != 0 ) { \
-  NifStream( link_map[detailTexture.source], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(detailTexture.source)], out, version ); \
   NifStream( detailTexture.clampMode, out, version ); \
   NifStream( detailTexture.filterMode, out, version ); \
   NifStream( detailTexture.textureSet, out, version ); \
@@ -11358,7 +11750,7 @@ if ( hasDetailTexture != 0 ) { \
 }; \
 NifStream( hasGlossTexture, out, version ); \
 if ( hasGlossTexture != 0 ) { \
-  NifStream( link_map[glossTexture.source], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(glossTexture.source)], out, version ); \
   NifStream( glossTexture.clampMode, out, version ); \
   NifStream( glossTexture.filterMode, out, version ); \
   NifStream( glossTexture.textureSet, out, version ); \
@@ -11382,7 +11774,7 @@ if ( hasGlossTexture != 0 ) { \
 }; \
 NifStream( hasGlowTexture, out, version ); \
 if ( hasGlowTexture != 0 ) { \
-  NifStream( link_map[glowTexture.source], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(glowTexture.source)], out, version ); \
   NifStream( glowTexture.clampMode, out, version ); \
   NifStream( glowTexture.filterMode, out, version ); \
   NifStream( glowTexture.textureSet, out, version ); \
@@ -11406,7 +11798,7 @@ if ( hasGlowTexture != 0 ) { \
 }; \
 NifStream( hasBumpMapTexture, out, version ); \
 if ( hasBumpMapTexture != 0 ) { \
-  NifStream( link_map[bumpMapTexture.source], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(bumpMapTexture.source)], out, version ); \
   NifStream( bumpMapTexture.clampMode, out, version ); \
   NifStream( bumpMapTexture.filterMode, out, version ); \
   NifStream( bumpMapTexture.textureSet, out, version ); \
@@ -11433,7 +11825,7 @@ if ( hasBumpMapTexture != 0 ) { \
 }; \
 NifStream( hasDecal0Texture, out, version ); \
 if ( hasDecal0Texture != 0 ) { \
-  NifStream( link_map[decal0Texture.source], out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(decal0Texture.source)], out, version ); \
   NifStream( decal0Texture.clampMode, out, version ); \
   NifStream( decal0Texture.filterMode, out, version ); \
   NifStream( decal0Texture.textureSet, out, version ); \
@@ -11459,8 +11851,8 @@ if ( textureCount == 8 ) { \
   NifStream( hasDecal1Texture, out, version ); \
 }; \
 if ( version >= 0x14000004 ) { \
-  if ( _textureCount == 8) && (Has Decal 1 Texture != 0) ) { \
-    NifStream( link_map[decal1Texture.source], out, version ); \
+  if ( (textureCount == 8) && (hasDecal1Texture != 0) ) { \
+    NifStream( link_map[StaticCast<NiObject>(decal1Texture.source)], out, version ); \
     NifStream( decal1Texture.clampMode, out, version ); \
     NifStream( decal1Texture.filterMode, out, version ); \
     NifStream( decal1Texture.textureSet, out, version ); \
@@ -11487,7 +11879,7 @@ if ( version >= 0x0A000100 ) { \
   NifStream( numShaderTextures, out, version ); \
   NifStream( shaderTextures.isUsed, out, version ); \
   if ( shaderTextures.isUsed != 0 ) { \
-    NifStream( link_map[shaderTextures.textureData.source], out, version ); \
+    NifStream( link_map[StaticCast<NiObject>(shaderTextures.textureData.source)], out, version ); \
     NifStream( shaderTextures.textureData.clampMode, out, version ); \
     NifStream( shaderTextures.textureData.filterMode, out, version ); \
     NifStream( shaderTextures.textureData.textureSet, out, version ); \
@@ -11650,7 +12042,7 @@ if ( hasDecal0Texture != 0 ) { \
 if ( textureCount == 8 ) { \
   out << "  Has Decal 1 Texture:  " << hasDecal1Texture << endl; \
 }; \
-if ( _textureCount == 8) && (Has Decal 1 Texture != 0) ) { \
+if ( (textureCount == 8) && (hasDecal1Texture != 0) ) { \
   out << "  Source:  " << decal1Texture.source << endl; \
   out << "  Clamp Mode:  " << decal1Texture.clampMode << endl; \
   out << "  Filter Mode:  " << decal1Texture.filterMode << endl; \
@@ -11694,7 +12086,7 @@ NiProperty::FixLinks( objects, link_stack, version ); \
 if ( version <= 0x0A000102 ) { \
 }; \
 if ( hasBaseTexture != 0 ) { \
-  baseTexture.source = blocks[link_stack.front()]; \
+  baseTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -11706,7 +12098,7 @@ if ( hasBaseTexture != 0 ) { \
   }; \
 }; \
 if ( hasDarkTexture != 0 ) { \
-  darkTexture.source = blocks[link_stack.front()]; \
+  darkTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -11718,7 +12110,7 @@ if ( hasDarkTexture != 0 ) { \
   }; \
 }; \
 if ( hasDetailTexture != 0 ) { \
-  detailTexture.source = blocks[link_stack.front()]; \
+  detailTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -11730,7 +12122,7 @@ if ( hasDetailTexture != 0 ) { \
   }; \
 }; \
 if ( hasGlossTexture != 0 ) { \
-  glossTexture.source = blocks[link_stack.front()]; \
+  glossTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -11742,7 +12134,7 @@ if ( hasGlossTexture != 0 ) { \
   }; \
 }; \
 if ( hasGlowTexture != 0 ) { \
-  glowTexture.source = blocks[link_stack.front()]; \
+  glowTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -11754,7 +12146,7 @@ if ( hasGlowTexture != 0 ) { \
   }; \
 }; \
 if ( hasBumpMapTexture != 0 ) { \
-  bumpMapTexture.source = blocks[link_stack.front()]; \
+  bumpMapTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -11766,7 +12158,7 @@ if ( hasBumpMapTexture != 0 ) { \
   }; \
 }; \
 if ( hasDecal0Texture != 0 ) { \
-  decal0Texture.source = blocks[link_stack.front()]; \
+  decal0Texture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -11780,8 +12172,8 @@ if ( hasDecal0Texture != 0 ) { \
 if ( textureCount == 8 ) { \
 }; \
 if ( version >= 0x14000004 ) { \
-  if ( _textureCount == 8) && (Has Decal 1 Texture != 0) ) { \
-    decal1Texture.source = blocks[link_stack.front()]; \
+  if ( (textureCount == 8) && (hasDecal1Texture != 0) ) { \
+    decal1Texture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
     if ( version <= 0x0A020000 ) { \
     }; \
@@ -11795,7 +12187,7 @@ if ( version >= 0x14000004 ) { \
 }; \
 if ( version >= 0x0A000100 ) { \
   if ( shaderTextures.isUsed != 0 ) { \
-    shaderTextures.textureData.source = blocks[link_stack.front()]; \
+    shaderTextures.textureData.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
     link_stack.pop_front(); \
     if ( version <= 0x0A020000 ) { \
     }; \
@@ -11810,7 +12202,9 @@ if ( version >= 0x0A000100 ) { \
 
 #define NI_TRANSFORM_CONTROLLER_MEMBERS \
 
-#define NI_TRANSFORM_CONTROLLER_PARENTS ASingleInterpolatorController \
+#define NI_TRANSFORM_CONTROLLER_INCLUDE "ASingleInterpolatorController.h" \
+
+#define NI_TRANSFORM_CONTROLLER_PARENT ASingleInterpolatorController \
 
 #define NI_TRANSFORM_CONTROLLER_CONSTRUCT \
 
@@ -11830,7 +12224,9 @@ ASingleInterpolatorController::FixLinks( objects, link_stack, version ); \
 
 #define NI_TRANSFORM_DATA_MEMBERS \
 
-#define NI_TRANSFORM_DATA_PARENTS NiKeyframeData \
+#define NI_TRANSFORM_DATA_INCLUDE "NiKeyframeData.h" \
+
+#define NI_TRANSFORM_DATA_PARENT NiKeyframeData \
 
 #define NI_TRANSFORM_DATA_CONSTRUCT \
 
@@ -11855,7 +12251,9 @@ float scale; \
 vector<byte > unknownBytes; \
 Ref<NiTransformData > data; \
 
-#define NI_TRANSFORM_INTERPOLATOR_PARENTS AInterpolator \
+#define NI_TRANSFORM_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+
+#define NI_TRANSFORM_INTERPOLATOR_PARENT AInterpolator \
 
 #define NI_TRANSFORM_INTERPOLATOR_CONSTRUCT \
 
@@ -11884,7 +12282,7 @@ if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
     NifStream( unknownBytes[i1], out, version ); \
   }; \
 }; \
-NifStream( link_map[data], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_TRANSFORM_INTERPOLATOR_STRING \
 stringstream out; \
@@ -11904,12 +12302,14 @@ if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
   for (uint i1 = 0; i1 < 3; i1++) { \
   }; \
 }; \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<NiTransformData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_TRI_SHAPE_MEMBERS \
 
-#define NI_TRI_SHAPE_PARENTS NiTriBasedGeom \
+#define NI_TRI_SHAPE_INCLUDE "NiTriBasedGeom.h" \
+
+#define NI_TRI_SHAPE_PARENT NiTriBasedGeom \
 
 #define NI_TRI_SHAPE_CONSTRUCT \
 
@@ -11933,7 +12333,9 @@ bool hasTriangles; \
 vector<Triangle > triangles; \
 vector<MatchGroup > matchGroups; \
 
-#define NI_TRI_SHAPE_DATA_PARENTS TriBasedGeomData \
+#define NI_TRI_SHAPE_DATA_INCLUDE "TriBasedGeomData.h" \
+
+#define NI_TRI_SHAPE_DATA_PARENT TriBasedGeomData \
 
 #define NI_TRI_SHAPE_DATA_CONSTRUCT \
 
@@ -11974,9 +12376,9 @@ for (uint i0 = 0; i0 < numMatchGroups; i0++) { \
 #define NI_TRI_SHAPE_DATA_WRITE \
 TriBasedGeomData::Write( out, link_map, version ); \
 ushort numTriangles; \
-numTriangles = ushort(numTriangles.size()); \
+numTriangles = ushort(triangles.size()); \
 ushort numMatchGroups; \
-numMatchGroups = ushort(numMatchGroups.size()); \
+numMatchGroups = ushort(matchGroups.size()); \
 NifStream( numTriangles, out, version ); \
 NifStream( numTrianglePoints, out, version ); \
 if ( version >= 0x0A010000 ) { \
@@ -11997,7 +12399,7 @@ if ( version >= 0x0A010000 ) { \
 NifStream( numMatchGroups, out, version ); \
 for (uint i0 = 0; i0 < numMatchGroups; i0++) { \
   ushort matchGroups_numVertices; \
-  matchGroups_numVertices = ushort(matchGroups[i0].numVertices.size()); \
+  matchGroups_numVertices = ushort(matchGroups[i0].vertexIndices.size()); \
   NifStream( matchGroups_numVertices, out, version ); \
   for (uint i1 = 0; i1 < matchGroups_numVertices; i1++) { \
     NifStream( matchGroups[i0].vertexIndices[i1], out, version ); \
@@ -12048,7 +12450,9 @@ for (uint i0 = 0; i0 < numMatchGroups; i0++) { \
 
 #define NI_TRI_STRIPS_MEMBERS \
 
-#define NI_TRI_STRIPS_PARENTS NiTriBasedGeom \
+#define NI_TRI_STRIPS_INCLUDE "NiTriBasedGeom.h" \
+
+#define NI_TRI_STRIPS_PARENT NiTriBasedGeom \
 
 #define NI_TRI_STRIPS_CONSTRUCT \
 
@@ -12071,7 +12475,9 @@ ushort numTriangles; \
 bool hasPoints; \
 vector<vector<ushort > > points; \
 
-#define NI_TRI_STRIPS_DATA_PARENTS TriBasedGeomData \
+#define NI_TRI_STRIPS_DATA_INCLUDE "TriBasedGeomData.h" \
+
+#define NI_TRI_STRIPS_DATA_PARENT TriBasedGeomData \
 
 #define NI_TRI_STRIPS_DATA_CONSTRUCT \
 
@@ -12114,11 +12520,11 @@ if ( version >= 0x0A010000 ) { \
 #define NI_TRI_STRIPS_DATA_WRITE \
 TriBasedGeomData::Write( out, link_map, version ); \
 ushort numStrips; \
-numStrips = ushort(numStrips.size()); \
+numStrips = ushort(stripLengths.size()); \
 vector<ushort > stripLengths; \
-stripLengths.resize(stripLengths.size()); \
-for (uint i0 = 0; i < stripLengths.size(); i++) \
-  stripLengths[i0] = ushort(stripLengths[i0].size()); \
+stripLengths.resize(points.size()); \
+for (uint i0 = 0; i < points.size(); i++) \
+  stripLengths[i0] = ushort(points[i0].size()); \
 NifStream( numTriangles, out, version ); \
 NifStream( numStrips, out, version ); \
 for (uint i0 = 0; i0 < numStrips; i0++) { \
@@ -12192,7 +12598,9 @@ if ( version >= 0x0A010000 ) { \
 ushort unknownShort; \
 Ref<NiUVData > data; \
 
-#define NI_U_V_CONTROLLER_PARENTS NiTimeController \
+#define NI_U_V_CONTROLLER_INCLUDE "NiTimeController.h" \
+
+#define NI_U_V_CONTROLLER_PARENT NiTimeController \
 
 #define NI_U_V_CONTROLLER_CONSTRUCT \
 
@@ -12206,7 +12614,7 @@ link_stack.push_back( block_num ); \
 #define NI_U_V_CONTROLLER_WRITE \
 NiTimeController::Write( out, link_map, version ); \
 NifStream( unknownShort, out, version ); \
-NifStream( link_map[data], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_U_V_CONTROLLER_STRING \
 stringstream out; \
@@ -12217,13 +12625,15 @@ return out.str(); \
 
 #define NI_U_V_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<NiUVData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_U_V_DATA_MEMBERS \
 vector<KeyGroup<float > > uvGroups; \
 
-#define NI_U_V_DATA_PARENTS NiObject \
+#define NI_U_V_DATA_INCLUDE "NiObject.h" \
+
+#define NI_U_V_DATA_PARENT NiObject \
 
 #define NI_U_V_DATA_CONSTRUCT \
 
@@ -12280,7 +12690,9 @@ for (uint i0 = 0; i0 < 4; i0++) { \
 Vector3 vectorData; \
 float unknownFloat; \
 
-#define NI_VECTOR_EXTRA_DATA_PARENTS NiExtraData \
+#define NI_VECTOR_EXTRA_DATA_INCLUDE "NiExtraData.h" \
+
+#define NI_VECTOR_EXTRA_DATA_PARENT NiExtraData \
 
 #define NI_VECTOR_EXTRA_DATA_CONSTRUCT \
 
@@ -12309,7 +12721,9 @@ Flags flags; \
 VertMode vertexMode; \
 LightMode lightingMode; \
 
-#define NI_VERTEX_COLOR_PROPERTY_PARENTS NiProperty \
+#define NI_VERTEX_COLOR_PROPERTY_INCLUDE "NiProperty.h" \
+
+#define NI_VERTEX_COLOR_PROPERTY_PARENT NiProperty \
 
 #define NI_VERTEX_COLOR_PROPERTY_CONSTRUCT \
 
@@ -12340,7 +12754,9 @@ NiProperty::FixLinks( objects, link_stack, version ); \
 uint numBytes; \
 vector<float > weight; \
 
-#define NI_VERT_WEIGHTS_EXTRA_DATA_PARENTS NiExtraData \
+#define NI_VERT_WEIGHTS_EXTRA_DATA_INCLUDE "NiExtraData.h" \
+
+#define NI_VERT_WEIGHTS_EXTRA_DATA_PARENT NiExtraData \
 
 #define NI_VERT_WEIGHTS_EXTRA_DATA_CONSTRUCT \
 
@@ -12357,7 +12773,7 @@ for (uint i0 = 0; i0 < numVertices; i0++) { \
 #define NI_VERT_WEIGHTS_EXTRA_DATA_WRITE \
 NiExtraData::Write( out, link_map, version ); \
 ushort numVertices; \
-numVertices = ushort(numVertices.size()); \
+numVertices = ushort(weight.size()); \
 NifStream( numBytes, out, version ); \
 NifStream( numVertices, out, version ); \
 for (uint i0 = 0; i0 < numVertices; i0++) { \
@@ -12382,7 +12798,9 @@ for (uint i0 = 0; i0 < numVertices; i0++) { \
 #define NI_VIS_CONTROLLER_MEMBERS \
 Ref<NiVisData > data; \
 
-#define NI_VIS_CONTROLLER_PARENTS NiTimeController \
+#define NI_VIS_CONTROLLER_INCLUDE "NiTimeController.h" \
+
+#define NI_VIS_CONTROLLER_PARENT NiTimeController \
 
 #define NI_VIS_CONTROLLER_CONSTRUCT \
 
@@ -12394,7 +12812,7 @@ link_stack.push_back( block_num ); \
 
 #define NI_VIS_CONTROLLER_WRITE \
 NiTimeController::Write( out, link_map, version ); \
-NifStream( link_map[data], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_VIS_CONTROLLER_STRING \
 stringstream out; \
@@ -12404,13 +12822,15 @@ return out.str(); \
 
 #define NI_VIS_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
-data = blocks[link_stack.front()]; \
+data = DynamicCast<NiVisData>(objects[link_stack.front()]); \
 link_stack.pop_front(); \
 
 #define NI_VIS_DATA_MEMBERS \
 vector<Key<byte > > visKeys; \
 
-#define NI_VIS_DATA_PARENTS AKeyedData \
+#define NI_VIS_DATA_INCLUDE "AKeyedData.h" \
+
+#define NI_VIS_DATA_PARENT AKeyedData \
 
 #define NI_VIS_DATA_CONSTRUCT \
 
@@ -12426,7 +12846,7 @@ for (uint i0 = 0; i0 < numVisKeys; i0++) { \
 #define NI_VIS_DATA_WRITE \
 AKeyedData::Write( out, link_map, version ); \
 uint numVisKeys; \
-numVisKeys = uint(numVisKeys.size()); \
+numVisKeys = uint(visKeys.size()); \
 NifStream( numVisKeys, out, version ); \
 for (uint i0 = 0; i0 < numVisKeys; i0++) { \
   NifStream( visKeys[i0], out, version ); \
@@ -12449,7 +12869,9 @@ for (uint i0 = 0; i0 < numVisKeys; i0++) { \
 #define NI_WIREFRAME_PROPERTY_MEMBERS \
 Flags flags; \
 
-#define NI_WIREFRAME_PROPERTY_PARENTS NiProperty \
+#define NI_WIREFRAME_PROPERTY_INCLUDE "NiProperty.h" \
+
+#define NI_WIREFRAME_PROPERTY_PARENT NiProperty \
 
 #define NI_WIREFRAME_PROPERTY_CONSTRUCT \
 
@@ -12474,7 +12896,9 @@ NiProperty::FixLinks( objects, link_stack, version ); \
 Flags flags; \
 uint function; \
 
-#define NI_Z_BUFFER_PROPERTY_PARENTS NiProperty \
+#define NI_Z_BUFFER_PROPERTY_INCLUDE "NiProperty.h" \
+
+#define NI_Z_BUFFER_PROPERTY_PARENT NiProperty \
 
 #define NI_Z_BUFFER_PROPERTY_CONSTRUCT \
  : flags(3), function(3) \
@@ -12507,7 +12931,9 @@ if ( version >= 0x0401000C ) { \
 
 #define ROOT_COLLISION_NODE_MEMBERS \
 
-#define ROOT_COLLISION_NODE_PARENTS NiNode \
+#define ROOT_COLLISION_NODE_INCLUDE "NiNode.h" \
+
+#define ROOT_COLLISION_NODE_PARENT NiNode \
 
 #define ROOT_COLLISION_NODE_CONSTRUCT \