From f6a67a56212eb4cea5fd04c89c4c4463d163ea89 Mon Sep 17 00:00:00 2001
From: Shon Ferguson <shonferg@users.sourceforge.net>
Date: Mon, 29 May 2006 16:31:47 +0000
Subject: [PATCH] Added the new templates in so the latest xml_extract.h would
 work.

---
 niflib.vcproj                              |   84 +-
 obj/ABoneLODController.cpp                 |   12 +-
 obj/ABoneLODController.h                   |   23 +-
 obj/AKeyedData.cpp                         |   12 +-
 obj/AKeyedData.h                           |   23 +-
 obj/APSysCtlr.cpp                          |   12 +-
 obj/APSysCtlr.h                            |   23 +-
 obj/APSysData.cpp                          |   17 +-
 obj/APSysData.h                            |   23 +-
 obj/AParticleModifier.cpp                  |   14 +-
 obj/AParticleModifier.h                    |   23 +-
 obj/AbhkConstraint.cpp                     |   12 +-
 obj/AbhkConstraint.h                       |   23 +-
 obj/AbhkRagdollConstraint.cpp              |   12 +-
 obj/AbhkRagdollConstraint.h                |   23 +-
 obj/AbhkShapeCollection.cpp                |   12 +-
 obj/AbhkShapeCollection.h                  |   23 +-
 obj/AvoidNode.cpp                          |   12 +-
 obj/AvoidNode.h                            |   23 +-
 obj/BSBound.cpp                            |   12 +-
 obj/BSBound.h                              |   23 +-
 obj/BSFurnitureMarker.cpp                  |   12 +-
 obj/BSFurnitureMarker.h                    |   23 +-
 obj/BSKeyframeController.cpp               |   12 +-
 obj/BSKeyframeController.h                 |   23 +-
 obj/BSPSysArrayEmitter.cpp                 |   12 +-
 obj/BSPSysArrayEmitter.h                   |   23 +-
 obj/BSParentVelocityModifier.cpp           |   12 +-
 obj/BSParentVelocityModifier.h             |   23 +-
 obj/BSXFlags.cpp                           |   12 +-
 obj/BSXFlags.h                             |   23 +-
 obj/FxButton.cpp                           |   12 +-
 obj/FxButton.h                             |   23 +-
 obj/FxRadioButton.cpp                      |   13 +-
 obj/FxRadioButton.h                        |   23 +-
 obj/FxWidget.cpp                           |   12 +-
 obj/FxWidget.h                             |   23 +-
 obj/NiAlphaController.cpp                  |   12 +-
 obj/NiAlphaController.h                    |   23 +-
 obj/NiAlphaProperty.cpp                    |   12 +-
 obj/NiAlphaProperty.h                      |   23 +-
 obj/NiAmbientLight.cpp                     |   12 +-
 obj/NiAmbientLight.h                       |   23 +-
 obj/NiAutoNormalParticles.cpp              |   12 +-
 obj/NiAutoNormalParticles.h                |   23 +-
 obj/NiAutoNormalParticlesData.cpp          |   12 +-
 obj/NiAutoNormalParticlesData.h            |   23 +-
 obj/NiBSAnimationNode.cpp                  |   12 +-
 obj/NiBSAnimationNode.h                    |   23 +-
 obj/NiBSBoneLODController.cpp              |   12 +-
 obj/NiBSBoneLODController.h                |   23 +-
 obj/NiBSPArrayController.cpp               |   12 +-
 obj/NiBSPArrayController.h                 |   23 +-
 obj/NiBSParticleNode.cpp                   |   12 +-
 obj/NiBSParticleNode.h                     |   23 +-
 obj/NiBSplineBasisData.cpp                 |   12 +-
 obj/NiBSplineBasisData.h                   |   23 +-
 obj/NiBSplineCompFloatInterpolator.cpp     |   12 +-
 obj/NiBSplineCompFloatInterpolator.h       |   23 +-
 obj/NiBSplineCompPoint3Interpolator.cpp    |   13 +-
 obj/NiBSplineCompPoint3Interpolator.h      |   23 +-
 obj/NiBSplineCompTransformInterpolator.cpp |   12 +-
 obj/NiBSplineCompTransformInterpolator.h   |   23 +-
 obj/NiBSplineData.cpp                      |   12 +-
 obj/NiBSplineData.h                        |   23 +-
 obj/NiBillboardNode.cpp                    |   12 +-
 obj/NiBillboardNode.h                      |   23 +-
 obj/NiBinaryExtraData.cpp                  |   12 +-
 obj/NiBinaryExtraData.h                    |   23 +-
 obj/NiBlendBoolInterpolator.cpp            |   12 +-
 obj/NiBlendBoolInterpolator.h              |   23 +-
 obj/NiBlendFloatInterpolator.cpp           |   12 +-
 obj/NiBlendFloatInterpolator.h             |   23 +-
 obj/NiBlendInterpolator.cpp                |   32 +
 obj/NiBlendInterpolator.h                  |   32 +
 obj/NiBlendPoint3Interpolator.cpp          |   12 +-
 obj/NiBlendPoint3Interpolator.h            |   23 +-
 obj/NiBlendTransformInterpolator.cpp       |   12 +-
 obj/NiBlendTransformInterpolator.h         |   23 +-
 obj/NiBoneLODController.cpp                |   13 +-
 obj/NiBoneLODController.h                  |   23 +-
 obj/NiBoolData.cpp                         |   12 +-
 obj/NiBoolData.h                           |   23 +-
 obj/NiBoolInterpolator.cpp                 |   12 +-
 obj/NiBoolInterpolator.h                   |   23 +-
 obj/NiBoolTimelineInterpolator.cpp         |   12 +-
 obj/NiBoolTimelineInterpolator.h           |   23 +-
 obj/NiBooleanExtraData.cpp                 |   12 +-
 obj/NiBooleanExtraData.h                   |   23 +-
 obj/NiCamera.cpp                           |   13 +-
 obj/NiCamera.h                             |   23 +-
 obj/NiCollisionData.cpp                    |   12 +-
 obj/NiCollisionData.h                      |   23 +-
 obj/NiCollisionObject.cpp                  |   16 +-
 obj/NiCollisionObject.h                    |   27 +-
 obj/NiColorData.cpp                        |   12 +-
 obj/NiColorData.h                          |   23 +-
 obj/NiColorExtraData.cpp                   |   12 +-
 obj/NiColorExtraData.h                     |   23 +-
 obj/NiControllerManager.cpp                |   12 +-
 obj/NiControllerManager.h                  |   23 +-
 obj/NiControllerSequence.cpp               |   18 +-
 obj/NiControllerSequence.h                 |   26 +-
 obj/NiDefaultAVObjectPalette.cpp           |   12 +-
 obj/NiDefaultAVObjectPalette.h             |   23 +-
 obj/NiDirectionalLight.cpp                 |   12 +-
 obj/NiDirectionalLight.h                   |   23 +-
 obj/NiDitherProperty.cpp                   |   12 +-
 obj/NiDitherProperty.h                     |   23 +-
 obj/NiDynamicEffect.cpp                    |   13 +-
 obj/NiDynamicEffect.h                      |   23 +-
 obj/NiExtraData.cpp                        |   13 +-
 obj/NiExtraData.h                          |   23 +-
 obj/NiFlipController.cpp                   |   12 +-
 obj/NiFlipController.h                     |   23 +-
 obj/NiFloatData.cpp                        |   12 +-
 obj/NiFloatData.h                          |   23 +-
 obj/NiFloatExtraData.cpp                   |   12 +-
 obj/NiFloatExtraData.h                     |   23 +-
 obj/NiFloatExtraDataController.cpp         |   13 +-
 obj/NiFloatExtraDataController.h           |   23 +-
 obj/NiFloatInterpolator.cpp                |   12 +-
 obj/NiFloatInterpolator.h                  |   23 +-
 obj/NiFloatsExtraData.cpp                  |   12 +-
 obj/NiFloatsExtraData.h                    |   23 +-
 obj/NiFogProperty.cpp                      |   12 +-
 obj/NiFogProperty.h                        |   23 +-
 obj/NiGeomMorpherController.cpp            |   14 +-
 obj/NiGeomMorpherController.h              |   23 +-
 obj/NiGravity.cpp                          |   12 +-
 obj/NiGravity.h                            |   23 +-
 obj/NiIntegerExtraData.cpp                 |   12 +-
 obj/NiIntegerExtraData.h                   |   23 +-
 obj/NiIntegersExtraData.cpp                |   12 +-
 obj/NiIntegersExtraData.h                  |   23 +-
 obj/NiInterpolator.cpp                     |   32 +
 obj/NiInterpolator.h                       |   32 +
 obj/NiKeyframeController.cpp               |   12 +-
 obj/NiKeyframeController.h                 |   23 +-
 obj/NiKeyframeData.cpp                     |   12 +-
 obj/NiKeyframeData.h                       |   23 +-
 obj/NiLODNode.cpp                          |   12 +-
 obj/NiLODNode.h                            |   23 +-
 obj/NiLight.cpp                            |   12 +-
 obj/NiLight.h                              |   23 +-
 obj/NiLightColorController.cpp             |   12 +-
 obj/NiLightColorController.h               |   23 +-
 obj/NiLightDimmerController.cpp            |   14 +-
 obj/NiLightDimmerController.h              |   23 +-
 obj/NiLookAtController.cpp                 |   12 +-
 obj/NiLookAtController.h                   |   23 +-
 obj/NiLookAtInterpolator.cpp               |   13 +-
 obj/NiLookAtInterpolator.h                 |   23 +-
 obj/NiMaterialColorController.cpp          |   14 +-
 obj/NiMaterialColorController.h            |   23 +-
 obj/NiMaterialProperty.cpp                 |   12 +-
 obj/NiMaterialProperty.h                   |   23 +-
 obj/NiMeshPSysData.cpp                     |   13 +-
 obj/NiMeshPSysData.h                       |   23 +-
 obj/NiMeshParticleSystem.cpp               |   12 +-
 obj/NiMeshParticleSystem.h                 |   23 +-
 obj/NiMorphData.cpp                        |   12 +-
 obj/NiMorphData.h                          |   23 +-
 obj/NiMultiTargetTransformController.cpp   |   12 +-
 obj/NiMultiTargetTransformController.h     |   23 +-
 obj/NiNode.cpp                             |   14 +-
 obj/NiNode.h                               |   28 +-
 obj/NiPSysAgeDeathModifier.cpp             |   12 +-
 obj/NiPSysAgeDeathModifier.h               |   23 +-
 obj/NiPSysBombModifier.cpp                 |   12 +-
 obj/NiPSysBombModifier.h                   |   23 +-
 obj/NiPSysBoundUpdateModifier.cpp          |   12 +-
 obj/NiPSysBoundUpdateModifier.h            |   23 +-
 obj/NiPSysBoxEmitter.cpp                   |   12 +-
 obj/NiPSysBoxEmitter.h                     |   23 +-
 obj/NiPSysColliderManager.cpp              |   12 +-
 obj/NiPSysColliderManager.h                |   23 +-
 obj/NiPSysColorModifier.cpp                |   13 +-
 obj/NiPSysColorModifier.h                  |   23 +-
 obj/NiPSysCylinderEmitter.cpp              |   12 +-
 obj/NiPSysCylinderEmitter.h                |   23 +-
 obj/NiPSysData.cpp                         |   12 +-
 obj/NiPSysData.h                           |   23 +-
 obj/NiPSysDragModifier.cpp                 |   13 +-
 obj/NiPSysDragModifier.h                   |   23 +-
 obj/NiPSysEmitter.cpp                      |   32 +
 obj/NiPSysEmitter.h                        |   32 +
 obj/NiPSysEmitterCtlr.cpp                  |   15 +-
 obj/NiPSysEmitterCtlr.h                    |   23 +-
 obj/NiPSysEmitterCtlrData.cpp              |   12 +-
 obj/NiPSysEmitterCtlrData.h                |   23 +-
 obj/NiPSysEmitterDeclinationCtlr.cpp       |   12 +-
 obj/NiPSysEmitterDeclinationCtlr.h         |   23 +-
 obj/NiPSysEmitterDeclinationVarCtlr.cpp    |   12 +-
 obj/NiPSysEmitterDeclinationVarCtlr.h      |   23 +-
 obj/NiPSysEmitterInitialRadiusCtlr.cpp     |   12 +-
 obj/NiPSysEmitterInitialRadiusCtlr.h       |   23 +-
 obj/NiPSysEmitterLifeSpanCtlr.cpp          |   12 +-
 obj/NiPSysEmitterLifeSpanCtlr.h            |   23 +-
 obj/NiPSysEmitterSpeedCtlr.cpp             |   12 +-
 obj/NiPSysEmitterSpeedCtlr.h               |   23 +-
 obj/NiPSysGravityModifier.cpp              |   12 +-
 obj/NiPSysGravityModifier.h                |   23 +-
 obj/NiPSysGravityStrengthCtlr.cpp          |   12 +-
 obj/NiPSysGravityStrengthCtlr.h            |   23 +-
 obj/NiPSysGrowFadeModifier.cpp             |   12 +-
 obj/NiPSysGrowFadeModifier.h               |   23 +-
 obj/NiPSysMeshEmitter.cpp                  |   12 +-
 obj/NiPSysMeshEmitter.h                    |   23 +-
 obj/NiPSysMeshUpdateModifier.cpp           |   12 +-
 obj/NiPSysMeshUpdateModifier.h             |   23 +-
 obj/NiPSysModifier.cpp                     |   33 +
 obj/NiPSysModifier.h                       |   32 +
 obj/NiPSysModifierActiveCtlr.cpp           |   12 +-
 obj/NiPSysModifierActiveCtlr.h             |   23 +-
 obj/NiPSysPlanarCollider.cpp               |   14 +-
 obj/NiPSysPlanarCollider.h                 |   23 +-
 obj/NiPSysPositionModifier.cpp             |   12 +-
 obj/NiPSysPositionModifier.h               |   23 +-
 obj/NiPSysResetOnLoopCtlr.cpp              |   12 +-
 obj/NiPSysResetOnLoopCtlr.h                |   23 +-
 obj/NiPSysRotationModifier.cpp             |   12 +-
 obj/NiPSysRotationModifier.h               |   23 +-
 obj/NiPSysSpawnModifier.cpp                |   12 +-
 obj/NiPSysSpawnModifier.h                  |   23 +-
 obj/NiPSysSphereEmitter.cpp                |   12 +-
 obj/NiPSysSphereEmitter.h                  |   23 +-
 obj/NiPSysUpdateCtlr.cpp                   |   12 +-
 obj/NiPSysUpdateCtlr.h                     |   23 +-
 obj/NiPSysVolumeEmitter.cpp                |   33 +
 obj/NiPSysVolumeEmitter.h                  |   32 +
 obj/NiPalette.cpp                          |   12 +-
 obj/NiPalette.h                            |   23 +-
 obj/NiParticleBomb.cpp                     |   12 +-
 obj/NiParticleBomb.h                       |   23 +-
 obj/NiParticleColorModifier.cpp            |   12 +-
 obj/NiParticleColorModifier.h              |   23 +-
 obj/NiParticleGrowFade.cpp                 |   12 +-
 obj/NiParticleGrowFade.h                   |   23 +-
 obj/NiParticleMeshModifier.cpp             |   12 +-
 obj/NiParticleMeshModifier.h               |   23 +-
 obj/NiParticleMeshes.cpp                   |   12 +-
 obj/NiParticleMeshes.h                     |   23 +-
 obj/NiParticleMeshesData.cpp               |   12 +-
 obj/NiParticleMeshesData.h                 |   23 +-
 obj/NiParticleRotation.cpp                 |   12 +-
 obj/NiParticleRotation.h                   |   23 +-
 obj/NiParticleSystem.cpp                   |   15 +-
 obj/NiParticleSystem.h                     |   23 +-
 obj/NiParticleSystemController.cpp         |   15 +-
 obj/NiParticleSystemController.h           |   23 +-
 obj/NiParticles.cpp                        |   12 +-
 obj/NiParticles.h                          |   23 +-
 obj/NiParticlesData.cpp                    |   12 +-
 obj/NiParticlesData.h                      |   23 +-
 obj/NiPathController.cpp                   |   12 +-
 obj/NiPathController.h                     |   23 +-
 obj/NiPathInterpolator.cpp                 |   12 +-
 obj/NiPathInterpolator.h                   |   23 +-
 obj/NiPixelData.cpp                        |   12 +-
 obj/NiPixelData.h                          |   23 +-
 obj/NiPlanarCollider.cpp                   |   12 +-
 obj/NiPlanarCollider.h                     |   23 +-
 obj/NiPoint3Interpolator.cpp               |   12 +-
 obj/NiPoint3Interpolator.h                 |   23 +-
 obj/NiPointLight.cpp                       |   12 +-
 obj/NiPointLight.h                         |   23 +-
 obj/NiPosData.cpp                          |   12 +-
 obj/NiPosData.h                            |   23 +-
 obj/NiProperty.cpp                         |   12 +-
 obj/NiProperty.h                           |   23 +-
 obj/NiRangeLODData.cpp                     |   12 +-
 obj/NiRangeLODData.h                       |   23 +-
 obj/NiRotatingParticles.cpp                |   12 +-
 obj/NiRotatingParticles.h                  |   23 +-
 obj/NiRotatingParticlesData.cpp            |   12 +-
 obj/NiRotatingParticlesData.h              |   23 +-
 obj/NiScreenLODData.cpp                    |   12 +-
 obj/NiScreenLODData.h                      |   23 +-
 obj/NiSequenceStreamHelper.cpp             |   12 +-
 obj/NiSequenceStreamHelper.h               |   23 +-
 obj/NiShadeProperty.cpp                    |   12 +-
 obj/NiShadeProperty.h                      |   23 +-
 obj/NiSingleInterpolatorController.cpp     |   14 +-
 obj/NiSingleInterpolatorController.h       |   23 +-
 obj/NiSkinData.cpp                         |   12 +-
 obj/NiSkinData.h                           |   23 +-
 obj/NiSkinInstance.cpp                     |   13 +-
 obj/NiSkinInstance.h                       |   26 +-
 obj/NiSkinPartition.cpp                    |   12 +-
 obj/NiSkinPartition.h                      |   23 +-
 obj/NiSourceTexture.cpp                    |   13 +-
 obj/NiSourceTexture.h                      |   23 +-
 obj/NiSpecularProperty.cpp                 |   12 +-
 obj/NiSpecularProperty.h                   |   23 +-
 obj/NiSphericalCollider.cpp                |   12 +-
 obj/NiSphericalCollider.h                  |   23 +-
 obj/NiSpotLight.cpp                        |   12 +-
 obj/NiSpotLight.h                          |   23 +-
 obj/NiStencilProperty.cpp                  |   12 +-
 obj/NiStencilProperty.h                    |   23 +-
 obj/NiStringExtraData.cpp                  |   13 +-
 obj/NiStringExtraData.h                    |   26 +-
 obj/NiStringPalette.cpp                    |   12 +-
 obj/NiStringPalette.h                      |   23 +-
 obj/NiStringsExtraData.cpp                 |   12 +-
 obj/NiStringsExtraData.h                   |   23 +-
 obj/NiTextKeyExtraData.cpp                 |   12 +-
 obj/NiTextKeyExtraData.h                   |   23 +-
 obj/NiTextureEffect.cpp                    |   12 +-
 obj/NiTextureEffect.h                      |   23 +-
 obj/NiTextureTransformController.cpp       |   12 +-
 obj/NiTextureTransformController.h         |   23 +-
 obj/NiTexturingProperty.cpp                |   20 +-
 obj/NiTexturingProperty.h                  |   23 +-
 obj/NiTimeController.cpp                   |   14 +-
 obj/NiTimeController.h                     |   23 +-
 obj/NiTransformController.cpp              |   12 +-
 obj/NiTransformController.h                |   23 +-
 obj/NiTransformData.cpp                    |   12 +-
 obj/NiTransformData.h                      |   23 +-
 obj/NiTransformInterpolator.cpp            |   12 +-
 obj/NiTransformInterpolator.h              |   23 +-
 obj/NiTriBasedGeom.cpp                     |   15 +-
 obj/NiTriBasedGeom.h                       |   26 +-
 obj/NiTriBasedGeomData.cpp                 |   35 +
 obj/NiTriBasedGeomData.h                   |   34 +
 obj/NiTriShape.cpp                         |   12 +-
 obj/NiTriShape.h                           |   23 +-
 obj/NiTriShapeData.cpp                     |   12 +-
 obj/NiTriShapeData.h                       |   23 +-
 obj/NiTriStrips.cpp                        |   12 +-
 obj/NiTriStrips.h                          |   23 +-
 obj/NiTriStripsData.cpp                    |   12 +-
 obj/NiTriStripsData.h                      |   23 +-
 obj/NiUVController.cpp                     |   12 +-
 obj/NiUVController.h                       |   23 +-
 obj/NiUVData.cpp                           |   12 +-
 obj/NiUVData.h                             |   23 +-
 obj/NiVectorExtraData.cpp                  |   12 +-
 obj/NiVectorExtraData.h                    |   23 +-
 obj/NiVertWeightsExtraData.cpp             |   12 +-
 obj/NiVertWeightsExtraData.h               |   23 +-
 obj/NiVertexColorProperty.cpp              |   12 +-
 obj/NiVertexColorProperty.h                |   23 +-
 obj/NiVisController.cpp                    |   12 +-
 obj/NiVisController.h                      |   23 +-
 obj/NiVisData.cpp                          |   12 +-
 obj/NiVisData.h                            |   23 +-
 obj/NiWireframeProperty.cpp                |   12 +-
 obj/NiWireframeProperty.h                  |   23 +-
 obj/NiZBufferProperty.cpp                  |   12 +-
 obj/NiZBufferProperty.h                    |   23 +-
 obj/RootCollisionNode.cpp                  |   12 +-
 obj/RootCollisionNode.h                    |   23 +-
 obj/bhkBlendCollisionObject.cpp            |   12 +-
 obj/bhkBlendCollisionObject.h              |   23 +-
 obj/bhkBlendController.cpp                 |   12 +-
 obj/bhkBlendController.h                   |   23 +-
 obj/bhkBoxShape.cpp                        |   12 +-
 obj/bhkBoxShape.h                          |   23 +-
 obj/bhkCapsuleShape.cpp                    |   12 +-
 obj/bhkCapsuleShape.h                      |   23 +-
 obj/bhkCollisionObject.cpp                 |   12 +-
 obj/bhkCollisionObject.h                   |   23 +-
 obj/bhkConvexShape.cpp                     |   12 +-
 obj/bhkConvexShape.h                       |   23 +-
 obj/bhkConvexTransformShape.cpp            |   12 +-
 obj/bhkConvexTransformShape.h              |   23 +-
 obj/bhkConvexVerticesShape.cpp             |   12 +-
 obj/bhkConvexVerticesShape.h               |   23 +-
 obj/bhkEntity.cpp                          |   14 +-
 obj/bhkEntity.h                            |   23 +-
 obj/bhkHingeConstraint.cpp                 |   12 +-
 obj/bhkHingeConstraint.h                   |   23 +-
 obj/bhkLimitedHingeConstraint.cpp          |   12 +-
 obj/bhkLimitedHingeConstraint.h            |   23 +-
 obj/bhkListShape.cpp                       |   14 +-
 obj/bhkListShape.h                         |   23 +-
 obj/bhkMalleableConstraint.cpp             |   14 +-
 obj/bhkMalleableConstraint.h               |   23 +-
 obj/bhkMoppBvTreeShape.cpp                 |   13 +-
 obj/bhkMoppBvTreeShape.h                   |   23 +-
 obj/bhkMultiSphereShape.cpp                |   12 +-
 obj/bhkMultiSphereShape.h                  |   23 +-
 obj/bhkNiTriStripsShape.cpp                |   12 +-
 obj/bhkNiTriStripsShape.h                  |   23 +-
 obj/bhkPackedNiTriStripsShape.cpp          |   13 +-
 obj/bhkPackedNiTriStripsShape.h            |   23 +-
 obj/bhkPrismaticConstraint.cpp             |   12 +-
 obj/bhkPrismaticConstraint.h               |   23 +-
 obj/bhkRagdollConstraint.cpp               |   12 +-
 obj/bhkRagdollConstraint.h                 |   23 +-
 obj/bhkRefObject.cpp                       |   12 +-
 obj/bhkRefObject.h                         |   23 +-
 obj/bhkRigidBody.cpp                       |   12 +-
 obj/bhkRigidBody.h                         |   23 +-
 obj/bhkRigidBodyT.cpp                      |   12 +-
 obj/bhkRigidBodyT.h                        |   23 +-
 obj/bhkSPCollisionObject.cpp               |   12 +-
 obj/bhkSPCollisionObject.h                 |   23 +-
 obj/bhkSerializable.cpp                    |   12 +-
 obj/bhkSerializable.h                      |   23 +-
 obj/bhkShape.cpp                           |   12 +-
 obj/bhkShape.h                             |   23 +-
 obj/bhkSimpleShapePhantom.cpp              |   12 +-
 obj/bhkSimpleShapePhantom.h                |   23 +-
 obj/bhkSphereRepShape.cpp                  |   12 +-
 obj/bhkSphereRepShape.h                    |   23 +-
 obj/bhkSphereShape.cpp                     |   12 +-
 obj/bhkSphereShape.h                       |   23 +-
 obj/bhkStiffSpringConstraint.cpp           |   12 +-
 obj/bhkStiffSpringConstraint.h             |   23 +-
 obj/bhkTransformShape.cpp                  |   12 +-
 obj/bhkTransformShape.h                    |   23 +-
 obj/bhkWorldObject.cpp                     |   12 +-
 obj/bhkWorldObject.h                       |   23 +-
 obj/hkPackedNiTriStripsData.cpp            |   12 +-
 obj/hkPackedNiTriStripsData.h              |   23 +-
 xml_extract.h                              | 1719 ++++++++++++--------
 420 files changed, 5619 insertions(+), 3774 deletions(-)
 create mode 100644 obj/NiBlendInterpolator.cpp
 create mode 100644 obj/NiBlendInterpolator.h
 create mode 100644 obj/NiInterpolator.cpp
 create mode 100644 obj/NiInterpolator.h
 create mode 100644 obj/NiPSysEmitter.cpp
 create mode 100644 obj/NiPSysEmitter.h
 create mode 100644 obj/NiPSysModifier.cpp
 create mode 100644 obj/NiPSysModifier.h
 create mode 100644 obj/NiPSysVolumeEmitter.cpp
 create mode 100644 obj/NiPSysVolumeEmitter.h
 create mode 100644 obj/NiTriBasedGeomData.cpp
 create mode 100644 obj/NiTriBasedGeomData.h

diff --git a/niflib.vcproj b/niflib.vcproj
index 5208b888..b97b4fea 100644
--- a/niflib.vcproj
+++ b/niflib.vcproj
@@ -164,18 +164,9 @@
 				<File
 					RelativePath=".\obj\AbhkShapeCollection.cpp">
 				</File>
-				<File
-					RelativePath=".\obj\ABlendInterpolator.cpp">
-				</File>
 				<File
 					RelativePath=".\obj\ABoneLODController.cpp">
 				</File>
-				<File
-					RelativePath=".\obj\ABSplineCompInterpolator.cpp">
-				</File>
-				<File
-					RelativePath=".\obj\AInterpolator.cpp">
-				</File>
 				<File
 					RelativePath=".\obj\AKeyedData.cpp">
 				</File>
@@ -188,15 +179,6 @@
 				<File
 					RelativePath=".\obj\APSysData.cpp">
 				</File>
-				<File
-					RelativePath=".\obj\APSysEmitter.cpp">
-				</File>
-				<File
-					RelativePath=".\obj\APSysModifier.cpp">
-				</File>
-				<File
-					RelativePath=".\obj\APSysVolumeEmitter.cpp">
-				</File>
 				<File
 					RelativePath=".\obj\AvoidNode.cpp">
 				</File>
@@ -353,6 +335,9 @@
 				<File
 					RelativePath=".\obj\NiBlendFloatInterpolator.cpp">
 				</File>
+				<File
+					RelativePath=".\obj\NiBlendInterpolator.cpp">
+				</File>
 				<File
 					RelativePath=".\obj\NiBlendPoint3Interpolator.cpp">
 				</File>
@@ -401,6 +386,9 @@
 				<File
 					RelativePath=".\obj\NiBSplineData.cpp">
 				</File>
+				<File
+					RelativePath=".\obj\NiBSplineInterpolator.cpp">
+				</File>
 				<File
 					RelativePath=".\obj\NiCamera.cpp">
 				</File>
@@ -470,6 +458,9 @@
 				<File
 					RelativePath=".\obj\NiIntegersExtraData.cpp">
 				</File>
+				<File
+					RelativePath=".\obj\NiInterpolator.cpp">
+				</File>
 				<File
 					RelativePath=".\obj\NiKeyframeController.cpp">
 				</File>
@@ -608,6 +599,9 @@
 				<File
 					RelativePath=".\obj\NiPSysDragModifier.cpp">
 				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitter.cpp">
+				</File>
 				<File
 					RelativePath=".\obj\NiPSysEmitterCtlr.cpp">
 				</File>
@@ -644,6 +638,9 @@
 				<File
 					RelativePath=".\obj\NiPSysMeshUpdateModifier.cpp">
 				</File>
+				<File
+					RelativePath=".\obj\NiPSysModifier.cpp">
+				</File>
 				<File
 					RelativePath=".\obj\NiPSysModifierActiveCtlr.cpp">
 				</File>
@@ -668,6 +665,9 @@
 				<File
 					RelativePath=".\obj\NiPSysUpdateCtlr.cpp">
 				</File>
+				<File
+					RelativePath=".\obj\NiPSysVolumeEmitter.cpp">
+				</File>
 				<File
 					RelativePath=".\obj\NiRangeLODData.cpp">
 				</File>
@@ -749,6 +749,9 @@
 				<File
 					RelativePath=".\obj\NiTriBasedGeom.cpp">
 				</File>
+				<File
+					RelativePath=".\obj\NiTriBasedGeomData.cpp">
+				</File>
 				<File
 					RelativePath=".\obj\NiTriShape.cpp">
 				</File>
@@ -791,9 +794,6 @@
 				<File
 					RelativePath=".\obj\RootCollisionNode.cpp">
 				</File>
-				<File
-					RelativePath=".\obj\TriBasedGeomData.cpp">
-				</File>
 				<File
 					RelativePath=".\obj\Type.cpp">
 				</File>
@@ -827,18 +827,9 @@
 				<File
 					RelativePath=".\obj\AbhkShapeCollection.h">
 				</File>
-				<File
-					RelativePath=".\obj\ABlendInterpolator.h">
-				</File>
 				<File
 					RelativePath=".\obj\ABoneLODController.h">
 				</File>
-				<File
-					RelativePath=".\obj\ABSplineCompInterpolator.h">
-				</File>
-				<File
-					RelativePath=".\obj\AInterpolator.h">
-				</File>
 				<File
 					RelativePath=".\obj\AKeyedData.h">
 				</File>
@@ -851,15 +842,6 @@
 				<File
 					RelativePath=".\obj\APSysData.h">
 				</File>
-				<File
-					RelativePath=".\obj\APSysEmitter.h">
-				</File>
-				<File
-					RelativePath=".\obj\APSysModifier.h">
-				</File>
-				<File
-					RelativePath=".\obj\APSysVolumeEmitter.h">
-				</File>
 				<File
 					RelativePath=".\obj\AvoidNode.h">
 				</File>
@@ -1016,6 +998,9 @@
 				<File
 					RelativePath=".\obj\NiBlendFloatInterpolator.h">
 				</File>
+				<File
+					RelativePath=".\obj\NiBlendInterpolator.h">
+				</File>
 				<File
 					RelativePath=".\obj\NiBlendPoint3Interpolator.h">
 				</File>
@@ -1064,6 +1049,9 @@
 				<File
 					RelativePath=".\obj\NiBSplineData.h">
 				</File>
+				<File
+					RelativePath=".\obj\NiBSplineInterpolator.h">
+				</File>
 				<File
 					RelativePath=".\obj\NiCamera.h">
 				</File>
@@ -1133,6 +1121,9 @@
 				<File
 					RelativePath=".\obj\NiIntegersExtraData.h">
 				</File>
+				<File
+					RelativePath=".\obj\NiInterpolator.h">
+				</File>
 				<File
 					RelativePath=".\obj\NiKeyframeController.h">
 				</File>
@@ -1271,6 +1262,9 @@
 				<File
 					RelativePath=".\obj\NiPSysDragModifier.h">
 				</File>
+				<File
+					RelativePath=".\obj\NiPSysEmitter.h">
+				</File>
 				<File
 					RelativePath=".\obj\NiPSysEmitterCtlr.h">
 				</File>
@@ -1307,6 +1301,9 @@
 				<File
 					RelativePath=".\obj\NiPSysMeshUpdateModifier.h">
 				</File>
+				<File
+					RelativePath=".\obj\NiPSysModifier.h">
+				</File>
 				<File
 					RelativePath=".\obj\NiPSysModifierActiveCtlr.h">
 				</File>
@@ -1331,6 +1328,9 @@
 				<File
 					RelativePath=".\obj\NiPSysUpdateCtlr.h">
 				</File>
+				<File
+					RelativePath=".\obj\NiPSysVolumeEmitter.h">
+				</File>
 				<File
 					RelativePath=".\obj\NiRangeLODData.h">
 				</File>
@@ -1412,6 +1412,9 @@
 				<File
 					RelativePath=".\obj\NiTriBasedGeom.h">
 				</File>
+				<File
+					RelativePath=".\obj\NiTriBasedGeomData.h">
+				</File>
 				<File
 					RelativePath=".\obj\NiTriShape.h">
 				</File>
@@ -1457,9 +1460,6 @@
 				<File
 					RelativePath=".\obj\RootCollisionNode.h">
 				</File>
-				<File
-					RelativePath=".\obj\TriBasedGeomData.h">
-				</File>
 				<File
 					RelativePath=".\obj\Type.h">
 				</File>
diff --git a/obj/ABoneLODController.cpp b/obj/ABoneLODController.cpp
index 428762c9..eff66caf 100644
--- a/obj/ABoneLODController.cpp
+++ b/obj/ABoneLODController.cpp
@@ -12,18 +12,22 @@ ABoneLODController::ABoneLODController() A_BONE_L_O_D_CONTROLLER_CONSTRUCT {}
 ABoneLODController::~ABoneLODController() {}
 
 void ABoneLODController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	A_BONE_L_O_D_CONTROLLER_READ
+  A_BONE_L_O_D_CONTROLLER_READ
 }
 
 void ABoneLODController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	A_BONE_L_O_D_CONTROLLER_WRITE
+  A_BONE_L_O_D_CONTROLLER_WRITE
 }
 
 string ABoneLODController::asString( bool verbose ) const {
-	A_BONE_L_O_D_CONTROLLER_STRING
+  A_BONE_L_O_D_CONTROLLER_STRING
 }
 
 void ABoneLODController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	A_BONE_L_O_D_CONTROLLER_FIXLINKS
+  A_BONE_L_O_D_CONTROLLER_FIXLINKS
 }
 
+const Type & ABoneLODController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/ABoneLODController.h b/obj/ABoneLODController.h
index d3bf71e4..d8f643d6 100644
--- a/obj/ABoneLODController.h
+++ b/obj/ABoneLODController.h
@@ -16,16 +16,17 @@ typedef Ref<ABoneLODController> ABoneLODControllerRef;
 
 class ABoneLODController : public A_BONE_L_O_D_CONTROLLER_PARENT {
 public:
-	ABoneLODController();
-	~ABoneLODController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	A_BONE_L_O_D_CONTROLLER_MEMBERS
+  ABoneLODController();
+  ~ABoneLODController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  A_BONE_L_O_D_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/AKeyedData.cpp b/obj/AKeyedData.cpp
index 1842b010..d424b2a1 100644
--- a/obj/AKeyedData.cpp
+++ b/obj/AKeyedData.cpp
@@ -11,18 +11,22 @@ AKeyedData::AKeyedData() A_KEYED_DATA_CONSTRUCT {}
 AKeyedData::~AKeyedData() {}
 
 void AKeyedData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	A_KEYED_DATA_READ
+  A_KEYED_DATA_READ
 }
 
 void AKeyedData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	A_KEYED_DATA_WRITE
+  A_KEYED_DATA_WRITE
 }
 
 string AKeyedData::asString( bool verbose ) const {
-	A_KEYED_DATA_STRING
+  A_KEYED_DATA_STRING
 }
 
 void AKeyedData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	A_KEYED_DATA_FIXLINKS
+  A_KEYED_DATA_FIXLINKS
 }
 
+const Type & AKeyedData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/AKeyedData.h b/obj/AKeyedData.h
index 9e8d853b..da0486e9 100644
--- a/obj/AKeyedData.h
+++ b/obj/AKeyedData.h
@@ -16,16 +16,17 @@ typedef Ref<AKeyedData> AKeyedDataRef;
 
 class AKeyedData : public A_KEYED_DATA_PARENT {
 public:
-	AKeyedData();
-	~AKeyedData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	A_KEYED_DATA_MEMBERS
+  AKeyedData();
+  ~AKeyedData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  A_KEYED_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/APSysCtlr.cpp b/obj/APSysCtlr.cpp
index 7d9fef2f..c7f87dcc 100644
--- a/obj/APSysCtlr.cpp
+++ b/obj/APSysCtlr.cpp
@@ -11,18 +11,22 @@ APSysCtlr::APSysCtlr() A_P_SYS_CTLR_CONSTRUCT {}
 APSysCtlr::~APSysCtlr() {}
 
 void APSysCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	A_P_SYS_CTLR_READ
+  A_P_SYS_CTLR_READ
 }
 
 void APSysCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	A_P_SYS_CTLR_WRITE
+  A_P_SYS_CTLR_WRITE
 }
 
 string APSysCtlr::asString( bool verbose ) const {
-	A_P_SYS_CTLR_STRING
+  A_P_SYS_CTLR_STRING
 }
 
 void APSysCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	A_P_SYS_CTLR_FIXLINKS
+  A_P_SYS_CTLR_FIXLINKS
 }
 
+const Type & APSysCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/APSysCtlr.h b/obj/APSysCtlr.h
index 2571c5b1..50f13b96 100644
--- a/obj/APSysCtlr.h
+++ b/obj/APSysCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<APSysCtlr> APSysCtlrRef;
 
 class APSysCtlr : public A_P_SYS_CTLR_PARENT {
 public:
-	APSysCtlr();
-	~APSysCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	A_P_SYS_CTLR_MEMBERS
+  APSysCtlr();
+  ~APSysCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  A_P_SYS_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/APSysData.cpp b/obj/APSysData.cpp
index a236847a..e884dceb 100644
--- a/obj/APSysData.cpp
+++ b/obj/APSysData.cpp
@@ -10,18 +10,23 @@ APSysData::APSysData() A_P_SYS_DATA_CONSTRUCT {}
 
 APSysData::~APSysData() {}
 
-void APSysData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	A_P_SYS_DATA_WRITE
+void APSysData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
+  A_P_SYS_DATA_READ
 }
 
-void APSysData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	A_P_SYS_DATA_READ
+void APSysData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+  A_P_SYS_DATA_WRITE
 }
 
 string APSysData::asString( bool verbose ) const {
-	A_P_SYS_DATA_STRING
+  A_P_SYS_DATA_STRING
 }
 
 void APSysData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	A_P_SYS_DATA_FIXLINKS
+  A_P_SYS_DATA_FIXLINKS
 }
+
+const Type & APSysData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/APSysData.h b/obj/APSysData.h
index ea9614bc..ae108c0c 100644
--- a/obj/APSysData.h
+++ b/obj/APSysData.h
@@ -16,16 +16,17 @@ typedef Ref<APSysData> APSysDataRef;
 
 class APSysData : public A_P_SYS_DATA_PARENT {
 public:
-	APSysData();
-	~APSysData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	A_P_SYS_DATA_MEMBERS
+  APSysData();
+  ~APSysData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  A_P_SYS_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/AParticleModifier.cpp b/obj/AParticleModifier.cpp
index 093de45b..0a43663f 100644
--- a/obj/AParticleModifier.cpp
+++ b/obj/AParticleModifier.cpp
@@ -2,6 +2,8 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "AParticleModifier.h"
+#include "AParticleModifier.h"
+#include "NiParticleSystemController.h"
 
 //Definition of TYPE constant
 const Type AParticleModifier::TYPE("AParticleModifier", &A_PARTICLE_MODIFIER_PARENT::TYPE );
@@ -11,18 +13,22 @@ AParticleModifier::AParticleModifier() A_PARTICLE_MODIFIER_CONSTRUCT {}
 AParticleModifier::~AParticleModifier() {}
 
 void AParticleModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	A_PARTICLE_MODIFIER_READ
+  A_PARTICLE_MODIFIER_READ
 }
 
 void AParticleModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	A_PARTICLE_MODIFIER_WRITE
+  A_PARTICLE_MODIFIER_WRITE
 }
 
 string AParticleModifier::asString( bool verbose ) const {
-	A_PARTICLE_MODIFIER_STRING
+  A_PARTICLE_MODIFIER_STRING
 }
 
 void AParticleModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	A_PARTICLE_MODIFIER_FIXLINKS
+  A_PARTICLE_MODIFIER_FIXLINKS
 }
 
+const Type & AParticleModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/AParticleModifier.h b/obj/AParticleModifier.h
index 9b420992..a5242c63 100644
--- a/obj/AParticleModifier.h
+++ b/obj/AParticleModifier.h
@@ -16,16 +16,17 @@ typedef Ref<AParticleModifier> AParticleModifierRef;
 
 class AParticleModifier : public A_PARTICLE_MODIFIER_PARENT {
 public:
-	AParticleModifier();
-	~AParticleModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	A_PARTICLE_MODIFIER_MEMBERS
+  AParticleModifier();
+  ~AParticleModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  A_PARTICLE_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/AbhkConstraint.cpp b/obj/AbhkConstraint.cpp
index cbdcd829..2aafdbad 100644
--- a/obj/AbhkConstraint.cpp
+++ b/obj/AbhkConstraint.cpp
@@ -12,18 +12,22 @@ AbhkConstraint::AbhkConstraint() ABHK_CONSTRAINT_CONSTRUCT {}
 AbhkConstraint::~AbhkConstraint() {}
 
 void AbhkConstraint::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	ABHK_CONSTRAINT_READ
+  ABHK_CONSTRAINT_READ
 }
 
 void AbhkConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	ABHK_CONSTRAINT_WRITE
+  ABHK_CONSTRAINT_WRITE
 }
 
 string AbhkConstraint::asString( bool verbose ) const {
-	ABHK_CONSTRAINT_STRING
+  ABHK_CONSTRAINT_STRING
 }
 
 void AbhkConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	ABHK_CONSTRAINT_FIXLINKS
+  ABHK_CONSTRAINT_FIXLINKS
 }
 
+const Type & AbhkConstraint::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/AbhkConstraint.h b/obj/AbhkConstraint.h
index bef5385a..ae055189 100644
--- a/obj/AbhkConstraint.h
+++ b/obj/AbhkConstraint.h
@@ -16,16 +16,17 @@ typedef Ref<AbhkConstraint> AbhkConstraintRef;
 
 class AbhkConstraint : public ABHK_CONSTRAINT_PARENT {
 public:
-	AbhkConstraint();
-	~AbhkConstraint();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	ABHK_CONSTRAINT_MEMBERS
+  AbhkConstraint();
+  ~AbhkConstraint();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  ABHK_CONSTRAINT_MEMBERS
 };
+
 #endif
diff --git a/obj/AbhkRagdollConstraint.cpp b/obj/AbhkRagdollConstraint.cpp
index 9035893c..27361421 100644
--- a/obj/AbhkRagdollConstraint.cpp
+++ b/obj/AbhkRagdollConstraint.cpp
@@ -11,18 +11,22 @@ AbhkRagdollConstraint::AbhkRagdollConstraint() ABHK_RAGDOLL_CONSTRAINT_CONSTRUCT
 AbhkRagdollConstraint::~AbhkRagdollConstraint() {}
 
 void AbhkRagdollConstraint::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	ABHK_RAGDOLL_CONSTRAINT_READ
+  ABHK_RAGDOLL_CONSTRAINT_READ
 }
 
 void AbhkRagdollConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	ABHK_RAGDOLL_CONSTRAINT_WRITE
+  ABHK_RAGDOLL_CONSTRAINT_WRITE
 }
 
 string AbhkRagdollConstraint::asString( bool verbose ) const {
-	ABHK_RAGDOLL_CONSTRAINT_STRING
+  ABHK_RAGDOLL_CONSTRAINT_STRING
 }
 
 void AbhkRagdollConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	ABHK_RAGDOLL_CONSTRAINT_FIXLINKS
+  ABHK_RAGDOLL_CONSTRAINT_FIXLINKS
 }
 
+const Type & AbhkRagdollConstraint::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/AbhkRagdollConstraint.h b/obj/AbhkRagdollConstraint.h
index a9dd2bfc..ddb7ae36 100644
--- a/obj/AbhkRagdollConstraint.h
+++ b/obj/AbhkRagdollConstraint.h
@@ -16,16 +16,17 @@ typedef Ref<AbhkRagdollConstraint> AbhkRagdollConstraintRef;
 
 class AbhkRagdollConstraint : public ABHK_RAGDOLL_CONSTRAINT_PARENT {
 public:
-	AbhkRagdollConstraint();
-	~AbhkRagdollConstraint();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	ABHK_RAGDOLL_CONSTRAINT_MEMBERS
+  AbhkRagdollConstraint();
+  ~AbhkRagdollConstraint();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  ABHK_RAGDOLL_CONSTRAINT_MEMBERS
 };
+
 #endif
diff --git a/obj/AbhkShapeCollection.cpp b/obj/AbhkShapeCollection.cpp
index 31cee5a8..b29bd86c 100644
--- a/obj/AbhkShapeCollection.cpp
+++ b/obj/AbhkShapeCollection.cpp
@@ -11,18 +11,22 @@ AbhkShapeCollection::AbhkShapeCollection() ABHK_SHAPE_COLLECTION_CONSTRUCT {}
 AbhkShapeCollection::~AbhkShapeCollection() {}
 
 void AbhkShapeCollection::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	ABHK_SHAPE_COLLECTION_READ
+  ABHK_SHAPE_COLLECTION_READ
 }
 
 void AbhkShapeCollection::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	ABHK_SHAPE_COLLECTION_WRITE
+  ABHK_SHAPE_COLLECTION_WRITE
 }
 
 string AbhkShapeCollection::asString( bool verbose ) const {
-	ABHK_SHAPE_COLLECTION_STRING
+  ABHK_SHAPE_COLLECTION_STRING
 }
 
 void AbhkShapeCollection::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	ABHK_SHAPE_COLLECTION_FIXLINKS
+  ABHK_SHAPE_COLLECTION_FIXLINKS
 }
 
+const Type & AbhkShapeCollection::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/AbhkShapeCollection.h b/obj/AbhkShapeCollection.h
index 964c3cbc..6c8f8013 100644
--- a/obj/AbhkShapeCollection.h
+++ b/obj/AbhkShapeCollection.h
@@ -16,16 +16,17 @@ typedef Ref<AbhkShapeCollection> AbhkShapeCollectionRef;
 
 class AbhkShapeCollection : public ABHK_SHAPE_COLLECTION_PARENT {
 public:
-	AbhkShapeCollection();
-	~AbhkShapeCollection();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	ABHK_SHAPE_COLLECTION_MEMBERS
+  AbhkShapeCollection();
+  ~AbhkShapeCollection();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  ABHK_SHAPE_COLLECTION_MEMBERS
 };
+
 #endif
diff --git a/obj/AvoidNode.cpp b/obj/AvoidNode.cpp
index 40c272d6..c00db870 100644
--- a/obj/AvoidNode.cpp
+++ b/obj/AvoidNode.cpp
@@ -11,18 +11,22 @@ AvoidNode::AvoidNode() AVOID_NODE_CONSTRUCT {}
 AvoidNode::~AvoidNode() {}
 
 void AvoidNode::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	AVOID_NODE_READ
+  AVOID_NODE_READ
 }
 
 void AvoidNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	AVOID_NODE_WRITE
+  AVOID_NODE_WRITE
 }
 
 string AvoidNode::asString( bool verbose ) const {
-	AVOID_NODE_STRING
+  AVOID_NODE_STRING
 }
 
 void AvoidNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	AVOID_NODE_FIXLINKS
+  AVOID_NODE_FIXLINKS
 }
 
+const Type & AvoidNode::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/AvoidNode.h b/obj/AvoidNode.h
index a191a1cd..ef9d9804 100644
--- a/obj/AvoidNode.h
+++ b/obj/AvoidNode.h
@@ -16,16 +16,17 @@ typedef Ref<AvoidNode> AvoidNodeRef;
 
 class AvoidNode : public AVOID_NODE_PARENT {
 public:
-	AvoidNode();
-	~AvoidNode();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	AVOID_NODE_MEMBERS
+  AvoidNode();
+  ~AvoidNode();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  AVOID_NODE_MEMBERS
 };
+
 #endif
diff --git a/obj/BSBound.cpp b/obj/BSBound.cpp
index 7f59897b..2ba3486e 100644
--- a/obj/BSBound.cpp
+++ b/obj/BSBound.cpp
@@ -11,18 +11,22 @@ BSBound::BSBound() B_S_BOUND_CONSTRUCT {}
 BSBound::~BSBound() {}
 
 void BSBound::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	B_S_BOUND_READ
+  B_S_BOUND_READ
 }
 
 void BSBound::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	B_S_BOUND_WRITE
+  B_S_BOUND_WRITE
 }
 
 string BSBound::asString( bool verbose ) const {
-	B_S_BOUND_STRING
+  B_S_BOUND_STRING
 }
 
 void BSBound::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	B_S_BOUND_FIXLINKS
+  B_S_BOUND_FIXLINKS
 }
 
+const Type & BSBound::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/BSBound.h b/obj/BSBound.h
index decf637f..d8b7e667 100644
--- a/obj/BSBound.h
+++ b/obj/BSBound.h
@@ -16,16 +16,17 @@ typedef Ref<BSBound> BSBoundRef;
 
 class BSBound : public B_S_BOUND_PARENT {
 public:
-	BSBound();
-	~BSBound();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	B_S_BOUND_MEMBERS
+  BSBound();
+  ~BSBound();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  B_S_BOUND_MEMBERS
 };
+
 #endif
diff --git a/obj/BSFurnitureMarker.cpp b/obj/BSFurnitureMarker.cpp
index 3faf7dd0..3b97c0c9 100644
--- a/obj/BSFurnitureMarker.cpp
+++ b/obj/BSFurnitureMarker.cpp
@@ -11,18 +11,22 @@ BSFurnitureMarker::BSFurnitureMarker() B_S_FURNITURE_MARKER_CONSTRUCT {}
 BSFurnitureMarker::~BSFurnitureMarker() {}
 
 void BSFurnitureMarker::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	B_S_FURNITURE_MARKER_READ
+  B_S_FURNITURE_MARKER_READ
 }
 
 void BSFurnitureMarker::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	B_S_FURNITURE_MARKER_WRITE
+  B_S_FURNITURE_MARKER_WRITE
 }
 
 string BSFurnitureMarker::asString( bool verbose ) const {
-	B_S_FURNITURE_MARKER_STRING
+  B_S_FURNITURE_MARKER_STRING
 }
 
 void BSFurnitureMarker::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	B_S_FURNITURE_MARKER_FIXLINKS
+  B_S_FURNITURE_MARKER_FIXLINKS
 }
 
+const Type & BSFurnitureMarker::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/BSFurnitureMarker.h b/obj/BSFurnitureMarker.h
index 9b028686..0f8c8939 100644
--- a/obj/BSFurnitureMarker.h
+++ b/obj/BSFurnitureMarker.h
@@ -16,16 +16,17 @@ typedef Ref<BSFurnitureMarker> BSFurnitureMarkerRef;
 
 class BSFurnitureMarker : public B_S_FURNITURE_MARKER_PARENT {
 public:
-	BSFurnitureMarker();
-	~BSFurnitureMarker();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	B_S_FURNITURE_MARKER_MEMBERS
+  BSFurnitureMarker();
+  ~BSFurnitureMarker();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  B_S_FURNITURE_MARKER_MEMBERS
 };
+
 #endif
diff --git a/obj/BSKeyframeController.cpp b/obj/BSKeyframeController.cpp
index 161a4b73..d50f3af2 100644
--- a/obj/BSKeyframeController.cpp
+++ b/obj/BSKeyframeController.cpp
@@ -12,18 +12,22 @@ BSKeyframeController::BSKeyframeController() B_S_KEYFRAME_CONTROLLER_CONSTRUCT {
 BSKeyframeController::~BSKeyframeController() {}
 
 void BSKeyframeController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	B_S_KEYFRAME_CONTROLLER_READ
+  B_S_KEYFRAME_CONTROLLER_READ
 }
 
 void BSKeyframeController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	B_S_KEYFRAME_CONTROLLER_WRITE
+  B_S_KEYFRAME_CONTROLLER_WRITE
 }
 
 string BSKeyframeController::asString( bool verbose ) const {
-	B_S_KEYFRAME_CONTROLLER_STRING
+  B_S_KEYFRAME_CONTROLLER_STRING
 }
 
 void BSKeyframeController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	B_S_KEYFRAME_CONTROLLER_FIXLINKS
+  B_S_KEYFRAME_CONTROLLER_FIXLINKS
 }
 
+const Type & BSKeyframeController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/BSKeyframeController.h b/obj/BSKeyframeController.h
index 6334869d..81be2798 100644
--- a/obj/BSKeyframeController.h
+++ b/obj/BSKeyframeController.h
@@ -16,16 +16,17 @@ typedef Ref<BSKeyframeController> BSKeyframeControllerRef;
 
 class BSKeyframeController : public B_S_KEYFRAME_CONTROLLER_PARENT {
 public:
-	BSKeyframeController();
-	~BSKeyframeController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	B_S_KEYFRAME_CONTROLLER_MEMBERS
+  BSKeyframeController();
+  ~BSKeyframeController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  B_S_KEYFRAME_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/BSPSysArrayEmitter.cpp b/obj/BSPSysArrayEmitter.cpp
index 478485a1..9292fecb 100644
--- a/obj/BSPSysArrayEmitter.cpp
+++ b/obj/BSPSysArrayEmitter.cpp
@@ -11,18 +11,22 @@ BSPSysArrayEmitter::BSPSysArrayEmitter() B_S_P_SYS_ARRAY_EMITTER_CONSTRUCT {}
 BSPSysArrayEmitter::~BSPSysArrayEmitter() {}
 
 void BSPSysArrayEmitter::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	B_S_P_SYS_ARRAY_EMITTER_READ
+  B_S_P_SYS_ARRAY_EMITTER_READ
 }
 
 void BSPSysArrayEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	B_S_P_SYS_ARRAY_EMITTER_WRITE
+  B_S_P_SYS_ARRAY_EMITTER_WRITE
 }
 
 string BSPSysArrayEmitter::asString( bool verbose ) const {
-	B_S_P_SYS_ARRAY_EMITTER_STRING
+  B_S_P_SYS_ARRAY_EMITTER_STRING
 }
 
 void BSPSysArrayEmitter::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	B_S_P_SYS_ARRAY_EMITTER_FIXLINKS
+  B_S_P_SYS_ARRAY_EMITTER_FIXLINKS
 }
 
+const Type & BSPSysArrayEmitter::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/BSPSysArrayEmitter.h b/obj/BSPSysArrayEmitter.h
index 90991ce1..8e3f131f 100644
--- a/obj/BSPSysArrayEmitter.h
+++ b/obj/BSPSysArrayEmitter.h
@@ -16,16 +16,17 @@ typedef Ref<BSPSysArrayEmitter> BSPSysArrayEmitterRef;
 
 class BSPSysArrayEmitter : public B_S_P_SYS_ARRAY_EMITTER_PARENT {
 public:
-	BSPSysArrayEmitter();
-	~BSPSysArrayEmitter();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	B_S_P_SYS_ARRAY_EMITTER_MEMBERS
+  BSPSysArrayEmitter();
+  ~BSPSysArrayEmitter();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  B_S_P_SYS_ARRAY_EMITTER_MEMBERS
 };
+
 #endif
diff --git a/obj/BSParentVelocityModifier.cpp b/obj/BSParentVelocityModifier.cpp
index fe6543cc..4eb2aa86 100644
--- a/obj/BSParentVelocityModifier.cpp
+++ b/obj/BSParentVelocityModifier.cpp
@@ -11,18 +11,22 @@ BSParentVelocityModifier::BSParentVelocityModifier() B_S_PARENT_VELOCITY_MODIFIE
 BSParentVelocityModifier::~BSParentVelocityModifier() {}
 
 void BSParentVelocityModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	B_S_PARENT_VELOCITY_MODIFIER_READ
+  B_S_PARENT_VELOCITY_MODIFIER_READ
 }
 
 void BSParentVelocityModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	B_S_PARENT_VELOCITY_MODIFIER_WRITE
+  B_S_PARENT_VELOCITY_MODIFIER_WRITE
 }
 
 string BSParentVelocityModifier::asString( bool verbose ) const {
-	B_S_PARENT_VELOCITY_MODIFIER_STRING
+  B_S_PARENT_VELOCITY_MODIFIER_STRING
 }
 
 void BSParentVelocityModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	B_S_PARENT_VELOCITY_MODIFIER_FIXLINKS
+  B_S_PARENT_VELOCITY_MODIFIER_FIXLINKS
 }
 
+const Type & BSParentVelocityModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/BSParentVelocityModifier.h b/obj/BSParentVelocityModifier.h
index 7af3ca64..f6ba99ff 100644
--- a/obj/BSParentVelocityModifier.h
+++ b/obj/BSParentVelocityModifier.h
@@ -16,16 +16,17 @@ typedef Ref<BSParentVelocityModifier> BSParentVelocityModifierRef;
 
 class BSParentVelocityModifier : public B_S_PARENT_VELOCITY_MODIFIER_PARENT {
 public:
-	BSParentVelocityModifier();
-	~BSParentVelocityModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	B_S_PARENT_VELOCITY_MODIFIER_MEMBERS
+  BSParentVelocityModifier();
+  ~BSParentVelocityModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  B_S_PARENT_VELOCITY_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/BSXFlags.cpp b/obj/BSXFlags.cpp
index dc61e9cf..b645d2e9 100644
--- a/obj/BSXFlags.cpp
+++ b/obj/BSXFlags.cpp
@@ -11,18 +11,22 @@ BSXFlags::BSXFlags() B_S_X_FLAGS_CONSTRUCT {}
 BSXFlags::~BSXFlags() {}
 
 void BSXFlags::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	B_S_X_FLAGS_READ
+  B_S_X_FLAGS_READ
 }
 
 void BSXFlags::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	B_S_X_FLAGS_WRITE
+  B_S_X_FLAGS_WRITE
 }
 
 string BSXFlags::asString( bool verbose ) const {
-	B_S_X_FLAGS_STRING
+  B_S_X_FLAGS_STRING
 }
 
 void BSXFlags::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	B_S_X_FLAGS_FIXLINKS
+  B_S_X_FLAGS_FIXLINKS
 }
 
+const Type & BSXFlags::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/BSXFlags.h b/obj/BSXFlags.h
index df2e9a2c..bd7c6f2c 100644
--- a/obj/BSXFlags.h
+++ b/obj/BSXFlags.h
@@ -16,16 +16,17 @@ typedef Ref<BSXFlags> BSXFlagsRef;
 
 class BSXFlags : public B_S_X_FLAGS_PARENT {
 public:
-	BSXFlags();
-	~BSXFlags();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	B_S_X_FLAGS_MEMBERS
+  BSXFlags();
+  ~BSXFlags();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  B_S_X_FLAGS_MEMBERS
 };
+
 #endif
diff --git a/obj/FxButton.cpp b/obj/FxButton.cpp
index 4d0ffe34..f9b5b1a2 100644
--- a/obj/FxButton.cpp
+++ b/obj/FxButton.cpp
@@ -11,18 +11,22 @@ FxButton::FxButton() FX_BUTTON_CONSTRUCT {}
 FxButton::~FxButton() {}
 
 void FxButton::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	FX_BUTTON_READ
+  FX_BUTTON_READ
 }
 
 void FxButton::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	FX_BUTTON_WRITE
+  FX_BUTTON_WRITE
 }
 
 string FxButton::asString( bool verbose ) const {
-	FX_BUTTON_STRING
+  FX_BUTTON_STRING
 }
 
 void FxButton::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	FX_BUTTON_FIXLINKS
+  FX_BUTTON_FIXLINKS
 }
 
+const Type & FxButton::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/FxButton.h b/obj/FxButton.h
index ad99d6f1..ed67c2cf 100644
--- a/obj/FxButton.h
+++ b/obj/FxButton.h
@@ -16,16 +16,17 @@ typedef Ref<FxButton> FxButtonRef;
 
 class FxButton : public FX_BUTTON_PARENT {
 public:
-	FxButton();
-	~FxButton();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	FX_BUTTON_MEMBERS
+  FxButton();
+  ~FxButton();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  FX_BUTTON_MEMBERS
 };
+
 #endif
diff --git a/obj/FxRadioButton.cpp b/obj/FxRadioButton.cpp
index 3cca3cec..073cd74a 100644
--- a/obj/FxRadioButton.cpp
+++ b/obj/FxRadioButton.cpp
@@ -2,6 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "FxRadioButton.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type FxRadioButton::TYPE("FxRadioButton", &FX_RADIO_BUTTON_PARENT::TYPE );
@@ -11,18 +12,22 @@ FxRadioButton::FxRadioButton() FX_RADIO_BUTTON_CONSTRUCT {}
 FxRadioButton::~FxRadioButton() {}
 
 void FxRadioButton::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	FX_RADIO_BUTTON_READ
+  FX_RADIO_BUTTON_READ
 }
 
 void FxRadioButton::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	FX_RADIO_BUTTON_WRITE
+  FX_RADIO_BUTTON_WRITE
 }
 
 string FxRadioButton::asString( bool verbose ) const {
-	FX_RADIO_BUTTON_STRING
+  FX_RADIO_BUTTON_STRING
 }
 
 void FxRadioButton::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	FX_RADIO_BUTTON_FIXLINKS
+  FX_RADIO_BUTTON_FIXLINKS
 }
 
+const Type & FxRadioButton::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/FxRadioButton.h b/obj/FxRadioButton.h
index 21c4fe5a..b5acc826 100644
--- a/obj/FxRadioButton.h
+++ b/obj/FxRadioButton.h
@@ -16,16 +16,17 @@ typedef Ref<FxRadioButton> FxRadioButtonRef;
 
 class FxRadioButton : public FX_RADIO_BUTTON_PARENT {
 public:
-	FxRadioButton();
-	~FxRadioButton();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	FX_RADIO_BUTTON_MEMBERS
+  FxRadioButton();
+  ~FxRadioButton();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  FX_RADIO_BUTTON_MEMBERS
 };
+
 #endif
diff --git a/obj/FxWidget.cpp b/obj/FxWidget.cpp
index 760d9113..a4dad88e 100644
--- a/obj/FxWidget.cpp
+++ b/obj/FxWidget.cpp
@@ -11,18 +11,22 @@ FxWidget::FxWidget() FX_WIDGET_CONSTRUCT {}
 FxWidget::~FxWidget() {}
 
 void FxWidget::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	FX_WIDGET_READ
+  FX_WIDGET_READ
 }
 
 void FxWidget::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	FX_WIDGET_WRITE
+  FX_WIDGET_WRITE
 }
 
 string FxWidget::asString( bool verbose ) const {
-	FX_WIDGET_STRING
+  FX_WIDGET_STRING
 }
 
 void FxWidget::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	FX_WIDGET_FIXLINKS
+  FX_WIDGET_FIXLINKS
 }
 
+const Type & FxWidget::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/FxWidget.h b/obj/FxWidget.h
index f8cd7af4..8d45e249 100644
--- a/obj/FxWidget.h
+++ b/obj/FxWidget.h
@@ -16,16 +16,17 @@ typedef Ref<FxWidget> FxWidgetRef;
 
 class FxWidget : public FX_WIDGET_PARENT {
 public:
-	FxWidget();
-	~FxWidget();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	FX_WIDGET_MEMBERS
+  FxWidget();
+  ~FxWidget();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  FX_WIDGET_MEMBERS
 };
+
 #endif
diff --git a/obj/NiAlphaController.cpp b/obj/NiAlphaController.cpp
index f062db5f..bae2299d 100644
--- a/obj/NiAlphaController.cpp
+++ b/obj/NiAlphaController.cpp
@@ -12,18 +12,22 @@ NiAlphaController::NiAlphaController() NI_ALPHA_CONTROLLER_CONSTRUCT {}
 NiAlphaController::~NiAlphaController() {}
 
 void NiAlphaController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_ALPHA_CONTROLLER_READ
+  NI_ALPHA_CONTROLLER_READ
 }
 
 void NiAlphaController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_ALPHA_CONTROLLER_WRITE
+  NI_ALPHA_CONTROLLER_WRITE
 }
 
 string NiAlphaController::asString( bool verbose ) const {
-	NI_ALPHA_CONTROLLER_STRING
+  NI_ALPHA_CONTROLLER_STRING
 }
 
 void NiAlphaController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_ALPHA_CONTROLLER_FIXLINKS
+  NI_ALPHA_CONTROLLER_FIXLINKS
 }
 
+const Type & NiAlphaController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiAlphaController.h b/obj/NiAlphaController.h
index ada63503..2b0f86a6 100644
--- a/obj/NiAlphaController.h
+++ b/obj/NiAlphaController.h
@@ -16,16 +16,17 @@ typedef Ref<NiAlphaController> NiAlphaControllerRef;
 
 class NiAlphaController : public NI_ALPHA_CONTROLLER_PARENT {
 public:
-	NiAlphaController();
-	~NiAlphaController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_ALPHA_CONTROLLER_MEMBERS
+  NiAlphaController();
+  ~NiAlphaController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_ALPHA_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiAlphaProperty.cpp b/obj/NiAlphaProperty.cpp
index accc5659..d5d012ec 100644
--- a/obj/NiAlphaProperty.cpp
+++ b/obj/NiAlphaProperty.cpp
@@ -11,18 +11,22 @@ NiAlphaProperty::NiAlphaProperty() NI_ALPHA_PROPERTY_CONSTRUCT {}
 NiAlphaProperty::~NiAlphaProperty() {}
 
 void NiAlphaProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_ALPHA_PROPERTY_READ
+  NI_ALPHA_PROPERTY_READ
 }
 
 void NiAlphaProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_ALPHA_PROPERTY_WRITE
+  NI_ALPHA_PROPERTY_WRITE
 }
 
 string NiAlphaProperty::asString( bool verbose ) const {
-	NI_ALPHA_PROPERTY_STRING
+  NI_ALPHA_PROPERTY_STRING
 }
 
 void NiAlphaProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_ALPHA_PROPERTY_FIXLINKS
+  NI_ALPHA_PROPERTY_FIXLINKS
 }
 
+const Type & NiAlphaProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiAlphaProperty.h b/obj/NiAlphaProperty.h
index ab48fd3f..95b9735a 100644
--- a/obj/NiAlphaProperty.h
+++ b/obj/NiAlphaProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiAlphaProperty> NiAlphaPropertyRef;
 
 class NiAlphaProperty : public NI_ALPHA_PROPERTY_PARENT {
 public:
-	NiAlphaProperty();
-	~NiAlphaProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_ALPHA_PROPERTY_MEMBERS
+  NiAlphaProperty();
+  ~NiAlphaProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_ALPHA_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiAmbientLight.cpp b/obj/NiAmbientLight.cpp
index 7893a148..554f4b57 100644
--- a/obj/NiAmbientLight.cpp
+++ b/obj/NiAmbientLight.cpp
@@ -11,18 +11,22 @@ NiAmbientLight::NiAmbientLight() NI_AMBIENT_LIGHT_CONSTRUCT {}
 NiAmbientLight::~NiAmbientLight() {}
 
 void NiAmbientLight::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_AMBIENT_LIGHT_READ
+  NI_AMBIENT_LIGHT_READ
 }
 
 void NiAmbientLight::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_AMBIENT_LIGHT_WRITE
+  NI_AMBIENT_LIGHT_WRITE
 }
 
 string NiAmbientLight::asString( bool verbose ) const {
-	NI_AMBIENT_LIGHT_STRING
+  NI_AMBIENT_LIGHT_STRING
 }
 
 void NiAmbientLight::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_AMBIENT_LIGHT_FIXLINKS
+  NI_AMBIENT_LIGHT_FIXLINKS
 }
 
+const Type & NiAmbientLight::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiAmbientLight.h b/obj/NiAmbientLight.h
index d103433d..56d2b340 100644
--- a/obj/NiAmbientLight.h
+++ b/obj/NiAmbientLight.h
@@ -16,16 +16,17 @@ typedef Ref<NiAmbientLight> NiAmbientLightRef;
 
 class NiAmbientLight : public NI_AMBIENT_LIGHT_PARENT {
 public:
-	NiAmbientLight();
-	~NiAmbientLight();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_AMBIENT_LIGHT_MEMBERS
+  NiAmbientLight();
+  ~NiAmbientLight();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_AMBIENT_LIGHT_MEMBERS
 };
+
 #endif
diff --git a/obj/NiAutoNormalParticles.cpp b/obj/NiAutoNormalParticles.cpp
index e45aff16..c6501647 100644
--- a/obj/NiAutoNormalParticles.cpp
+++ b/obj/NiAutoNormalParticles.cpp
@@ -11,18 +11,22 @@ NiAutoNormalParticles::NiAutoNormalParticles() NI_AUTO_NORMAL_PARTICLES_CONSTRUC
 NiAutoNormalParticles::~NiAutoNormalParticles() {}
 
 void NiAutoNormalParticles::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_AUTO_NORMAL_PARTICLES_READ
+  NI_AUTO_NORMAL_PARTICLES_READ
 }
 
 void NiAutoNormalParticles::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_AUTO_NORMAL_PARTICLES_WRITE
+  NI_AUTO_NORMAL_PARTICLES_WRITE
 }
 
 string NiAutoNormalParticles::asString( bool verbose ) const {
-	NI_AUTO_NORMAL_PARTICLES_STRING
+  NI_AUTO_NORMAL_PARTICLES_STRING
 }
 
 void NiAutoNormalParticles::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_AUTO_NORMAL_PARTICLES_FIXLINKS
+  NI_AUTO_NORMAL_PARTICLES_FIXLINKS
 }
 
+const Type & NiAutoNormalParticles::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiAutoNormalParticles.h b/obj/NiAutoNormalParticles.h
index deaa3f62..0a491854 100644
--- a/obj/NiAutoNormalParticles.h
+++ b/obj/NiAutoNormalParticles.h
@@ -16,16 +16,17 @@ typedef Ref<NiAutoNormalParticles> NiAutoNormalParticlesRef;
 
 class NiAutoNormalParticles : public NI_AUTO_NORMAL_PARTICLES_PARENT {
 public:
-	NiAutoNormalParticles();
-	~NiAutoNormalParticles();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_AUTO_NORMAL_PARTICLES_MEMBERS
+  NiAutoNormalParticles();
+  ~NiAutoNormalParticles();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_AUTO_NORMAL_PARTICLES_MEMBERS
 };
+
 #endif
diff --git a/obj/NiAutoNormalParticlesData.cpp b/obj/NiAutoNormalParticlesData.cpp
index 6ec779c0..dd13be31 100644
--- a/obj/NiAutoNormalParticlesData.cpp
+++ b/obj/NiAutoNormalParticlesData.cpp
@@ -11,18 +11,22 @@ NiAutoNormalParticlesData::NiAutoNormalParticlesData() NI_AUTO_NORMAL_PARTICLES_
 NiAutoNormalParticlesData::~NiAutoNormalParticlesData() {}
 
 void NiAutoNormalParticlesData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_AUTO_NORMAL_PARTICLES_DATA_READ
+  NI_AUTO_NORMAL_PARTICLES_DATA_READ
 }
 
 void NiAutoNormalParticlesData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_AUTO_NORMAL_PARTICLES_DATA_WRITE
+  NI_AUTO_NORMAL_PARTICLES_DATA_WRITE
 }
 
 string NiAutoNormalParticlesData::asString( bool verbose ) const {
-	NI_AUTO_NORMAL_PARTICLES_DATA_STRING
+  NI_AUTO_NORMAL_PARTICLES_DATA_STRING
 }
 
 void NiAutoNormalParticlesData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_AUTO_NORMAL_PARTICLES_DATA_FIXLINKS
+  NI_AUTO_NORMAL_PARTICLES_DATA_FIXLINKS
 }
 
+const Type & NiAutoNormalParticlesData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiAutoNormalParticlesData.h b/obj/NiAutoNormalParticlesData.h
index eede0d39..9ea6ee79 100644
--- a/obj/NiAutoNormalParticlesData.h
+++ b/obj/NiAutoNormalParticlesData.h
@@ -16,16 +16,17 @@ typedef Ref<NiAutoNormalParticlesData> NiAutoNormalParticlesDataRef;
 
 class NiAutoNormalParticlesData : public NI_AUTO_NORMAL_PARTICLES_DATA_PARENT {
 public:
-	NiAutoNormalParticlesData();
-	~NiAutoNormalParticlesData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_AUTO_NORMAL_PARTICLES_DATA_MEMBERS
+  NiAutoNormalParticlesData();
+  ~NiAutoNormalParticlesData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_AUTO_NORMAL_PARTICLES_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSAnimationNode.cpp b/obj/NiBSAnimationNode.cpp
index 18d28310..4e86331b 100644
--- a/obj/NiBSAnimationNode.cpp
+++ b/obj/NiBSAnimationNode.cpp
@@ -11,18 +11,22 @@ NiBSAnimationNode::NiBSAnimationNode() NI_B_S_ANIMATION_NODE_CONSTRUCT {}
 NiBSAnimationNode::~NiBSAnimationNode() {}
 
 void NiBSAnimationNode::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_S_ANIMATION_NODE_READ
+  NI_B_S_ANIMATION_NODE_READ
 }
 
 void NiBSAnimationNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_S_ANIMATION_NODE_WRITE
+  NI_B_S_ANIMATION_NODE_WRITE
 }
 
 string NiBSAnimationNode::asString( bool verbose ) const {
-	NI_B_S_ANIMATION_NODE_STRING
+  NI_B_S_ANIMATION_NODE_STRING
 }
 
 void NiBSAnimationNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_S_ANIMATION_NODE_FIXLINKS
+  NI_B_S_ANIMATION_NODE_FIXLINKS
 }
 
+const Type & NiBSAnimationNode::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSAnimationNode.h b/obj/NiBSAnimationNode.h
index e44e58fb..1c843c10 100644
--- a/obj/NiBSAnimationNode.h
+++ b/obj/NiBSAnimationNode.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSAnimationNode> NiBSAnimationNodeRef;
 
 class NiBSAnimationNode : public NI_B_S_ANIMATION_NODE_PARENT {
 public:
-	NiBSAnimationNode();
-	~NiBSAnimationNode();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_S_ANIMATION_NODE_MEMBERS
+  NiBSAnimationNode();
+  ~NiBSAnimationNode();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_S_ANIMATION_NODE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSBoneLODController.cpp b/obj/NiBSBoneLODController.cpp
index 61396fe3..1357052a 100644
--- a/obj/NiBSBoneLODController.cpp
+++ b/obj/NiBSBoneLODController.cpp
@@ -11,18 +11,22 @@ NiBSBoneLODController::NiBSBoneLODController() NI_B_S_BONE_L_O_D_CONTROLLER_CONS
 NiBSBoneLODController::~NiBSBoneLODController() {}
 
 void NiBSBoneLODController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_S_BONE_L_O_D_CONTROLLER_READ
+  NI_B_S_BONE_L_O_D_CONTROLLER_READ
 }
 
 void NiBSBoneLODController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_S_BONE_L_O_D_CONTROLLER_WRITE
+  NI_B_S_BONE_L_O_D_CONTROLLER_WRITE
 }
 
 string NiBSBoneLODController::asString( bool verbose ) const {
-	NI_B_S_BONE_L_O_D_CONTROLLER_STRING
+  NI_B_S_BONE_L_O_D_CONTROLLER_STRING
 }
 
 void NiBSBoneLODController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_S_BONE_L_O_D_CONTROLLER_FIXLINKS
+  NI_B_S_BONE_L_O_D_CONTROLLER_FIXLINKS
 }
 
+const Type & NiBSBoneLODController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSBoneLODController.h b/obj/NiBSBoneLODController.h
index 1178d1f7..297124cb 100644
--- a/obj/NiBSBoneLODController.h
+++ b/obj/NiBSBoneLODController.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSBoneLODController> NiBSBoneLODControllerRef;
 
 class NiBSBoneLODController : public NI_B_S_BONE_L_O_D_CONTROLLER_PARENT {
 public:
-	NiBSBoneLODController();
-	~NiBSBoneLODController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_S_BONE_L_O_D_CONTROLLER_MEMBERS
+  NiBSBoneLODController();
+  ~NiBSBoneLODController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_S_BONE_L_O_D_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSPArrayController.cpp b/obj/NiBSPArrayController.cpp
index 7d5dd483..de0bab9d 100644
--- a/obj/NiBSPArrayController.cpp
+++ b/obj/NiBSPArrayController.cpp
@@ -11,18 +11,22 @@ NiBSPArrayController::NiBSPArrayController() NI_B_S_P_ARRAY_CONTROLLER_CONSTRUCT
 NiBSPArrayController::~NiBSPArrayController() {}
 
 void NiBSPArrayController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_S_P_ARRAY_CONTROLLER_READ
+  NI_B_S_P_ARRAY_CONTROLLER_READ
 }
 
 void NiBSPArrayController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_S_P_ARRAY_CONTROLLER_WRITE
+  NI_B_S_P_ARRAY_CONTROLLER_WRITE
 }
 
 string NiBSPArrayController::asString( bool verbose ) const {
-	NI_B_S_P_ARRAY_CONTROLLER_STRING
+  NI_B_S_P_ARRAY_CONTROLLER_STRING
 }
 
 void NiBSPArrayController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_S_P_ARRAY_CONTROLLER_FIXLINKS
+  NI_B_S_P_ARRAY_CONTROLLER_FIXLINKS
 }
 
+const Type & NiBSPArrayController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSPArrayController.h b/obj/NiBSPArrayController.h
index f9bd868b..ca4cb7cb 100644
--- a/obj/NiBSPArrayController.h
+++ b/obj/NiBSPArrayController.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSPArrayController> NiBSPArrayControllerRef;
 
 class NiBSPArrayController : public NI_B_S_P_ARRAY_CONTROLLER_PARENT {
 public:
-	NiBSPArrayController();
-	~NiBSPArrayController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_S_P_ARRAY_CONTROLLER_MEMBERS
+  NiBSPArrayController();
+  ~NiBSPArrayController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_S_P_ARRAY_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSParticleNode.cpp b/obj/NiBSParticleNode.cpp
index 6142006a..81167de3 100644
--- a/obj/NiBSParticleNode.cpp
+++ b/obj/NiBSParticleNode.cpp
@@ -11,18 +11,22 @@ NiBSParticleNode::NiBSParticleNode() NI_B_S_PARTICLE_NODE_CONSTRUCT {}
 NiBSParticleNode::~NiBSParticleNode() {}
 
 void NiBSParticleNode::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_S_PARTICLE_NODE_READ
+  NI_B_S_PARTICLE_NODE_READ
 }
 
 void NiBSParticleNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_S_PARTICLE_NODE_WRITE
+  NI_B_S_PARTICLE_NODE_WRITE
 }
 
 string NiBSParticleNode::asString( bool verbose ) const {
-	NI_B_S_PARTICLE_NODE_STRING
+  NI_B_S_PARTICLE_NODE_STRING
 }
 
 void NiBSParticleNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_S_PARTICLE_NODE_FIXLINKS
+  NI_B_S_PARTICLE_NODE_FIXLINKS
 }
 
+const Type & NiBSParticleNode::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSParticleNode.h b/obj/NiBSParticleNode.h
index 118ec0fe..03d7c802 100644
--- a/obj/NiBSParticleNode.h
+++ b/obj/NiBSParticleNode.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSParticleNode> NiBSParticleNodeRef;
 
 class NiBSParticleNode : public NI_B_S_PARTICLE_NODE_PARENT {
 public:
-	NiBSParticleNode();
-	~NiBSParticleNode();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_S_PARTICLE_NODE_MEMBERS
+  NiBSParticleNode();
+  ~NiBSParticleNode();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_S_PARTICLE_NODE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSplineBasisData.cpp b/obj/NiBSplineBasisData.cpp
index 38431c2c..192f3f3a 100644
--- a/obj/NiBSplineBasisData.cpp
+++ b/obj/NiBSplineBasisData.cpp
@@ -11,18 +11,22 @@ NiBSplineBasisData::NiBSplineBasisData() NI_B_SPLINE_BASIS_DATA_CONSTRUCT {}
 NiBSplineBasisData::~NiBSplineBasisData() {}
 
 void NiBSplineBasisData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_BASIS_DATA_READ
+  NI_B_SPLINE_BASIS_DATA_READ
 }
 
 void NiBSplineBasisData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_SPLINE_BASIS_DATA_WRITE
+  NI_B_SPLINE_BASIS_DATA_WRITE
 }
 
 string NiBSplineBasisData::asString( bool verbose ) const {
-	NI_B_SPLINE_BASIS_DATA_STRING
+  NI_B_SPLINE_BASIS_DATA_STRING
 }
 
 void NiBSplineBasisData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_BASIS_DATA_FIXLINKS
+  NI_B_SPLINE_BASIS_DATA_FIXLINKS
 }
 
+const Type & NiBSplineBasisData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSplineBasisData.h b/obj/NiBSplineBasisData.h
index 2fef2585..4faa427f 100644
--- a/obj/NiBSplineBasisData.h
+++ b/obj/NiBSplineBasisData.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSplineBasisData> NiBSplineBasisDataRef;
 
 class NiBSplineBasisData : public NI_B_SPLINE_BASIS_DATA_PARENT {
 public:
-	NiBSplineBasisData();
-	~NiBSplineBasisData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_SPLINE_BASIS_DATA_MEMBERS
+  NiBSplineBasisData();
+  ~NiBSplineBasisData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_SPLINE_BASIS_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSplineCompFloatInterpolator.cpp b/obj/NiBSplineCompFloatInterpolator.cpp
index b6ea194e..a571b08c 100644
--- a/obj/NiBSplineCompFloatInterpolator.cpp
+++ b/obj/NiBSplineCompFloatInterpolator.cpp
@@ -11,18 +11,22 @@ NiBSplineCompFloatInterpolator::NiBSplineCompFloatInterpolator() NI_B_SPLINE_COM
 NiBSplineCompFloatInterpolator::~NiBSplineCompFloatInterpolator() {}
 
 void NiBSplineCompFloatInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_READ
+  NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_READ
 }
 
 void NiBSplineCompFloatInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_WRITE
+  NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_WRITE
 }
 
 string NiBSplineCompFloatInterpolator::asString( bool verbose ) const {
-	NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_STRING
+  NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_STRING
 }
 
 void NiBSplineCompFloatInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_FIXLINKS
+  NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBSplineCompFloatInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSplineCompFloatInterpolator.h b/obj/NiBSplineCompFloatInterpolator.h
index 9bc6210d..1514e3ec 100644
--- a/obj/NiBSplineCompFloatInterpolator.h
+++ b/obj/NiBSplineCompFloatInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSplineCompFloatInterpolator> NiBSplineCompFloatInterpolatorRef;
 
 class NiBSplineCompFloatInterpolator : public NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_PARENT {
 public:
-	NiBSplineCompFloatInterpolator();
-	~NiBSplineCompFloatInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_MEMBERS
+  NiBSplineCompFloatInterpolator();
+  ~NiBSplineCompFloatInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSplineCompPoint3Interpolator.cpp b/obj/NiBSplineCompPoint3Interpolator.cpp
index f7e868f6..8f40b4be 100644
--- a/obj/NiBSplineCompPoint3Interpolator.cpp
+++ b/obj/NiBSplineCompPoint3Interpolator.cpp
@@ -3,6 +3,7 @@ All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiBSplineCompPoint3Interpolator.h"
 #include "NiBSplineData.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type NiBSplineCompPoint3Interpolator::TYPE("NiBSplineCompPoint3Interpolator", &NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENT::TYPE );
@@ -12,18 +13,22 @@ NiBSplineCompPoint3Interpolator::NiBSplineCompPoint3Interpolator() NI_B_SPLINE_C
 NiBSplineCompPoint3Interpolator::~NiBSplineCompPoint3Interpolator() {}
 
 void NiBSplineCompPoint3Interpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_READ
+  NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_READ
 }
 
 void NiBSplineCompPoint3Interpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_WRITE
+  NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_WRITE
 }
 
 string NiBSplineCompPoint3Interpolator::asString( bool verbose ) const {
-	NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_STRING
+  NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_STRING
 }
 
 void NiBSplineCompPoint3Interpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_FIXLINKS
+  NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBSplineCompPoint3Interpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSplineCompPoint3Interpolator.h b/obj/NiBSplineCompPoint3Interpolator.h
index 8e852cc7..a7117b31 100644
--- a/obj/NiBSplineCompPoint3Interpolator.h
+++ b/obj/NiBSplineCompPoint3Interpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSplineCompPoint3Interpolator> NiBSplineCompPoint3InterpolatorRef;
 
 class NiBSplineCompPoint3Interpolator : public NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENT {
 public:
-	NiBSplineCompPoint3Interpolator();
-	~NiBSplineCompPoint3Interpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_MEMBERS
+  NiBSplineCompPoint3Interpolator();
+  ~NiBSplineCompPoint3Interpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSplineCompTransformInterpolator.cpp b/obj/NiBSplineCompTransformInterpolator.cpp
index c36b6de1..e5227acd 100644
--- a/obj/NiBSplineCompTransformInterpolator.cpp
+++ b/obj/NiBSplineCompTransformInterpolator.cpp
@@ -13,18 +13,22 @@ NiBSplineCompTransformInterpolator::NiBSplineCompTransformInterpolator() NI_B_SP
 NiBSplineCompTransformInterpolator::~NiBSplineCompTransformInterpolator() {}
 
 void NiBSplineCompTransformInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_READ
+  NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_READ
 }
 
 void NiBSplineCompTransformInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_WRITE
+  NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_WRITE
 }
 
 string NiBSplineCompTransformInterpolator::asString( bool verbose ) const {
-	NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_STRING
+  NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_STRING
 }
 
 void NiBSplineCompTransformInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_FIXLINKS
+  NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBSplineCompTransformInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSplineCompTransformInterpolator.h b/obj/NiBSplineCompTransformInterpolator.h
index 151fc381..dc64647f 100644
--- a/obj/NiBSplineCompTransformInterpolator.h
+++ b/obj/NiBSplineCompTransformInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSplineCompTransformInterpolator> NiBSplineCompTransformInterpolat
 
 class NiBSplineCompTransformInterpolator : public NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_PARENT {
 public:
-	NiBSplineCompTransformInterpolator();
-	~NiBSplineCompTransformInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_MEMBERS
+  NiBSplineCompTransformInterpolator();
+  ~NiBSplineCompTransformInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBSplineData.cpp b/obj/NiBSplineData.cpp
index 808b9821..4c2626ca 100644
--- a/obj/NiBSplineData.cpp
+++ b/obj/NiBSplineData.cpp
@@ -11,18 +11,22 @@ NiBSplineData::NiBSplineData() NI_B_SPLINE_DATA_CONSTRUCT {}
 NiBSplineData::~NiBSplineData() {}
 
 void NiBSplineData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_DATA_READ
+  NI_B_SPLINE_DATA_READ
 }
 
 void NiBSplineData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_B_SPLINE_DATA_WRITE
+  NI_B_SPLINE_DATA_WRITE
 }
 
 string NiBSplineData::asString( bool verbose ) const {
-	NI_B_SPLINE_DATA_STRING
+  NI_B_SPLINE_DATA_STRING
 }
 
 void NiBSplineData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_B_SPLINE_DATA_FIXLINKS
+  NI_B_SPLINE_DATA_FIXLINKS
 }
 
+const Type & NiBSplineData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBSplineData.h b/obj/NiBSplineData.h
index 30fa5d81..59ca0af5 100644
--- a/obj/NiBSplineData.h
+++ b/obj/NiBSplineData.h
@@ -16,16 +16,17 @@ typedef Ref<NiBSplineData> NiBSplineDataRef;
 
 class NiBSplineData : public NI_B_SPLINE_DATA_PARENT {
 public:
-	NiBSplineData();
-	~NiBSplineData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_B_SPLINE_DATA_MEMBERS
+  NiBSplineData();
+  ~NiBSplineData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_B_SPLINE_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBillboardNode.cpp b/obj/NiBillboardNode.cpp
index e28e70d4..defe4afb 100644
--- a/obj/NiBillboardNode.cpp
+++ b/obj/NiBillboardNode.cpp
@@ -11,18 +11,22 @@ NiBillboardNode::NiBillboardNode() NI_BILLBOARD_NODE_CONSTRUCT {}
 NiBillboardNode::~NiBillboardNode() {}
 
 void NiBillboardNode::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BILLBOARD_NODE_READ
+  NI_BILLBOARD_NODE_READ
 }
 
 void NiBillboardNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BILLBOARD_NODE_WRITE
+  NI_BILLBOARD_NODE_WRITE
 }
 
 string NiBillboardNode::asString( bool verbose ) const {
-	NI_BILLBOARD_NODE_STRING
+  NI_BILLBOARD_NODE_STRING
 }
 
 void NiBillboardNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BILLBOARD_NODE_FIXLINKS
+  NI_BILLBOARD_NODE_FIXLINKS
 }
 
+const Type & NiBillboardNode::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBillboardNode.h b/obj/NiBillboardNode.h
index 6751c443..5cbcd89d 100644
--- a/obj/NiBillboardNode.h
+++ b/obj/NiBillboardNode.h
@@ -16,16 +16,17 @@ typedef Ref<NiBillboardNode> NiBillboardNodeRef;
 
 class NiBillboardNode : public NI_BILLBOARD_NODE_PARENT {
 public:
-	NiBillboardNode();
-	~NiBillboardNode();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BILLBOARD_NODE_MEMBERS
+  NiBillboardNode();
+  ~NiBillboardNode();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BILLBOARD_NODE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBinaryExtraData.cpp b/obj/NiBinaryExtraData.cpp
index 9de23e56..575c8dea 100644
--- a/obj/NiBinaryExtraData.cpp
+++ b/obj/NiBinaryExtraData.cpp
@@ -11,18 +11,22 @@ NiBinaryExtraData::NiBinaryExtraData() NI_BINARY_EXTRA_DATA_CONSTRUCT {}
 NiBinaryExtraData::~NiBinaryExtraData() {}
 
 void NiBinaryExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BINARY_EXTRA_DATA_READ
+  NI_BINARY_EXTRA_DATA_READ
 }
 
 void NiBinaryExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BINARY_EXTRA_DATA_WRITE
+  NI_BINARY_EXTRA_DATA_WRITE
 }
 
 string NiBinaryExtraData::asString( bool verbose ) const {
-	NI_BINARY_EXTRA_DATA_STRING
+  NI_BINARY_EXTRA_DATA_STRING
 }
 
 void NiBinaryExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BINARY_EXTRA_DATA_FIXLINKS
+  NI_BINARY_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiBinaryExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBinaryExtraData.h b/obj/NiBinaryExtraData.h
index 04d6b49a..8bc84c3c 100644
--- a/obj/NiBinaryExtraData.h
+++ b/obj/NiBinaryExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiBinaryExtraData> NiBinaryExtraDataRef;
 
 class NiBinaryExtraData : public NI_BINARY_EXTRA_DATA_PARENT {
 public:
-	NiBinaryExtraData();
-	~NiBinaryExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BINARY_EXTRA_DATA_MEMBERS
+  NiBinaryExtraData();
+  ~NiBinaryExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BINARY_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBlendBoolInterpolator.cpp b/obj/NiBlendBoolInterpolator.cpp
index a87ad030..0b75115d 100644
--- a/obj/NiBlendBoolInterpolator.cpp
+++ b/obj/NiBlendBoolInterpolator.cpp
@@ -11,18 +11,22 @@ NiBlendBoolInterpolator::NiBlendBoolInterpolator() NI_BLEND_BOOL_INTERPOLATOR_CO
 NiBlendBoolInterpolator::~NiBlendBoolInterpolator() {}
 
 void NiBlendBoolInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BLEND_BOOL_INTERPOLATOR_READ
+  NI_BLEND_BOOL_INTERPOLATOR_READ
 }
 
 void NiBlendBoolInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BLEND_BOOL_INTERPOLATOR_WRITE
+  NI_BLEND_BOOL_INTERPOLATOR_WRITE
 }
 
 string NiBlendBoolInterpolator::asString( bool verbose ) const {
-	NI_BLEND_BOOL_INTERPOLATOR_STRING
+  NI_BLEND_BOOL_INTERPOLATOR_STRING
 }
 
 void NiBlendBoolInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BLEND_BOOL_INTERPOLATOR_FIXLINKS
+  NI_BLEND_BOOL_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBlendBoolInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBlendBoolInterpolator.h b/obj/NiBlendBoolInterpolator.h
index d47b2d67..72518784 100644
--- a/obj/NiBlendBoolInterpolator.h
+++ b/obj/NiBlendBoolInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBlendBoolInterpolator> NiBlendBoolInterpolatorRef;
 
 class NiBlendBoolInterpolator : public NI_BLEND_BOOL_INTERPOLATOR_PARENT {
 public:
-	NiBlendBoolInterpolator();
-	~NiBlendBoolInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BLEND_BOOL_INTERPOLATOR_MEMBERS
+  NiBlendBoolInterpolator();
+  ~NiBlendBoolInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BLEND_BOOL_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBlendFloatInterpolator.cpp b/obj/NiBlendFloatInterpolator.cpp
index 2ee83745..ec86bf06 100644
--- a/obj/NiBlendFloatInterpolator.cpp
+++ b/obj/NiBlendFloatInterpolator.cpp
@@ -11,18 +11,22 @@ NiBlendFloatInterpolator::NiBlendFloatInterpolator() NI_BLEND_FLOAT_INTERPOLATOR
 NiBlendFloatInterpolator::~NiBlendFloatInterpolator() {}
 
 void NiBlendFloatInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BLEND_FLOAT_INTERPOLATOR_READ
+  NI_BLEND_FLOAT_INTERPOLATOR_READ
 }
 
 void NiBlendFloatInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BLEND_FLOAT_INTERPOLATOR_WRITE
+  NI_BLEND_FLOAT_INTERPOLATOR_WRITE
 }
 
 string NiBlendFloatInterpolator::asString( bool verbose ) const {
-	NI_BLEND_FLOAT_INTERPOLATOR_STRING
+  NI_BLEND_FLOAT_INTERPOLATOR_STRING
 }
 
 void NiBlendFloatInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BLEND_FLOAT_INTERPOLATOR_FIXLINKS
+  NI_BLEND_FLOAT_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBlendFloatInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBlendFloatInterpolator.h b/obj/NiBlendFloatInterpolator.h
index e9d98d85..4c4b2e3d 100644
--- a/obj/NiBlendFloatInterpolator.h
+++ b/obj/NiBlendFloatInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBlendFloatInterpolator> NiBlendFloatInterpolatorRef;
 
 class NiBlendFloatInterpolator : public NI_BLEND_FLOAT_INTERPOLATOR_PARENT {
 public:
-	NiBlendFloatInterpolator();
-	~NiBlendFloatInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BLEND_FLOAT_INTERPOLATOR_MEMBERS
+  NiBlendFloatInterpolator();
+  ~NiBlendFloatInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BLEND_FLOAT_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBlendInterpolator.cpp b/obj/NiBlendInterpolator.cpp
new file mode 100644
index 00000000..bb031de5
--- /dev/null
+++ b/obj/NiBlendInterpolator.cpp
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiBlendInterpolator.h"
+
+//Definition of TYPE constant
+const Type NiBlendInterpolator::TYPE("NiBlendInterpolator", &NI_BLEND_INTERPOLATOR_PARENT::TYPE );
+
+NiBlendInterpolator::NiBlendInterpolator() NI_BLEND_INTERPOLATOR_CONSTRUCT {}
+
+NiBlendInterpolator::~NiBlendInterpolator() {}
+
+void NiBlendInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
+  NI_BLEND_INTERPOLATOR_READ
+}
+
+void NiBlendInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+  NI_BLEND_INTERPOLATOR_WRITE
+}
+
+string NiBlendInterpolator::asString( bool verbose ) const {
+  NI_BLEND_INTERPOLATOR_STRING
+}
+
+void NiBlendInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
+  NI_BLEND_INTERPOLATOR_FIXLINKS
+}
+
+const Type & NiBlendInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBlendInterpolator.h b/obj/NiBlendInterpolator.h
new file mode 100644
index 00000000..2060ef25
--- /dev/null
+++ b/obj/NiBlendInterpolator.h
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIBLENDINTERPOLATOR_H_
+#define _NIBLENDINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_BLEND_INTERPOLATOR_INCLUDE
+
+/*
+ * NiBlendInterpolator
+ */
+
+class NiBlendInterpolator;
+typedef Ref<NiBlendInterpolator> NiBlendInterpolatorRef;
+
+class NiBlendInterpolator : public NI_BLEND_INTERPOLATOR_PARENT {
+public:
+  NiBlendInterpolator();
+  ~NiBlendInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BLEND_INTERPOLATOR_MEMBERS
+};
+
+#endif
diff --git a/obj/NiBlendPoint3Interpolator.cpp b/obj/NiBlendPoint3Interpolator.cpp
index c6cb473c..a251dd67 100644
--- a/obj/NiBlendPoint3Interpolator.cpp
+++ b/obj/NiBlendPoint3Interpolator.cpp
@@ -11,18 +11,22 @@ NiBlendPoint3Interpolator::NiBlendPoint3Interpolator() NI_BLEND_POINT3_INTERPOLA
 NiBlendPoint3Interpolator::~NiBlendPoint3Interpolator() {}
 
 void NiBlendPoint3Interpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BLEND_POINT3_INTERPOLATOR_READ
+  NI_BLEND_POINT3_INTERPOLATOR_READ
 }
 
 void NiBlendPoint3Interpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BLEND_POINT3_INTERPOLATOR_WRITE
+  NI_BLEND_POINT3_INTERPOLATOR_WRITE
 }
 
 string NiBlendPoint3Interpolator::asString( bool verbose ) const {
-	NI_BLEND_POINT3_INTERPOLATOR_STRING
+  NI_BLEND_POINT3_INTERPOLATOR_STRING
 }
 
 void NiBlendPoint3Interpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BLEND_POINT3_INTERPOLATOR_FIXLINKS
+  NI_BLEND_POINT3_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBlendPoint3Interpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBlendPoint3Interpolator.h b/obj/NiBlendPoint3Interpolator.h
index 9d710c76..c3cdb09c 100644
--- a/obj/NiBlendPoint3Interpolator.h
+++ b/obj/NiBlendPoint3Interpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBlendPoint3Interpolator> NiBlendPoint3InterpolatorRef;
 
 class NiBlendPoint3Interpolator : public NI_BLEND_POINT3_INTERPOLATOR_PARENT {
 public:
-	NiBlendPoint3Interpolator();
-	~NiBlendPoint3Interpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BLEND_POINT3_INTERPOLATOR_MEMBERS
+  NiBlendPoint3Interpolator();
+  ~NiBlendPoint3Interpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BLEND_POINT3_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBlendTransformInterpolator.cpp b/obj/NiBlendTransformInterpolator.cpp
index 6e15b4ce..ab874da4 100644
--- a/obj/NiBlendTransformInterpolator.cpp
+++ b/obj/NiBlendTransformInterpolator.cpp
@@ -11,18 +11,22 @@ NiBlendTransformInterpolator::NiBlendTransformInterpolator() NI_BLEND_TRANSFORM_
 NiBlendTransformInterpolator::~NiBlendTransformInterpolator() {}
 
 void NiBlendTransformInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BLEND_TRANSFORM_INTERPOLATOR_READ
+  NI_BLEND_TRANSFORM_INTERPOLATOR_READ
 }
 
 void NiBlendTransformInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BLEND_TRANSFORM_INTERPOLATOR_WRITE
+  NI_BLEND_TRANSFORM_INTERPOLATOR_WRITE
 }
 
 string NiBlendTransformInterpolator::asString( bool verbose ) const {
-	NI_BLEND_TRANSFORM_INTERPOLATOR_STRING
+  NI_BLEND_TRANSFORM_INTERPOLATOR_STRING
 }
 
 void NiBlendTransformInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BLEND_TRANSFORM_INTERPOLATOR_FIXLINKS
+  NI_BLEND_TRANSFORM_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBlendTransformInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBlendTransformInterpolator.h b/obj/NiBlendTransformInterpolator.h
index cde28642..a3664341 100644
--- a/obj/NiBlendTransformInterpolator.h
+++ b/obj/NiBlendTransformInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBlendTransformInterpolator> NiBlendTransformInterpolatorRef;
 
 class NiBlendTransformInterpolator : public NI_BLEND_TRANSFORM_INTERPOLATOR_PARENT {
 public:
-	NiBlendTransformInterpolator();
-	~NiBlendTransformInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BLEND_TRANSFORM_INTERPOLATOR_MEMBERS
+  NiBlendTransformInterpolator();
+  ~NiBlendTransformInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BLEND_TRANSFORM_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBoneLODController.cpp b/obj/NiBoneLODController.cpp
index 44fd2fbb..69e6e4da 100644
--- a/obj/NiBoneLODController.cpp
+++ b/obj/NiBoneLODController.cpp
@@ -4,6 +4,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #include "NiBoneLODController.h"
 #include "NiTriShape.h"
 #include "NiSkinInstance.h"
+#include "NiTriShape.h"
 
 //Definition of TYPE constant
 const Type NiBoneLODController::TYPE("NiBoneLODController", &NI_BONE_L_O_D_CONTROLLER_PARENT::TYPE );
@@ -13,18 +14,22 @@ NiBoneLODController::NiBoneLODController() NI_BONE_L_O_D_CONTROLLER_CONSTRUCT {}
 NiBoneLODController::~NiBoneLODController() {}
 
 void NiBoneLODController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BONE_L_O_D_CONTROLLER_READ
+  NI_BONE_L_O_D_CONTROLLER_READ
 }
 
 void NiBoneLODController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BONE_L_O_D_CONTROLLER_WRITE
+  NI_BONE_L_O_D_CONTROLLER_WRITE
 }
 
 string NiBoneLODController::asString( bool verbose ) const {
-	NI_BONE_L_O_D_CONTROLLER_STRING
+  NI_BONE_L_O_D_CONTROLLER_STRING
 }
 
 void NiBoneLODController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BONE_L_O_D_CONTROLLER_FIXLINKS
+  NI_BONE_L_O_D_CONTROLLER_FIXLINKS
 }
 
+const Type & NiBoneLODController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBoneLODController.h b/obj/NiBoneLODController.h
index eb094d45..076ad27d 100644
--- a/obj/NiBoneLODController.h
+++ b/obj/NiBoneLODController.h
@@ -16,16 +16,17 @@ typedef Ref<NiBoneLODController> NiBoneLODControllerRef;
 
 class NiBoneLODController : public NI_BONE_L_O_D_CONTROLLER_PARENT {
 public:
-	NiBoneLODController();
-	~NiBoneLODController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BONE_L_O_D_CONTROLLER_MEMBERS
+  NiBoneLODController();
+  ~NiBoneLODController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BONE_L_O_D_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBoolData.cpp b/obj/NiBoolData.cpp
index 70889a8e..0baae004 100644
--- a/obj/NiBoolData.cpp
+++ b/obj/NiBoolData.cpp
@@ -11,18 +11,22 @@ NiBoolData::NiBoolData() NI_BOOL_DATA_CONSTRUCT {}
 NiBoolData::~NiBoolData() {}
 
 void NiBoolData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BOOL_DATA_READ
+  NI_BOOL_DATA_READ
 }
 
 void NiBoolData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BOOL_DATA_WRITE
+  NI_BOOL_DATA_WRITE
 }
 
 string NiBoolData::asString( bool verbose ) const {
-	NI_BOOL_DATA_STRING
+  NI_BOOL_DATA_STRING
 }
 
 void NiBoolData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BOOL_DATA_FIXLINKS
+  NI_BOOL_DATA_FIXLINKS
 }
 
+const Type & NiBoolData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBoolData.h b/obj/NiBoolData.h
index d2ba5e2d..4cb10367 100644
--- a/obj/NiBoolData.h
+++ b/obj/NiBoolData.h
@@ -16,16 +16,17 @@ typedef Ref<NiBoolData> NiBoolDataRef;
 
 class NiBoolData : public NI_BOOL_DATA_PARENT {
 public:
-	NiBoolData();
-	~NiBoolData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BOOL_DATA_MEMBERS
+  NiBoolData();
+  ~NiBoolData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BOOL_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBoolInterpolator.cpp b/obj/NiBoolInterpolator.cpp
index 8a9beaa0..ec3608f3 100644
--- a/obj/NiBoolInterpolator.cpp
+++ b/obj/NiBoolInterpolator.cpp
@@ -12,18 +12,22 @@ NiBoolInterpolator::NiBoolInterpolator() NI_BOOL_INTERPOLATOR_CONSTRUCT {}
 NiBoolInterpolator::~NiBoolInterpolator() {}
 
 void NiBoolInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BOOL_INTERPOLATOR_READ
+  NI_BOOL_INTERPOLATOR_READ
 }
 
 void NiBoolInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BOOL_INTERPOLATOR_WRITE
+  NI_BOOL_INTERPOLATOR_WRITE
 }
 
 string NiBoolInterpolator::asString( bool verbose ) const {
-	NI_BOOL_INTERPOLATOR_STRING
+  NI_BOOL_INTERPOLATOR_STRING
 }
 
 void NiBoolInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BOOL_INTERPOLATOR_FIXLINKS
+  NI_BOOL_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBoolInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBoolInterpolator.h b/obj/NiBoolInterpolator.h
index fef53453..8079e990 100644
--- a/obj/NiBoolInterpolator.h
+++ b/obj/NiBoolInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBoolInterpolator> NiBoolInterpolatorRef;
 
 class NiBoolInterpolator : public NI_BOOL_INTERPOLATOR_PARENT {
 public:
-	NiBoolInterpolator();
-	~NiBoolInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BOOL_INTERPOLATOR_MEMBERS
+  NiBoolInterpolator();
+  ~NiBoolInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BOOL_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBoolTimelineInterpolator.cpp b/obj/NiBoolTimelineInterpolator.cpp
index 281345d6..eaa3b137 100644
--- a/obj/NiBoolTimelineInterpolator.cpp
+++ b/obj/NiBoolTimelineInterpolator.cpp
@@ -12,18 +12,22 @@ NiBoolTimelineInterpolator::NiBoolTimelineInterpolator() NI_BOOL_TIMELINE_INTERP
 NiBoolTimelineInterpolator::~NiBoolTimelineInterpolator() {}
 
 void NiBoolTimelineInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BOOL_TIMELINE_INTERPOLATOR_READ
+  NI_BOOL_TIMELINE_INTERPOLATOR_READ
 }
 
 void NiBoolTimelineInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BOOL_TIMELINE_INTERPOLATOR_WRITE
+  NI_BOOL_TIMELINE_INTERPOLATOR_WRITE
 }
 
 string NiBoolTimelineInterpolator::asString( bool verbose ) const {
-	NI_BOOL_TIMELINE_INTERPOLATOR_STRING
+  NI_BOOL_TIMELINE_INTERPOLATOR_STRING
 }
 
 void NiBoolTimelineInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BOOL_TIMELINE_INTERPOLATOR_FIXLINKS
+  NI_BOOL_TIMELINE_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiBoolTimelineInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBoolTimelineInterpolator.h b/obj/NiBoolTimelineInterpolator.h
index f2b59580..738263a4 100644
--- a/obj/NiBoolTimelineInterpolator.h
+++ b/obj/NiBoolTimelineInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiBoolTimelineInterpolator> NiBoolTimelineInterpolatorRef;
 
 class NiBoolTimelineInterpolator : public NI_BOOL_TIMELINE_INTERPOLATOR_PARENT {
 public:
-	NiBoolTimelineInterpolator();
-	~NiBoolTimelineInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BOOL_TIMELINE_INTERPOLATOR_MEMBERS
+  NiBoolTimelineInterpolator();
+  ~NiBoolTimelineInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BOOL_TIMELINE_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiBooleanExtraData.cpp b/obj/NiBooleanExtraData.cpp
index dca4aebc..1e8be0a5 100644
--- a/obj/NiBooleanExtraData.cpp
+++ b/obj/NiBooleanExtraData.cpp
@@ -11,18 +11,22 @@ NiBooleanExtraData::NiBooleanExtraData() NI_BOOLEAN_EXTRA_DATA_CONSTRUCT {}
 NiBooleanExtraData::~NiBooleanExtraData() {}
 
 void NiBooleanExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_BOOLEAN_EXTRA_DATA_READ
+  NI_BOOLEAN_EXTRA_DATA_READ
 }
 
 void NiBooleanExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_BOOLEAN_EXTRA_DATA_WRITE
+  NI_BOOLEAN_EXTRA_DATA_WRITE
 }
 
 string NiBooleanExtraData::asString( bool verbose ) const {
-	NI_BOOLEAN_EXTRA_DATA_STRING
+  NI_BOOLEAN_EXTRA_DATA_STRING
 }
 
 void NiBooleanExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_BOOLEAN_EXTRA_DATA_FIXLINKS
+  NI_BOOLEAN_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiBooleanExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiBooleanExtraData.h b/obj/NiBooleanExtraData.h
index 057ad1b7..d26a2eb5 100644
--- a/obj/NiBooleanExtraData.h
+++ b/obj/NiBooleanExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiBooleanExtraData> NiBooleanExtraDataRef;
 
 class NiBooleanExtraData : public NI_BOOLEAN_EXTRA_DATA_PARENT {
 public:
-	NiBooleanExtraData();
-	~NiBooleanExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_BOOLEAN_EXTRA_DATA_MEMBERS
+  NiBooleanExtraData();
+  ~NiBooleanExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_BOOLEAN_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiCamera.cpp b/obj/NiCamera.cpp
index 6b77ced4..84b0ad2d 100644
--- a/obj/NiCamera.cpp
+++ b/obj/NiCamera.cpp
@@ -2,6 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiCamera.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type NiCamera::TYPE("NiCamera", &NI_CAMERA_PARENT::TYPE );
@@ -11,18 +12,22 @@ NiCamera::NiCamera() NI_CAMERA_CONSTRUCT {}
 NiCamera::~NiCamera() {}
 
 void NiCamera::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_CAMERA_READ
+  NI_CAMERA_READ
 }
 
 void NiCamera::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_CAMERA_WRITE
+  NI_CAMERA_WRITE
 }
 
 string NiCamera::asString( bool verbose ) const {
-	NI_CAMERA_STRING
+  NI_CAMERA_STRING
 }
 
 void NiCamera::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_CAMERA_FIXLINKS
+  NI_CAMERA_FIXLINKS
 }
 
+const Type & NiCamera::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiCamera.h b/obj/NiCamera.h
index 7d0fd27f..d480a439 100644
--- a/obj/NiCamera.h
+++ b/obj/NiCamera.h
@@ -16,16 +16,17 @@ typedef Ref<NiCamera> NiCameraRef;
 
 class NiCamera : public NI_CAMERA_PARENT {
 public:
-	NiCamera();
-	~NiCamera();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_CAMERA_MEMBERS
+  NiCamera();
+  ~NiCamera();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_CAMERA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiCollisionData.cpp b/obj/NiCollisionData.cpp
index c8630bec..d392e31f 100644
--- a/obj/NiCollisionData.cpp
+++ b/obj/NiCollisionData.cpp
@@ -12,18 +12,22 @@ NiCollisionData::NiCollisionData() NI_COLLISION_DATA_CONSTRUCT {}
 NiCollisionData::~NiCollisionData() {}
 
 void NiCollisionData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_COLLISION_DATA_READ
+  NI_COLLISION_DATA_READ
 }
 
 void NiCollisionData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_COLLISION_DATA_WRITE
+  NI_COLLISION_DATA_WRITE
 }
 
 string NiCollisionData::asString( bool verbose ) const {
-	NI_COLLISION_DATA_STRING
+  NI_COLLISION_DATA_STRING
 }
 
 void NiCollisionData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_COLLISION_DATA_FIXLINKS
+  NI_COLLISION_DATA_FIXLINKS
 }
 
+const Type & NiCollisionData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiCollisionData.h b/obj/NiCollisionData.h
index ab737744..7b3124e1 100644
--- a/obj/NiCollisionData.h
+++ b/obj/NiCollisionData.h
@@ -16,16 +16,17 @@ typedef Ref<NiCollisionData> NiCollisionDataRef;
 
 class NiCollisionData : public NI_COLLISION_DATA_PARENT {
 public:
-	NiCollisionData();
-	~NiCollisionData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_COLLISION_DATA_MEMBERS
+  NiCollisionData();
+  ~NiCollisionData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_COLLISION_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiCollisionObject.cpp b/obj/NiCollisionObject.cpp
index 6c193ad6..10a4483a 100644
--- a/obj/NiCollisionObject.cpp
+++ b/obj/NiCollisionObject.cpp
@@ -2,6 +2,8 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiCollisionObject.h"
+#include "NiAVObject.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type NiCollisionObject::TYPE("NiCollisionObject", &NI_COLLISION_OBJECT_PARENT::TYPE );
@@ -11,19 +13,23 @@ NiCollisionObject::NiCollisionObject() NI_COLLISION_OBJECT_CONSTRUCT {}
 NiCollisionObject::~NiCollisionObject() {}
 
 void NiCollisionObject::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_COLLISION_OBJECT_READ
+  NI_COLLISION_OBJECT_READ
 }
 
 void NiCollisionObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_COLLISION_OBJECT_WRITE
+  NI_COLLISION_OBJECT_WRITE
 }
 
 string NiCollisionObject::asString( bool verbose ) const {
-	NI_COLLISION_OBJECT_STRING
+  NI_COLLISION_OBJECT_STRING
 }
 
 void NiCollisionObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_COLLISION_OBJECT_FIXLINKS
+  NI_COLLISION_OBJECT_FIXLINKS
 }
 
-NiAVObject * NiCollisionObject::Parent() const { return NULL; };
+const Type & NiCollisionObject::GetType() const {
+  return TYPE;
+};
+
+NiAVObject * NiCollisionObject::Parent() const { return NULL; }
diff --git a/obj/NiCollisionObject.h b/obj/NiCollisionObject.h
index 4e47208a..3a57ef22 100644
--- a/obj/NiCollisionObject.h
+++ b/obj/NiCollisionObject.h
@@ -6,7 +6,6 @@ All rights reserved.  Please see niflib.h for licence. */
 
 #include "xml_extract.h"
 #include NI_COLLISION_OBJECT_INCLUDE
-#include "NiAVObject.h"
 
 /*
  * NiCollisionObject
@@ -17,18 +16,18 @@ typedef Ref<NiCollisionObject> NiCollisionObjectRef;
 
 class NiCollisionObject : public NI_COLLISION_OBJECT_PARENT {
 public:
-	NiCollisionObject();
-	~NiCollisionObject();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-	
-	NiAVObject * Parent() const;
-private:
-	NI_COLLISION_OBJECT_MEMBERS
+  NiCollisionObject();
+  ~NiCollisionObject();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NiAVObject * NiCollisionObject::Parent() const;
+  NI_COLLISION_OBJECT_MEMBERS
 };
+
 #endif
diff --git a/obj/NiColorData.cpp b/obj/NiColorData.cpp
index b48a1963..b4ce5fa8 100644
--- a/obj/NiColorData.cpp
+++ b/obj/NiColorData.cpp
@@ -11,18 +11,22 @@ NiColorData::NiColorData() NI_COLOR_DATA_CONSTRUCT {}
 NiColorData::~NiColorData() {}
 
 void NiColorData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_COLOR_DATA_READ
+  NI_COLOR_DATA_READ
 }
 
 void NiColorData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_COLOR_DATA_WRITE
+  NI_COLOR_DATA_WRITE
 }
 
 string NiColorData::asString( bool verbose ) const {
-	NI_COLOR_DATA_STRING
+  NI_COLOR_DATA_STRING
 }
 
 void NiColorData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_COLOR_DATA_FIXLINKS
+  NI_COLOR_DATA_FIXLINKS
 }
 
+const Type & NiColorData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiColorData.h b/obj/NiColorData.h
index 59775b76..524a3346 100644
--- a/obj/NiColorData.h
+++ b/obj/NiColorData.h
@@ -16,16 +16,17 @@ typedef Ref<NiColorData> NiColorDataRef;
 
 class NiColorData : public NI_COLOR_DATA_PARENT {
 public:
-	NiColorData();
-	~NiColorData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_COLOR_DATA_MEMBERS
+  NiColorData();
+  ~NiColorData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_COLOR_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiColorExtraData.cpp b/obj/NiColorExtraData.cpp
index 67f5707f..bc434c06 100644
--- a/obj/NiColorExtraData.cpp
+++ b/obj/NiColorExtraData.cpp
@@ -11,18 +11,22 @@ NiColorExtraData::NiColorExtraData() NI_COLOR_EXTRA_DATA_CONSTRUCT {}
 NiColorExtraData::~NiColorExtraData() {}
 
 void NiColorExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_COLOR_EXTRA_DATA_READ
+  NI_COLOR_EXTRA_DATA_READ
 }
 
 void NiColorExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_COLOR_EXTRA_DATA_WRITE
+  NI_COLOR_EXTRA_DATA_WRITE
 }
 
 string NiColorExtraData::asString( bool verbose ) const {
-	NI_COLOR_EXTRA_DATA_STRING
+  NI_COLOR_EXTRA_DATA_STRING
 }
 
 void NiColorExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_COLOR_EXTRA_DATA_FIXLINKS
+  NI_COLOR_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiColorExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiColorExtraData.h b/obj/NiColorExtraData.h
index a88d6865..b3723598 100644
--- a/obj/NiColorExtraData.h
+++ b/obj/NiColorExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiColorExtraData> NiColorExtraDataRef;
 
 class NiColorExtraData : public NI_COLOR_EXTRA_DATA_PARENT {
 public:
-	NiColorExtraData();
-	~NiColorExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_COLOR_EXTRA_DATA_MEMBERS
+  NiColorExtraData();
+  ~NiColorExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_COLOR_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiControllerManager.cpp b/obj/NiControllerManager.cpp
index 4e3974ba..06564a4e 100644
--- a/obj/NiControllerManager.cpp
+++ b/obj/NiControllerManager.cpp
@@ -13,18 +13,22 @@ NiControllerManager::NiControllerManager() NI_CONTROLLER_MANAGER_CONSTRUCT {}
 NiControllerManager::~NiControllerManager() {}
 
 void NiControllerManager::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_CONTROLLER_MANAGER_READ
+  NI_CONTROLLER_MANAGER_READ
 }
 
 void NiControllerManager::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_CONTROLLER_MANAGER_WRITE
+  NI_CONTROLLER_MANAGER_WRITE
 }
 
 string NiControllerManager::asString( bool verbose ) const {
-	NI_CONTROLLER_MANAGER_STRING
+  NI_CONTROLLER_MANAGER_STRING
 }
 
 void NiControllerManager::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_CONTROLLER_MANAGER_FIXLINKS
+  NI_CONTROLLER_MANAGER_FIXLINKS
 }
 
+const Type & NiControllerManager::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiControllerManager.h b/obj/NiControllerManager.h
index c06deffd..7f60f662 100644
--- a/obj/NiControllerManager.h
+++ b/obj/NiControllerManager.h
@@ -16,16 +16,17 @@ typedef Ref<NiControllerManager> NiControllerManagerRef;
 
 class NiControllerManager : public NI_CONTROLLER_MANAGER_PARENT {
 public:
-	NiControllerManager();
-	~NiControllerManager();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_CONTROLLER_MANAGER_MEMBERS
+  NiControllerManager();
+  ~NiControllerManager();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_CONTROLLER_MANAGER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiControllerSequence.cpp b/obj/NiControllerSequence.cpp
index e2ec7e47..4d5c53a3 100644
--- a/obj/NiControllerSequence.cpp
+++ b/obj/NiControllerSequence.cpp
@@ -2,10 +2,13 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiControllerSequence.h"
-#include "AInterpolator.h"
+#include "NiInterpolator.h"
+#include "NiStringPalette.h"
+#include "NiInterpolator.h"
 #include "NiStringPalette.h"
 #include "NiTextKeyExtraData.h"
 #include "NiControllerManager.h"
+#include "NiStringPalette.h"
 
 //Definition of TYPE constant
 const Type NiControllerSequence::TYPE("NiControllerSequence", &NI_CONTROLLER_SEQUENCE_PARENT::TYPE );
@@ -15,20 +18,23 @@ NiControllerSequence::NiControllerSequence() NI_CONTROLLER_SEQUENCE_CONSTRUCT {}
 NiControllerSequence::~NiControllerSequence() {}
 
 void NiControllerSequence::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_CONTROLLER_SEQUENCE_READ
+  NI_CONTROLLER_SEQUENCE_READ
 }
 
 void NiControllerSequence::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_CONTROLLER_SEQUENCE_WRITE
+  NI_CONTROLLER_SEQUENCE_WRITE
 }
 
 string NiControllerSequence::asString( bool verbose ) const {
-	NI_CONTROLLER_SEQUENCE_STRING
+  NI_CONTROLLER_SEQUENCE_STRING
 }
 
 void NiControllerSequence::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_CONTROLLER_SEQUENCE_FIXLINKS
+  NI_CONTROLLER_SEQUENCE_FIXLINKS
 }
 
-NiControllerManager * NiControllerSequence::Parent() const { return NULL; }
+const Type & NiControllerSequence::GetType() const {
+  return TYPE;
+};
 
+NiControllerManager * NiControllerSequence::Parent() const { return NULL; }
diff --git a/obj/NiControllerSequence.h b/obj/NiControllerSequence.h
index 776ac60d..2c20b0bf 100644
--- a/obj/NiControllerSequence.h
+++ b/obj/NiControllerSequence.h
@@ -16,18 +16,18 @@ typedef Ref<NiControllerSequence> NiControllerSequenceRef;
 
 class NiControllerSequence : public NI_CONTROLLER_SEQUENCE_PARENT {
 public:
-	NiControllerSequence();
-	~NiControllerSequence();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-	
-	NiControllerManager * Parent() const;
-private:
-	NI_CONTROLLER_SEQUENCE_MEMBERS
+  NiControllerSequence();
+  ~NiControllerSequence();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NiControllerManager * NiControllerSequence::Parent() const;
+  NI_CONTROLLER_SEQUENCE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiDefaultAVObjectPalette.cpp b/obj/NiDefaultAVObjectPalette.cpp
index 18a66462..af652750 100644
--- a/obj/NiDefaultAVObjectPalette.cpp
+++ b/obj/NiDefaultAVObjectPalette.cpp
@@ -12,18 +12,22 @@ NiDefaultAVObjectPalette::NiDefaultAVObjectPalette() NI_DEFAULT_A_V_OBJECT_PALET
 NiDefaultAVObjectPalette::~NiDefaultAVObjectPalette() {}
 
 void NiDefaultAVObjectPalette::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_DEFAULT_A_V_OBJECT_PALETTE_READ
+  NI_DEFAULT_A_V_OBJECT_PALETTE_READ
 }
 
 void NiDefaultAVObjectPalette::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_DEFAULT_A_V_OBJECT_PALETTE_WRITE
+  NI_DEFAULT_A_V_OBJECT_PALETTE_WRITE
 }
 
 string NiDefaultAVObjectPalette::asString( bool verbose ) const {
-	NI_DEFAULT_A_V_OBJECT_PALETTE_STRING
+  NI_DEFAULT_A_V_OBJECT_PALETTE_STRING
 }
 
 void NiDefaultAVObjectPalette::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_DEFAULT_A_V_OBJECT_PALETTE_FIXLINKS
+  NI_DEFAULT_A_V_OBJECT_PALETTE_FIXLINKS
 }
 
+const Type & NiDefaultAVObjectPalette::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiDefaultAVObjectPalette.h b/obj/NiDefaultAVObjectPalette.h
index 0c03034f..9a6b9802 100644
--- a/obj/NiDefaultAVObjectPalette.h
+++ b/obj/NiDefaultAVObjectPalette.h
@@ -16,16 +16,17 @@ typedef Ref<NiDefaultAVObjectPalette> NiDefaultAVObjectPaletteRef;
 
 class NiDefaultAVObjectPalette : public NI_DEFAULT_A_V_OBJECT_PALETTE_PARENT {
 public:
-	NiDefaultAVObjectPalette();
-	~NiDefaultAVObjectPalette();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_DEFAULT_A_V_OBJECT_PALETTE_MEMBERS
+  NiDefaultAVObjectPalette();
+  ~NiDefaultAVObjectPalette();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_DEFAULT_A_V_OBJECT_PALETTE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiDirectionalLight.cpp b/obj/NiDirectionalLight.cpp
index b4066a13..1a52183d 100644
--- a/obj/NiDirectionalLight.cpp
+++ b/obj/NiDirectionalLight.cpp
@@ -11,18 +11,22 @@ NiDirectionalLight::NiDirectionalLight() NI_DIRECTIONAL_LIGHT_CONSTRUCT {}
 NiDirectionalLight::~NiDirectionalLight() {}
 
 void NiDirectionalLight::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_DIRECTIONAL_LIGHT_READ
+  NI_DIRECTIONAL_LIGHT_READ
 }
 
 void NiDirectionalLight::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_DIRECTIONAL_LIGHT_WRITE
+  NI_DIRECTIONAL_LIGHT_WRITE
 }
 
 string NiDirectionalLight::asString( bool verbose ) const {
-	NI_DIRECTIONAL_LIGHT_STRING
+  NI_DIRECTIONAL_LIGHT_STRING
 }
 
 void NiDirectionalLight::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_DIRECTIONAL_LIGHT_FIXLINKS
+  NI_DIRECTIONAL_LIGHT_FIXLINKS
 }
 
+const Type & NiDirectionalLight::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiDirectionalLight.h b/obj/NiDirectionalLight.h
index fc0829dd..d9af432f 100644
--- a/obj/NiDirectionalLight.h
+++ b/obj/NiDirectionalLight.h
@@ -16,16 +16,17 @@ typedef Ref<NiDirectionalLight> NiDirectionalLightRef;
 
 class NiDirectionalLight : public NI_DIRECTIONAL_LIGHT_PARENT {
 public:
-	NiDirectionalLight();
-	~NiDirectionalLight();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_DIRECTIONAL_LIGHT_MEMBERS
+  NiDirectionalLight();
+  ~NiDirectionalLight();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_DIRECTIONAL_LIGHT_MEMBERS
 };
+
 #endif
diff --git a/obj/NiDitherProperty.cpp b/obj/NiDitherProperty.cpp
index d067ca3d..0cd930c2 100644
--- a/obj/NiDitherProperty.cpp
+++ b/obj/NiDitherProperty.cpp
@@ -11,18 +11,22 @@ NiDitherProperty::NiDitherProperty() NI_DITHER_PROPERTY_CONSTRUCT {}
 NiDitherProperty::~NiDitherProperty() {}
 
 void NiDitherProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_DITHER_PROPERTY_READ
+  NI_DITHER_PROPERTY_READ
 }
 
 void NiDitherProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_DITHER_PROPERTY_WRITE
+  NI_DITHER_PROPERTY_WRITE
 }
 
 string NiDitherProperty::asString( bool verbose ) const {
-	NI_DITHER_PROPERTY_STRING
+  NI_DITHER_PROPERTY_STRING
 }
 
 void NiDitherProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_DITHER_PROPERTY_FIXLINKS
+  NI_DITHER_PROPERTY_FIXLINKS
 }
 
+const Type & NiDitherProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiDitherProperty.h b/obj/NiDitherProperty.h
index 2c7c1869..baaa5095 100644
--- a/obj/NiDitherProperty.h
+++ b/obj/NiDitherProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiDitherProperty> NiDitherPropertyRef;
 
 class NiDitherProperty : public NI_DITHER_PROPERTY_PARENT {
 public:
-	NiDitherProperty();
-	~NiDitherProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_DITHER_PROPERTY_MEMBERS
+  NiDitherProperty();
+  ~NiDitherProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_DITHER_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiDynamicEffect.cpp b/obj/NiDynamicEffect.cpp
index 205a65c0..c44a73de 100644
--- a/obj/NiDynamicEffect.cpp
+++ b/obj/NiDynamicEffect.cpp
@@ -2,6 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiDynamicEffect.h"
+#include "NiAVObject.h"
 
 //Definition of TYPE constant
 const Type NiDynamicEffect::TYPE("NiDynamicEffect", &NI_DYNAMIC_EFFECT_PARENT::TYPE );
@@ -11,18 +12,22 @@ NiDynamicEffect::NiDynamicEffect() NI_DYNAMIC_EFFECT_CONSTRUCT {}
 NiDynamicEffect::~NiDynamicEffect() {}
 
 void NiDynamicEffect::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_DYNAMIC_EFFECT_READ
+  NI_DYNAMIC_EFFECT_READ
 }
 
 void NiDynamicEffect::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_DYNAMIC_EFFECT_WRITE
+  NI_DYNAMIC_EFFECT_WRITE
 }
 
 string NiDynamicEffect::asString( bool verbose ) const {
-	NI_DYNAMIC_EFFECT_STRING
+  NI_DYNAMIC_EFFECT_STRING
 }
 
 void NiDynamicEffect::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_DYNAMIC_EFFECT_FIXLINKS
+  NI_DYNAMIC_EFFECT_FIXLINKS
 }
 
+const Type & NiDynamicEffect::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiDynamicEffect.h b/obj/NiDynamicEffect.h
index b0ddadba..e5ce7661 100644
--- a/obj/NiDynamicEffect.h
+++ b/obj/NiDynamicEffect.h
@@ -16,16 +16,17 @@ typedef Ref<NiDynamicEffect> NiDynamicEffectRef;
 
 class NiDynamicEffect : public NI_DYNAMIC_EFFECT_PARENT {
 public:
-	NiDynamicEffect();
-	~NiDynamicEffect();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_DYNAMIC_EFFECT_MEMBERS
+  NiDynamicEffect();
+  ~NiDynamicEffect();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_DYNAMIC_EFFECT_MEMBERS
 };
+
 #endif
diff --git a/obj/NiExtraData.cpp b/obj/NiExtraData.cpp
index d05d976d..1f108e0b 100644
--- a/obj/NiExtraData.cpp
+++ b/obj/NiExtraData.cpp
@@ -1,6 +1,7 @@
 /* Copyright (c) 2006, NIF File Format Library and Tools
 All rights reserved.  Please see niflib.h for licence. */
 
+#include "NiExtraData.h"
 #include "NiExtraData.h"
 
 //Definition of TYPE constant
@@ -11,18 +12,22 @@ NiExtraData::NiExtraData() NI_EXTRA_DATA_CONSTRUCT {}
 NiExtraData::~NiExtraData() {}
 
 void NiExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_EXTRA_DATA_READ
+  NI_EXTRA_DATA_READ
 }
 
 void NiExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_EXTRA_DATA_WRITE
+  NI_EXTRA_DATA_WRITE
 }
 
 string NiExtraData::asString( bool verbose ) const {
-	NI_EXTRA_DATA_STRING
+  NI_EXTRA_DATA_STRING
 }
 
 void NiExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_EXTRA_DATA_FIXLINKS
+  NI_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiExtraData.h b/obj/NiExtraData.h
index d0121f81..b4ffa722 100644
--- a/obj/NiExtraData.h
+++ b/obj/NiExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiExtraData> NiExtraDataRef;
 
 class NiExtraData : public NI_EXTRA_DATA_PARENT {
 public:
-	NiExtraData();
-	~NiExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_EXTRA_DATA_MEMBERS
+  NiExtraData();
+  ~NiExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiFlipController.cpp b/obj/NiFlipController.cpp
index fa24f710..5c967fa5 100644
--- a/obj/NiFlipController.cpp
+++ b/obj/NiFlipController.cpp
@@ -12,18 +12,22 @@ NiFlipController::NiFlipController() NI_FLIP_CONTROLLER_CONSTRUCT {}
 NiFlipController::~NiFlipController() {}
 
 void NiFlipController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_FLIP_CONTROLLER_READ
+  NI_FLIP_CONTROLLER_READ
 }
 
 void NiFlipController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_FLIP_CONTROLLER_WRITE
+  NI_FLIP_CONTROLLER_WRITE
 }
 
 string NiFlipController::asString( bool verbose ) const {
-	NI_FLIP_CONTROLLER_STRING
+  NI_FLIP_CONTROLLER_STRING
 }
 
 void NiFlipController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_FLIP_CONTROLLER_FIXLINKS
+  NI_FLIP_CONTROLLER_FIXLINKS
 }
 
+const Type & NiFlipController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiFlipController.h b/obj/NiFlipController.h
index a11ef7a0..17b23150 100644
--- a/obj/NiFlipController.h
+++ b/obj/NiFlipController.h
@@ -16,16 +16,17 @@ typedef Ref<NiFlipController> NiFlipControllerRef;
 
 class NiFlipController : public NI_FLIP_CONTROLLER_PARENT {
 public:
-	NiFlipController();
-	~NiFlipController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_FLIP_CONTROLLER_MEMBERS
+  NiFlipController();
+  ~NiFlipController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_FLIP_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiFloatData.cpp b/obj/NiFloatData.cpp
index 762ad730..5fe838a4 100644
--- a/obj/NiFloatData.cpp
+++ b/obj/NiFloatData.cpp
@@ -11,18 +11,22 @@ NiFloatData::NiFloatData() NI_FLOAT_DATA_CONSTRUCT {}
 NiFloatData::~NiFloatData() {}
 
 void NiFloatData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOAT_DATA_READ
+  NI_FLOAT_DATA_READ
 }
 
 void NiFloatData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_FLOAT_DATA_WRITE
+  NI_FLOAT_DATA_WRITE
 }
 
 string NiFloatData::asString( bool verbose ) const {
-	NI_FLOAT_DATA_STRING
+  NI_FLOAT_DATA_STRING
 }
 
 void NiFloatData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOAT_DATA_FIXLINKS
+  NI_FLOAT_DATA_FIXLINKS
 }
 
+const Type & NiFloatData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiFloatData.h b/obj/NiFloatData.h
index f5ec9ea8..29653367 100644
--- a/obj/NiFloatData.h
+++ b/obj/NiFloatData.h
@@ -16,16 +16,17 @@ typedef Ref<NiFloatData> NiFloatDataRef;
 
 class NiFloatData : public NI_FLOAT_DATA_PARENT {
 public:
-	NiFloatData();
-	~NiFloatData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_FLOAT_DATA_MEMBERS
+  NiFloatData();
+  ~NiFloatData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_FLOAT_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiFloatExtraData.cpp b/obj/NiFloatExtraData.cpp
index 05ee96a8..3a5cc36e 100644
--- a/obj/NiFloatExtraData.cpp
+++ b/obj/NiFloatExtraData.cpp
@@ -11,18 +11,22 @@ NiFloatExtraData::NiFloatExtraData() NI_FLOAT_EXTRA_DATA_CONSTRUCT {}
 NiFloatExtraData::~NiFloatExtraData() {}
 
 void NiFloatExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOAT_EXTRA_DATA_READ
+  NI_FLOAT_EXTRA_DATA_READ
 }
 
 void NiFloatExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_FLOAT_EXTRA_DATA_WRITE
+  NI_FLOAT_EXTRA_DATA_WRITE
 }
 
 string NiFloatExtraData::asString( bool verbose ) const {
-	NI_FLOAT_EXTRA_DATA_STRING
+  NI_FLOAT_EXTRA_DATA_STRING
 }
 
 void NiFloatExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOAT_EXTRA_DATA_FIXLINKS
+  NI_FLOAT_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiFloatExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiFloatExtraData.h b/obj/NiFloatExtraData.h
index d5b783f6..4c60bc0d 100644
--- a/obj/NiFloatExtraData.h
+++ b/obj/NiFloatExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiFloatExtraData> NiFloatExtraDataRef;
 
 class NiFloatExtraData : public NI_FLOAT_EXTRA_DATA_PARENT {
 public:
-	NiFloatExtraData();
-	~NiFloatExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_FLOAT_EXTRA_DATA_MEMBERS
+  NiFloatExtraData();
+  ~NiFloatExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_FLOAT_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiFloatExtraDataController.cpp b/obj/NiFloatExtraDataController.cpp
index e06ece2e..546290d6 100644
--- a/obj/NiFloatExtraDataController.cpp
+++ b/obj/NiFloatExtraDataController.cpp
@@ -2,6 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiFloatExtraDataController.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type NiFloatExtraDataController::TYPE("NiFloatExtraDataController", &NI_FLOAT_EXTRA_DATA_CONTROLLER_PARENT::TYPE );
@@ -11,18 +12,22 @@ NiFloatExtraDataController::NiFloatExtraDataController() NI_FLOAT_EXTRA_DATA_CON
 NiFloatExtraDataController::~NiFloatExtraDataController() {}
 
 void NiFloatExtraDataController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOAT_EXTRA_DATA_CONTROLLER_READ
+  NI_FLOAT_EXTRA_DATA_CONTROLLER_READ
 }
 
 void NiFloatExtraDataController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_FLOAT_EXTRA_DATA_CONTROLLER_WRITE
+  NI_FLOAT_EXTRA_DATA_CONTROLLER_WRITE
 }
 
 string NiFloatExtraDataController::asString( bool verbose ) const {
-	NI_FLOAT_EXTRA_DATA_CONTROLLER_STRING
+  NI_FLOAT_EXTRA_DATA_CONTROLLER_STRING
 }
 
 void NiFloatExtraDataController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOAT_EXTRA_DATA_CONTROLLER_FIXLINKS
+  NI_FLOAT_EXTRA_DATA_CONTROLLER_FIXLINKS
 }
 
+const Type & NiFloatExtraDataController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiFloatExtraDataController.h b/obj/NiFloatExtraDataController.h
index cfb8706b..2990d7d2 100644
--- a/obj/NiFloatExtraDataController.h
+++ b/obj/NiFloatExtraDataController.h
@@ -16,16 +16,17 @@ typedef Ref<NiFloatExtraDataController> NiFloatExtraDataControllerRef;
 
 class NiFloatExtraDataController : public NI_FLOAT_EXTRA_DATA_CONTROLLER_PARENT {
 public:
-	NiFloatExtraDataController();
-	~NiFloatExtraDataController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_FLOAT_EXTRA_DATA_CONTROLLER_MEMBERS
+  NiFloatExtraDataController();
+  ~NiFloatExtraDataController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_FLOAT_EXTRA_DATA_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiFloatInterpolator.cpp b/obj/NiFloatInterpolator.cpp
index d8111d4a..81457d0e 100644
--- a/obj/NiFloatInterpolator.cpp
+++ b/obj/NiFloatInterpolator.cpp
@@ -12,18 +12,22 @@ NiFloatInterpolator::NiFloatInterpolator() NI_FLOAT_INTERPOLATOR_CONSTRUCT {}
 NiFloatInterpolator::~NiFloatInterpolator() {}
 
 void NiFloatInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOAT_INTERPOLATOR_READ
+  NI_FLOAT_INTERPOLATOR_READ
 }
 
 void NiFloatInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_FLOAT_INTERPOLATOR_WRITE
+  NI_FLOAT_INTERPOLATOR_WRITE
 }
 
 string NiFloatInterpolator::asString( bool verbose ) const {
-	NI_FLOAT_INTERPOLATOR_STRING
+  NI_FLOAT_INTERPOLATOR_STRING
 }
 
 void NiFloatInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOAT_INTERPOLATOR_FIXLINKS
+  NI_FLOAT_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiFloatInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiFloatInterpolator.h b/obj/NiFloatInterpolator.h
index 1d87fccc..b8345789 100644
--- a/obj/NiFloatInterpolator.h
+++ b/obj/NiFloatInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiFloatInterpolator> NiFloatInterpolatorRef;
 
 class NiFloatInterpolator : public NI_FLOAT_INTERPOLATOR_PARENT {
 public:
-	NiFloatInterpolator();
-	~NiFloatInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_FLOAT_INTERPOLATOR_MEMBERS
+  NiFloatInterpolator();
+  ~NiFloatInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_FLOAT_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiFloatsExtraData.cpp b/obj/NiFloatsExtraData.cpp
index b2223fb1..cc2a67fa 100644
--- a/obj/NiFloatsExtraData.cpp
+++ b/obj/NiFloatsExtraData.cpp
@@ -11,18 +11,22 @@ NiFloatsExtraData::NiFloatsExtraData() NI_FLOATS_EXTRA_DATA_CONSTRUCT {}
 NiFloatsExtraData::~NiFloatsExtraData() {}
 
 void NiFloatsExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOATS_EXTRA_DATA_READ
+  NI_FLOATS_EXTRA_DATA_READ
 }
 
 void NiFloatsExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_FLOATS_EXTRA_DATA_WRITE
+  NI_FLOATS_EXTRA_DATA_WRITE
 }
 
 string NiFloatsExtraData::asString( bool verbose ) const {
-	NI_FLOATS_EXTRA_DATA_STRING
+  NI_FLOATS_EXTRA_DATA_STRING
 }
 
 void NiFloatsExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_FLOATS_EXTRA_DATA_FIXLINKS
+  NI_FLOATS_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiFloatsExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiFloatsExtraData.h b/obj/NiFloatsExtraData.h
index cd936589..f5129e05 100644
--- a/obj/NiFloatsExtraData.h
+++ b/obj/NiFloatsExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiFloatsExtraData> NiFloatsExtraDataRef;
 
 class NiFloatsExtraData : public NI_FLOATS_EXTRA_DATA_PARENT {
 public:
-	NiFloatsExtraData();
-	~NiFloatsExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_FLOATS_EXTRA_DATA_MEMBERS
+  NiFloatsExtraData();
+  ~NiFloatsExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_FLOATS_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiFogProperty.cpp b/obj/NiFogProperty.cpp
index 3f4e577a..24f5f2fd 100644
--- a/obj/NiFogProperty.cpp
+++ b/obj/NiFogProperty.cpp
@@ -11,18 +11,22 @@ NiFogProperty::NiFogProperty() NI_FOG_PROPERTY_CONSTRUCT {}
 NiFogProperty::~NiFogProperty() {}
 
 void NiFogProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_FOG_PROPERTY_READ
+  NI_FOG_PROPERTY_READ
 }
 
 void NiFogProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_FOG_PROPERTY_WRITE
+  NI_FOG_PROPERTY_WRITE
 }
 
 string NiFogProperty::asString( bool verbose ) const {
-	NI_FOG_PROPERTY_STRING
+  NI_FOG_PROPERTY_STRING
 }
 
 void NiFogProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_FOG_PROPERTY_FIXLINKS
+  NI_FOG_PROPERTY_FIXLINKS
 }
 
+const Type & NiFogProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiFogProperty.h b/obj/NiFogProperty.h
index e1e7d8b1..6900d3ff 100644
--- a/obj/NiFogProperty.h
+++ b/obj/NiFogProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiFogProperty> NiFogPropertyRef;
 
 class NiFogProperty : public NI_FOG_PROPERTY_PARENT {
 public:
-	NiFogProperty();
-	~NiFogProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_FOG_PROPERTY_MEMBERS
+  NiFogProperty();
+  ~NiFogProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_FOG_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiGeomMorpherController.cpp b/obj/NiGeomMorpherController.cpp
index d820bdf9..b243a84f 100644
--- a/obj/NiGeomMorpherController.cpp
+++ b/obj/NiGeomMorpherController.cpp
@@ -3,7 +3,7 @@ All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiGeomMorpherController.h"
 #include "NiMorphData.h"
-#include "AInterpolator.h"
+#include "NiInterpolator.h"
 
 //Definition of TYPE constant
 const Type NiGeomMorpherController::TYPE("NiGeomMorpherController", &NI_GEOM_MORPHER_CONTROLLER_PARENT::TYPE );
@@ -13,18 +13,22 @@ NiGeomMorpherController::NiGeomMorpherController() NI_GEOM_MORPHER_CONTROLLER_CO
 NiGeomMorpherController::~NiGeomMorpherController() {}
 
 void NiGeomMorpherController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_GEOM_MORPHER_CONTROLLER_READ
+  NI_GEOM_MORPHER_CONTROLLER_READ
 }
 
 void NiGeomMorpherController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_GEOM_MORPHER_CONTROLLER_WRITE
+  NI_GEOM_MORPHER_CONTROLLER_WRITE
 }
 
 string NiGeomMorpherController::asString( bool verbose ) const {
-	NI_GEOM_MORPHER_CONTROLLER_STRING
+  NI_GEOM_MORPHER_CONTROLLER_STRING
 }
 
 void NiGeomMorpherController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_GEOM_MORPHER_CONTROLLER_FIXLINKS
+  NI_GEOM_MORPHER_CONTROLLER_FIXLINKS
 }
 
+const Type & NiGeomMorpherController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiGeomMorpherController.h b/obj/NiGeomMorpherController.h
index aaaabde8..a0d63e40 100644
--- a/obj/NiGeomMorpherController.h
+++ b/obj/NiGeomMorpherController.h
@@ -16,16 +16,17 @@ typedef Ref<NiGeomMorpherController> NiGeomMorpherControllerRef;
 
 class NiGeomMorpherController : public NI_GEOM_MORPHER_CONTROLLER_PARENT {
 public:
-	NiGeomMorpherController();
-	~NiGeomMorpherController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_GEOM_MORPHER_CONTROLLER_MEMBERS
+  NiGeomMorpherController();
+  ~NiGeomMorpherController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_GEOM_MORPHER_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiGravity.cpp b/obj/NiGravity.cpp
index 63c96202..f7eea5d9 100644
--- a/obj/NiGravity.cpp
+++ b/obj/NiGravity.cpp
@@ -11,18 +11,22 @@ NiGravity::NiGravity() NI_GRAVITY_CONSTRUCT {}
 NiGravity::~NiGravity() {}
 
 void NiGravity::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_GRAVITY_READ
+  NI_GRAVITY_READ
 }
 
 void NiGravity::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_GRAVITY_WRITE
+  NI_GRAVITY_WRITE
 }
 
 string NiGravity::asString( bool verbose ) const {
-	NI_GRAVITY_STRING
+  NI_GRAVITY_STRING
 }
 
 void NiGravity::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_GRAVITY_FIXLINKS
+  NI_GRAVITY_FIXLINKS
 }
 
+const Type & NiGravity::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiGravity.h b/obj/NiGravity.h
index f7fa054f..05c131b8 100644
--- a/obj/NiGravity.h
+++ b/obj/NiGravity.h
@@ -16,16 +16,17 @@ typedef Ref<NiGravity> NiGravityRef;
 
 class NiGravity : public NI_GRAVITY_PARENT {
 public:
-	NiGravity();
-	~NiGravity();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_GRAVITY_MEMBERS
+  NiGravity();
+  ~NiGravity();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_GRAVITY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiIntegerExtraData.cpp b/obj/NiIntegerExtraData.cpp
index 3626d51d..66d9c075 100644
--- a/obj/NiIntegerExtraData.cpp
+++ b/obj/NiIntegerExtraData.cpp
@@ -11,18 +11,22 @@ NiIntegerExtraData::NiIntegerExtraData() NI_INTEGER_EXTRA_DATA_CONSTRUCT {}
 NiIntegerExtraData::~NiIntegerExtraData() {}
 
 void NiIntegerExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_INTEGER_EXTRA_DATA_READ
+  NI_INTEGER_EXTRA_DATA_READ
 }
 
 void NiIntegerExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_INTEGER_EXTRA_DATA_WRITE
+  NI_INTEGER_EXTRA_DATA_WRITE
 }
 
 string NiIntegerExtraData::asString( bool verbose ) const {
-	NI_INTEGER_EXTRA_DATA_STRING
+  NI_INTEGER_EXTRA_DATA_STRING
 }
 
 void NiIntegerExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_INTEGER_EXTRA_DATA_FIXLINKS
+  NI_INTEGER_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiIntegerExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiIntegerExtraData.h b/obj/NiIntegerExtraData.h
index 649ab018..6825a69d 100644
--- a/obj/NiIntegerExtraData.h
+++ b/obj/NiIntegerExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiIntegerExtraData> NiIntegerExtraDataRef;
 
 class NiIntegerExtraData : public NI_INTEGER_EXTRA_DATA_PARENT {
 public:
-	NiIntegerExtraData();
-	~NiIntegerExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_INTEGER_EXTRA_DATA_MEMBERS
+  NiIntegerExtraData();
+  ~NiIntegerExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_INTEGER_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiIntegersExtraData.cpp b/obj/NiIntegersExtraData.cpp
index 7ea09384..d084a35e 100644
--- a/obj/NiIntegersExtraData.cpp
+++ b/obj/NiIntegersExtraData.cpp
@@ -11,18 +11,22 @@ NiIntegersExtraData::NiIntegersExtraData() NI_INTEGERS_EXTRA_DATA_CONSTRUCT {}
 NiIntegersExtraData::~NiIntegersExtraData() {}
 
 void NiIntegersExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_INTEGERS_EXTRA_DATA_READ
+  NI_INTEGERS_EXTRA_DATA_READ
 }
 
 void NiIntegersExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_INTEGERS_EXTRA_DATA_WRITE
+  NI_INTEGERS_EXTRA_DATA_WRITE
 }
 
 string NiIntegersExtraData::asString( bool verbose ) const {
-	NI_INTEGERS_EXTRA_DATA_STRING
+  NI_INTEGERS_EXTRA_DATA_STRING
 }
 
 void NiIntegersExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_INTEGERS_EXTRA_DATA_FIXLINKS
+  NI_INTEGERS_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiIntegersExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiIntegersExtraData.h b/obj/NiIntegersExtraData.h
index 8c691654..a3beb6bf 100644
--- a/obj/NiIntegersExtraData.h
+++ b/obj/NiIntegersExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiIntegersExtraData> NiIntegersExtraDataRef;
 
 class NiIntegersExtraData : public NI_INTEGERS_EXTRA_DATA_PARENT {
 public:
-	NiIntegersExtraData();
-	~NiIntegersExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_INTEGERS_EXTRA_DATA_MEMBERS
+  NiIntegersExtraData();
+  ~NiIntegersExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_INTEGERS_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiInterpolator.cpp b/obj/NiInterpolator.cpp
new file mode 100644
index 00000000..3ed20dd4
--- /dev/null
+++ b/obj/NiInterpolator.cpp
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiInterpolator.h"
+
+//Definition of TYPE constant
+const Type NiInterpolator::TYPE("NiInterpolator", &NI_INTERPOLATOR_PARENT::TYPE );
+
+NiInterpolator::NiInterpolator() NI_INTERPOLATOR_CONSTRUCT {}
+
+NiInterpolator::~NiInterpolator() {}
+
+void NiInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
+  NI_INTERPOLATOR_READ
+}
+
+void NiInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+  NI_INTERPOLATOR_WRITE
+}
+
+string NiInterpolator::asString( bool verbose ) const {
+  NI_INTERPOLATOR_STRING
+}
+
+void NiInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
+  NI_INTERPOLATOR_FIXLINKS
+}
+
+const Type & NiInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiInterpolator.h b/obj/NiInterpolator.h
new file mode 100644
index 00000000..0e636014
--- /dev/null
+++ b/obj/NiInterpolator.h
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIINTERPOLATOR_H_
+#define _NIINTERPOLATOR_H_
+
+#include "xml_extract.h"
+#include NI_INTERPOLATOR_INCLUDE
+
+/*
+ * NiInterpolator
+ */
+
+class NiInterpolator;
+typedef Ref<NiInterpolator> NiInterpolatorRef;
+
+class NiInterpolator : public NI_INTERPOLATOR_PARENT {
+public:
+  NiInterpolator();
+  ~NiInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_INTERPOLATOR_MEMBERS
+};
+
+#endif
diff --git a/obj/NiKeyframeController.cpp b/obj/NiKeyframeController.cpp
index a7981352..ab08ddbe 100644
--- a/obj/NiKeyframeController.cpp
+++ b/obj/NiKeyframeController.cpp
@@ -12,18 +12,22 @@ NiKeyframeController::NiKeyframeController() NI_KEYFRAME_CONTROLLER_CONSTRUCT {}
 NiKeyframeController::~NiKeyframeController() {}
 
 void NiKeyframeController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_KEYFRAME_CONTROLLER_READ
+  NI_KEYFRAME_CONTROLLER_READ
 }
 
 void NiKeyframeController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_KEYFRAME_CONTROLLER_WRITE
+  NI_KEYFRAME_CONTROLLER_WRITE
 }
 
 string NiKeyframeController::asString( bool verbose ) const {
-	NI_KEYFRAME_CONTROLLER_STRING
+  NI_KEYFRAME_CONTROLLER_STRING
 }
 
 void NiKeyframeController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_KEYFRAME_CONTROLLER_FIXLINKS
+  NI_KEYFRAME_CONTROLLER_FIXLINKS
 }
 
+const Type & NiKeyframeController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiKeyframeController.h b/obj/NiKeyframeController.h
index d668a5a4..74366c72 100644
--- a/obj/NiKeyframeController.h
+++ b/obj/NiKeyframeController.h
@@ -16,16 +16,17 @@ typedef Ref<NiKeyframeController> NiKeyframeControllerRef;
 
 class NiKeyframeController : public NI_KEYFRAME_CONTROLLER_PARENT {
 public:
-	NiKeyframeController();
-	~NiKeyframeController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_KEYFRAME_CONTROLLER_MEMBERS
+  NiKeyframeController();
+  ~NiKeyframeController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_KEYFRAME_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiKeyframeData.cpp b/obj/NiKeyframeData.cpp
index d8e78748..81f43815 100644
--- a/obj/NiKeyframeData.cpp
+++ b/obj/NiKeyframeData.cpp
@@ -11,18 +11,22 @@ NiKeyframeData::NiKeyframeData() NI_KEYFRAME_DATA_CONSTRUCT {}
 NiKeyframeData::~NiKeyframeData() {}
 
 void NiKeyframeData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_KEYFRAME_DATA_READ
+  NI_KEYFRAME_DATA_READ
 }
 
 void NiKeyframeData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_KEYFRAME_DATA_WRITE
+  NI_KEYFRAME_DATA_WRITE
 }
 
 string NiKeyframeData::asString( bool verbose ) const {
-	NI_KEYFRAME_DATA_STRING
+  NI_KEYFRAME_DATA_STRING
 }
 
 void NiKeyframeData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_KEYFRAME_DATA_FIXLINKS
+  NI_KEYFRAME_DATA_FIXLINKS
 }
 
+const Type & NiKeyframeData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiKeyframeData.h b/obj/NiKeyframeData.h
index 31232938..0bd67890 100644
--- a/obj/NiKeyframeData.h
+++ b/obj/NiKeyframeData.h
@@ -16,16 +16,17 @@ typedef Ref<NiKeyframeData> NiKeyframeDataRef;
 
 class NiKeyframeData : public NI_KEYFRAME_DATA_PARENT {
 public:
-	NiKeyframeData();
-	~NiKeyframeData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_KEYFRAME_DATA_MEMBERS
+  NiKeyframeData();
+  ~NiKeyframeData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_KEYFRAME_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiLODNode.cpp b/obj/NiLODNode.cpp
index 02b4d471..bc146935 100644
--- a/obj/NiLODNode.cpp
+++ b/obj/NiLODNode.cpp
@@ -12,18 +12,22 @@ NiLODNode::NiLODNode() NI_L_O_D_NODE_CONSTRUCT {}
 NiLODNode::~NiLODNode() {}
 
 void NiLODNode::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_L_O_D_NODE_READ
+  NI_L_O_D_NODE_READ
 }
 
 void NiLODNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_L_O_D_NODE_WRITE
+  NI_L_O_D_NODE_WRITE
 }
 
 string NiLODNode::asString( bool verbose ) const {
-	NI_L_O_D_NODE_STRING
+  NI_L_O_D_NODE_STRING
 }
 
 void NiLODNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_L_O_D_NODE_FIXLINKS
+  NI_L_O_D_NODE_FIXLINKS
 }
 
+const Type & NiLODNode::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiLODNode.h b/obj/NiLODNode.h
index 0dcb618d..bc7913a7 100644
--- a/obj/NiLODNode.h
+++ b/obj/NiLODNode.h
@@ -16,16 +16,17 @@ typedef Ref<NiLODNode> NiLODNodeRef;
 
 class NiLODNode : public NI_L_O_D_NODE_PARENT {
 public:
-	NiLODNode();
-	~NiLODNode();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_L_O_D_NODE_MEMBERS
+  NiLODNode();
+  ~NiLODNode();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_L_O_D_NODE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiLight.cpp b/obj/NiLight.cpp
index d48b6d73..d27ecbbe 100644
--- a/obj/NiLight.cpp
+++ b/obj/NiLight.cpp
@@ -11,18 +11,22 @@ NiLight::NiLight() NI_LIGHT_CONSTRUCT {}
 NiLight::~NiLight() {}
 
 void NiLight::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_LIGHT_READ
+  NI_LIGHT_READ
 }
 
 void NiLight::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_LIGHT_WRITE
+  NI_LIGHT_WRITE
 }
 
 string NiLight::asString( bool verbose ) const {
-	NI_LIGHT_STRING
+  NI_LIGHT_STRING
 }
 
 void NiLight::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_LIGHT_FIXLINKS
+  NI_LIGHT_FIXLINKS
 }
 
+const Type & NiLight::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiLight.h b/obj/NiLight.h
index bd8a3631..28eb8b5e 100644
--- a/obj/NiLight.h
+++ b/obj/NiLight.h
@@ -16,16 +16,17 @@ typedef Ref<NiLight> NiLightRef;
 
 class NiLight : public NI_LIGHT_PARENT {
 public:
-	NiLight();
-	~NiLight();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_LIGHT_MEMBERS
+  NiLight();
+  ~NiLight();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_LIGHT_MEMBERS
 };
+
 #endif
diff --git a/obj/NiLightColorController.cpp b/obj/NiLightColorController.cpp
index 6c909195..c8a05ce8 100644
--- a/obj/NiLightColorController.cpp
+++ b/obj/NiLightColorController.cpp
@@ -13,18 +13,22 @@ NiLightColorController::NiLightColorController() NI_LIGHT_COLOR_CONTROLLER_CONST
 NiLightColorController::~NiLightColorController() {}
 
 void NiLightColorController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_LIGHT_COLOR_CONTROLLER_READ
+  NI_LIGHT_COLOR_CONTROLLER_READ
 }
 
 void NiLightColorController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_LIGHT_COLOR_CONTROLLER_WRITE
+  NI_LIGHT_COLOR_CONTROLLER_WRITE
 }
 
 string NiLightColorController::asString( bool verbose ) const {
-	NI_LIGHT_COLOR_CONTROLLER_STRING
+  NI_LIGHT_COLOR_CONTROLLER_STRING
 }
 
 void NiLightColorController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_LIGHT_COLOR_CONTROLLER_FIXLINKS
+  NI_LIGHT_COLOR_CONTROLLER_FIXLINKS
 }
 
+const Type & NiLightColorController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiLightColorController.h b/obj/NiLightColorController.h
index 0f53d259..dc0ff09f 100644
--- a/obj/NiLightColorController.h
+++ b/obj/NiLightColorController.h
@@ -16,16 +16,17 @@ typedef Ref<NiLightColorController> NiLightColorControllerRef;
 
 class NiLightColorController : public NI_LIGHT_COLOR_CONTROLLER_PARENT {
 public:
-	NiLightColorController();
-	~NiLightColorController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_LIGHT_COLOR_CONTROLLER_MEMBERS
+  NiLightColorController();
+  ~NiLightColorController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_LIGHT_COLOR_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiLightDimmerController.cpp b/obj/NiLightDimmerController.cpp
index f5d000fe..c0fb13f6 100644
--- a/obj/NiLightDimmerController.cpp
+++ b/obj/NiLightDimmerController.cpp
@@ -2,7 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiLightDimmerController.h"
-#include "AInterpolator.h"
+#include "NiInterpolator.h"
 
 //Definition of TYPE constant
 const Type NiLightDimmerController::TYPE("NiLightDimmerController", &NI_LIGHT_DIMMER_CONTROLLER_PARENT::TYPE );
@@ -12,18 +12,22 @@ NiLightDimmerController::NiLightDimmerController() NI_LIGHT_DIMMER_CONTROLLER_CO
 NiLightDimmerController::~NiLightDimmerController() {}
 
 void NiLightDimmerController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_LIGHT_DIMMER_CONTROLLER_READ
+  NI_LIGHT_DIMMER_CONTROLLER_READ
 }
 
 void NiLightDimmerController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_LIGHT_DIMMER_CONTROLLER_WRITE
+  NI_LIGHT_DIMMER_CONTROLLER_WRITE
 }
 
 string NiLightDimmerController::asString( bool verbose ) const {
-	NI_LIGHT_DIMMER_CONTROLLER_STRING
+  NI_LIGHT_DIMMER_CONTROLLER_STRING
 }
 
 void NiLightDimmerController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_LIGHT_DIMMER_CONTROLLER_FIXLINKS
+  NI_LIGHT_DIMMER_CONTROLLER_FIXLINKS
 }
 
+const Type & NiLightDimmerController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiLightDimmerController.h b/obj/NiLightDimmerController.h
index ee4e0a0c..3a69464a 100644
--- a/obj/NiLightDimmerController.h
+++ b/obj/NiLightDimmerController.h
@@ -16,16 +16,17 @@ typedef Ref<NiLightDimmerController> NiLightDimmerControllerRef;
 
 class NiLightDimmerController : public NI_LIGHT_DIMMER_CONTROLLER_PARENT {
 public:
-	NiLightDimmerController();
-	~NiLightDimmerController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_LIGHT_DIMMER_CONTROLLER_MEMBERS
+  NiLightDimmerController();
+  ~NiLightDimmerController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_LIGHT_DIMMER_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiLookAtController.cpp b/obj/NiLookAtController.cpp
index 0d5eace1..0c7ca421 100644
--- a/obj/NiLookAtController.cpp
+++ b/obj/NiLookAtController.cpp
@@ -12,18 +12,22 @@ NiLookAtController::NiLookAtController() NI_LOOK_AT_CONTROLLER_CONSTRUCT {}
 NiLookAtController::~NiLookAtController() {}
 
 void NiLookAtController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_LOOK_AT_CONTROLLER_READ
+  NI_LOOK_AT_CONTROLLER_READ
 }
 
 void NiLookAtController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_LOOK_AT_CONTROLLER_WRITE
+  NI_LOOK_AT_CONTROLLER_WRITE
 }
 
 string NiLookAtController::asString( bool verbose ) const {
-	NI_LOOK_AT_CONTROLLER_STRING
+  NI_LOOK_AT_CONTROLLER_STRING
 }
 
 void NiLookAtController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_LOOK_AT_CONTROLLER_FIXLINKS
+  NI_LOOK_AT_CONTROLLER_FIXLINKS
 }
 
+const Type & NiLookAtController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiLookAtController.h b/obj/NiLookAtController.h
index c88f0fcc..4ca230d5 100644
--- a/obj/NiLookAtController.h
+++ b/obj/NiLookAtController.h
@@ -16,16 +16,17 @@ typedef Ref<NiLookAtController> NiLookAtControllerRef;
 
 class NiLookAtController : public NI_LOOK_AT_CONTROLLER_PARENT {
 public:
-	NiLookAtController();
-	~NiLookAtController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_LOOK_AT_CONTROLLER_MEMBERS
+  NiLookAtController();
+  ~NiLookAtController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_LOOK_AT_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiLookAtInterpolator.cpp b/obj/NiLookAtInterpolator.cpp
index 6593f9ca..b4f5660c 100644
--- a/obj/NiLookAtInterpolator.cpp
+++ b/obj/NiLookAtInterpolator.cpp
@@ -5,6 +5,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #include "NiNode.h"
 #include "NiPoint3Interpolator.h"
 #include "NiFloatInterpolator.h"
+#include "NiFloatInterpolator.h"
 
 //Definition of TYPE constant
 const Type NiLookAtInterpolator::TYPE("NiLookAtInterpolator", &NI_LOOK_AT_INTERPOLATOR_PARENT::TYPE );
@@ -14,18 +15,22 @@ NiLookAtInterpolator::NiLookAtInterpolator() NI_LOOK_AT_INTERPOLATOR_CONSTRUCT {
 NiLookAtInterpolator::~NiLookAtInterpolator() {}
 
 void NiLookAtInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_LOOK_AT_INTERPOLATOR_READ
+  NI_LOOK_AT_INTERPOLATOR_READ
 }
 
 void NiLookAtInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_LOOK_AT_INTERPOLATOR_WRITE
+  NI_LOOK_AT_INTERPOLATOR_WRITE
 }
 
 string NiLookAtInterpolator::asString( bool verbose ) const {
-	NI_LOOK_AT_INTERPOLATOR_STRING
+  NI_LOOK_AT_INTERPOLATOR_STRING
 }
 
 void NiLookAtInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_LOOK_AT_INTERPOLATOR_FIXLINKS
+  NI_LOOK_AT_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiLookAtInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiLookAtInterpolator.h b/obj/NiLookAtInterpolator.h
index 4b5232ef..a4c7db0d 100644
--- a/obj/NiLookAtInterpolator.h
+++ b/obj/NiLookAtInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiLookAtInterpolator> NiLookAtInterpolatorRef;
 
 class NiLookAtInterpolator : public NI_LOOK_AT_INTERPOLATOR_PARENT {
 public:
-	NiLookAtInterpolator();
-	~NiLookAtInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_LOOK_AT_INTERPOLATOR_MEMBERS
+  NiLookAtInterpolator();
+  ~NiLookAtInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_LOOK_AT_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiMaterialColorController.cpp b/obj/NiMaterialColorController.cpp
index 9cd0d4a2..bb5f9dee 100644
--- a/obj/NiMaterialColorController.cpp
+++ b/obj/NiMaterialColorController.cpp
@@ -2,7 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiMaterialColorController.h"
-#include "NiColorData.h"
+#include "NiPosData.h"
 
 //Definition of TYPE constant
 const Type NiMaterialColorController::TYPE("NiMaterialColorController", &NI_MATERIAL_COLOR_CONTROLLER_PARENT::TYPE );
@@ -12,18 +12,22 @@ NiMaterialColorController::NiMaterialColorController() NI_MATERIAL_COLOR_CONTROL
 NiMaterialColorController::~NiMaterialColorController() {}
 
 void NiMaterialColorController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_MATERIAL_COLOR_CONTROLLER_READ
+  NI_MATERIAL_COLOR_CONTROLLER_READ
 }
 
 void NiMaterialColorController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_MATERIAL_COLOR_CONTROLLER_WRITE
+  NI_MATERIAL_COLOR_CONTROLLER_WRITE
 }
 
 string NiMaterialColorController::asString( bool verbose ) const {
-	NI_MATERIAL_COLOR_CONTROLLER_STRING
+  NI_MATERIAL_COLOR_CONTROLLER_STRING
 }
 
 void NiMaterialColorController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_MATERIAL_COLOR_CONTROLLER_FIXLINKS
+  NI_MATERIAL_COLOR_CONTROLLER_FIXLINKS
 }
 
+const Type & NiMaterialColorController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiMaterialColorController.h b/obj/NiMaterialColorController.h
index 87c754e0..25d11d9a 100644
--- a/obj/NiMaterialColorController.h
+++ b/obj/NiMaterialColorController.h
@@ -16,16 +16,17 @@ typedef Ref<NiMaterialColorController> NiMaterialColorControllerRef;
 
 class NiMaterialColorController : public NI_MATERIAL_COLOR_CONTROLLER_PARENT {
 public:
-	NiMaterialColorController();
-	~NiMaterialColorController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_MATERIAL_COLOR_CONTROLLER_MEMBERS
+  NiMaterialColorController();
+  ~NiMaterialColorController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_MATERIAL_COLOR_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiMaterialProperty.cpp b/obj/NiMaterialProperty.cpp
index a3fa3d54..c0eb9f1a 100644
--- a/obj/NiMaterialProperty.cpp
+++ b/obj/NiMaterialProperty.cpp
@@ -11,18 +11,22 @@ NiMaterialProperty::NiMaterialProperty() NI_MATERIAL_PROPERTY_CONSTRUCT {}
 NiMaterialProperty::~NiMaterialProperty() {}
 
 void NiMaterialProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_MATERIAL_PROPERTY_READ
+  NI_MATERIAL_PROPERTY_READ
 }
 
 void NiMaterialProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_MATERIAL_PROPERTY_WRITE
+  NI_MATERIAL_PROPERTY_WRITE
 }
 
 string NiMaterialProperty::asString( bool verbose ) const {
-	NI_MATERIAL_PROPERTY_STRING
+  NI_MATERIAL_PROPERTY_STRING
 }
 
 void NiMaterialProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_MATERIAL_PROPERTY_FIXLINKS
+  NI_MATERIAL_PROPERTY_FIXLINKS
 }
 
+const Type & NiMaterialProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiMaterialProperty.h b/obj/NiMaterialProperty.h
index ce098d1c..10141d94 100644
--- a/obj/NiMaterialProperty.h
+++ b/obj/NiMaterialProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiMaterialProperty> NiMaterialPropertyRef;
 
 class NiMaterialProperty : public NI_MATERIAL_PROPERTY_PARENT {
 public:
-	NiMaterialProperty();
-	~NiMaterialProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_MATERIAL_PROPERTY_MEMBERS
+  NiMaterialProperty();
+  ~NiMaterialProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_MATERIAL_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiMeshPSysData.cpp b/obj/NiMeshPSysData.cpp
index 734ce96e..c5f1f7ba 100644
--- a/obj/NiMeshPSysData.cpp
+++ b/obj/NiMeshPSysData.cpp
@@ -3,6 +3,7 @@ All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiMeshPSysData.h"
 #include "AParticleModifier.h"
+#include "AParticleModifier.h"
 #include "NiNode.h"
 
 //Definition of TYPE constant
@@ -13,18 +14,22 @@ NiMeshPSysData::NiMeshPSysData() NI_MESH_P_SYS_DATA_CONSTRUCT {}
 NiMeshPSysData::~NiMeshPSysData() {}
 
 void NiMeshPSysData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_MESH_P_SYS_DATA_READ
+  NI_MESH_P_SYS_DATA_READ
 }
 
 void NiMeshPSysData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_MESH_P_SYS_DATA_WRITE
+  NI_MESH_P_SYS_DATA_WRITE
 }
 
 string NiMeshPSysData::asString( bool verbose ) const {
-	NI_MESH_P_SYS_DATA_STRING
+  NI_MESH_P_SYS_DATA_STRING
 }
 
 void NiMeshPSysData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_MESH_P_SYS_DATA_FIXLINKS
+  NI_MESH_P_SYS_DATA_FIXLINKS
 }
 
+const Type & NiMeshPSysData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiMeshPSysData.h b/obj/NiMeshPSysData.h
index 02582536..bc21f854 100644
--- a/obj/NiMeshPSysData.h
+++ b/obj/NiMeshPSysData.h
@@ -16,16 +16,17 @@ typedef Ref<NiMeshPSysData> NiMeshPSysDataRef;
 
 class NiMeshPSysData : public NI_MESH_P_SYS_DATA_PARENT {
 public:
-	NiMeshPSysData();
-	~NiMeshPSysData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_MESH_P_SYS_DATA_MEMBERS
+  NiMeshPSysData();
+  ~NiMeshPSysData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_MESH_P_SYS_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiMeshParticleSystem.cpp b/obj/NiMeshParticleSystem.cpp
index b5004612..de5c97e1 100644
--- a/obj/NiMeshParticleSystem.cpp
+++ b/obj/NiMeshParticleSystem.cpp
@@ -11,18 +11,22 @@ NiMeshParticleSystem::NiMeshParticleSystem() NI_MESH_PARTICLE_SYSTEM_CONSTRUCT {
 NiMeshParticleSystem::~NiMeshParticleSystem() {}
 
 void NiMeshParticleSystem::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_MESH_PARTICLE_SYSTEM_READ
+  NI_MESH_PARTICLE_SYSTEM_READ
 }
 
 void NiMeshParticleSystem::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_MESH_PARTICLE_SYSTEM_WRITE
+  NI_MESH_PARTICLE_SYSTEM_WRITE
 }
 
 string NiMeshParticleSystem::asString( bool verbose ) const {
-	NI_MESH_PARTICLE_SYSTEM_STRING
+  NI_MESH_PARTICLE_SYSTEM_STRING
 }
 
 void NiMeshParticleSystem::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_MESH_PARTICLE_SYSTEM_FIXLINKS
+  NI_MESH_PARTICLE_SYSTEM_FIXLINKS
 }
 
+const Type & NiMeshParticleSystem::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiMeshParticleSystem.h b/obj/NiMeshParticleSystem.h
index 3e4bc50f..faa88934 100644
--- a/obj/NiMeshParticleSystem.h
+++ b/obj/NiMeshParticleSystem.h
@@ -16,16 +16,17 @@ typedef Ref<NiMeshParticleSystem> NiMeshParticleSystemRef;
 
 class NiMeshParticleSystem : public NI_MESH_PARTICLE_SYSTEM_PARENT {
 public:
-	NiMeshParticleSystem();
-	~NiMeshParticleSystem();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_MESH_PARTICLE_SYSTEM_MEMBERS
+  NiMeshParticleSystem();
+  ~NiMeshParticleSystem();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_MESH_PARTICLE_SYSTEM_MEMBERS
 };
+
 #endif
diff --git a/obj/NiMorphData.cpp b/obj/NiMorphData.cpp
index 0c9ec92d..53b6816c 100644
--- a/obj/NiMorphData.cpp
+++ b/obj/NiMorphData.cpp
@@ -11,18 +11,22 @@ NiMorphData::NiMorphData() NI_MORPH_DATA_CONSTRUCT {}
 NiMorphData::~NiMorphData() {}
 
 void NiMorphData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_MORPH_DATA_READ
+  NI_MORPH_DATA_READ
 }
 
 void NiMorphData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_MORPH_DATA_WRITE
+  NI_MORPH_DATA_WRITE
 }
 
 string NiMorphData::asString( bool verbose ) const {
-	NI_MORPH_DATA_STRING
+  NI_MORPH_DATA_STRING
 }
 
 void NiMorphData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_MORPH_DATA_FIXLINKS
+  NI_MORPH_DATA_FIXLINKS
 }
 
+const Type & NiMorphData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiMorphData.h b/obj/NiMorphData.h
index 09e5eb28..c1c78586 100644
--- a/obj/NiMorphData.h
+++ b/obj/NiMorphData.h
@@ -16,16 +16,17 @@ typedef Ref<NiMorphData> NiMorphDataRef;
 
 class NiMorphData : public NI_MORPH_DATA_PARENT {
 public:
-	NiMorphData();
-	~NiMorphData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_MORPH_DATA_MEMBERS
+  NiMorphData();
+  ~NiMorphData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_MORPH_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiMultiTargetTransformController.cpp b/obj/NiMultiTargetTransformController.cpp
index 31d858ac..6dbfa704 100644
--- a/obj/NiMultiTargetTransformController.cpp
+++ b/obj/NiMultiTargetTransformController.cpp
@@ -12,18 +12,22 @@ NiMultiTargetTransformController::NiMultiTargetTransformController() NI_MULTI_TA
 NiMultiTargetTransformController::~NiMultiTargetTransformController() {}
 
 void NiMultiTargetTransformController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_MULTI_TARGET_TRANSFORM_CONTROLLER_READ
+  NI_MULTI_TARGET_TRANSFORM_CONTROLLER_READ
 }
 
 void NiMultiTargetTransformController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_MULTI_TARGET_TRANSFORM_CONTROLLER_WRITE
+  NI_MULTI_TARGET_TRANSFORM_CONTROLLER_WRITE
 }
 
 string NiMultiTargetTransformController::asString( bool verbose ) const {
-	NI_MULTI_TARGET_TRANSFORM_CONTROLLER_STRING
+  NI_MULTI_TARGET_TRANSFORM_CONTROLLER_STRING
 }
 
 void NiMultiTargetTransformController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_MULTI_TARGET_TRANSFORM_CONTROLLER_FIXLINKS
+  NI_MULTI_TARGET_TRANSFORM_CONTROLLER_FIXLINKS
 }
 
+const Type & NiMultiTargetTransformController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiMultiTargetTransformController.h b/obj/NiMultiTargetTransformController.h
index 333cd7f4..f0ca9f5a 100644
--- a/obj/NiMultiTargetTransformController.h
+++ b/obj/NiMultiTargetTransformController.h
@@ -16,16 +16,17 @@ typedef Ref<NiMultiTargetTransformController> NiMultiTargetTransformControllerRe
 
 class NiMultiTargetTransformController : public NI_MULTI_TARGET_TRANSFORM_CONTROLLER_PARENT {
 public:
-	NiMultiTargetTransformController();
-	~NiMultiTargetTransformController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_MULTI_TARGET_TRANSFORM_CONTROLLER_MEMBERS
+  NiMultiTargetTransformController();
+  ~NiMultiTargetTransformController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_MULTI_TARGET_TRANSFORM_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiNode.cpp b/obj/NiNode.cpp
index 071c71bd..358c6ab6 100644
--- a/obj/NiNode.cpp
+++ b/obj/NiNode.cpp
@@ -2,6 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiNode.h"
+#include "NiAVObject.h"
 #include "NiDynamicEffect.h"
 
 //Definition of TYPE constant
@@ -12,17 +13,22 @@ NiNode::NiNode() NI_NODE_CONSTRUCT {}
 NiNode::~NiNode() {}
 
 void NiNode::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_NODE_READ
+  NI_NODE_READ
 }
 
 void NiNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_NODE_WRITE
+  NI_NODE_WRITE
 }
 
 string NiNode::asString( bool verbose ) const {
-	NI_NODE_STRING
+  NI_NODE_STRING
 }
 
 void NiNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_NODE_FIXLINKS
+  NI_NODE_FIXLINKS
 }
+
+const Type & NiNode::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiNode.h b/obj/NiNode.h
index b05bb4d5..d3db1911 100644
--- a/obj/NiNode.h
+++ b/obj/NiNode.h
@@ -8,7 +8,7 @@ All rights reserved.  Please see niflib.h for licence. */
 #include NI_NODE_INCLUDE
 
 /*
- * NiNode - A basic scene graph node.  Can have children.
+ * NiNode
  */
 
 class NiNode;
@@ -16,19 +16,17 @@ typedef Ref<NiNode> NiNodeRef;
 
 class NiNode : public NI_NODE_PARENT {
 public:
-	NiNode();
-	~NiNode();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-
-	//TODO:  Add functions to get and set children and store a list of NiObjectNET references
-private:
-	NI_NODE_MEMBERS
+  NiNode();
+  ~NiNode();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_NODE_MEMBERS
 };
 
-#endif
\ No newline at end of file
+#endif
diff --git a/obj/NiPSysAgeDeathModifier.cpp b/obj/NiPSysAgeDeathModifier.cpp
index c3aabdc7..fd702f07 100644
--- a/obj/NiPSysAgeDeathModifier.cpp
+++ b/obj/NiPSysAgeDeathModifier.cpp
@@ -12,18 +12,22 @@ NiPSysAgeDeathModifier::NiPSysAgeDeathModifier() NI_P_SYS_AGE_DEATH_MODIFIER_CON
 NiPSysAgeDeathModifier::~NiPSysAgeDeathModifier() {}
 
 void NiPSysAgeDeathModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_AGE_DEATH_MODIFIER_READ
+  NI_P_SYS_AGE_DEATH_MODIFIER_READ
 }
 
 void NiPSysAgeDeathModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_AGE_DEATH_MODIFIER_WRITE
+  NI_P_SYS_AGE_DEATH_MODIFIER_WRITE
 }
 
 string NiPSysAgeDeathModifier::asString( bool verbose ) const {
-	NI_P_SYS_AGE_DEATH_MODIFIER_STRING
+  NI_P_SYS_AGE_DEATH_MODIFIER_STRING
 }
 
 void NiPSysAgeDeathModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_AGE_DEATH_MODIFIER_FIXLINKS
+  NI_P_SYS_AGE_DEATH_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysAgeDeathModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysAgeDeathModifier.h b/obj/NiPSysAgeDeathModifier.h
index bce0f313..04c9e245 100644
--- a/obj/NiPSysAgeDeathModifier.h
+++ b/obj/NiPSysAgeDeathModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysAgeDeathModifier> NiPSysAgeDeathModifierRef;
 
 class NiPSysAgeDeathModifier : public NI_P_SYS_AGE_DEATH_MODIFIER_PARENT {
 public:
-	NiPSysAgeDeathModifier();
-	~NiPSysAgeDeathModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_AGE_DEATH_MODIFIER_MEMBERS
+  NiPSysAgeDeathModifier();
+  ~NiPSysAgeDeathModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_AGE_DEATH_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysBombModifier.cpp b/obj/NiPSysBombModifier.cpp
index 28771d4a..a0e49b53 100644
--- a/obj/NiPSysBombModifier.cpp
+++ b/obj/NiPSysBombModifier.cpp
@@ -12,18 +12,22 @@ NiPSysBombModifier::NiPSysBombModifier() NI_P_SYS_BOMB_MODIFIER_CONSTRUCT {}
 NiPSysBombModifier::~NiPSysBombModifier() {}
 
 void NiPSysBombModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_BOMB_MODIFIER_READ
+  NI_P_SYS_BOMB_MODIFIER_READ
 }
 
 void NiPSysBombModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_BOMB_MODIFIER_WRITE
+  NI_P_SYS_BOMB_MODIFIER_WRITE
 }
 
 string NiPSysBombModifier::asString( bool verbose ) const {
-	NI_P_SYS_BOMB_MODIFIER_STRING
+  NI_P_SYS_BOMB_MODIFIER_STRING
 }
 
 void NiPSysBombModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_BOMB_MODIFIER_FIXLINKS
+  NI_P_SYS_BOMB_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysBombModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysBombModifier.h b/obj/NiPSysBombModifier.h
index 87306ce4..6b0fb601 100644
--- a/obj/NiPSysBombModifier.h
+++ b/obj/NiPSysBombModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysBombModifier> NiPSysBombModifierRef;
 
 class NiPSysBombModifier : public NI_P_SYS_BOMB_MODIFIER_PARENT {
 public:
-	NiPSysBombModifier();
-	~NiPSysBombModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_BOMB_MODIFIER_MEMBERS
+  NiPSysBombModifier();
+  ~NiPSysBombModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_BOMB_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysBoundUpdateModifier.cpp b/obj/NiPSysBoundUpdateModifier.cpp
index 60e068d3..d34e7447 100644
--- a/obj/NiPSysBoundUpdateModifier.cpp
+++ b/obj/NiPSysBoundUpdateModifier.cpp
@@ -11,18 +11,22 @@ NiPSysBoundUpdateModifier::NiPSysBoundUpdateModifier() NI_P_SYS_BOUND_UPDATE_MOD
 NiPSysBoundUpdateModifier::~NiPSysBoundUpdateModifier() {}
 
 void NiPSysBoundUpdateModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_BOUND_UPDATE_MODIFIER_READ
+  NI_P_SYS_BOUND_UPDATE_MODIFIER_READ
 }
 
 void NiPSysBoundUpdateModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_BOUND_UPDATE_MODIFIER_WRITE
+  NI_P_SYS_BOUND_UPDATE_MODIFIER_WRITE
 }
 
 string NiPSysBoundUpdateModifier::asString( bool verbose ) const {
-	NI_P_SYS_BOUND_UPDATE_MODIFIER_STRING
+  NI_P_SYS_BOUND_UPDATE_MODIFIER_STRING
 }
 
 void NiPSysBoundUpdateModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_BOUND_UPDATE_MODIFIER_FIXLINKS
+  NI_P_SYS_BOUND_UPDATE_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysBoundUpdateModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysBoundUpdateModifier.h b/obj/NiPSysBoundUpdateModifier.h
index da98d7c6..77ac0d23 100644
--- a/obj/NiPSysBoundUpdateModifier.h
+++ b/obj/NiPSysBoundUpdateModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysBoundUpdateModifier> NiPSysBoundUpdateModifierRef;
 
 class NiPSysBoundUpdateModifier : public NI_P_SYS_BOUND_UPDATE_MODIFIER_PARENT {
 public:
-	NiPSysBoundUpdateModifier();
-	~NiPSysBoundUpdateModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_BOUND_UPDATE_MODIFIER_MEMBERS
+  NiPSysBoundUpdateModifier();
+  ~NiPSysBoundUpdateModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_BOUND_UPDATE_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysBoxEmitter.cpp b/obj/NiPSysBoxEmitter.cpp
index 5241c2fd..153b5c87 100644
--- a/obj/NiPSysBoxEmitter.cpp
+++ b/obj/NiPSysBoxEmitter.cpp
@@ -11,18 +11,22 @@ NiPSysBoxEmitter::NiPSysBoxEmitter() NI_P_SYS_BOX_EMITTER_CONSTRUCT {}
 NiPSysBoxEmitter::~NiPSysBoxEmitter() {}
 
 void NiPSysBoxEmitter::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_BOX_EMITTER_READ
+  NI_P_SYS_BOX_EMITTER_READ
 }
 
 void NiPSysBoxEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_BOX_EMITTER_WRITE
+  NI_P_SYS_BOX_EMITTER_WRITE
 }
 
 string NiPSysBoxEmitter::asString( bool verbose ) const {
-	NI_P_SYS_BOX_EMITTER_STRING
+  NI_P_SYS_BOX_EMITTER_STRING
 }
 
 void NiPSysBoxEmitter::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_BOX_EMITTER_FIXLINKS
+  NI_P_SYS_BOX_EMITTER_FIXLINKS
 }
 
+const Type & NiPSysBoxEmitter::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysBoxEmitter.h b/obj/NiPSysBoxEmitter.h
index d6f731a4..d92bd9b0 100644
--- a/obj/NiPSysBoxEmitter.h
+++ b/obj/NiPSysBoxEmitter.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysBoxEmitter> NiPSysBoxEmitterRef;
 
 class NiPSysBoxEmitter : public NI_P_SYS_BOX_EMITTER_PARENT {
 public:
-	NiPSysBoxEmitter();
-	~NiPSysBoxEmitter();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_BOX_EMITTER_MEMBERS
+  NiPSysBoxEmitter();
+  ~NiPSysBoxEmitter();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_BOX_EMITTER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysColliderManager.cpp b/obj/NiPSysColliderManager.cpp
index cdb70b3a..f3b7b0ca 100644
--- a/obj/NiPSysColliderManager.cpp
+++ b/obj/NiPSysColliderManager.cpp
@@ -12,18 +12,22 @@ NiPSysColliderManager::NiPSysColliderManager() NI_P_SYS_COLLIDER_MANAGER_CONSTRU
 NiPSysColliderManager::~NiPSysColliderManager() {}
 
 void NiPSysColliderManager::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_COLLIDER_MANAGER_READ
+  NI_P_SYS_COLLIDER_MANAGER_READ
 }
 
 void NiPSysColliderManager::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_COLLIDER_MANAGER_WRITE
+  NI_P_SYS_COLLIDER_MANAGER_WRITE
 }
 
 string NiPSysColliderManager::asString( bool verbose ) const {
-	NI_P_SYS_COLLIDER_MANAGER_STRING
+  NI_P_SYS_COLLIDER_MANAGER_STRING
 }
 
 void NiPSysColliderManager::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_COLLIDER_MANAGER_FIXLINKS
+  NI_P_SYS_COLLIDER_MANAGER_FIXLINKS
 }
 
+const Type & NiPSysColliderManager::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysColliderManager.h b/obj/NiPSysColliderManager.h
index 10062ef8..ad9fdd33 100644
--- a/obj/NiPSysColliderManager.h
+++ b/obj/NiPSysColliderManager.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysColliderManager> NiPSysColliderManagerRef;
 
 class NiPSysColliderManager : public NI_P_SYS_COLLIDER_MANAGER_PARENT {
 public:
-	NiPSysColliderManager();
-	~NiPSysColliderManager();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_COLLIDER_MANAGER_MEMBERS
+  NiPSysColliderManager();
+  ~NiPSysColliderManager();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_COLLIDER_MANAGER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysColorModifier.cpp b/obj/NiPSysColorModifier.cpp
index 8e95aa01..418332d1 100644
--- a/obj/NiPSysColorModifier.cpp
+++ b/obj/NiPSysColorModifier.cpp
@@ -2,7 +2,6 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiPSysColorModifier.h"
-#include "NiNode.h"
 #include "NiColorData.h"
 
 //Definition of TYPE constant
@@ -13,18 +12,22 @@ NiPSysColorModifier::NiPSysColorModifier() NI_P_SYS_COLOR_MODIFIER_CONSTRUCT {}
 NiPSysColorModifier::~NiPSysColorModifier() {}
 
 void NiPSysColorModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_COLOR_MODIFIER_READ
+  NI_P_SYS_COLOR_MODIFIER_READ
 }
 
 void NiPSysColorModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_COLOR_MODIFIER_WRITE
+  NI_P_SYS_COLOR_MODIFIER_WRITE
 }
 
 string NiPSysColorModifier::asString( bool verbose ) const {
-	NI_P_SYS_COLOR_MODIFIER_STRING
+  NI_P_SYS_COLOR_MODIFIER_STRING
 }
 
 void NiPSysColorModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_COLOR_MODIFIER_FIXLINKS
+  NI_P_SYS_COLOR_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysColorModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysColorModifier.h b/obj/NiPSysColorModifier.h
index 5dfb1888..1a17930f 100644
--- a/obj/NiPSysColorModifier.h
+++ b/obj/NiPSysColorModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysColorModifier> NiPSysColorModifierRef;
 
 class NiPSysColorModifier : public NI_P_SYS_COLOR_MODIFIER_PARENT {
 public:
-	NiPSysColorModifier();
-	~NiPSysColorModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_COLOR_MODIFIER_MEMBERS
+  NiPSysColorModifier();
+  ~NiPSysColorModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_COLOR_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysCylinderEmitter.cpp b/obj/NiPSysCylinderEmitter.cpp
index 58f9d3c8..2af13107 100644
--- a/obj/NiPSysCylinderEmitter.cpp
+++ b/obj/NiPSysCylinderEmitter.cpp
@@ -11,18 +11,22 @@ NiPSysCylinderEmitter::NiPSysCylinderEmitter() NI_P_SYS_CYLINDER_EMITTER_CONSTRU
 NiPSysCylinderEmitter::~NiPSysCylinderEmitter() {}
 
 void NiPSysCylinderEmitter::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_CYLINDER_EMITTER_READ
+  NI_P_SYS_CYLINDER_EMITTER_READ
 }
 
 void NiPSysCylinderEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_CYLINDER_EMITTER_WRITE
+  NI_P_SYS_CYLINDER_EMITTER_WRITE
 }
 
 string NiPSysCylinderEmitter::asString( bool verbose ) const {
-	NI_P_SYS_CYLINDER_EMITTER_STRING
+  NI_P_SYS_CYLINDER_EMITTER_STRING
 }
 
 void NiPSysCylinderEmitter::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_CYLINDER_EMITTER_FIXLINKS
+  NI_P_SYS_CYLINDER_EMITTER_FIXLINKS
 }
 
+const Type & NiPSysCylinderEmitter::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysCylinderEmitter.h b/obj/NiPSysCylinderEmitter.h
index 5e329abb..e9dbf125 100644
--- a/obj/NiPSysCylinderEmitter.h
+++ b/obj/NiPSysCylinderEmitter.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysCylinderEmitter> NiPSysCylinderEmitterRef;
 
 class NiPSysCylinderEmitter : public NI_P_SYS_CYLINDER_EMITTER_PARENT {
 public:
-	NiPSysCylinderEmitter();
-	~NiPSysCylinderEmitter();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_CYLINDER_EMITTER_MEMBERS
+  NiPSysCylinderEmitter();
+  ~NiPSysCylinderEmitter();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_CYLINDER_EMITTER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysData.cpp b/obj/NiPSysData.cpp
index df14c5a9..6bc5fecf 100644
--- a/obj/NiPSysData.cpp
+++ b/obj/NiPSysData.cpp
@@ -11,18 +11,22 @@ NiPSysData::NiPSysData() NI_P_SYS_DATA_CONSTRUCT {}
 NiPSysData::~NiPSysData() {}
 
 void NiPSysData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_DATA_READ
+  NI_P_SYS_DATA_READ
 }
 
 void NiPSysData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_DATA_WRITE
+  NI_P_SYS_DATA_WRITE
 }
 
 string NiPSysData::asString( bool verbose ) const {
-	NI_P_SYS_DATA_STRING
+  NI_P_SYS_DATA_STRING
 }
 
 void NiPSysData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_DATA_FIXLINKS
+  NI_P_SYS_DATA_FIXLINKS
 }
 
+const Type & NiPSysData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysData.h b/obj/NiPSysData.h
index 8d8eb90b..074caa20 100644
--- a/obj/NiPSysData.h
+++ b/obj/NiPSysData.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysData> NiPSysDataRef;
 
 class NiPSysData : public NI_P_SYS_DATA_PARENT {
 public:
-	NiPSysData();
-	~NiPSysData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_DATA_MEMBERS
+  NiPSysData();
+  ~NiPSysData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysDragModifier.cpp b/obj/NiPSysDragModifier.cpp
index eab96c68..29e369aa 100644
--- a/obj/NiPSysDragModifier.cpp
+++ b/obj/NiPSysDragModifier.cpp
@@ -2,6 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiPSysDragModifier.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type NiPSysDragModifier::TYPE("NiPSysDragModifier", &NI_P_SYS_DRAG_MODIFIER_PARENT::TYPE );
@@ -11,18 +12,22 @@ NiPSysDragModifier::NiPSysDragModifier() NI_P_SYS_DRAG_MODIFIER_CONSTRUCT {}
 NiPSysDragModifier::~NiPSysDragModifier() {}
 
 void NiPSysDragModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_DRAG_MODIFIER_READ
+  NI_P_SYS_DRAG_MODIFIER_READ
 }
 
 void NiPSysDragModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_DRAG_MODIFIER_WRITE
+  NI_P_SYS_DRAG_MODIFIER_WRITE
 }
 
 string NiPSysDragModifier::asString( bool verbose ) const {
-	NI_P_SYS_DRAG_MODIFIER_STRING
+  NI_P_SYS_DRAG_MODIFIER_STRING
 }
 
 void NiPSysDragModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_DRAG_MODIFIER_FIXLINKS
+  NI_P_SYS_DRAG_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysDragModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysDragModifier.h b/obj/NiPSysDragModifier.h
index 263992b3..74ff0916 100644
--- a/obj/NiPSysDragModifier.h
+++ b/obj/NiPSysDragModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysDragModifier> NiPSysDragModifierRef;
 
 class NiPSysDragModifier : public NI_P_SYS_DRAG_MODIFIER_PARENT {
 public:
-	NiPSysDragModifier();
-	~NiPSysDragModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_DRAG_MODIFIER_MEMBERS
+  NiPSysDragModifier();
+  ~NiPSysDragModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_DRAG_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysEmitter.cpp b/obj/NiPSysEmitter.cpp
new file mode 100644
index 00000000..48615f37
--- /dev/null
+++ b/obj/NiPSysEmitter.cpp
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysEmitter.h"
+
+//Definition of TYPE constant
+const Type NiPSysEmitter::TYPE("NiPSysEmitter", &NI_P_SYS_EMITTER_PARENT::TYPE );
+
+NiPSysEmitter::NiPSysEmitter() NI_P_SYS_EMITTER_CONSTRUCT {}
+
+NiPSysEmitter::~NiPSysEmitter() {}
+
+void NiPSysEmitter::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
+  NI_P_SYS_EMITTER_READ
+}
+
+void NiPSysEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+  NI_P_SYS_EMITTER_WRITE
+}
+
+string NiPSysEmitter::asString( bool verbose ) const {
+  NI_P_SYS_EMITTER_STRING
+}
+
+void NiPSysEmitter::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
+  NI_P_SYS_EMITTER_FIXLINKS
+}
+
+const Type & NiPSysEmitter::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysEmitter.h b/obj/NiPSysEmitter.h
new file mode 100644
index 00000000..d426a0b1
--- /dev/null
+++ b/obj/NiPSysEmitter.h
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSEMITTER_H_
+#define _NIPSYSEMITTER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_EMITTER_INCLUDE
+
+/*
+ * NiPSysEmitter
+ */
+
+class NiPSysEmitter;
+typedef Ref<NiPSysEmitter> NiPSysEmitterRef;
+
+class NiPSysEmitter : public NI_P_SYS_EMITTER_PARENT {
+public:
+  NiPSysEmitter();
+  ~NiPSysEmitter();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_EMITTER_MEMBERS
+};
+
+#endif
diff --git a/obj/NiPSysEmitterCtlr.cpp b/obj/NiPSysEmitterCtlr.cpp
index 2bfb6f63..f387ba84 100644
--- a/obj/NiPSysEmitterCtlr.cpp
+++ b/obj/NiPSysEmitterCtlr.cpp
@@ -2,8 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiPSysEmitterCtlr.h"
-#include "NiPSysData.h"
-#include "AInterpolator.h"
+#include "NiInterpolator.h"
 
 //Definition of TYPE constant
 const Type NiPSysEmitterCtlr::TYPE("NiPSysEmitterCtlr", &NI_P_SYS_EMITTER_CTLR_PARENT::TYPE );
@@ -13,18 +12,22 @@ NiPSysEmitterCtlr::NiPSysEmitterCtlr() NI_P_SYS_EMITTER_CTLR_CONSTRUCT {}
 NiPSysEmitterCtlr::~NiPSysEmitterCtlr() {}
 
 void NiPSysEmitterCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_CTLR_READ
+  NI_P_SYS_EMITTER_CTLR_READ
 }
 
 void NiPSysEmitterCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_EMITTER_CTLR_WRITE
+  NI_P_SYS_EMITTER_CTLR_WRITE
 }
 
 string NiPSysEmitterCtlr::asString( bool verbose ) const {
-	NI_P_SYS_EMITTER_CTLR_STRING
+  NI_P_SYS_EMITTER_CTLR_STRING
 }
 
 void NiPSysEmitterCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_CTLR_FIXLINKS
+  NI_P_SYS_EMITTER_CTLR_FIXLINKS
 }
 
+const Type & NiPSysEmitterCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysEmitterCtlr.h b/obj/NiPSysEmitterCtlr.h
index dbfc1c63..6ade1d00 100644
--- a/obj/NiPSysEmitterCtlr.h
+++ b/obj/NiPSysEmitterCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysEmitterCtlr> NiPSysEmitterCtlrRef;
 
 class NiPSysEmitterCtlr : public NI_P_SYS_EMITTER_CTLR_PARENT {
 public:
-	NiPSysEmitterCtlr();
-	~NiPSysEmitterCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_EMITTER_CTLR_MEMBERS
+  NiPSysEmitterCtlr();
+  ~NiPSysEmitterCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_EMITTER_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysEmitterCtlrData.cpp b/obj/NiPSysEmitterCtlrData.cpp
index f3def5b2..c6046af7 100644
--- a/obj/NiPSysEmitterCtlrData.cpp
+++ b/obj/NiPSysEmitterCtlrData.cpp
@@ -11,18 +11,22 @@ NiPSysEmitterCtlrData::NiPSysEmitterCtlrData() NI_P_SYS_EMITTER_CTLR_DATA_CONSTR
 NiPSysEmitterCtlrData::~NiPSysEmitterCtlrData() {}
 
 void NiPSysEmitterCtlrData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_CTLR_DATA_READ
+  NI_P_SYS_EMITTER_CTLR_DATA_READ
 }
 
 void NiPSysEmitterCtlrData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_EMITTER_CTLR_DATA_WRITE
+  NI_P_SYS_EMITTER_CTLR_DATA_WRITE
 }
 
 string NiPSysEmitterCtlrData::asString( bool verbose ) const {
-	NI_P_SYS_EMITTER_CTLR_DATA_STRING
+  NI_P_SYS_EMITTER_CTLR_DATA_STRING
 }
 
 void NiPSysEmitterCtlrData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_CTLR_DATA_FIXLINKS
+  NI_P_SYS_EMITTER_CTLR_DATA_FIXLINKS
 }
 
+const Type & NiPSysEmitterCtlrData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysEmitterCtlrData.h b/obj/NiPSysEmitterCtlrData.h
index fb8448f5..cfa39a78 100644
--- a/obj/NiPSysEmitterCtlrData.h
+++ b/obj/NiPSysEmitterCtlrData.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysEmitterCtlrData> NiPSysEmitterCtlrDataRef;
 
 class NiPSysEmitterCtlrData : public NI_P_SYS_EMITTER_CTLR_DATA_PARENT {
 public:
-	NiPSysEmitterCtlrData();
-	~NiPSysEmitterCtlrData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_EMITTER_CTLR_DATA_MEMBERS
+  NiPSysEmitterCtlrData();
+  ~NiPSysEmitterCtlrData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_EMITTER_CTLR_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysEmitterDeclinationCtlr.cpp b/obj/NiPSysEmitterDeclinationCtlr.cpp
index b28117fc..b74f989d 100644
--- a/obj/NiPSysEmitterDeclinationCtlr.cpp
+++ b/obj/NiPSysEmitterDeclinationCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysEmitterDeclinationCtlr::NiPSysEmitterDeclinationCtlr() NI_P_SYS_EMITTER_DE
 NiPSysEmitterDeclinationCtlr::~NiPSysEmitterDeclinationCtlr() {}
 
 void NiPSysEmitterDeclinationCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_DECLINATION_CTLR_READ
+  NI_P_SYS_EMITTER_DECLINATION_CTLR_READ
 }
 
 void NiPSysEmitterDeclinationCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_EMITTER_DECLINATION_CTLR_WRITE
+  NI_P_SYS_EMITTER_DECLINATION_CTLR_WRITE
 }
 
 string NiPSysEmitterDeclinationCtlr::asString( bool verbose ) const {
-	NI_P_SYS_EMITTER_DECLINATION_CTLR_STRING
+  NI_P_SYS_EMITTER_DECLINATION_CTLR_STRING
 }
 
 void NiPSysEmitterDeclinationCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_DECLINATION_CTLR_FIXLINKS
+  NI_P_SYS_EMITTER_DECLINATION_CTLR_FIXLINKS
 }
 
+const Type & NiPSysEmitterDeclinationCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysEmitterDeclinationCtlr.h b/obj/NiPSysEmitterDeclinationCtlr.h
index 9ff3bb29..09c9b08e 100644
--- a/obj/NiPSysEmitterDeclinationCtlr.h
+++ b/obj/NiPSysEmitterDeclinationCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysEmitterDeclinationCtlr> NiPSysEmitterDeclinationCtlrRef;
 
 class NiPSysEmitterDeclinationCtlr : public NI_P_SYS_EMITTER_DECLINATION_CTLR_PARENT {
 public:
-	NiPSysEmitterDeclinationCtlr();
-	~NiPSysEmitterDeclinationCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_EMITTER_DECLINATION_CTLR_MEMBERS
+  NiPSysEmitterDeclinationCtlr();
+  ~NiPSysEmitterDeclinationCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_EMITTER_DECLINATION_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysEmitterDeclinationVarCtlr.cpp b/obj/NiPSysEmitterDeclinationVarCtlr.cpp
index b20c03ac..1f7bd010 100644
--- a/obj/NiPSysEmitterDeclinationVarCtlr.cpp
+++ b/obj/NiPSysEmitterDeclinationVarCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysEmitterDeclinationVarCtlr::NiPSysEmitterDeclinationVarCtlr() NI_P_SYS_EMIT
 NiPSysEmitterDeclinationVarCtlr::~NiPSysEmitterDeclinationVarCtlr() {}
 
 void NiPSysEmitterDeclinationVarCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_READ
+  NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_READ
 }
 
 void NiPSysEmitterDeclinationVarCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_WRITE
+  NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_WRITE
 }
 
 string NiPSysEmitterDeclinationVarCtlr::asString( bool verbose ) const {
-	NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_STRING
+  NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_STRING
 }
 
 void NiPSysEmitterDeclinationVarCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_FIXLINKS
+  NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_FIXLINKS
 }
 
+const Type & NiPSysEmitterDeclinationVarCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysEmitterDeclinationVarCtlr.h b/obj/NiPSysEmitterDeclinationVarCtlr.h
index c0e7c15c..251a1b2f 100644
--- a/obj/NiPSysEmitterDeclinationVarCtlr.h
+++ b/obj/NiPSysEmitterDeclinationVarCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysEmitterDeclinationVarCtlr> NiPSysEmitterDeclinationVarCtlrRef;
 
 class NiPSysEmitterDeclinationVarCtlr : public NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_PARENT {
 public:
-	NiPSysEmitterDeclinationVarCtlr();
-	~NiPSysEmitterDeclinationVarCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_MEMBERS
+  NiPSysEmitterDeclinationVarCtlr();
+  ~NiPSysEmitterDeclinationVarCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_EMITTER_DECLINATION_VAR_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysEmitterInitialRadiusCtlr.cpp b/obj/NiPSysEmitterInitialRadiusCtlr.cpp
index 85277009..61cc5699 100644
--- a/obj/NiPSysEmitterInitialRadiusCtlr.cpp
+++ b/obj/NiPSysEmitterInitialRadiusCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysEmitterInitialRadiusCtlr::NiPSysEmitterInitialRadiusCtlr() NI_P_SYS_EMITTE
 NiPSysEmitterInitialRadiusCtlr::~NiPSysEmitterInitialRadiusCtlr() {}
 
 void NiPSysEmitterInitialRadiusCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_READ
+  NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_READ
 }
 
 void NiPSysEmitterInitialRadiusCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_WRITE
+  NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_WRITE
 }
 
 string NiPSysEmitterInitialRadiusCtlr::asString( bool verbose ) const {
-	NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_STRING
+  NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_STRING
 }
 
 void NiPSysEmitterInitialRadiusCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_FIXLINKS
+  NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_FIXLINKS
 }
 
+const Type & NiPSysEmitterInitialRadiusCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysEmitterInitialRadiusCtlr.h b/obj/NiPSysEmitterInitialRadiusCtlr.h
index 2ba0839b..473fa1cc 100644
--- a/obj/NiPSysEmitterInitialRadiusCtlr.h
+++ b/obj/NiPSysEmitterInitialRadiusCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysEmitterInitialRadiusCtlr> NiPSysEmitterInitialRadiusCtlrRef;
 
 class NiPSysEmitterInitialRadiusCtlr : public NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_PARENT {
 public:
-	NiPSysEmitterInitialRadiusCtlr();
-	~NiPSysEmitterInitialRadiusCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_MEMBERS
+  NiPSysEmitterInitialRadiusCtlr();
+  ~NiPSysEmitterInitialRadiusCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_EMITTER_INITIAL_RADIUS_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysEmitterLifeSpanCtlr.cpp b/obj/NiPSysEmitterLifeSpanCtlr.cpp
index 9403050e..c64e90d1 100644
--- a/obj/NiPSysEmitterLifeSpanCtlr.cpp
+++ b/obj/NiPSysEmitterLifeSpanCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysEmitterLifeSpanCtlr::NiPSysEmitterLifeSpanCtlr() NI_P_SYS_EMITTER_LIFE_SPA
 NiPSysEmitterLifeSpanCtlr::~NiPSysEmitterLifeSpanCtlr() {}
 
 void NiPSysEmitterLifeSpanCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_READ
+  NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_READ
 }
 
 void NiPSysEmitterLifeSpanCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_WRITE
+  NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_WRITE
 }
 
 string NiPSysEmitterLifeSpanCtlr::asString( bool verbose ) const {
-	NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_STRING
+  NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_STRING
 }
 
 void NiPSysEmitterLifeSpanCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_FIXLINKS
+  NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_FIXLINKS
 }
 
+const Type & NiPSysEmitterLifeSpanCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysEmitterLifeSpanCtlr.h b/obj/NiPSysEmitterLifeSpanCtlr.h
index 7c8a5332..121044bf 100644
--- a/obj/NiPSysEmitterLifeSpanCtlr.h
+++ b/obj/NiPSysEmitterLifeSpanCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysEmitterLifeSpanCtlr> NiPSysEmitterLifeSpanCtlrRef;
 
 class NiPSysEmitterLifeSpanCtlr : public NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_PARENT {
 public:
-	NiPSysEmitterLifeSpanCtlr();
-	~NiPSysEmitterLifeSpanCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_MEMBERS
+  NiPSysEmitterLifeSpanCtlr();
+  ~NiPSysEmitterLifeSpanCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_EMITTER_LIFE_SPAN_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysEmitterSpeedCtlr.cpp b/obj/NiPSysEmitterSpeedCtlr.cpp
index 36ddd3cc..73a5685d 100644
--- a/obj/NiPSysEmitterSpeedCtlr.cpp
+++ b/obj/NiPSysEmitterSpeedCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysEmitterSpeedCtlr::NiPSysEmitterSpeedCtlr() NI_P_SYS_EMITTER_SPEED_CTLR_CON
 NiPSysEmitterSpeedCtlr::~NiPSysEmitterSpeedCtlr() {}
 
 void NiPSysEmitterSpeedCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_SPEED_CTLR_READ
+  NI_P_SYS_EMITTER_SPEED_CTLR_READ
 }
 
 void NiPSysEmitterSpeedCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_EMITTER_SPEED_CTLR_WRITE
+  NI_P_SYS_EMITTER_SPEED_CTLR_WRITE
 }
 
 string NiPSysEmitterSpeedCtlr::asString( bool verbose ) const {
-	NI_P_SYS_EMITTER_SPEED_CTLR_STRING
+  NI_P_SYS_EMITTER_SPEED_CTLR_STRING
 }
 
 void NiPSysEmitterSpeedCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_EMITTER_SPEED_CTLR_FIXLINKS
+  NI_P_SYS_EMITTER_SPEED_CTLR_FIXLINKS
 }
 
+const Type & NiPSysEmitterSpeedCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysEmitterSpeedCtlr.h b/obj/NiPSysEmitterSpeedCtlr.h
index 94c8ab04..7aa0c6cd 100644
--- a/obj/NiPSysEmitterSpeedCtlr.h
+++ b/obj/NiPSysEmitterSpeedCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysEmitterSpeedCtlr> NiPSysEmitterSpeedCtlrRef;
 
 class NiPSysEmitterSpeedCtlr : public NI_P_SYS_EMITTER_SPEED_CTLR_PARENT {
 public:
-	NiPSysEmitterSpeedCtlr();
-	~NiPSysEmitterSpeedCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_EMITTER_SPEED_CTLR_MEMBERS
+  NiPSysEmitterSpeedCtlr();
+  ~NiPSysEmitterSpeedCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_EMITTER_SPEED_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysGravityModifier.cpp b/obj/NiPSysGravityModifier.cpp
index 829d49a1..34e8775e 100644
--- a/obj/NiPSysGravityModifier.cpp
+++ b/obj/NiPSysGravityModifier.cpp
@@ -12,18 +12,22 @@ NiPSysGravityModifier::NiPSysGravityModifier() NI_P_SYS_GRAVITY_MODIFIER_CONSTRU
 NiPSysGravityModifier::~NiPSysGravityModifier() {}
 
 void NiPSysGravityModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_GRAVITY_MODIFIER_READ
+  NI_P_SYS_GRAVITY_MODIFIER_READ
 }
 
 void NiPSysGravityModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_GRAVITY_MODIFIER_WRITE
+  NI_P_SYS_GRAVITY_MODIFIER_WRITE
 }
 
 string NiPSysGravityModifier::asString( bool verbose ) const {
-	NI_P_SYS_GRAVITY_MODIFIER_STRING
+  NI_P_SYS_GRAVITY_MODIFIER_STRING
 }
 
 void NiPSysGravityModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_GRAVITY_MODIFIER_FIXLINKS
+  NI_P_SYS_GRAVITY_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysGravityModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysGravityModifier.h b/obj/NiPSysGravityModifier.h
index 1c21bfd9..3392550d 100644
--- a/obj/NiPSysGravityModifier.h
+++ b/obj/NiPSysGravityModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysGravityModifier> NiPSysGravityModifierRef;
 
 class NiPSysGravityModifier : public NI_P_SYS_GRAVITY_MODIFIER_PARENT {
 public:
-	NiPSysGravityModifier();
-	~NiPSysGravityModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_GRAVITY_MODIFIER_MEMBERS
+  NiPSysGravityModifier();
+  ~NiPSysGravityModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_GRAVITY_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysGravityStrengthCtlr.cpp b/obj/NiPSysGravityStrengthCtlr.cpp
index 35a74c9f..5f08a5a5 100644
--- a/obj/NiPSysGravityStrengthCtlr.cpp
+++ b/obj/NiPSysGravityStrengthCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysGravityStrengthCtlr::NiPSysGravityStrengthCtlr() NI_P_SYS_GRAVITY_STRENGTH
 NiPSysGravityStrengthCtlr::~NiPSysGravityStrengthCtlr() {}
 
 void NiPSysGravityStrengthCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_GRAVITY_STRENGTH_CTLR_READ
+  NI_P_SYS_GRAVITY_STRENGTH_CTLR_READ
 }
 
 void NiPSysGravityStrengthCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_GRAVITY_STRENGTH_CTLR_WRITE
+  NI_P_SYS_GRAVITY_STRENGTH_CTLR_WRITE
 }
 
 string NiPSysGravityStrengthCtlr::asString( bool verbose ) const {
-	NI_P_SYS_GRAVITY_STRENGTH_CTLR_STRING
+  NI_P_SYS_GRAVITY_STRENGTH_CTLR_STRING
 }
 
 void NiPSysGravityStrengthCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_GRAVITY_STRENGTH_CTLR_FIXLINKS
+  NI_P_SYS_GRAVITY_STRENGTH_CTLR_FIXLINKS
 }
 
+const Type & NiPSysGravityStrengthCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysGravityStrengthCtlr.h b/obj/NiPSysGravityStrengthCtlr.h
index 6f12368b..b8df3f29 100644
--- a/obj/NiPSysGravityStrengthCtlr.h
+++ b/obj/NiPSysGravityStrengthCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysGravityStrengthCtlr> NiPSysGravityStrengthCtlrRef;
 
 class NiPSysGravityStrengthCtlr : public NI_P_SYS_GRAVITY_STRENGTH_CTLR_PARENT {
 public:
-	NiPSysGravityStrengthCtlr();
-	~NiPSysGravityStrengthCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_GRAVITY_STRENGTH_CTLR_MEMBERS
+  NiPSysGravityStrengthCtlr();
+  ~NiPSysGravityStrengthCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_GRAVITY_STRENGTH_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysGrowFadeModifier.cpp b/obj/NiPSysGrowFadeModifier.cpp
index 831e875a..4e9d51d8 100644
--- a/obj/NiPSysGrowFadeModifier.cpp
+++ b/obj/NiPSysGrowFadeModifier.cpp
@@ -11,18 +11,22 @@ NiPSysGrowFadeModifier::NiPSysGrowFadeModifier() NI_P_SYS_GROW_FADE_MODIFIER_CON
 NiPSysGrowFadeModifier::~NiPSysGrowFadeModifier() {}
 
 void NiPSysGrowFadeModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_GROW_FADE_MODIFIER_READ
+  NI_P_SYS_GROW_FADE_MODIFIER_READ
 }
 
 void NiPSysGrowFadeModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_GROW_FADE_MODIFIER_WRITE
+  NI_P_SYS_GROW_FADE_MODIFIER_WRITE
 }
 
 string NiPSysGrowFadeModifier::asString( bool verbose ) const {
-	NI_P_SYS_GROW_FADE_MODIFIER_STRING
+  NI_P_SYS_GROW_FADE_MODIFIER_STRING
 }
 
 void NiPSysGrowFadeModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_GROW_FADE_MODIFIER_FIXLINKS
+  NI_P_SYS_GROW_FADE_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysGrowFadeModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysGrowFadeModifier.h b/obj/NiPSysGrowFadeModifier.h
index 76aaa8dc..0513e54d 100644
--- a/obj/NiPSysGrowFadeModifier.h
+++ b/obj/NiPSysGrowFadeModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysGrowFadeModifier> NiPSysGrowFadeModifierRef;
 
 class NiPSysGrowFadeModifier : public NI_P_SYS_GROW_FADE_MODIFIER_PARENT {
 public:
-	NiPSysGrowFadeModifier();
-	~NiPSysGrowFadeModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_GROW_FADE_MODIFIER_MEMBERS
+  NiPSysGrowFadeModifier();
+  ~NiPSysGrowFadeModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_GROW_FADE_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysMeshEmitter.cpp b/obj/NiPSysMeshEmitter.cpp
index d1fa7d71..606e161e 100644
--- a/obj/NiPSysMeshEmitter.cpp
+++ b/obj/NiPSysMeshEmitter.cpp
@@ -12,18 +12,22 @@ NiPSysMeshEmitter::NiPSysMeshEmitter() NI_P_SYS_MESH_EMITTER_CONSTRUCT {}
 NiPSysMeshEmitter::~NiPSysMeshEmitter() {}
 
 void NiPSysMeshEmitter::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_MESH_EMITTER_READ
+  NI_P_SYS_MESH_EMITTER_READ
 }
 
 void NiPSysMeshEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_MESH_EMITTER_WRITE
+  NI_P_SYS_MESH_EMITTER_WRITE
 }
 
 string NiPSysMeshEmitter::asString( bool verbose ) const {
-	NI_P_SYS_MESH_EMITTER_STRING
+  NI_P_SYS_MESH_EMITTER_STRING
 }
 
 void NiPSysMeshEmitter::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_MESH_EMITTER_FIXLINKS
+  NI_P_SYS_MESH_EMITTER_FIXLINKS
 }
 
+const Type & NiPSysMeshEmitter::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysMeshEmitter.h b/obj/NiPSysMeshEmitter.h
index c0a6afab..dd440d53 100644
--- a/obj/NiPSysMeshEmitter.h
+++ b/obj/NiPSysMeshEmitter.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysMeshEmitter> NiPSysMeshEmitterRef;
 
 class NiPSysMeshEmitter : public NI_P_SYS_MESH_EMITTER_PARENT {
 public:
-	NiPSysMeshEmitter();
-	~NiPSysMeshEmitter();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_MESH_EMITTER_MEMBERS
+  NiPSysMeshEmitter();
+  ~NiPSysMeshEmitter();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_MESH_EMITTER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysMeshUpdateModifier.cpp b/obj/NiPSysMeshUpdateModifier.cpp
index 80796190..0c068e05 100644
--- a/obj/NiPSysMeshUpdateModifier.cpp
+++ b/obj/NiPSysMeshUpdateModifier.cpp
@@ -12,18 +12,22 @@ NiPSysMeshUpdateModifier::NiPSysMeshUpdateModifier() NI_P_SYS_MESH_UPDATE_MODIFI
 NiPSysMeshUpdateModifier::~NiPSysMeshUpdateModifier() {}
 
 void NiPSysMeshUpdateModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_MESH_UPDATE_MODIFIER_READ
+  NI_P_SYS_MESH_UPDATE_MODIFIER_READ
 }
 
 void NiPSysMeshUpdateModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_MESH_UPDATE_MODIFIER_WRITE
+  NI_P_SYS_MESH_UPDATE_MODIFIER_WRITE
 }
 
 string NiPSysMeshUpdateModifier::asString( bool verbose ) const {
-	NI_P_SYS_MESH_UPDATE_MODIFIER_STRING
+  NI_P_SYS_MESH_UPDATE_MODIFIER_STRING
 }
 
 void NiPSysMeshUpdateModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_MESH_UPDATE_MODIFIER_FIXLINKS
+  NI_P_SYS_MESH_UPDATE_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysMeshUpdateModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysMeshUpdateModifier.h b/obj/NiPSysMeshUpdateModifier.h
index 1ba78588..820ebe9f 100644
--- a/obj/NiPSysMeshUpdateModifier.h
+++ b/obj/NiPSysMeshUpdateModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysMeshUpdateModifier> NiPSysMeshUpdateModifierRef;
 
 class NiPSysMeshUpdateModifier : public NI_P_SYS_MESH_UPDATE_MODIFIER_PARENT {
 public:
-	NiPSysMeshUpdateModifier();
-	~NiPSysMeshUpdateModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_MESH_UPDATE_MODIFIER_MEMBERS
+  NiPSysMeshUpdateModifier();
+  ~NiPSysMeshUpdateModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_MESH_UPDATE_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysModifier.cpp b/obj/NiPSysModifier.cpp
new file mode 100644
index 00000000..d2384f68
--- /dev/null
+++ b/obj/NiPSysModifier.cpp
@@ -0,0 +1,33 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysModifier.h"
+#include "NiParticleSystem.h"
+
+//Definition of TYPE constant
+const Type NiPSysModifier::TYPE("NiPSysModifier", &NI_P_SYS_MODIFIER_PARENT::TYPE );
+
+NiPSysModifier::NiPSysModifier() NI_P_SYS_MODIFIER_CONSTRUCT {}
+
+NiPSysModifier::~NiPSysModifier() {}
+
+void NiPSysModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
+  NI_P_SYS_MODIFIER_READ
+}
+
+void NiPSysModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+  NI_P_SYS_MODIFIER_WRITE
+}
+
+string NiPSysModifier::asString( bool verbose ) const {
+  NI_P_SYS_MODIFIER_STRING
+}
+
+void NiPSysModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
+  NI_P_SYS_MODIFIER_FIXLINKS
+}
+
+const Type & NiPSysModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysModifier.h b/obj/NiPSysModifier.h
new file mode 100644
index 00000000..0464aa9b
--- /dev/null
+++ b/obj/NiPSysModifier.h
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSMODIFIER_H_
+#define _NIPSYSMODIFIER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_MODIFIER_INCLUDE
+
+/*
+ * NiPSysModifier
+ */
+
+class NiPSysModifier;
+typedef Ref<NiPSysModifier> NiPSysModifierRef;
+
+class NiPSysModifier : public NI_P_SYS_MODIFIER_PARENT {
+public:
+  NiPSysModifier();
+  ~NiPSysModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_MODIFIER_MEMBERS
+};
+
+#endif
diff --git a/obj/NiPSysModifierActiveCtlr.cpp b/obj/NiPSysModifierActiveCtlr.cpp
index 7b170e9f..6fdad4f7 100644
--- a/obj/NiPSysModifierActiveCtlr.cpp
+++ b/obj/NiPSysModifierActiveCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysModifierActiveCtlr::NiPSysModifierActiveCtlr() NI_P_SYS_MODIFIER_ACTIVE_CT
 NiPSysModifierActiveCtlr::~NiPSysModifierActiveCtlr() {}
 
 void NiPSysModifierActiveCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_MODIFIER_ACTIVE_CTLR_READ
+  NI_P_SYS_MODIFIER_ACTIVE_CTLR_READ
 }
 
 void NiPSysModifierActiveCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_MODIFIER_ACTIVE_CTLR_WRITE
+  NI_P_SYS_MODIFIER_ACTIVE_CTLR_WRITE
 }
 
 string NiPSysModifierActiveCtlr::asString( bool verbose ) const {
-	NI_P_SYS_MODIFIER_ACTIVE_CTLR_STRING
+  NI_P_SYS_MODIFIER_ACTIVE_CTLR_STRING
 }
 
 void NiPSysModifierActiveCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_MODIFIER_ACTIVE_CTLR_FIXLINKS
+  NI_P_SYS_MODIFIER_ACTIVE_CTLR_FIXLINKS
 }
 
+const Type & NiPSysModifierActiveCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysModifierActiveCtlr.h b/obj/NiPSysModifierActiveCtlr.h
index 599a4c2a..1625d9ab 100644
--- a/obj/NiPSysModifierActiveCtlr.h
+++ b/obj/NiPSysModifierActiveCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysModifierActiveCtlr> NiPSysModifierActiveCtlrRef;
 
 class NiPSysModifierActiveCtlr : public NI_P_SYS_MODIFIER_ACTIVE_CTLR_PARENT {
 public:
-	NiPSysModifierActiveCtlr();
-	~NiPSysModifierActiveCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_MODIFIER_ACTIVE_CTLR_MEMBERS
+  NiPSysModifierActiveCtlr();
+  ~NiPSysModifierActiveCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_MODIFIER_ACTIVE_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysPlanarCollider.cpp b/obj/NiPSysPlanarCollider.cpp
index 114b35fe..5b8453e6 100644
--- a/obj/NiPSysPlanarCollider.cpp
+++ b/obj/NiPSysPlanarCollider.cpp
@@ -3,6 +3,8 @@ All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiPSysPlanarCollider.h"
 #include "NiPSysSpawnModifier.h"
+#include "NiObject.h"
+#include "NiObject.h"
 #include "NiNode.h"
 
 //Definition of TYPE constant
@@ -13,18 +15,22 @@ NiPSysPlanarCollider::NiPSysPlanarCollider() NI_P_SYS_PLANAR_COLLIDER_CONSTRUCT
 NiPSysPlanarCollider::~NiPSysPlanarCollider() {}
 
 void NiPSysPlanarCollider::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_PLANAR_COLLIDER_READ
+  NI_P_SYS_PLANAR_COLLIDER_READ
 }
 
 void NiPSysPlanarCollider::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_PLANAR_COLLIDER_WRITE
+  NI_P_SYS_PLANAR_COLLIDER_WRITE
 }
 
 string NiPSysPlanarCollider::asString( bool verbose ) const {
-	NI_P_SYS_PLANAR_COLLIDER_STRING
+  NI_P_SYS_PLANAR_COLLIDER_STRING
 }
 
 void NiPSysPlanarCollider::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_PLANAR_COLLIDER_FIXLINKS
+  NI_P_SYS_PLANAR_COLLIDER_FIXLINKS
 }
 
+const Type & NiPSysPlanarCollider::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysPlanarCollider.h b/obj/NiPSysPlanarCollider.h
index 254e7090..6058d189 100644
--- a/obj/NiPSysPlanarCollider.h
+++ b/obj/NiPSysPlanarCollider.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysPlanarCollider> NiPSysPlanarColliderRef;
 
 class NiPSysPlanarCollider : public NI_P_SYS_PLANAR_COLLIDER_PARENT {
 public:
-	NiPSysPlanarCollider();
-	~NiPSysPlanarCollider();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_PLANAR_COLLIDER_MEMBERS
+  NiPSysPlanarCollider();
+  ~NiPSysPlanarCollider();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_PLANAR_COLLIDER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysPositionModifier.cpp b/obj/NiPSysPositionModifier.cpp
index e240e051..a040ac37 100644
--- a/obj/NiPSysPositionModifier.cpp
+++ b/obj/NiPSysPositionModifier.cpp
@@ -11,18 +11,22 @@ NiPSysPositionModifier::NiPSysPositionModifier() NI_P_SYS_POSITION_MODIFIER_CONS
 NiPSysPositionModifier::~NiPSysPositionModifier() {}
 
 void NiPSysPositionModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_POSITION_MODIFIER_READ
+  NI_P_SYS_POSITION_MODIFIER_READ
 }
 
 void NiPSysPositionModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_POSITION_MODIFIER_WRITE
+  NI_P_SYS_POSITION_MODIFIER_WRITE
 }
 
 string NiPSysPositionModifier::asString( bool verbose ) const {
-	NI_P_SYS_POSITION_MODIFIER_STRING
+  NI_P_SYS_POSITION_MODIFIER_STRING
 }
 
 void NiPSysPositionModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_POSITION_MODIFIER_FIXLINKS
+  NI_P_SYS_POSITION_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysPositionModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysPositionModifier.h b/obj/NiPSysPositionModifier.h
index 8c9562bf..a0426f38 100644
--- a/obj/NiPSysPositionModifier.h
+++ b/obj/NiPSysPositionModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysPositionModifier> NiPSysPositionModifierRef;
 
 class NiPSysPositionModifier : public NI_P_SYS_POSITION_MODIFIER_PARENT {
 public:
-	NiPSysPositionModifier();
-	~NiPSysPositionModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_POSITION_MODIFIER_MEMBERS
+  NiPSysPositionModifier();
+  ~NiPSysPositionModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_POSITION_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysResetOnLoopCtlr.cpp b/obj/NiPSysResetOnLoopCtlr.cpp
index 816b4ecb..da46bfaa 100644
--- a/obj/NiPSysResetOnLoopCtlr.cpp
+++ b/obj/NiPSysResetOnLoopCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysResetOnLoopCtlr::NiPSysResetOnLoopCtlr() NI_P_SYS_RESET_ON_LOOP_CTLR_CONST
 NiPSysResetOnLoopCtlr::~NiPSysResetOnLoopCtlr() {}
 
 void NiPSysResetOnLoopCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_RESET_ON_LOOP_CTLR_READ
+  NI_P_SYS_RESET_ON_LOOP_CTLR_READ
 }
 
 void NiPSysResetOnLoopCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_RESET_ON_LOOP_CTLR_WRITE
+  NI_P_SYS_RESET_ON_LOOP_CTLR_WRITE
 }
 
 string NiPSysResetOnLoopCtlr::asString( bool verbose ) const {
-	NI_P_SYS_RESET_ON_LOOP_CTLR_STRING
+  NI_P_SYS_RESET_ON_LOOP_CTLR_STRING
 }
 
 void NiPSysResetOnLoopCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_RESET_ON_LOOP_CTLR_FIXLINKS
+  NI_P_SYS_RESET_ON_LOOP_CTLR_FIXLINKS
 }
 
+const Type & NiPSysResetOnLoopCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysResetOnLoopCtlr.h b/obj/NiPSysResetOnLoopCtlr.h
index 6381974f..1fda6d06 100644
--- a/obj/NiPSysResetOnLoopCtlr.h
+++ b/obj/NiPSysResetOnLoopCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysResetOnLoopCtlr> NiPSysResetOnLoopCtlrRef;
 
 class NiPSysResetOnLoopCtlr : public NI_P_SYS_RESET_ON_LOOP_CTLR_PARENT {
 public:
-	NiPSysResetOnLoopCtlr();
-	~NiPSysResetOnLoopCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_RESET_ON_LOOP_CTLR_MEMBERS
+  NiPSysResetOnLoopCtlr();
+  ~NiPSysResetOnLoopCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_RESET_ON_LOOP_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysRotationModifier.cpp b/obj/NiPSysRotationModifier.cpp
index 79ea4473..7fbb4b9a 100644
--- a/obj/NiPSysRotationModifier.cpp
+++ b/obj/NiPSysRotationModifier.cpp
@@ -11,18 +11,22 @@ NiPSysRotationModifier::NiPSysRotationModifier() NI_P_SYS_ROTATION_MODIFIER_CONS
 NiPSysRotationModifier::~NiPSysRotationModifier() {}
 
 void NiPSysRotationModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_ROTATION_MODIFIER_READ
+  NI_P_SYS_ROTATION_MODIFIER_READ
 }
 
 void NiPSysRotationModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_ROTATION_MODIFIER_WRITE
+  NI_P_SYS_ROTATION_MODIFIER_WRITE
 }
 
 string NiPSysRotationModifier::asString( bool verbose ) const {
-	NI_P_SYS_ROTATION_MODIFIER_STRING
+  NI_P_SYS_ROTATION_MODIFIER_STRING
 }
 
 void NiPSysRotationModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_ROTATION_MODIFIER_FIXLINKS
+  NI_P_SYS_ROTATION_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysRotationModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysRotationModifier.h b/obj/NiPSysRotationModifier.h
index f75816b6..7d0427f7 100644
--- a/obj/NiPSysRotationModifier.h
+++ b/obj/NiPSysRotationModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysRotationModifier> NiPSysRotationModifierRef;
 
 class NiPSysRotationModifier : public NI_P_SYS_ROTATION_MODIFIER_PARENT {
 public:
-	NiPSysRotationModifier();
-	~NiPSysRotationModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_ROTATION_MODIFIER_MEMBERS
+  NiPSysRotationModifier();
+  ~NiPSysRotationModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_ROTATION_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysSpawnModifier.cpp b/obj/NiPSysSpawnModifier.cpp
index b8771d51..500863d6 100644
--- a/obj/NiPSysSpawnModifier.cpp
+++ b/obj/NiPSysSpawnModifier.cpp
@@ -11,18 +11,22 @@ NiPSysSpawnModifier::NiPSysSpawnModifier() NI_P_SYS_SPAWN_MODIFIER_CONSTRUCT {}
 NiPSysSpawnModifier::~NiPSysSpawnModifier() {}
 
 void NiPSysSpawnModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_SPAWN_MODIFIER_READ
+  NI_P_SYS_SPAWN_MODIFIER_READ
 }
 
 void NiPSysSpawnModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_SPAWN_MODIFIER_WRITE
+  NI_P_SYS_SPAWN_MODIFIER_WRITE
 }
 
 string NiPSysSpawnModifier::asString( bool verbose ) const {
-	NI_P_SYS_SPAWN_MODIFIER_STRING
+  NI_P_SYS_SPAWN_MODIFIER_STRING
 }
 
 void NiPSysSpawnModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_SPAWN_MODIFIER_FIXLINKS
+  NI_P_SYS_SPAWN_MODIFIER_FIXLINKS
 }
 
+const Type & NiPSysSpawnModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysSpawnModifier.h b/obj/NiPSysSpawnModifier.h
index 86b3ddc3..99535d0f 100644
--- a/obj/NiPSysSpawnModifier.h
+++ b/obj/NiPSysSpawnModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysSpawnModifier> NiPSysSpawnModifierRef;
 
 class NiPSysSpawnModifier : public NI_P_SYS_SPAWN_MODIFIER_PARENT {
 public:
-	NiPSysSpawnModifier();
-	~NiPSysSpawnModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_SPAWN_MODIFIER_MEMBERS
+  NiPSysSpawnModifier();
+  ~NiPSysSpawnModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_SPAWN_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysSphereEmitter.cpp b/obj/NiPSysSphereEmitter.cpp
index 8a1232a0..71b0cd11 100644
--- a/obj/NiPSysSphereEmitter.cpp
+++ b/obj/NiPSysSphereEmitter.cpp
@@ -11,18 +11,22 @@ NiPSysSphereEmitter::NiPSysSphereEmitter() NI_P_SYS_SPHERE_EMITTER_CONSTRUCT {}
 NiPSysSphereEmitter::~NiPSysSphereEmitter() {}
 
 void NiPSysSphereEmitter::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_SPHERE_EMITTER_READ
+  NI_P_SYS_SPHERE_EMITTER_READ
 }
 
 void NiPSysSphereEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_SPHERE_EMITTER_WRITE
+  NI_P_SYS_SPHERE_EMITTER_WRITE
 }
 
 string NiPSysSphereEmitter::asString( bool verbose ) const {
-	NI_P_SYS_SPHERE_EMITTER_STRING
+  NI_P_SYS_SPHERE_EMITTER_STRING
 }
 
 void NiPSysSphereEmitter::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_SPHERE_EMITTER_FIXLINKS
+  NI_P_SYS_SPHERE_EMITTER_FIXLINKS
 }
 
+const Type & NiPSysSphereEmitter::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysSphereEmitter.h b/obj/NiPSysSphereEmitter.h
index a7693342..e1fcfb0f 100644
--- a/obj/NiPSysSphereEmitter.h
+++ b/obj/NiPSysSphereEmitter.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysSphereEmitter> NiPSysSphereEmitterRef;
 
 class NiPSysSphereEmitter : public NI_P_SYS_SPHERE_EMITTER_PARENT {
 public:
-	NiPSysSphereEmitter();
-	~NiPSysSphereEmitter();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_SPHERE_EMITTER_MEMBERS
+  NiPSysSphereEmitter();
+  ~NiPSysSphereEmitter();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_SPHERE_EMITTER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysUpdateCtlr.cpp b/obj/NiPSysUpdateCtlr.cpp
index d018b689..264a513e 100644
--- a/obj/NiPSysUpdateCtlr.cpp
+++ b/obj/NiPSysUpdateCtlr.cpp
@@ -11,18 +11,22 @@ NiPSysUpdateCtlr::NiPSysUpdateCtlr() NI_P_SYS_UPDATE_CTLR_CONSTRUCT {}
 NiPSysUpdateCtlr::~NiPSysUpdateCtlr() {}
 
 void NiPSysUpdateCtlr::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_UPDATE_CTLR_READ
+  NI_P_SYS_UPDATE_CTLR_READ
 }
 
 void NiPSysUpdateCtlr::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_P_SYS_UPDATE_CTLR_WRITE
+  NI_P_SYS_UPDATE_CTLR_WRITE
 }
 
 string NiPSysUpdateCtlr::asString( bool verbose ) const {
-	NI_P_SYS_UPDATE_CTLR_STRING
+  NI_P_SYS_UPDATE_CTLR_STRING
 }
 
 void NiPSysUpdateCtlr::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_P_SYS_UPDATE_CTLR_FIXLINKS
+  NI_P_SYS_UPDATE_CTLR_FIXLINKS
 }
 
+const Type & NiPSysUpdateCtlr::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysUpdateCtlr.h b/obj/NiPSysUpdateCtlr.h
index 949c3f6a..ed54b6ef 100644
--- a/obj/NiPSysUpdateCtlr.h
+++ b/obj/NiPSysUpdateCtlr.h
@@ -16,16 +16,17 @@ typedef Ref<NiPSysUpdateCtlr> NiPSysUpdateCtlrRef;
 
 class NiPSysUpdateCtlr : public NI_P_SYS_UPDATE_CTLR_PARENT {
 public:
-	NiPSysUpdateCtlr();
-	~NiPSysUpdateCtlr();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_P_SYS_UPDATE_CTLR_MEMBERS
+  NiPSysUpdateCtlr();
+  ~NiPSysUpdateCtlr();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_UPDATE_CTLR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPSysVolumeEmitter.cpp b/obj/NiPSysVolumeEmitter.cpp
new file mode 100644
index 00000000..439a1a1e
--- /dev/null
+++ b/obj/NiPSysVolumeEmitter.cpp
@@ -0,0 +1,33 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiPSysVolumeEmitter.h"
+#include "NiNode.h"
+
+//Definition of TYPE constant
+const Type NiPSysVolumeEmitter::TYPE("NiPSysVolumeEmitter", &NI_P_SYS_VOLUME_EMITTER_PARENT::TYPE );
+
+NiPSysVolumeEmitter::NiPSysVolumeEmitter() NI_P_SYS_VOLUME_EMITTER_CONSTRUCT {}
+
+NiPSysVolumeEmitter::~NiPSysVolumeEmitter() {}
+
+void NiPSysVolumeEmitter::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
+  NI_P_SYS_VOLUME_EMITTER_READ
+}
+
+void NiPSysVolumeEmitter::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+  NI_P_SYS_VOLUME_EMITTER_WRITE
+}
+
+string NiPSysVolumeEmitter::asString( bool verbose ) const {
+  NI_P_SYS_VOLUME_EMITTER_STRING
+}
+
+void NiPSysVolumeEmitter::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
+  NI_P_SYS_VOLUME_EMITTER_FIXLINKS
+}
+
+const Type & NiPSysVolumeEmitter::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPSysVolumeEmitter.h b/obj/NiPSysVolumeEmitter.h
new file mode 100644
index 00000000..59c10add
--- /dev/null
+++ b/obj/NiPSysVolumeEmitter.h
@@ -0,0 +1,32 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NIPSYSVOLUMEEMITTER_H_
+#define _NIPSYSVOLUMEEMITTER_H_
+
+#include "xml_extract.h"
+#include NI_P_SYS_VOLUME_EMITTER_INCLUDE
+
+/*
+ * NiPSysVolumeEmitter
+ */
+
+class NiPSysVolumeEmitter;
+typedef Ref<NiPSysVolumeEmitter> NiPSysVolumeEmitterRef;
+
+class NiPSysVolumeEmitter : public NI_P_SYS_VOLUME_EMITTER_PARENT {
+public:
+  NiPSysVolumeEmitter();
+  ~NiPSysVolumeEmitter();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_P_SYS_VOLUME_EMITTER_MEMBERS
+};
+
+#endif
diff --git a/obj/NiPalette.cpp b/obj/NiPalette.cpp
index f6a4642f..57736be1 100644
--- a/obj/NiPalette.cpp
+++ b/obj/NiPalette.cpp
@@ -11,18 +11,22 @@ NiPalette::NiPalette() NI_PALETTE_CONSTRUCT {}
 NiPalette::~NiPalette() {}
 
 void NiPalette::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PALETTE_READ
+  NI_PALETTE_READ
 }
 
 void NiPalette::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PALETTE_WRITE
+  NI_PALETTE_WRITE
 }
 
 string NiPalette::asString( bool verbose ) const {
-	NI_PALETTE_STRING
+  NI_PALETTE_STRING
 }
 
 void NiPalette::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PALETTE_FIXLINKS
+  NI_PALETTE_FIXLINKS
 }
 
+const Type & NiPalette::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPalette.h b/obj/NiPalette.h
index 83c3db92..6805d4f8 100644
--- a/obj/NiPalette.h
+++ b/obj/NiPalette.h
@@ -16,16 +16,17 @@ typedef Ref<NiPalette> NiPaletteRef;
 
 class NiPalette : public NI_PALETTE_PARENT {
 public:
-	NiPalette();
-	~NiPalette();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PALETTE_MEMBERS
+  NiPalette();
+  ~NiPalette();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PALETTE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleBomb.cpp b/obj/NiParticleBomb.cpp
index 64cc38b3..84901e51 100644
--- a/obj/NiParticleBomb.cpp
+++ b/obj/NiParticleBomb.cpp
@@ -11,18 +11,22 @@ NiParticleBomb::NiParticleBomb() NI_PARTICLE_BOMB_CONSTRUCT {}
 NiParticleBomb::~NiParticleBomb() {}
 
 void NiParticleBomb::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_BOMB_READ
+  NI_PARTICLE_BOMB_READ
 }
 
 void NiParticleBomb::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_BOMB_WRITE
+  NI_PARTICLE_BOMB_WRITE
 }
 
 string NiParticleBomb::asString( bool verbose ) const {
-	NI_PARTICLE_BOMB_STRING
+  NI_PARTICLE_BOMB_STRING
 }
 
 void NiParticleBomb::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_BOMB_FIXLINKS
+  NI_PARTICLE_BOMB_FIXLINKS
 }
 
+const Type & NiParticleBomb::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleBomb.h b/obj/NiParticleBomb.h
index 45302ae2..43743c76 100644
--- a/obj/NiParticleBomb.h
+++ b/obj/NiParticleBomb.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleBomb> NiParticleBombRef;
 
 class NiParticleBomb : public NI_PARTICLE_BOMB_PARENT {
 public:
-	NiParticleBomb();
-	~NiParticleBomb();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_BOMB_MEMBERS
+  NiParticleBomb();
+  ~NiParticleBomb();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_BOMB_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleColorModifier.cpp b/obj/NiParticleColorModifier.cpp
index 1d9f8be6..64e591ed 100644
--- a/obj/NiParticleColorModifier.cpp
+++ b/obj/NiParticleColorModifier.cpp
@@ -12,18 +12,22 @@ NiParticleColorModifier::NiParticleColorModifier() NI_PARTICLE_COLOR_MODIFIER_CO
 NiParticleColorModifier::~NiParticleColorModifier() {}
 
 void NiParticleColorModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_COLOR_MODIFIER_READ
+  NI_PARTICLE_COLOR_MODIFIER_READ
 }
 
 void NiParticleColorModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_COLOR_MODIFIER_WRITE
+  NI_PARTICLE_COLOR_MODIFIER_WRITE
 }
 
 string NiParticleColorModifier::asString( bool verbose ) const {
-	NI_PARTICLE_COLOR_MODIFIER_STRING
+  NI_PARTICLE_COLOR_MODIFIER_STRING
 }
 
 void NiParticleColorModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_COLOR_MODIFIER_FIXLINKS
+  NI_PARTICLE_COLOR_MODIFIER_FIXLINKS
 }
 
+const Type & NiParticleColorModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleColorModifier.h b/obj/NiParticleColorModifier.h
index 8ff4d525..2bb20433 100644
--- a/obj/NiParticleColorModifier.h
+++ b/obj/NiParticleColorModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleColorModifier> NiParticleColorModifierRef;
 
 class NiParticleColorModifier : public NI_PARTICLE_COLOR_MODIFIER_PARENT {
 public:
-	NiParticleColorModifier();
-	~NiParticleColorModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_COLOR_MODIFIER_MEMBERS
+  NiParticleColorModifier();
+  ~NiParticleColorModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_COLOR_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleGrowFade.cpp b/obj/NiParticleGrowFade.cpp
index 407ccb6c..a46ff9c2 100644
--- a/obj/NiParticleGrowFade.cpp
+++ b/obj/NiParticleGrowFade.cpp
@@ -11,18 +11,22 @@ NiParticleGrowFade::NiParticleGrowFade() NI_PARTICLE_GROW_FADE_CONSTRUCT {}
 NiParticleGrowFade::~NiParticleGrowFade() {}
 
 void NiParticleGrowFade::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_GROW_FADE_READ
+  NI_PARTICLE_GROW_FADE_READ
 }
 
 void NiParticleGrowFade::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_GROW_FADE_WRITE
+  NI_PARTICLE_GROW_FADE_WRITE
 }
 
 string NiParticleGrowFade::asString( bool verbose ) const {
-	NI_PARTICLE_GROW_FADE_STRING
+  NI_PARTICLE_GROW_FADE_STRING
 }
 
 void NiParticleGrowFade::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_GROW_FADE_FIXLINKS
+  NI_PARTICLE_GROW_FADE_FIXLINKS
 }
 
+const Type & NiParticleGrowFade::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleGrowFade.h b/obj/NiParticleGrowFade.h
index 7dd38d88..b40c4c46 100644
--- a/obj/NiParticleGrowFade.h
+++ b/obj/NiParticleGrowFade.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleGrowFade> NiParticleGrowFadeRef;
 
 class NiParticleGrowFade : public NI_PARTICLE_GROW_FADE_PARENT {
 public:
-	NiParticleGrowFade();
-	~NiParticleGrowFade();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_GROW_FADE_MEMBERS
+  NiParticleGrowFade();
+  ~NiParticleGrowFade();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_GROW_FADE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleMeshModifier.cpp b/obj/NiParticleMeshModifier.cpp
index a74fdc4f..1f6d029c 100644
--- a/obj/NiParticleMeshModifier.cpp
+++ b/obj/NiParticleMeshModifier.cpp
@@ -12,18 +12,22 @@ NiParticleMeshModifier::NiParticleMeshModifier() NI_PARTICLE_MESH_MODIFIER_CONST
 NiParticleMeshModifier::~NiParticleMeshModifier() {}
 
 void NiParticleMeshModifier::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_MESH_MODIFIER_READ
+  NI_PARTICLE_MESH_MODIFIER_READ
 }
 
 void NiParticleMeshModifier::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_MESH_MODIFIER_WRITE
+  NI_PARTICLE_MESH_MODIFIER_WRITE
 }
 
 string NiParticleMeshModifier::asString( bool verbose ) const {
-	NI_PARTICLE_MESH_MODIFIER_STRING
+  NI_PARTICLE_MESH_MODIFIER_STRING
 }
 
 void NiParticleMeshModifier::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_MESH_MODIFIER_FIXLINKS
+  NI_PARTICLE_MESH_MODIFIER_FIXLINKS
 }
 
+const Type & NiParticleMeshModifier::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleMeshModifier.h b/obj/NiParticleMeshModifier.h
index 2239fee9..f9cd5c20 100644
--- a/obj/NiParticleMeshModifier.h
+++ b/obj/NiParticleMeshModifier.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleMeshModifier> NiParticleMeshModifierRef;
 
 class NiParticleMeshModifier : public NI_PARTICLE_MESH_MODIFIER_PARENT {
 public:
-	NiParticleMeshModifier();
-	~NiParticleMeshModifier();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_MESH_MODIFIER_MEMBERS
+  NiParticleMeshModifier();
+  ~NiParticleMeshModifier();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_MESH_MODIFIER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleMeshes.cpp b/obj/NiParticleMeshes.cpp
index 19cae843..4f0e85f9 100644
--- a/obj/NiParticleMeshes.cpp
+++ b/obj/NiParticleMeshes.cpp
@@ -11,18 +11,22 @@ NiParticleMeshes::NiParticleMeshes() NI_PARTICLE_MESHES_CONSTRUCT {}
 NiParticleMeshes::~NiParticleMeshes() {}
 
 void NiParticleMeshes::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_MESHES_READ
+  NI_PARTICLE_MESHES_READ
 }
 
 void NiParticleMeshes::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_MESHES_WRITE
+  NI_PARTICLE_MESHES_WRITE
 }
 
 string NiParticleMeshes::asString( bool verbose ) const {
-	NI_PARTICLE_MESHES_STRING
+  NI_PARTICLE_MESHES_STRING
 }
 
 void NiParticleMeshes::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_MESHES_FIXLINKS
+  NI_PARTICLE_MESHES_FIXLINKS
 }
 
+const Type & NiParticleMeshes::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleMeshes.h b/obj/NiParticleMeshes.h
index d9df9735..e3398cb4 100644
--- a/obj/NiParticleMeshes.h
+++ b/obj/NiParticleMeshes.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleMeshes> NiParticleMeshesRef;
 
 class NiParticleMeshes : public NI_PARTICLE_MESHES_PARENT {
 public:
-	NiParticleMeshes();
-	~NiParticleMeshes();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_MESHES_MEMBERS
+  NiParticleMeshes();
+  ~NiParticleMeshes();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_MESHES_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleMeshesData.cpp b/obj/NiParticleMeshesData.cpp
index 0ab8c339..ca2d5c50 100644
--- a/obj/NiParticleMeshesData.cpp
+++ b/obj/NiParticleMeshesData.cpp
@@ -12,18 +12,22 @@ NiParticleMeshesData::NiParticleMeshesData() NI_PARTICLE_MESHES_DATA_CONSTRUCT {
 NiParticleMeshesData::~NiParticleMeshesData() {}
 
 void NiParticleMeshesData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_MESHES_DATA_READ
+  NI_PARTICLE_MESHES_DATA_READ
 }
 
 void NiParticleMeshesData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_MESHES_DATA_WRITE
+  NI_PARTICLE_MESHES_DATA_WRITE
 }
 
 string NiParticleMeshesData::asString( bool verbose ) const {
-	NI_PARTICLE_MESHES_DATA_STRING
+  NI_PARTICLE_MESHES_DATA_STRING
 }
 
 void NiParticleMeshesData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_MESHES_DATA_FIXLINKS
+  NI_PARTICLE_MESHES_DATA_FIXLINKS
 }
 
+const Type & NiParticleMeshesData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleMeshesData.h b/obj/NiParticleMeshesData.h
index f60abf08..02577ba5 100644
--- a/obj/NiParticleMeshesData.h
+++ b/obj/NiParticleMeshesData.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleMeshesData> NiParticleMeshesDataRef;
 
 class NiParticleMeshesData : public NI_PARTICLE_MESHES_DATA_PARENT {
 public:
-	NiParticleMeshesData();
-	~NiParticleMeshesData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_MESHES_DATA_MEMBERS
+  NiParticleMeshesData();
+  ~NiParticleMeshesData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_MESHES_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleRotation.cpp b/obj/NiParticleRotation.cpp
index 63152f36..99995ee0 100644
--- a/obj/NiParticleRotation.cpp
+++ b/obj/NiParticleRotation.cpp
@@ -11,18 +11,22 @@ NiParticleRotation::NiParticleRotation() NI_PARTICLE_ROTATION_CONSTRUCT {}
 NiParticleRotation::~NiParticleRotation() {}
 
 void NiParticleRotation::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_ROTATION_READ
+  NI_PARTICLE_ROTATION_READ
 }
 
 void NiParticleRotation::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_ROTATION_WRITE
+  NI_PARTICLE_ROTATION_WRITE
 }
 
 string NiParticleRotation::asString( bool verbose ) const {
-	NI_PARTICLE_ROTATION_STRING
+  NI_PARTICLE_ROTATION_STRING
 }
 
 void NiParticleRotation::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_ROTATION_FIXLINKS
+  NI_PARTICLE_ROTATION_FIXLINKS
 }
 
+const Type & NiParticleRotation::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleRotation.h b/obj/NiParticleRotation.h
index e32c0d54..3d87fa1e 100644
--- a/obj/NiParticleRotation.h
+++ b/obj/NiParticleRotation.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleRotation> NiParticleRotationRef;
 
 class NiParticleRotation : public NI_PARTICLE_ROTATION_PARENT {
 public:
-	NiParticleRotation();
-	~NiParticleRotation();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_ROTATION_MEMBERS
+  NiParticleRotation();
+  ~NiParticleRotation();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_ROTATION_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleSystem.cpp b/obj/NiParticleSystem.cpp
index c705b516..793b7ab6 100644
--- a/obj/NiParticleSystem.cpp
+++ b/obj/NiParticleSystem.cpp
@@ -2,8 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiParticleSystem.h"
-#include "AParticleModifier.h"
-#include "APSysModifier.h"
+#include "NiPSysModifier.h"
 
 //Definition of TYPE constant
 const Type NiParticleSystem::TYPE("NiParticleSystem", &NI_PARTICLE_SYSTEM_PARENT::TYPE );
@@ -13,18 +12,22 @@ NiParticleSystem::NiParticleSystem() NI_PARTICLE_SYSTEM_CONSTRUCT {}
 NiParticleSystem::~NiParticleSystem() {}
 
 void NiParticleSystem::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_SYSTEM_READ
+  NI_PARTICLE_SYSTEM_READ
 }
 
 void NiParticleSystem::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_SYSTEM_WRITE
+  NI_PARTICLE_SYSTEM_WRITE
 }
 
 string NiParticleSystem::asString( bool verbose ) const {
-	NI_PARTICLE_SYSTEM_STRING
+  NI_PARTICLE_SYSTEM_STRING
 }
 
 void NiParticleSystem::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_SYSTEM_FIXLINKS
+  NI_PARTICLE_SYSTEM_FIXLINKS
 }
 
+const Type & NiParticleSystem::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleSystem.h b/obj/NiParticleSystem.h
index 7bac9d78..4919bf6a 100644
--- a/obj/NiParticleSystem.h
+++ b/obj/NiParticleSystem.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleSystem> NiParticleSystemRef;
 
 class NiParticleSystem : public NI_PARTICLE_SYSTEM_PARENT {
 public:
-	NiParticleSystem();
-	~NiParticleSystem();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_SYSTEM_MEMBERS
+  NiParticleSystem();
+  ~NiParticleSystem();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_SYSTEM_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticleSystemController.cpp b/obj/NiParticleSystemController.cpp
index ad6affc2..584c8ea0 100644
--- a/obj/NiParticleSystemController.cpp
+++ b/obj/NiParticleSystemController.cpp
@@ -2,7 +2,10 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiParticleSystemController.h"
+#include "NiObject.h"
+#include "NiObject.h"
 #include "AParticleModifier.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type NiParticleSystemController::TYPE("NiParticleSystemController", &NI_PARTICLE_SYSTEM_CONTROLLER_PARENT::TYPE );
@@ -12,18 +15,22 @@ NiParticleSystemController::NiParticleSystemController() NI_PARTICLE_SYSTEM_CONT
 NiParticleSystemController::~NiParticleSystemController() {}
 
 void NiParticleSystemController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_SYSTEM_CONTROLLER_READ
+  NI_PARTICLE_SYSTEM_CONTROLLER_READ
 }
 
 void NiParticleSystemController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLE_SYSTEM_CONTROLLER_WRITE
+  NI_PARTICLE_SYSTEM_CONTROLLER_WRITE
 }
 
 string NiParticleSystemController::asString( bool verbose ) const {
-	NI_PARTICLE_SYSTEM_CONTROLLER_STRING
+  NI_PARTICLE_SYSTEM_CONTROLLER_STRING
 }
 
 void NiParticleSystemController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLE_SYSTEM_CONTROLLER_FIXLINKS
+  NI_PARTICLE_SYSTEM_CONTROLLER_FIXLINKS
 }
 
+const Type & NiParticleSystemController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticleSystemController.h b/obj/NiParticleSystemController.h
index 4027f270..098d3be7 100644
--- a/obj/NiParticleSystemController.h
+++ b/obj/NiParticleSystemController.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticleSystemController> NiParticleSystemControllerRef;
 
 class NiParticleSystemController : public NI_PARTICLE_SYSTEM_CONTROLLER_PARENT {
 public:
-	NiParticleSystemController();
-	~NiParticleSystemController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLE_SYSTEM_CONTROLLER_MEMBERS
+  NiParticleSystemController();
+  ~NiParticleSystemController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLE_SYSTEM_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticles.cpp b/obj/NiParticles.cpp
index 205ceab5..a019293d 100644
--- a/obj/NiParticles.cpp
+++ b/obj/NiParticles.cpp
@@ -11,18 +11,22 @@ NiParticles::NiParticles() NI_PARTICLES_CONSTRUCT {}
 NiParticles::~NiParticles() {}
 
 void NiParticles::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLES_READ
+  NI_PARTICLES_READ
 }
 
 void NiParticles::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLES_WRITE
+  NI_PARTICLES_WRITE
 }
 
 string NiParticles::asString( bool verbose ) const {
-	NI_PARTICLES_STRING
+  NI_PARTICLES_STRING
 }
 
 void NiParticles::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLES_FIXLINKS
+  NI_PARTICLES_FIXLINKS
 }
 
+const Type & NiParticles::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticles.h b/obj/NiParticles.h
index 0cc486b5..065c591c 100644
--- a/obj/NiParticles.h
+++ b/obj/NiParticles.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticles> NiParticlesRef;
 
 class NiParticles : public NI_PARTICLES_PARENT {
 public:
-	NiParticles();
-	~NiParticles();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLES_MEMBERS
+  NiParticles();
+  ~NiParticles();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLES_MEMBERS
 };
+
 #endif
diff --git a/obj/NiParticlesData.cpp b/obj/NiParticlesData.cpp
index e04b1cde..486d1a74 100644
--- a/obj/NiParticlesData.cpp
+++ b/obj/NiParticlesData.cpp
@@ -11,18 +11,22 @@ NiParticlesData::NiParticlesData() NI_PARTICLES_DATA_CONSTRUCT {}
 NiParticlesData::~NiParticlesData() {}
 
 void NiParticlesData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLES_DATA_READ
+  NI_PARTICLES_DATA_READ
 }
 
 void NiParticlesData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PARTICLES_DATA_WRITE
+  NI_PARTICLES_DATA_WRITE
 }
 
 string NiParticlesData::asString( bool verbose ) const {
-	NI_PARTICLES_DATA_STRING
+  NI_PARTICLES_DATA_STRING
 }
 
 void NiParticlesData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PARTICLES_DATA_FIXLINKS
+  NI_PARTICLES_DATA_FIXLINKS
 }
 
+const Type & NiParticlesData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiParticlesData.h b/obj/NiParticlesData.h
index 04683b18..2dc6bd04 100644
--- a/obj/NiParticlesData.h
+++ b/obj/NiParticlesData.h
@@ -16,16 +16,17 @@ typedef Ref<NiParticlesData> NiParticlesDataRef;
 
 class NiParticlesData : public NI_PARTICLES_DATA_PARENT {
 public:
-	NiParticlesData();
-	~NiParticlesData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PARTICLES_DATA_MEMBERS
+  NiParticlesData();
+  ~NiParticlesData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PARTICLES_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPathController.cpp b/obj/NiPathController.cpp
index 610169c3..0ab135df 100644
--- a/obj/NiPathController.cpp
+++ b/obj/NiPathController.cpp
@@ -13,18 +13,22 @@ NiPathController::NiPathController() NI_PATH_CONTROLLER_CONSTRUCT {}
 NiPathController::~NiPathController() {}
 
 void NiPathController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PATH_CONTROLLER_READ
+  NI_PATH_CONTROLLER_READ
 }
 
 void NiPathController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PATH_CONTROLLER_WRITE
+  NI_PATH_CONTROLLER_WRITE
 }
 
 string NiPathController::asString( bool verbose ) const {
-	NI_PATH_CONTROLLER_STRING
+  NI_PATH_CONTROLLER_STRING
 }
 
 void NiPathController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PATH_CONTROLLER_FIXLINKS
+  NI_PATH_CONTROLLER_FIXLINKS
 }
 
+const Type & NiPathController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPathController.h b/obj/NiPathController.h
index bf26ab62..0685c85c 100644
--- a/obj/NiPathController.h
+++ b/obj/NiPathController.h
@@ -16,16 +16,17 @@ typedef Ref<NiPathController> NiPathControllerRef;
 
 class NiPathController : public NI_PATH_CONTROLLER_PARENT {
 public:
-	NiPathController();
-	~NiPathController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PATH_CONTROLLER_MEMBERS
+  NiPathController();
+  ~NiPathController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PATH_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPathInterpolator.cpp b/obj/NiPathInterpolator.cpp
index 6a4e66da..9d42f00f 100644
--- a/obj/NiPathInterpolator.cpp
+++ b/obj/NiPathInterpolator.cpp
@@ -13,18 +13,22 @@ NiPathInterpolator::NiPathInterpolator() NI_PATH_INTERPOLATOR_CONSTRUCT {}
 NiPathInterpolator::~NiPathInterpolator() {}
 
 void NiPathInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PATH_INTERPOLATOR_READ
+  NI_PATH_INTERPOLATOR_READ
 }
 
 void NiPathInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PATH_INTERPOLATOR_WRITE
+  NI_PATH_INTERPOLATOR_WRITE
 }
 
 string NiPathInterpolator::asString( bool verbose ) const {
-	NI_PATH_INTERPOLATOR_STRING
+  NI_PATH_INTERPOLATOR_STRING
 }
 
 void NiPathInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PATH_INTERPOLATOR_FIXLINKS
+  NI_PATH_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiPathInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPathInterpolator.h b/obj/NiPathInterpolator.h
index 7bc7db14..1a81119a 100644
--- a/obj/NiPathInterpolator.h
+++ b/obj/NiPathInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiPathInterpolator> NiPathInterpolatorRef;
 
 class NiPathInterpolator : public NI_PATH_INTERPOLATOR_PARENT {
 public:
-	NiPathInterpolator();
-	~NiPathInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PATH_INTERPOLATOR_MEMBERS
+  NiPathInterpolator();
+  ~NiPathInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PATH_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPixelData.cpp b/obj/NiPixelData.cpp
index 40d776d8..64e1d2ca 100644
--- a/obj/NiPixelData.cpp
+++ b/obj/NiPixelData.cpp
@@ -12,18 +12,22 @@ NiPixelData::NiPixelData() NI_PIXEL_DATA_CONSTRUCT {}
 NiPixelData::~NiPixelData() {}
 
 void NiPixelData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PIXEL_DATA_READ
+  NI_PIXEL_DATA_READ
 }
 
 void NiPixelData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PIXEL_DATA_WRITE
+  NI_PIXEL_DATA_WRITE
 }
 
 string NiPixelData::asString( bool verbose ) const {
-	NI_PIXEL_DATA_STRING
+  NI_PIXEL_DATA_STRING
 }
 
 void NiPixelData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PIXEL_DATA_FIXLINKS
+  NI_PIXEL_DATA_FIXLINKS
 }
 
+const Type & NiPixelData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPixelData.h b/obj/NiPixelData.h
index ded9779c..dbe13d46 100644
--- a/obj/NiPixelData.h
+++ b/obj/NiPixelData.h
@@ -16,16 +16,17 @@ typedef Ref<NiPixelData> NiPixelDataRef;
 
 class NiPixelData : public NI_PIXEL_DATA_PARENT {
 public:
-	NiPixelData();
-	~NiPixelData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PIXEL_DATA_MEMBERS
+  NiPixelData();
+  ~NiPixelData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PIXEL_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPlanarCollider.cpp b/obj/NiPlanarCollider.cpp
index 84ba9096..a24fcbfd 100644
--- a/obj/NiPlanarCollider.cpp
+++ b/obj/NiPlanarCollider.cpp
@@ -11,18 +11,22 @@ NiPlanarCollider::NiPlanarCollider() NI_PLANAR_COLLIDER_CONSTRUCT {}
 NiPlanarCollider::~NiPlanarCollider() {}
 
 void NiPlanarCollider::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PLANAR_COLLIDER_READ
+  NI_PLANAR_COLLIDER_READ
 }
 
 void NiPlanarCollider::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PLANAR_COLLIDER_WRITE
+  NI_PLANAR_COLLIDER_WRITE
 }
 
 string NiPlanarCollider::asString( bool verbose ) const {
-	NI_PLANAR_COLLIDER_STRING
+  NI_PLANAR_COLLIDER_STRING
 }
 
 void NiPlanarCollider::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PLANAR_COLLIDER_FIXLINKS
+  NI_PLANAR_COLLIDER_FIXLINKS
 }
 
+const Type & NiPlanarCollider::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPlanarCollider.h b/obj/NiPlanarCollider.h
index a2ec91e7..001e594c 100644
--- a/obj/NiPlanarCollider.h
+++ b/obj/NiPlanarCollider.h
@@ -16,16 +16,17 @@ typedef Ref<NiPlanarCollider> NiPlanarColliderRef;
 
 class NiPlanarCollider : public NI_PLANAR_COLLIDER_PARENT {
 public:
-	NiPlanarCollider();
-	~NiPlanarCollider();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PLANAR_COLLIDER_MEMBERS
+  NiPlanarCollider();
+  ~NiPlanarCollider();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PLANAR_COLLIDER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPoint3Interpolator.cpp b/obj/NiPoint3Interpolator.cpp
index 29e1d8b3..c92e225d 100644
--- a/obj/NiPoint3Interpolator.cpp
+++ b/obj/NiPoint3Interpolator.cpp
@@ -12,18 +12,22 @@ NiPoint3Interpolator::NiPoint3Interpolator() NI_POINT3_INTERPOLATOR_CONSTRUCT {}
 NiPoint3Interpolator::~NiPoint3Interpolator() {}
 
 void NiPoint3Interpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_POINT3_INTERPOLATOR_READ
+  NI_POINT3_INTERPOLATOR_READ
 }
 
 void NiPoint3Interpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_POINT3_INTERPOLATOR_WRITE
+  NI_POINT3_INTERPOLATOR_WRITE
 }
 
 string NiPoint3Interpolator::asString( bool verbose ) const {
-	NI_POINT3_INTERPOLATOR_STRING
+  NI_POINT3_INTERPOLATOR_STRING
 }
 
 void NiPoint3Interpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_POINT3_INTERPOLATOR_FIXLINKS
+  NI_POINT3_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiPoint3Interpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPoint3Interpolator.h b/obj/NiPoint3Interpolator.h
index 4428935d..64617824 100644
--- a/obj/NiPoint3Interpolator.h
+++ b/obj/NiPoint3Interpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiPoint3Interpolator> NiPoint3InterpolatorRef;
 
 class NiPoint3Interpolator : public NI_POINT3_INTERPOLATOR_PARENT {
 public:
-	NiPoint3Interpolator();
-	~NiPoint3Interpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_POINT3_INTERPOLATOR_MEMBERS
+  NiPoint3Interpolator();
+  ~NiPoint3Interpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_POINT3_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPointLight.cpp b/obj/NiPointLight.cpp
index 8b7b5f74..e03e1200 100644
--- a/obj/NiPointLight.cpp
+++ b/obj/NiPointLight.cpp
@@ -11,18 +11,22 @@ NiPointLight::NiPointLight() NI_POINT_LIGHT_CONSTRUCT {}
 NiPointLight::~NiPointLight() {}
 
 void NiPointLight::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_POINT_LIGHT_READ
+  NI_POINT_LIGHT_READ
 }
 
 void NiPointLight::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_POINT_LIGHT_WRITE
+  NI_POINT_LIGHT_WRITE
 }
 
 string NiPointLight::asString( bool verbose ) const {
-	NI_POINT_LIGHT_STRING
+  NI_POINT_LIGHT_STRING
 }
 
 void NiPointLight::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_POINT_LIGHT_FIXLINKS
+  NI_POINT_LIGHT_FIXLINKS
 }
 
+const Type & NiPointLight::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPointLight.h b/obj/NiPointLight.h
index d0987829..bd6fc0d4 100644
--- a/obj/NiPointLight.h
+++ b/obj/NiPointLight.h
@@ -16,16 +16,17 @@ typedef Ref<NiPointLight> NiPointLightRef;
 
 class NiPointLight : public NI_POINT_LIGHT_PARENT {
 public:
-	NiPointLight();
-	~NiPointLight();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_POINT_LIGHT_MEMBERS
+  NiPointLight();
+  ~NiPointLight();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_POINT_LIGHT_MEMBERS
 };
+
 #endif
diff --git a/obj/NiPosData.cpp b/obj/NiPosData.cpp
index 1109f8a1..b5e8ddb3 100644
--- a/obj/NiPosData.cpp
+++ b/obj/NiPosData.cpp
@@ -11,18 +11,22 @@ NiPosData::NiPosData() NI_POS_DATA_CONSTRUCT {}
 NiPosData::~NiPosData() {}
 
 void NiPosData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_POS_DATA_READ
+  NI_POS_DATA_READ
 }
 
 void NiPosData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_POS_DATA_WRITE
+  NI_POS_DATA_WRITE
 }
 
 string NiPosData::asString( bool verbose ) const {
-	NI_POS_DATA_STRING
+  NI_POS_DATA_STRING
 }
 
 void NiPosData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_POS_DATA_FIXLINKS
+  NI_POS_DATA_FIXLINKS
 }
 
+const Type & NiPosData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiPosData.h b/obj/NiPosData.h
index 6e5409a3..9d46cff5 100644
--- a/obj/NiPosData.h
+++ b/obj/NiPosData.h
@@ -16,16 +16,17 @@ typedef Ref<NiPosData> NiPosDataRef;
 
 class NiPosData : public NI_POS_DATA_PARENT {
 public:
-	NiPosData();
-	~NiPosData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_POS_DATA_MEMBERS
+  NiPosData();
+  ~NiPosData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_POS_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiProperty.cpp b/obj/NiProperty.cpp
index 4660cc5f..f61c2321 100644
--- a/obj/NiProperty.cpp
+++ b/obj/NiProperty.cpp
@@ -11,18 +11,22 @@ NiProperty::NiProperty() NI_PROPERTY_CONSTRUCT {}
 NiProperty::~NiProperty() {}
 
 void NiProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_PROPERTY_READ
+  NI_PROPERTY_READ
 }
 
 void NiProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_PROPERTY_WRITE
+  NI_PROPERTY_WRITE
 }
 
 string NiProperty::asString( bool verbose ) const {
-	NI_PROPERTY_STRING
+  NI_PROPERTY_STRING
 }
 
 void NiProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_PROPERTY_FIXLINKS
+  NI_PROPERTY_FIXLINKS
 }
 
+const Type & NiProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiProperty.h b/obj/NiProperty.h
index 7437faa6..7547efb1 100644
--- a/obj/NiProperty.h
+++ b/obj/NiProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiProperty> NiPropertyRef;
 
 class NiProperty : public NI_PROPERTY_PARENT {
 public:
-	NiProperty();
-	~NiProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_PROPERTY_MEMBERS
+  NiProperty();
+  ~NiProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiRangeLODData.cpp b/obj/NiRangeLODData.cpp
index 3c49e061..f9f45d42 100644
--- a/obj/NiRangeLODData.cpp
+++ b/obj/NiRangeLODData.cpp
@@ -11,18 +11,22 @@ NiRangeLODData::NiRangeLODData() NI_RANGE_L_O_D_DATA_CONSTRUCT {}
 NiRangeLODData::~NiRangeLODData() {}
 
 void NiRangeLODData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_RANGE_L_O_D_DATA_READ
+  NI_RANGE_L_O_D_DATA_READ
 }
 
 void NiRangeLODData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_RANGE_L_O_D_DATA_WRITE
+  NI_RANGE_L_O_D_DATA_WRITE
 }
 
 string NiRangeLODData::asString( bool verbose ) const {
-	NI_RANGE_L_O_D_DATA_STRING
+  NI_RANGE_L_O_D_DATA_STRING
 }
 
 void NiRangeLODData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_RANGE_L_O_D_DATA_FIXLINKS
+  NI_RANGE_L_O_D_DATA_FIXLINKS
 }
 
+const Type & NiRangeLODData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiRangeLODData.h b/obj/NiRangeLODData.h
index 822a806f..7998e4ed 100644
--- a/obj/NiRangeLODData.h
+++ b/obj/NiRangeLODData.h
@@ -16,16 +16,17 @@ typedef Ref<NiRangeLODData> NiRangeLODDataRef;
 
 class NiRangeLODData : public NI_RANGE_L_O_D_DATA_PARENT {
 public:
-	NiRangeLODData();
-	~NiRangeLODData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_RANGE_L_O_D_DATA_MEMBERS
+  NiRangeLODData();
+  ~NiRangeLODData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_RANGE_L_O_D_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiRotatingParticles.cpp b/obj/NiRotatingParticles.cpp
index e1c382c9..160cc663 100644
--- a/obj/NiRotatingParticles.cpp
+++ b/obj/NiRotatingParticles.cpp
@@ -11,18 +11,22 @@ NiRotatingParticles::NiRotatingParticles() NI_ROTATING_PARTICLES_CONSTRUCT {}
 NiRotatingParticles::~NiRotatingParticles() {}
 
 void NiRotatingParticles::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_ROTATING_PARTICLES_READ
+  NI_ROTATING_PARTICLES_READ
 }
 
 void NiRotatingParticles::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_ROTATING_PARTICLES_WRITE
+  NI_ROTATING_PARTICLES_WRITE
 }
 
 string NiRotatingParticles::asString( bool verbose ) const {
-	NI_ROTATING_PARTICLES_STRING
+  NI_ROTATING_PARTICLES_STRING
 }
 
 void NiRotatingParticles::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_ROTATING_PARTICLES_FIXLINKS
+  NI_ROTATING_PARTICLES_FIXLINKS
 }
 
+const Type & NiRotatingParticles::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiRotatingParticles.h b/obj/NiRotatingParticles.h
index f0eb702f..3494f157 100644
--- a/obj/NiRotatingParticles.h
+++ b/obj/NiRotatingParticles.h
@@ -16,16 +16,17 @@ typedef Ref<NiRotatingParticles> NiRotatingParticlesRef;
 
 class NiRotatingParticles : public NI_ROTATING_PARTICLES_PARENT {
 public:
-	NiRotatingParticles();
-	~NiRotatingParticles();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_ROTATING_PARTICLES_MEMBERS
+  NiRotatingParticles();
+  ~NiRotatingParticles();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_ROTATING_PARTICLES_MEMBERS
 };
+
 #endif
diff --git a/obj/NiRotatingParticlesData.cpp b/obj/NiRotatingParticlesData.cpp
index bdd11fc4..e91ccfba 100644
--- a/obj/NiRotatingParticlesData.cpp
+++ b/obj/NiRotatingParticlesData.cpp
@@ -11,18 +11,22 @@ NiRotatingParticlesData::NiRotatingParticlesData() NI_ROTATING_PARTICLES_DATA_CO
 NiRotatingParticlesData::~NiRotatingParticlesData() {}
 
 void NiRotatingParticlesData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_ROTATING_PARTICLES_DATA_READ
+  NI_ROTATING_PARTICLES_DATA_READ
 }
 
 void NiRotatingParticlesData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_ROTATING_PARTICLES_DATA_WRITE
+  NI_ROTATING_PARTICLES_DATA_WRITE
 }
 
 string NiRotatingParticlesData::asString( bool verbose ) const {
-	NI_ROTATING_PARTICLES_DATA_STRING
+  NI_ROTATING_PARTICLES_DATA_STRING
 }
 
 void NiRotatingParticlesData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_ROTATING_PARTICLES_DATA_FIXLINKS
+  NI_ROTATING_PARTICLES_DATA_FIXLINKS
 }
 
+const Type & NiRotatingParticlesData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiRotatingParticlesData.h b/obj/NiRotatingParticlesData.h
index dd1ee84d..42f61bee 100644
--- a/obj/NiRotatingParticlesData.h
+++ b/obj/NiRotatingParticlesData.h
@@ -16,16 +16,17 @@ typedef Ref<NiRotatingParticlesData> NiRotatingParticlesDataRef;
 
 class NiRotatingParticlesData : public NI_ROTATING_PARTICLES_DATA_PARENT {
 public:
-	NiRotatingParticlesData();
-	~NiRotatingParticlesData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_ROTATING_PARTICLES_DATA_MEMBERS
+  NiRotatingParticlesData();
+  ~NiRotatingParticlesData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_ROTATING_PARTICLES_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiScreenLODData.cpp b/obj/NiScreenLODData.cpp
index ab3ae7c7..b12d948d 100644
--- a/obj/NiScreenLODData.cpp
+++ b/obj/NiScreenLODData.cpp
@@ -11,18 +11,22 @@ NiScreenLODData::NiScreenLODData() NI_SCREEN_L_O_D_DATA_CONSTRUCT {}
 NiScreenLODData::~NiScreenLODData() {}
 
 void NiScreenLODData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SCREEN_L_O_D_DATA_READ
+  NI_SCREEN_L_O_D_DATA_READ
 }
 
 void NiScreenLODData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SCREEN_L_O_D_DATA_WRITE
+  NI_SCREEN_L_O_D_DATA_WRITE
 }
 
 string NiScreenLODData::asString( bool verbose ) const {
-	NI_SCREEN_L_O_D_DATA_STRING
+  NI_SCREEN_L_O_D_DATA_STRING
 }
 
 void NiScreenLODData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SCREEN_L_O_D_DATA_FIXLINKS
+  NI_SCREEN_L_O_D_DATA_FIXLINKS
 }
 
+const Type & NiScreenLODData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiScreenLODData.h b/obj/NiScreenLODData.h
index a4452470..01866197 100644
--- a/obj/NiScreenLODData.h
+++ b/obj/NiScreenLODData.h
@@ -16,16 +16,17 @@ typedef Ref<NiScreenLODData> NiScreenLODDataRef;
 
 class NiScreenLODData : public NI_SCREEN_L_O_D_DATA_PARENT {
 public:
-	NiScreenLODData();
-	~NiScreenLODData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SCREEN_L_O_D_DATA_MEMBERS
+  NiScreenLODData();
+  ~NiScreenLODData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SCREEN_L_O_D_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSequenceStreamHelper.cpp b/obj/NiSequenceStreamHelper.cpp
index d8f50b3b..0bc548dc 100644
--- a/obj/NiSequenceStreamHelper.cpp
+++ b/obj/NiSequenceStreamHelper.cpp
@@ -11,18 +11,22 @@ NiSequenceStreamHelper::NiSequenceStreamHelper() NI_SEQUENCE_STREAM_HELPER_CONST
 NiSequenceStreamHelper::~NiSequenceStreamHelper() {}
 
 void NiSequenceStreamHelper::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SEQUENCE_STREAM_HELPER_READ
+  NI_SEQUENCE_STREAM_HELPER_READ
 }
 
 void NiSequenceStreamHelper::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SEQUENCE_STREAM_HELPER_WRITE
+  NI_SEQUENCE_STREAM_HELPER_WRITE
 }
 
 string NiSequenceStreamHelper::asString( bool verbose ) const {
-	NI_SEQUENCE_STREAM_HELPER_STRING
+  NI_SEQUENCE_STREAM_HELPER_STRING
 }
 
 void NiSequenceStreamHelper::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SEQUENCE_STREAM_HELPER_FIXLINKS
+  NI_SEQUENCE_STREAM_HELPER_FIXLINKS
 }
 
+const Type & NiSequenceStreamHelper::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiSequenceStreamHelper.h b/obj/NiSequenceStreamHelper.h
index 129e5919..f7343023 100644
--- a/obj/NiSequenceStreamHelper.h
+++ b/obj/NiSequenceStreamHelper.h
@@ -16,16 +16,17 @@ typedef Ref<NiSequenceStreamHelper> NiSequenceStreamHelperRef;
 
 class NiSequenceStreamHelper : public NI_SEQUENCE_STREAM_HELPER_PARENT {
 public:
-	NiSequenceStreamHelper();
-	~NiSequenceStreamHelper();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SEQUENCE_STREAM_HELPER_MEMBERS
+  NiSequenceStreamHelper();
+  ~NiSequenceStreamHelper();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SEQUENCE_STREAM_HELPER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiShadeProperty.cpp b/obj/NiShadeProperty.cpp
index d64f6da8..7880f071 100644
--- a/obj/NiShadeProperty.cpp
+++ b/obj/NiShadeProperty.cpp
@@ -11,18 +11,22 @@ NiShadeProperty::NiShadeProperty() NI_SHADE_PROPERTY_CONSTRUCT {}
 NiShadeProperty::~NiShadeProperty() {}
 
 void NiShadeProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SHADE_PROPERTY_READ
+  NI_SHADE_PROPERTY_READ
 }
 
 void NiShadeProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SHADE_PROPERTY_WRITE
+  NI_SHADE_PROPERTY_WRITE
 }
 
 string NiShadeProperty::asString( bool verbose ) const {
-	NI_SHADE_PROPERTY_STRING
+  NI_SHADE_PROPERTY_STRING
 }
 
 void NiShadeProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SHADE_PROPERTY_FIXLINKS
+  NI_SHADE_PROPERTY_FIXLINKS
 }
 
+const Type & NiShadeProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiShadeProperty.h b/obj/NiShadeProperty.h
index db0314e0..f9f6ae13 100644
--- a/obj/NiShadeProperty.h
+++ b/obj/NiShadeProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiShadeProperty> NiShadePropertyRef;
 
 class NiShadeProperty : public NI_SHADE_PROPERTY_PARENT {
 public:
-	NiShadeProperty();
-	~NiShadeProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SHADE_PROPERTY_MEMBERS
+  NiShadeProperty();
+  ~NiShadeProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SHADE_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSingleInterpolatorController.cpp b/obj/NiSingleInterpolatorController.cpp
index a4f33eda..912969aa 100644
--- a/obj/NiSingleInterpolatorController.cpp
+++ b/obj/NiSingleInterpolatorController.cpp
@@ -2,7 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiSingleInterpolatorController.h"
-#include "AInterpolator.h"
+#include "NiInterpolator.h"
 
 //Definition of TYPE constant
 const Type NiSingleInterpolatorController::TYPE("NiSingleInterpolatorController", &NI_SINGLE_INTERPOLATOR_CONTROLLER_PARENT::TYPE );
@@ -12,18 +12,22 @@ NiSingleInterpolatorController::NiSingleInterpolatorController() NI_SINGLE_INTER
 NiSingleInterpolatorController::~NiSingleInterpolatorController() {}
 
 void NiSingleInterpolatorController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SINGLE_INTERPOLATOR_CONTROLLER_READ
+  NI_SINGLE_INTERPOLATOR_CONTROLLER_READ
 }
 
 void NiSingleInterpolatorController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SINGLE_INTERPOLATOR_CONTROLLER_WRITE
+  NI_SINGLE_INTERPOLATOR_CONTROLLER_WRITE
 }
 
 string NiSingleInterpolatorController::asString( bool verbose ) const {
-	NI_SINGLE_INTERPOLATOR_CONTROLLER_STRING
+  NI_SINGLE_INTERPOLATOR_CONTROLLER_STRING
 }
 
 void NiSingleInterpolatorController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SINGLE_INTERPOLATOR_CONTROLLER_FIXLINKS
+  NI_SINGLE_INTERPOLATOR_CONTROLLER_FIXLINKS
 }
 
+const Type & NiSingleInterpolatorController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiSingleInterpolatorController.h b/obj/NiSingleInterpolatorController.h
index 5c1b7f47..2a49c57c 100644
--- a/obj/NiSingleInterpolatorController.h
+++ b/obj/NiSingleInterpolatorController.h
@@ -16,16 +16,17 @@ typedef Ref<NiSingleInterpolatorController> NiSingleInterpolatorControllerRef;
 
 class NiSingleInterpolatorController : public NI_SINGLE_INTERPOLATOR_CONTROLLER_PARENT {
 public:
-	NiSingleInterpolatorController();
-	~NiSingleInterpolatorController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SINGLE_INTERPOLATOR_CONTROLLER_MEMBERS
+  NiSingleInterpolatorController();
+  ~NiSingleInterpolatorController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SINGLE_INTERPOLATOR_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSkinData.cpp b/obj/NiSkinData.cpp
index 9d93e368..c1a8f534 100644
--- a/obj/NiSkinData.cpp
+++ b/obj/NiSkinData.cpp
@@ -12,18 +12,22 @@ NiSkinData::NiSkinData() NI_SKIN_DATA_CONSTRUCT {}
 NiSkinData::~NiSkinData() {}
 
 void NiSkinData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SKIN_DATA_READ
+  NI_SKIN_DATA_READ
 }
 
 void NiSkinData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SKIN_DATA_WRITE
+  NI_SKIN_DATA_WRITE
 }
 
 string NiSkinData::asString( bool verbose ) const {
-	NI_SKIN_DATA_STRING
+  NI_SKIN_DATA_STRING
 }
 
 void NiSkinData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SKIN_DATA_FIXLINKS
+  NI_SKIN_DATA_FIXLINKS
 }
 
+const Type & NiSkinData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiSkinData.h b/obj/NiSkinData.h
index 236b6ce4..6ae509dc 100644
--- a/obj/NiSkinData.h
+++ b/obj/NiSkinData.h
@@ -16,16 +16,17 @@ typedef Ref<NiSkinData> NiSkinDataRef;
 
 class NiSkinData : public NI_SKIN_DATA_PARENT {
 public:
-	NiSkinData();
-	~NiSkinData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SKIN_DATA_MEMBERS
+  NiSkinData();
+  ~NiSkinData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SKIN_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSkinInstance.cpp b/obj/NiSkinInstance.cpp
index 69c71145..647de1f3 100644
--- a/obj/NiSkinInstance.cpp
+++ b/obj/NiSkinInstance.cpp
@@ -14,20 +14,23 @@ NiSkinInstance::NiSkinInstance() NI_SKIN_INSTANCE_CONSTRUCT {}
 NiSkinInstance::~NiSkinInstance() {}
 
 void NiSkinInstance::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SKIN_INSTANCE_READ
+  NI_SKIN_INSTANCE_READ
 }
 
 void NiSkinInstance::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SKIN_INSTANCE_WRITE
+  NI_SKIN_INSTANCE_WRITE
 }
 
 string NiSkinInstance::asString( bool verbose ) const {
-	NI_SKIN_INSTANCE_STRING
+  NI_SKIN_INSTANCE_STRING
 }
 
 void NiSkinInstance::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SKIN_INSTANCE_FIXLINKS
+  NI_SKIN_INSTANCE_FIXLINKS
 }
 
-NiNode * NiSkinInstance::SkeletonRoot() const { return NULL; }
+const Type & NiSkinInstance::GetType() const {
+  return TYPE;
+};
 
+NiNode * NiSkinInstance::SkeletonRoot() const { return NULL; }
diff --git a/obj/NiSkinInstance.h b/obj/NiSkinInstance.h
index d6f991e6..de839899 100644
--- a/obj/NiSkinInstance.h
+++ b/obj/NiSkinInstance.h
@@ -16,18 +16,18 @@ typedef Ref<NiSkinInstance> NiSkinInstanceRef;
 
 class NiSkinInstance : public NI_SKIN_INSTANCE_PARENT {
 public:
-	NiSkinInstance();
-	~NiSkinInstance();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-	
-	NiNode * SkeletonRoot() const;
-private:
-	NI_SKIN_INSTANCE_MEMBERS
+  NiSkinInstance();
+  ~NiSkinInstance();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NiNode * NiSkinInstance::SkeletonRoot() const;
+  NI_SKIN_INSTANCE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSkinPartition.cpp b/obj/NiSkinPartition.cpp
index 0b968c8c..793f957c 100644
--- a/obj/NiSkinPartition.cpp
+++ b/obj/NiSkinPartition.cpp
@@ -11,18 +11,22 @@ NiSkinPartition::NiSkinPartition() NI_SKIN_PARTITION_CONSTRUCT {}
 NiSkinPartition::~NiSkinPartition() {}
 
 void NiSkinPartition::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SKIN_PARTITION_READ
+  NI_SKIN_PARTITION_READ
 }
 
 void NiSkinPartition::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SKIN_PARTITION_WRITE
+  NI_SKIN_PARTITION_WRITE
 }
 
 string NiSkinPartition::asString( bool verbose ) const {
-	NI_SKIN_PARTITION_STRING
+  NI_SKIN_PARTITION_STRING
 }
 
 void NiSkinPartition::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SKIN_PARTITION_FIXLINKS
+  NI_SKIN_PARTITION_FIXLINKS
 }
 
+const Type & NiSkinPartition::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiSkinPartition.h b/obj/NiSkinPartition.h
index 38850604..3670b59c 100644
--- a/obj/NiSkinPartition.h
+++ b/obj/NiSkinPartition.h
@@ -16,16 +16,17 @@ typedef Ref<NiSkinPartition> NiSkinPartitionRef;
 
 class NiSkinPartition : public NI_SKIN_PARTITION_PARENT {
 public:
-	NiSkinPartition();
-	~NiSkinPartition();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SKIN_PARTITION_MEMBERS
+  NiSkinPartition();
+  ~NiSkinPartition();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SKIN_PARTITION_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSourceTexture.cpp b/obj/NiSourceTexture.cpp
index 81151a29..6cf6d520 100644
--- a/obj/NiSourceTexture.cpp
+++ b/obj/NiSourceTexture.cpp
@@ -2,6 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiSourceTexture.h"
+#include "NiObject.h"
 #include "NiPixelData.h"
 
 //Definition of TYPE constant
@@ -12,18 +13,22 @@ NiSourceTexture::NiSourceTexture() NI_SOURCE_TEXTURE_CONSTRUCT {}
 NiSourceTexture::~NiSourceTexture() {}
 
 void NiSourceTexture::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SOURCE_TEXTURE_READ
+  NI_SOURCE_TEXTURE_READ
 }
 
 void NiSourceTexture::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SOURCE_TEXTURE_WRITE
+  NI_SOURCE_TEXTURE_WRITE
 }
 
 string NiSourceTexture::asString( bool verbose ) const {
-	NI_SOURCE_TEXTURE_STRING
+  NI_SOURCE_TEXTURE_STRING
 }
 
 void NiSourceTexture::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SOURCE_TEXTURE_FIXLINKS
+  NI_SOURCE_TEXTURE_FIXLINKS
 }
 
+const Type & NiSourceTexture::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiSourceTexture.h b/obj/NiSourceTexture.h
index 28670018..b787a2e6 100644
--- a/obj/NiSourceTexture.h
+++ b/obj/NiSourceTexture.h
@@ -16,16 +16,17 @@ typedef Ref<NiSourceTexture> NiSourceTextureRef;
 
 class NiSourceTexture : public NI_SOURCE_TEXTURE_PARENT {
 public:
-	NiSourceTexture();
-	~NiSourceTexture();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SOURCE_TEXTURE_MEMBERS
+  NiSourceTexture();
+  ~NiSourceTexture();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SOURCE_TEXTURE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSpecularProperty.cpp b/obj/NiSpecularProperty.cpp
index b18100c7..10449a6d 100644
--- a/obj/NiSpecularProperty.cpp
+++ b/obj/NiSpecularProperty.cpp
@@ -11,18 +11,22 @@ NiSpecularProperty::NiSpecularProperty() NI_SPECULAR_PROPERTY_CONSTRUCT {}
 NiSpecularProperty::~NiSpecularProperty() {}
 
 void NiSpecularProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SPECULAR_PROPERTY_READ
+  NI_SPECULAR_PROPERTY_READ
 }
 
 void NiSpecularProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SPECULAR_PROPERTY_WRITE
+  NI_SPECULAR_PROPERTY_WRITE
 }
 
 string NiSpecularProperty::asString( bool verbose ) const {
-	NI_SPECULAR_PROPERTY_STRING
+  NI_SPECULAR_PROPERTY_STRING
 }
 
 void NiSpecularProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SPECULAR_PROPERTY_FIXLINKS
+  NI_SPECULAR_PROPERTY_FIXLINKS
 }
 
+const Type & NiSpecularProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiSpecularProperty.h b/obj/NiSpecularProperty.h
index a47ff8c3..85c57e1e 100644
--- a/obj/NiSpecularProperty.h
+++ b/obj/NiSpecularProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiSpecularProperty> NiSpecularPropertyRef;
 
 class NiSpecularProperty : public NI_SPECULAR_PROPERTY_PARENT {
 public:
-	NiSpecularProperty();
-	~NiSpecularProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SPECULAR_PROPERTY_MEMBERS
+  NiSpecularProperty();
+  ~NiSpecularProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SPECULAR_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSphericalCollider.cpp b/obj/NiSphericalCollider.cpp
index a5c30c96..538e55aa 100644
--- a/obj/NiSphericalCollider.cpp
+++ b/obj/NiSphericalCollider.cpp
@@ -11,18 +11,22 @@ NiSphericalCollider::NiSphericalCollider() NI_SPHERICAL_COLLIDER_CONSTRUCT {}
 NiSphericalCollider::~NiSphericalCollider() {}
 
 void NiSphericalCollider::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SPHERICAL_COLLIDER_READ
+  NI_SPHERICAL_COLLIDER_READ
 }
 
 void NiSphericalCollider::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SPHERICAL_COLLIDER_WRITE
+  NI_SPHERICAL_COLLIDER_WRITE
 }
 
 string NiSphericalCollider::asString( bool verbose ) const {
-	NI_SPHERICAL_COLLIDER_STRING
+  NI_SPHERICAL_COLLIDER_STRING
 }
 
 void NiSphericalCollider::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SPHERICAL_COLLIDER_FIXLINKS
+  NI_SPHERICAL_COLLIDER_FIXLINKS
 }
 
+const Type & NiSphericalCollider::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiSphericalCollider.h b/obj/NiSphericalCollider.h
index 64f116ed..7b04d866 100644
--- a/obj/NiSphericalCollider.h
+++ b/obj/NiSphericalCollider.h
@@ -16,16 +16,17 @@ typedef Ref<NiSphericalCollider> NiSphericalColliderRef;
 
 class NiSphericalCollider : public NI_SPHERICAL_COLLIDER_PARENT {
 public:
-	NiSphericalCollider();
-	~NiSphericalCollider();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SPHERICAL_COLLIDER_MEMBERS
+  NiSphericalCollider();
+  ~NiSphericalCollider();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SPHERICAL_COLLIDER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiSpotLight.cpp b/obj/NiSpotLight.cpp
index 15f439d1..01485ffb 100644
--- a/obj/NiSpotLight.cpp
+++ b/obj/NiSpotLight.cpp
@@ -11,18 +11,22 @@ NiSpotLight::NiSpotLight() NI_SPOT_LIGHT_CONSTRUCT {}
 NiSpotLight::~NiSpotLight() {}
 
 void NiSpotLight::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_SPOT_LIGHT_READ
+  NI_SPOT_LIGHT_READ
 }
 
 void NiSpotLight::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_SPOT_LIGHT_WRITE
+  NI_SPOT_LIGHT_WRITE
 }
 
 string NiSpotLight::asString( bool verbose ) const {
-	NI_SPOT_LIGHT_STRING
+  NI_SPOT_LIGHT_STRING
 }
 
 void NiSpotLight::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_SPOT_LIGHT_FIXLINKS
+  NI_SPOT_LIGHT_FIXLINKS
 }
 
+const Type & NiSpotLight::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiSpotLight.h b/obj/NiSpotLight.h
index 5f73cc9e..27f8bf5c 100644
--- a/obj/NiSpotLight.h
+++ b/obj/NiSpotLight.h
@@ -16,16 +16,17 @@ typedef Ref<NiSpotLight> NiSpotLightRef;
 
 class NiSpotLight : public NI_SPOT_LIGHT_PARENT {
 public:
-	NiSpotLight();
-	~NiSpotLight();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_SPOT_LIGHT_MEMBERS
+  NiSpotLight();
+  ~NiSpotLight();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_SPOT_LIGHT_MEMBERS
 };
+
 #endif
diff --git a/obj/NiStencilProperty.cpp b/obj/NiStencilProperty.cpp
index 93122a18..74584898 100644
--- a/obj/NiStencilProperty.cpp
+++ b/obj/NiStencilProperty.cpp
@@ -11,18 +11,22 @@ NiStencilProperty::NiStencilProperty() NI_STENCIL_PROPERTY_CONSTRUCT {}
 NiStencilProperty::~NiStencilProperty() {}
 
 void NiStencilProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_STENCIL_PROPERTY_READ
+  NI_STENCIL_PROPERTY_READ
 }
 
 void NiStencilProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_STENCIL_PROPERTY_WRITE
+  NI_STENCIL_PROPERTY_WRITE
 }
 
 string NiStencilProperty::asString( bool verbose ) const {
-	NI_STENCIL_PROPERTY_STRING
+  NI_STENCIL_PROPERTY_STRING
 }
 
 void NiStencilProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_STENCIL_PROPERTY_FIXLINKS
+  NI_STENCIL_PROPERTY_FIXLINKS
 }
 
+const Type & NiStencilProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiStencilProperty.h b/obj/NiStencilProperty.h
index b25291d1..281ffa29 100644
--- a/obj/NiStencilProperty.h
+++ b/obj/NiStencilProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiStencilProperty> NiStencilPropertyRef;
 
 class NiStencilProperty : public NI_STENCIL_PROPERTY_PARENT {
 public:
-	NiStencilProperty();
-	~NiStencilProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_STENCIL_PROPERTY_MEMBERS
+  NiStencilProperty();
+  ~NiStencilProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_STENCIL_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiStringExtraData.cpp b/obj/NiStringExtraData.cpp
index ad40d005..243abdb7 100644
--- a/obj/NiStringExtraData.cpp
+++ b/obj/NiStringExtraData.cpp
@@ -11,20 +11,23 @@ NiStringExtraData::NiStringExtraData() NI_STRING_EXTRA_DATA_CONSTRUCT {}
 NiStringExtraData::~NiStringExtraData() {}
 
 void NiStringExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_STRING_EXTRA_DATA_READ
+  NI_STRING_EXTRA_DATA_READ
 }
 
 void NiStringExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_STRING_EXTRA_DATA_WRITE
+  NI_STRING_EXTRA_DATA_WRITE
 }
 
 string NiStringExtraData::asString( bool verbose ) const {
-	NI_STRING_EXTRA_DATA_STRING
+  NI_STRING_EXTRA_DATA_STRING
 }
 
 void NiStringExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_STRING_EXTRA_DATA_FIXLINKS
+  NI_STRING_EXTRA_DATA_FIXLINKS
 }
 
-uint NiStringExtraData::BytesRemaining() const { return 0; };
+const Type & NiStringExtraData::GetType() const {
+  return TYPE;
+};
 
+uint NiStringExtraData::BytesRemaining() const { return uint(); }
diff --git a/obj/NiStringExtraData.h b/obj/NiStringExtraData.h
index 123bf359..2dc2d96d 100644
--- a/obj/NiStringExtraData.h
+++ b/obj/NiStringExtraData.h
@@ -16,18 +16,18 @@ typedef Ref<NiStringExtraData> NiStringExtraDataRef;
 
 class NiStringExtraData : public NI_STRING_EXTRA_DATA_PARENT {
 public:
-	NiStringExtraData();
-	~NiStringExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	uint BytesRemaining() const;
-
-	NI_STRING_EXTRA_DATA_MEMBERS
+  NiStringExtraData();
+  ~NiStringExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  uint BytesRemaining() const;
+  NI_STRING_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiStringPalette.cpp b/obj/NiStringPalette.cpp
index 2cc6d8d5..ca7b2c79 100644
--- a/obj/NiStringPalette.cpp
+++ b/obj/NiStringPalette.cpp
@@ -11,18 +11,22 @@ NiStringPalette::NiStringPalette() NI_STRING_PALETTE_CONSTRUCT {}
 NiStringPalette::~NiStringPalette() {}
 
 void NiStringPalette::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_STRING_PALETTE_READ
+  NI_STRING_PALETTE_READ
 }
 
 void NiStringPalette::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_STRING_PALETTE_WRITE
+  NI_STRING_PALETTE_WRITE
 }
 
 string NiStringPalette::asString( bool verbose ) const {
-	NI_STRING_PALETTE_STRING
+  NI_STRING_PALETTE_STRING
 }
 
 void NiStringPalette::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_STRING_PALETTE_FIXLINKS
+  NI_STRING_PALETTE_FIXLINKS
 }
 
+const Type & NiStringPalette::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiStringPalette.h b/obj/NiStringPalette.h
index db2a1524..383577df 100644
--- a/obj/NiStringPalette.h
+++ b/obj/NiStringPalette.h
@@ -16,16 +16,17 @@ typedef Ref<NiStringPalette> NiStringPaletteRef;
 
 class NiStringPalette : public NI_STRING_PALETTE_PARENT {
 public:
-	NiStringPalette();
-	~NiStringPalette();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_STRING_PALETTE_MEMBERS
+  NiStringPalette();
+  ~NiStringPalette();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_STRING_PALETTE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiStringsExtraData.cpp b/obj/NiStringsExtraData.cpp
index e576e797..2f5b00e6 100644
--- a/obj/NiStringsExtraData.cpp
+++ b/obj/NiStringsExtraData.cpp
@@ -11,18 +11,22 @@ NiStringsExtraData::NiStringsExtraData() NI_STRINGS_EXTRA_DATA_CONSTRUCT {}
 NiStringsExtraData::~NiStringsExtraData() {}
 
 void NiStringsExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_STRINGS_EXTRA_DATA_READ
+  NI_STRINGS_EXTRA_DATA_READ
 }
 
 void NiStringsExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_STRINGS_EXTRA_DATA_WRITE
+  NI_STRINGS_EXTRA_DATA_WRITE
 }
 
 string NiStringsExtraData::asString( bool verbose ) const {
-	NI_STRINGS_EXTRA_DATA_STRING
+  NI_STRINGS_EXTRA_DATA_STRING
 }
 
 void NiStringsExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_STRINGS_EXTRA_DATA_FIXLINKS
+  NI_STRINGS_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiStringsExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiStringsExtraData.h b/obj/NiStringsExtraData.h
index 32dd987c..a55ee196 100644
--- a/obj/NiStringsExtraData.h
+++ b/obj/NiStringsExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiStringsExtraData> NiStringsExtraDataRef;
 
 class NiStringsExtraData : public NI_STRINGS_EXTRA_DATA_PARENT {
 public:
-	NiStringsExtraData();
-	~NiStringsExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_STRINGS_EXTRA_DATA_MEMBERS
+  NiStringsExtraData();
+  ~NiStringsExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_STRINGS_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTextKeyExtraData.cpp b/obj/NiTextKeyExtraData.cpp
index aaa38c2f..0d1c16e8 100644
--- a/obj/NiTextKeyExtraData.cpp
+++ b/obj/NiTextKeyExtraData.cpp
@@ -11,18 +11,22 @@ NiTextKeyExtraData::NiTextKeyExtraData() NI_TEXT_KEY_EXTRA_DATA_CONSTRUCT {}
 NiTextKeyExtraData::~NiTextKeyExtraData() {}
 
 void NiTextKeyExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TEXT_KEY_EXTRA_DATA_READ
+  NI_TEXT_KEY_EXTRA_DATA_READ
 }
 
 void NiTextKeyExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TEXT_KEY_EXTRA_DATA_WRITE
+  NI_TEXT_KEY_EXTRA_DATA_WRITE
 }
 
 string NiTextKeyExtraData::asString( bool verbose ) const {
-	NI_TEXT_KEY_EXTRA_DATA_STRING
+  NI_TEXT_KEY_EXTRA_DATA_STRING
 }
 
 void NiTextKeyExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TEXT_KEY_EXTRA_DATA_FIXLINKS
+  NI_TEXT_KEY_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiTextKeyExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTextKeyExtraData.h b/obj/NiTextKeyExtraData.h
index 2250a951..2b7fc0c1 100644
--- a/obj/NiTextKeyExtraData.h
+++ b/obj/NiTextKeyExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiTextKeyExtraData> NiTextKeyExtraDataRef;
 
 class NiTextKeyExtraData : public NI_TEXT_KEY_EXTRA_DATA_PARENT {
 public:
-	NiTextKeyExtraData();
-	~NiTextKeyExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TEXT_KEY_EXTRA_DATA_MEMBERS
+  NiTextKeyExtraData();
+  ~NiTextKeyExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TEXT_KEY_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTextureEffect.cpp b/obj/NiTextureEffect.cpp
index 5aff510b..314cb2f9 100644
--- a/obj/NiTextureEffect.cpp
+++ b/obj/NiTextureEffect.cpp
@@ -12,18 +12,22 @@ NiTextureEffect::NiTextureEffect() NI_TEXTURE_EFFECT_CONSTRUCT {}
 NiTextureEffect::~NiTextureEffect() {}
 
 void NiTextureEffect::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TEXTURE_EFFECT_READ
+  NI_TEXTURE_EFFECT_READ
 }
 
 void NiTextureEffect::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TEXTURE_EFFECT_WRITE
+  NI_TEXTURE_EFFECT_WRITE
 }
 
 string NiTextureEffect::asString( bool verbose ) const {
-	NI_TEXTURE_EFFECT_STRING
+  NI_TEXTURE_EFFECT_STRING
 }
 
 void NiTextureEffect::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TEXTURE_EFFECT_FIXLINKS
+  NI_TEXTURE_EFFECT_FIXLINKS
 }
 
+const Type & NiTextureEffect::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTextureEffect.h b/obj/NiTextureEffect.h
index 322ddc85..33a7652f 100644
--- a/obj/NiTextureEffect.h
+++ b/obj/NiTextureEffect.h
@@ -16,16 +16,17 @@ typedef Ref<NiTextureEffect> NiTextureEffectRef;
 
 class NiTextureEffect : public NI_TEXTURE_EFFECT_PARENT {
 public:
-	NiTextureEffect();
-	~NiTextureEffect();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TEXTURE_EFFECT_MEMBERS
+  NiTextureEffect();
+  ~NiTextureEffect();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TEXTURE_EFFECT_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTextureTransformController.cpp b/obj/NiTextureTransformController.cpp
index 0e5b584d..9b908b3d 100644
--- a/obj/NiTextureTransformController.cpp
+++ b/obj/NiTextureTransformController.cpp
@@ -12,18 +12,22 @@ NiTextureTransformController::NiTextureTransformController() NI_TEXTURE_TRANSFOR
 NiTextureTransformController::~NiTextureTransformController() {}
 
 void NiTextureTransformController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TEXTURE_TRANSFORM_CONTROLLER_READ
+  NI_TEXTURE_TRANSFORM_CONTROLLER_READ
 }
 
 void NiTextureTransformController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TEXTURE_TRANSFORM_CONTROLLER_WRITE
+  NI_TEXTURE_TRANSFORM_CONTROLLER_WRITE
 }
 
 string NiTextureTransformController::asString( bool verbose ) const {
-	NI_TEXTURE_TRANSFORM_CONTROLLER_STRING
+  NI_TEXTURE_TRANSFORM_CONTROLLER_STRING
 }
 
 void NiTextureTransformController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TEXTURE_TRANSFORM_CONTROLLER_FIXLINKS
+  NI_TEXTURE_TRANSFORM_CONTROLLER_FIXLINKS
 }
 
+const Type & NiTextureTransformController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTextureTransformController.h b/obj/NiTextureTransformController.h
index 37b3414c..fc7952be 100644
--- a/obj/NiTextureTransformController.h
+++ b/obj/NiTextureTransformController.h
@@ -16,16 +16,17 @@ typedef Ref<NiTextureTransformController> NiTextureTransformControllerRef;
 
 class NiTextureTransformController : public NI_TEXTURE_TRANSFORM_CONTROLLER_PARENT {
 public:
-	NiTextureTransformController();
-	~NiTextureTransformController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TEXTURE_TRANSFORM_CONTROLLER_MEMBERS
+  NiTextureTransformController();
+  ~NiTextureTransformController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TEXTURE_TRANSFORM_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTexturingProperty.cpp b/obj/NiTexturingProperty.cpp
index 55c316a6..9dd359aa 100644
--- a/obj/NiTexturingProperty.cpp
+++ b/obj/NiTexturingProperty.cpp
@@ -3,6 +3,14 @@ All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiTexturingProperty.h"
 #include "NiSourceTexture.h"
+#include "NiSourceTexture.h"
+#include "NiSourceTexture.h"
+#include "NiSourceTexture.h"
+#include "NiSourceTexture.h"
+#include "NiSourceTexture.h"
+#include "NiSourceTexture.h"
+#include "NiSourceTexture.h"
+#include "NiSourceTexture.h"
 
 //Definition of TYPE constant
 const Type NiTexturingProperty::TYPE("NiTexturingProperty", &NI_TEXTURING_PROPERTY_PARENT::TYPE );
@@ -12,18 +20,22 @@ NiTexturingProperty::NiTexturingProperty() NI_TEXTURING_PROPERTY_CONSTRUCT {}
 NiTexturingProperty::~NiTexturingProperty() {}
 
 void NiTexturingProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TEXTURING_PROPERTY_READ
+  NI_TEXTURING_PROPERTY_READ
 }
 
 void NiTexturingProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TEXTURING_PROPERTY_WRITE
+  NI_TEXTURING_PROPERTY_WRITE
 }
 
 string NiTexturingProperty::asString( bool verbose ) const {
-	NI_TEXTURING_PROPERTY_STRING
+  NI_TEXTURING_PROPERTY_STRING
 }
 
 void NiTexturingProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TEXTURING_PROPERTY_FIXLINKS
+  NI_TEXTURING_PROPERTY_FIXLINKS
 }
 
+const Type & NiTexturingProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTexturingProperty.h b/obj/NiTexturingProperty.h
index 729f6a59..446bc9c8 100644
--- a/obj/NiTexturingProperty.h
+++ b/obj/NiTexturingProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiTexturingProperty> NiTexturingPropertyRef;
 
 class NiTexturingProperty : public NI_TEXTURING_PROPERTY_PARENT {
 public:
-	NiTexturingProperty();
-	~NiTexturingProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TEXTURING_PROPERTY_MEMBERS
+  NiTexturingProperty();
+  ~NiTexturingProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TEXTURING_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTimeController.cpp b/obj/NiTimeController.cpp
index 4682e5ac..aa45580b 100644
--- a/obj/NiTimeController.cpp
+++ b/obj/NiTimeController.cpp
@@ -2,6 +2,8 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiTimeController.h"
+#include "NiTimeController.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type NiTimeController::TYPE("NiTimeController", &NI_TIME_CONTROLLER_PARENT::TYPE );
@@ -11,18 +13,22 @@ NiTimeController::NiTimeController() NI_TIME_CONTROLLER_CONSTRUCT {}
 NiTimeController::~NiTimeController() {}
 
 void NiTimeController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TIME_CONTROLLER_READ
+  NI_TIME_CONTROLLER_READ
 }
 
 void NiTimeController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TIME_CONTROLLER_WRITE
+  NI_TIME_CONTROLLER_WRITE
 }
 
 string NiTimeController::asString( bool verbose ) const {
-	NI_TIME_CONTROLLER_STRING
+  NI_TIME_CONTROLLER_STRING
 }
 
 void NiTimeController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TIME_CONTROLLER_FIXLINKS
+  NI_TIME_CONTROLLER_FIXLINKS
 }
 
+const Type & NiTimeController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTimeController.h b/obj/NiTimeController.h
index 3deedec3..6cf80e13 100644
--- a/obj/NiTimeController.h
+++ b/obj/NiTimeController.h
@@ -16,16 +16,17 @@ typedef Ref<NiTimeController> NiTimeControllerRef;
 
 class NiTimeController : public NI_TIME_CONTROLLER_PARENT {
 public:
-	NiTimeController();
-	~NiTimeController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TIME_CONTROLLER_MEMBERS
+  NiTimeController();
+  ~NiTimeController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TIME_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTransformController.cpp b/obj/NiTransformController.cpp
index c7db92cb..71fe32a7 100644
--- a/obj/NiTransformController.cpp
+++ b/obj/NiTransformController.cpp
@@ -11,18 +11,22 @@ NiTransformController::NiTransformController() NI_TRANSFORM_CONTROLLER_CONSTRUCT
 NiTransformController::~NiTransformController() {}
 
 void NiTransformController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TRANSFORM_CONTROLLER_READ
+  NI_TRANSFORM_CONTROLLER_READ
 }
 
 void NiTransformController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TRANSFORM_CONTROLLER_WRITE
+  NI_TRANSFORM_CONTROLLER_WRITE
 }
 
 string NiTransformController::asString( bool verbose ) const {
-	NI_TRANSFORM_CONTROLLER_STRING
+  NI_TRANSFORM_CONTROLLER_STRING
 }
 
 void NiTransformController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TRANSFORM_CONTROLLER_FIXLINKS
+  NI_TRANSFORM_CONTROLLER_FIXLINKS
 }
 
+const Type & NiTransformController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTransformController.h b/obj/NiTransformController.h
index 5750565f..f60e6f7d 100644
--- a/obj/NiTransformController.h
+++ b/obj/NiTransformController.h
@@ -16,16 +16,17 @@ typedef Ref<NiTransformController> NiTransformControllerRef;
 
 class NiTransformController : public NI_TRANSFORM_CONTROLLER_PARENT {
 public:
-	NiTransformController();
-	~NiTransformController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TRANSFORM_CONTROLLER_MEMBERS
+  NiTransformController();
+  ~NiTransformController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TRANSFORM_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTransformData.cpp b/obj/NiTransformData.cpp
index b757eae0..c72ea40e 100644
--- a/obj/NiTransformData.cpp
+++ b/obj/NiTransformData.cpp
@@ -11,18 +11,22 @@ NiTransformData::NiTransformData() NI_TRANSFORM_DATA_CONSTRUCT {}
 NiTransformData::~NiTransformData() {}
 
 void NiTransformData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TRANSFORM_DATA_READ
+  NI_TRANSFORM_DATA_READ
 }
 
 void NiTransformData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TRANSFORM_DATA_WRITE
+  NI_TRANSFORM_DATA_WRITE
 }
 
 string NiTransformData::asString( bool verbose ) const {
-	NI_TRANSFORM_DATA_STRING
+  NI_TRANSFORM_DATA_STRING
 }
 
 void NiTransformData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TRANSFORM_DATA_FIXLINKS
+  NI_TRANSFORM_DATA_FIXLINKS
 }
 
+const Type & NiTransformData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTransformData.h b/obj/NiTransformData.h
index 99699723..64c348b0 100644
--- a/obj/NiTransformData.h
+++ b/obj/NiTransformData.h
@@ -16,16 +16,17 @@ typedef Ref<NiTransformData> NiTransformDataRef;
 
 class NiTransformData : public NI_TRANSFORM_DATA_PARENT {
 public:
-	NiTransformData();
-	~NiTransformData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TRANSFORM_DATA_MEMBERS
+  NiTransformData();
+  ~NiTransformData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TRANSFORM_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTransformInterpolator.cpp b/obj/NiTransformInterpolator.cpp
index dcbb54e1..d6018622 100644
--- a/obj/NiTransformInterpolator.cpp
+++ b/obj/NiTransformInterpolator.cpp
@@ -12,18 +12,22 @@ NiTransformInterpolator::NiTransformInterpolator() NI_TRANSFORM_INTERPOLATOR_CON
 NiTransformInterpolator::~NiTransformInterpolator() {}
 
 void NiTransformInterpolator::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TRANSFORM_INTERPOLATOR_READ
+  NI_TRANSFORM_INTERPOLATOR_READ
 }
 
 void NiTransformInterpolator::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TRANSFORM_INTERPOLATOR_WRITE
+  NI_TRANSFORM_INTERPOLATOR_WRITE
 }
 
 string NiTransformInterpolator::asString( bool verbose ) const {
-	NI_TRANSFORM_INTERPOLATOR_STRING
+  NI_TRANSFORM_INTERPOLATOR_STRING
 }
 
 void NiTransformInterpolator::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TRANSFORM_INTERPOLATOR_FIXLINKS
+  NI_TRANSFORM_INTERPOLATOR_FIXLINKS
 }
 
+const Type & NiTransformInterpolator::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTransformInterpolator.h b/obj/NiTransformInterpolator.h
index bc71f0ec..a4e7ebc6 100644
--- a/obj/NiTransformInterpolator.h
+++ b/obj/NiTransformInterpolator.h
@@ -16,16 +16,17 @@ typedef Ref<NiTransformInterpolator> NiTransformInterpolatorRef;
 
 class NiTransformInterpolator : public NI_TRANSFORM_INTERPOLATOR_PARENT {
 public:
-	NiTransformInterpolator();
-	~NiTransformInterpolator();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TRANSFORM_INTERPOLATOR_MEMBERS
+  NiTransformInterpolator();
+  ~NiTransformInterpolator();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TRANSFORM_INTERPOLATOR_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTriBasedGeom.cpp b/obj/NiTriBasedGeom.cpp
index 9847528c..5de26387 100644
--- a/obj/NiTriBasedGeom.cpp
+++ b/obj/NiTriBasedGeom.cpp
@@ -2,8 +2,9 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "NiTriBasedGeom.h"
-#include "TriBasedGeomData.h"
+#include "NiTriBasedGeomData.h"
 #include "NiSkinInstance.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type NiTriBasedGeom::TYPE("NiTriBasedGeom", &NI_TRI_BASED_GEOM_PARENT::TYPE );
@@ -13,18 +14,22 @@ NiTriBasedGeom::NiTriBasedGeom() NI_TRI_BASED_GEOM_CONSTRUCT {}
 NiTriBasedGeom::~NiTriBasedGeom() {}
 
 void NiTriBasedGeom::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_BASED_GEOM_READ
+  NI_TRI_BASED_GEOM_READ
 }
 
 void NiTriBasedGeom::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TRI_BASED_GEOM_WRITE
+  NI_TRI_BASED_GEOM_WRITE
 }
 
 string NiTriBasedGeom::asString( bool verbose ) const {
-	NI_TRI_BASED_GEOM_STRING
+  NI_TRI_BASED_GEOM_STRING
 }
 
 void NiTriBasedGeom::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_BASED_GEOM_FIXLINKS
+  NI_TRI_BASED_GEOM_FIXLINKS
 }
 
+const Type & NiTriBasedGeom::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTriBasedGeom.h b/obj/NiTriBasedGeom.h
index ea565b1e..a5a6b2a8 100644
--- a/obj/NiTriBasedGeom.h
+++ b/obj/NiTriBasedGeom.h
@@ -16,19 +16,17 @@ typedef Ref<NiTriBasedGeom> NiTriBasedGeomRef;
 
 class NiTriBasedGeom : public NI_TRI_BASED_GEOM_PARENT {
 public:
-	NiTriBasedGeom();
-	~NiTriBasedGeom();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-	
-	Vector3 Center() const;
-	float Radius() const;
-private:
-	NI_TRI_BASED_GEOM_MEMBERS
+  NiTriBasedGeom();
+  ~NiTriBasedGeom();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TRI_BASED_GEOM_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTriBasedGeomData.cpp b/obj/NiTriBasedGeomData.cpp
new file mode 100644
index 00000000..301194e8
--- /dev/null
+++ b/obj/NiTriBasedGeomData.cpp
@@ -0,0 +1,35 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#include "NiTriBasedGeomData.h"
+#include "NiObject.h"
+
+//Definition of TYPE constant
+const Type NiTriBasedGeomData::TYPE("NiTriBasedGeomData", &NI_TRI_BASED_GEOM_DATA_PARENT::TYPE );
+
+NiTriBasedGeomData::NiTriBasedGeomData() NI_TRI_BASED_GEOM_DATA_CONSTRUCT {}
+
+NiTriBasedGeomData::~NiTriBasedGeomData() {}
+
+void NiTriBasedGeomData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
+  NI_TRI_BASED_GEOM_DATA_READ
+}
+
+void NiTriBasedGeomData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
+  NI_TRI_BASED_GEOM_DATA_WRITE
+}
+
+string NiTriBasedGeomData::asString( bool verbose ) const {
+  NI_TRI_BASED_GEOM_DATA_STRING
+}
+
+void NiTriBasedGeomData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
+  NI_TRI_BASED_GEOM_DATA_FIXLINKS
+}
+
+const Type & NiTriBasedGeomData::GetType() const {
+  return TYPE;
+};
+
+Vector3 NiTriBasedGeomData::Center() const { return Vector3(); }
+float NiTriBasedGeomData::Radius() const { return float(); }
diff --git a/obj/NiTriBasedGeomData.h b/obj/NiTriBasedGeomData.h
new file mode 100644
index 00000000..5fd879fc
--- /dev/null
+++ b/obj/NiTriBasedGeomData.h
@@ -0,0 +1,34 @@
+/* Copyright (c) 2006, NIF File Format Library and Tools
+All rights reserved.  Please see niflib.h for licence. */
+
+#ifndef _NITRIBASEDGEOMDATA_H_
+#define _NITRIBASEDGEOMDATA_H_
+
+#include "xml_extract.h"
+#include NI_TRI_BASED_GEOM_DATA_INCLUDE
+
+/*
+ * NiTriBasedGeomData
+ */
+
+class NiTriBasedGeomData;
+typedef Ref<NiTriBasedGeomData> NiTriBasedGeomDataRef;
+
+class NiTriBasedGeomData : public NI_TRI_BASED_GEOM_DATA_PARENT {
+public:
+  NiTriBasedGeomData();
+  ~NiTriBasedGeomData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  Vector3 Center() const;
+  float Radius() const;
+  NI_TRI_BASED_GEOM_DATA_MEMBERS
+};
+
+#endif
diff --git a/obj/NiTriShape.cpp b/obj/NiTriShape.cpp
index ce256695..ba347d60 100644
--- a/obj/NiTriShape.cpp
+++ b/obj/NiTriShape.cpp
@@ -11,18 +11,22 @@ NiTriShape::NiTriShape() NI_TRI_SHAPE_CONSTRUCT {}
 NiTriShape::~NiTriShape() {}
 
 void NiTriShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_SHAPE_READ
+  NI_TRI_SHAPE_READ
 }
 
 void NiTriShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TRI_SHAPE_WRITE
+  NI_TRI_SHAPE_WRITE
 }
 
 string NiTriShape::asString( bool verbose ) const {
-	NI_TRI_SHAPE_STRING
+  NI_TRI_SHAPE_STRING
 }
 
 void NiTriShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_SHAPE_FIXLINKS
+  NI_TRI_SHAPE_FIXLINKS
 }
 
+const Type & NiTriShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTriShape.h b/obj/NiTriShape.h
index 899df250..d0c2766a 100644
--- a/obj/NiTriShape.h
+++ b/obj/NiTriShape.h
@@ -16,16 +16,17 @@ typedef Ref<NiTriShape> NiTriShapeRef;
 
 class NiTriShape : public NI_TRI_SHAPE_PARENT {
 public:
-	NiTriShape();
-	~NiTriShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TRI_SHAPE_MEMBERS
+  NiTriShape();
+  ~NiTriShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TRI_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTriShapeData.cpp b/obj/NiTriShapeData.cpp
index e9be9574..a14018c6 100644
--- a/obj/NiTriShapeData.cpp
+++ b/obj/NiTriShapeData.cpp
@@ -11,18 +11,22 @@ NiTriShapeData::NiTriShapeData() NI_TRI_SHAPE_DATA_CONSTRUCT {}
 NiTriShapeData::~NiTriShapeData() {}
 
 void NiTriShapeData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_SHAPE_DATA_READ
+  NI_TRI_SHAPE_DATA_READ
 }
 
 void NiTriShapeData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TRI_SHAPE_DATA_WRITE
+  NI_TRI_SHAPE_DATA_WRITE
 }
 
 string NiTriShapeData::asString( bool verbose ) const {
-	NI_TRI_SHAPE_DATA_STRING
+  NI_TRI_SHAPE_DATA_STRING
 }
 
 void NiTriShapeData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_SHAPE_DATA_FIXLINKS
+  NI_TRI_SHAPE_DATA_FIXLINKS
 }
 
+const Type & NiTriShapeData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTriShapeData.h b/obj/NiTriShapeData.h
index 8a17bc7c..758be0ae 100644
--- a/obj/NiTriShapeData.h
+++ b/obj/NiTriShapeData.h
@@ -16,16 +16,17 @@ typedef Ref<NiTriShapeData> NiTriShapeDataRef;
 
 class NiTriShapeData : public NI_TRI_SHAPE_DATA_PARENT {
 public:
-	NiTriShapeData();
-	~NiTriShapeData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TRI_SHAPE_DATA_MEMBERS
+  NiTriShapeData();
+  ~NiTriShapeData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TRI_SHAPE_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTriStrips.cpp b/obj/NiTriStrips.cpp
index 60cf1a29..72ce2d36 100644
--- a/obj/NiTriStrips.cpp
+++ b/obj/NiTriStrips.cpp
@@ -11,18 +11,22 @@ NiTriStrips::NiTriStrips() NI_TRI_STRIPS_CONSTRUCT {}
 NiTriStrips::~NiTriStrips() {}
 
 void NiTriStrips::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_STRIPS_READ
+  NI_TRI_STRIPS_READ
 }
 
 void NiTriStrips::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TRI_STRIPS_WRITE
+  NI_TRI_STRIPS_WRITE
 }
 
 string NiTriStrips::asString( bool verbose ) const {
-	NI_TRI_STRIPS_STRING
+  NI_TRI_STRIPS_STRING
 }
 
 void NiTriStrips::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_STRIPS_FIXLINKS
+  NI_TRI_STRIPS_FIXLINKS
 }
 
+const Type & NiTriStrips::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTriStrips.h b/obj/NiTriStrips.h
index e4f93bb1..ca954285 100644
--- a/obj/NiTriStrips.h
+++ b/obj/NiTriStrips.h
@@ -16,16 +16,17 @@ typedef Ref<NiTriStrips> NiTriStripsRef;
 
 class NiTriStrips : public NI_TRI_STRIPS_PARENT {
 public:
-	NiTriStrips();
-	~NiTriStrips();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TRI_STRIPS_MEMBERS
+  NiTriStrips();
+  ~NiTriStrips();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TRI_STRIPS_MEMBERS
 };
+
 #endif
diff --git a/obj/NiTriStripsData.cpp b/obj/NiTriStripsData.cpp
index 54af6909..2747b62d 100644
--- a/obj/NiTriStripsData.cpp
+++ b/obj/NiTriStripsData.cpp
@@ -11,18 +11,22 @@ NiTriStripsData::NiTriStripsData() NI_TRI_STRIPS_DATA_CONSTRUCT {}
 NiTriStripsData::~NiTriStripsData() {}
 
 void NiTriStripsData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_STRIPS_DATA_READ
+  NI_TRI_STRIPS_DATA_READ
 }
 
 void NiTriStripsData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_TRI_STRIPS_DATA_WRITE
+  NI_TRI_STRIPS_DATA_WRITE
 }
 
 string NiTriStripsData::asString( bool verbose ) const {
-	NI_TRI_STRIPS_DATA_STRING
+  NI_TRI_STRIPS_DATA_STRING
 }
 
 void NiTriStripsData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_TRI_STRIPS_DATA_FIXLINKS
+  NI_TRI_STRIPS_DATA_FIXLINKS
 }
 
+const Type & NiTriStripsData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiTriStripsData.h b/obj/NiTriStripsData.h
index 3c380a0f..148a9211 100644
--- a/obj/NiTriStripsData.h
+++ b/obj/NiTriStripsData.h
@@ -16,16 +16,17 @@ typedef Ref<NiTriStripsData> NiTriStripsDataRef;
 
 class NiTriStripsData : public NI_TRI_STRIPS_DATA_PARENT {
 public:
-	NiTriStripsData();
-	~NiTriStripsData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_TRI_STRIPS_DATA_MEMBERS
+  NiTriStripsData();
+  ~NiTriStripsData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_TRI_STRIPS_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiUVController.cpp b/obj/NiUVController.cpp
index 86f39c5f..cf0b35fa 100644
--- a/obj/NiUVController.cpp
+++ b/obj/NiUVController.cpp
@@ -12,18 +12,22 @@ NiUVController::NiUVController() NI_U_V_CONTROLLER_CONSTRUCT {}
 NiUVController::~NiUVController() {}
 
 void NiUVController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_U_V_CONTROLLER_READ
+  NI_U_V_CONTROLLER_READ
 }
 
 void NiUVController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_U_V_CONTROLLER_WRITE
+  NI_U_V_CONTROLLER_WRITE
 }
 
 string NiUVController::asString( bool verbose ) const {
-	NI_U_V_CONTROLLER_STRING
+  NI_U_V_CONTROLLER_STRING
 }
 
 void NiUVController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_U_V_CONTROLLER_FIXLINKS
+  NI_U_V_CONTROLLER_FIXLINKS
 }
 
+const Type & NiUVController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiUVController.h b/obj/NiUVController.h
index ecf9e137..5295c14c 100644
--- a/obj/NiUVController.h
+++ b/obj/NiUVController.h
@@ -16,16 +16,17 @@ typedef Ref<NiUVController> NiUVControllerRef;
 
 class NiUVController : public NI_U_V_CONTROLLER_PARENT {
 public:
-	NiUVController();
-	~NiUVController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_U_V_CONTROLLER_MEMBERS
+  NiUVController();
+  ~NiUVController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_U_V_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiUVData.cpp b/obj/NiUVData.cpp
index 632ded00..da9cb229 100644
--- a/obj/NiUVData.cpp
+++ b/obj/NiUVData.cpp
@@ -11,18 +11,22 @@ NiUVData::NiUVData() NI_U_V_DATA_CONSTRUCT {}
 NiUVData::~NiUVData() {}
 
 void NiUVData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_U_V_DATA_READ
+  NI_U_V_DATA_READ
 }
 
 void NiUVData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_U_V_DATA_WRITE
+  NI_U_V_DATA_WRITE
 }
 
 string NiUVData::asString( bool verbose ) const {
-	NI_U_V_DATA_STRING
+  NI_U_V_DATA_STRING
 }
 
 void NiUVData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_U_V_DATA_FIXLINKS
+  NI_U_V_DATA_FIXLINKS
 }
 
+const Type & NiUVData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiUVData.h b/obj/NiUVData.h
index bbaf7c80..0fd3335d 100644
--- a/obj/NiUVData.h
+++ b/obj/NiUVData.h
@@ -16,16 +16,17 @@ typedef Ref<NiUVData> NiUVDataRef;
 
 class NiUVData : public NI_U_V_DATA_PARENT {
 public:
-	NiUVData();
-	~NiUVData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_U_V_DATA_MEMBERS
+  NiUVData();
+  ~NiUVData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_U_V_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiVectorExtraData.cpp b/obj/NiVectorExtraData.cpp
index 5e313be3..5817ef3d 100644
--- a/obj/NiVectorExtraData.cpp
+++ b/obj/NiVectorExtraData.cpp
@@ -11,18 +11,22 @@ NiVectorExtraData::NiVectorExtraData() NI_VECTOR_EXTRA_DATA_CONSTRUCT {}
 NiVectorExtraData::~NiVectorExtraData() {}
 
 void NiVectorExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_VECTOR_EXTRA_DATA_READ
+  NI_VECTOR_EXTRA_DATA_READ
 }
 
 void NiVectorExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_VECTOR_EXTRA_DATA_WRITE
+  NI_VECTOR_EXTRA_DATA_WRITE
 }
 
 string NiVectorExtraData::asString( bool verbose ) const {
-	NI_VECTOR_EXTRA_DATA_STRING
+  NI_VECTOR_EXTRA_DATA_STRING
 }
 
 void NiVectorExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_VECTOR_EXTRA_DATA_FIXLINKS
+  NI_VECTOR_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiVectorExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiVectorExtraData.h b/obj/NiVectorExtraData.h
index dfaace00..8f393950 100644
--- a/obj/NiVectorExtraData.h
+++ b/obj/NiVectorExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiVectorExtraData> NiVectorExtraDataRef;
 
 class NiVectorExtraData : public NI_VECTOR_EXTRA_DATA_PARENT {
 public:
-	NiVectorExtraData();
-	~NiVectorExtraData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_VECTOR_EXTRA_DATA_MEMBERS
+  NiVectorExtraData();
+  ~NiVectorExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_VECTOR_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiVertWeightsExtraData.cpp b/obj/NiVertWeightsExtraData.cpp
index 03df727d..84297de5 100644
--- a/obj/NiVertWeightsExtraData.cpp
+++ b/obj/NiVertWeightsExtraData.cpp
@@ -11,18 +11,22 @@ NiVertWeightsExtraData::NiVertWeightsExtraData() NI_VERT_WEIGHTS_EXTRA_DATA_CONS
 NiVertWeightsExtraData::~NiVertWeightsExtraData() {}
 
 void NiVertWeightsExtraData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_VERT_WEIGHTS_EXTRA_DATA_READ
+  NI_VERT_WEIGHTS_EXTRA_DATA_READ
 }
 
 void NiVertWeightsExtraData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_VERT_WEIGHTS_EXTRA_DATA_WRITE
+  NI_VERT_WEIGHTS_EXTRA_DATA_WRITE
 }
 
 string NiVertWeightsExtraData::asString( bool verbose ) const {
-	NI_VERT_WEIGHTS_EXTRA_DATA_STRING
+  NI_VERT_WEIGHTS_EXTRA_DATA_STRING
 }
 
 void NiVertWeightsExtraData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_VERT_WEIGHTS_EXTRA_DATA_FIXLINKS
+  NI_VERT_WEIGHTS_EXTRA_DATA_FIXLINKS
 }
 
+const Type & NiVertWeightsExtraData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiVertWeightsExtraData.h b/obj/NiVertWeightsExtraData.h
index f6dec1b7..1edcab94 100644
--- a/obj/NiVertWeightsExtraData.h
+++ b/obj/NiVertWeightsExtraData.h
@@ -16,16 +16,17 @@ typedef Ref<NiVertWeightsExtraData> NiVertWeightsExtraDataRef;
 
 class NiVertWeightsExtraData : public NI_VERT_WEIGHTS_EXTRA_DATA_PARENT {
 public:
-	NiVertWeightsExtraData();
-	~NiVertWeightsExtraData();
-	//Run-Time Type Information
-	static const Type
-		TYPE; virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_VERT_WEIGHTS_EXTRA_DATA_MEMBERS
+  NiVertWeightsExtraData();
+  ~NiVertWeightsExtraData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_VERT_WEIGHTS_EXTRA_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiVertexColorProperty.cpp b/obj/NiVertexColorProperty.cpp
index 548646d8..d25fb9fc 100644
--- a/obj/NiVertexColorProperty.cpp
+++ b/obj/NiVertexColorProperty.cpp
@@ -11,18 +11,22 @@ NiVertexColorProperty::NiVertexColorProperty() NI_VERTEX_COLOR_PROPERTY_CONSTRUC
 NiVertexColorProperty::~NiVertexColorProperty() {}
 
 void NiVertexColorProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_VERTEX_COLOR_PROPERTY_READ
+  NI_VERTEX_COLOR_PROPERTY_READ
 }
 
 void NiVertexColorProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_VERTEX_COLOR_PROPERTY_WRITE
+  NI_VERTEX_COLOR_PROPERTY_WRITE
 }
 
 string NiVertexColorProperty::asString( bool verbose ) const {
-	NI_VERTEX_COLOR_PROPERTY_STRING
+  NI_VERTEX_COLOR_PROPERTY_STRING
 }
 
 void NiVertexColorProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_VERTEX_COLOR_PROPERTY_FIXLINKS
+  NI_VERTEX_COLOR_PROPERTY_FIXLINKS
 }
 
+const Type & NiVertexColorProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiVertexColorProperty.h b/obj/NiVertexColorProperty.h
index e2ffb801..18faa409 100644
--- a/obj/NiVertexColorProperty.h
+++ b/obj/NiVertexColorProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiVertexColorProperty> NiVertexColorPropertyRef;
 
 class NiVertexColorProperty : public NI_VERTEX_COLOR_PROPERTY_PARENT {
 public:
-	NiVertexColorProperty();
-	~NiVertexColorProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_VERTEX_COLOR_PROPERTY_MEMBERS
+  NiVertexColorProperty();
+  ~NiVertexColorProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_VERTEX_COLOR_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiVisController.cpp b/obj/NiVisController.cpp
index ecafaa10..c6a14c87 100644
--- a/obj/NiVisController.cpp
+++ b/obj/NiVisController.cpp
@@ -12,18 +12,22 @@ NiVisController::NiVisController() NI_VIS_CONTROLLER_CONSTRUCT {}
 NiVisController::~NiVisController() {}
 
 void NiVisController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_VIS_CONTROLLER_READ
+  NI_VIS_CONTROLLER_READ
 }
 
 void NiVisController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_VIS_CONTROLLER_WRITE
+  NI_VIS_CONTROLLER_WRITE
 }
 
 string NiVisController::asString( bool verbose ) const {
-	NI_VIS_CONTROLLER_STRING
+  NI_VIS_CONTROLLER_STRING
 }
 
 void NiVisController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_VIS_CONTROLLER_FIXLINKS
+  NI_VIS_CONTROLLER_FIXLINKS
 }
 
+const Type & NiVisController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiVisController.h b/obj/NiVisController.h
index e999ffee..8b4bf548 100644
--- a/obj/NiVisController.h
+++ b/obj/NiVisController.h
@@ -16,16 +16,17 @@ typedef Ref<NiVisController> NiVisControllerRef;
 
 class NiVisController : public NI_VIS_CONTROLLER_PARENT {
 public:
-	NiVisController();
-	~NiVisController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_VIS_CONTROLLER_MEMBERS
+  NiVisController();
+  ~NiVisController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_VIS_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/NiVisData.cpp b/obj/NiVisData.cpp
index 02c5e962..42bfb31c 100644
--- a/obj/NiVisData.cpp
+++ b/obj/NiVisData.cpp
@@ -11,18 +11,22 @@ NiVisData::NiVisData() NI_VIS_DATA_CONSTRUCT {}
 NiVisData::~NiVisData() {}
 
 void NiVisData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_VIS_DATA_READ
+  NI_VIS_DATA_READ
 }
 
 void NiVisData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_VIS_DATA_WRITE
+  NI_VIS_DATA_WRITE
 }
 
 string NiVisData::asString( bool verbose ) const {
-	NI_VIS_DATA_STRING
+  NI_VIS_DATA_STRING
 }
 
 void NiVisData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_VIS_DATA_FIXLINKS
+  NI_VIS_DATA_FIXLINKS
 }
 
+const Type & NiVisData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiVisData.h b/obj/NiVisData.h
index 6c2d61e0..2513bb3a 100644
--- a/obj/NiVisData.h
+++ b/obj/NiVisData.h
@@ -16,16 +16,17 @@ typedef Ref<NiVisData> NiVisDataRef;
 
 class NiVisData : public NI_VIS_DATA_PARENT {
 public:
-	NiVisData();
-	~NiVisData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_VIS_DATA_MEMBERS
+  NiVisData();
+  ~NiVisData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_VIS_DATA_MEMBERS
 };
+
 #endif
diff --git a/obj/NiWireframeProperty.cpp b/obj/NiWireframeProperty.cpp
index f5aebacc..0bc5aa13 100644
--- a/obj/NiWireframeProperty.cpp
+++ b/obj/NiWireframeProperty.cpp
@@ -11,18 +11,22 @@ NiWireframeProperty::NiWireframeProperty() NI_WIREFRAME_PROPERTY_CONSTRUCT {}
 NiWireframeProperty::~NiWireframeProperty() {}
 
 void NiWireframeProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_WIREFRAME_PROPERTY_READ
+  NI_WIREFRAME_PROPERTY_READ
 }
 
 void NiWireframeProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_WIREFRAME_PROPERTY_WRITE
+  NI_WIREFRAME_PROPERTY_WRITE
 }
 
 string NiWireframeProperty::asString( bool verbose ) const {
-	NI_WIREFRAME_PROPERTY_STRING
+  NI_WIREFRAME_PROPERTY_STRING
 }
 
 void NiWireframeProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_WIREFRAME_PROPERTY_FIXLINKS
+  NI_WIREFRAME_PROPERTY_FIXLINKS
 }
 
+const Type & NiWireframeProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiWireframeProperty.h b/obj/NiWireframeProperty.h
index beb29df0..1d75b708 100644
--- a/obj/NiWireframeProperty.h
+++ b/obj/NiWireframeProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiWireframeProperty> NiWireframePropertyRef;
 
 class NiWireframeProperty : public NI_WIREFRAME_PROPERTY_PARENT {
 public:
-	NiWireframeProperty();
-	~NiWireframeProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_WIREFRAME_PROPERTY_MEMBERS
+  NiWireframeProperty();
+  ~NiWireframeProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_WIREFRAME_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/NiZBufferProperty.cpp b/obj/NiZBufferProperty.cpp
index 80b4882c..f63ce689 100644
--- a/obj/NiZBufferProperty.cpp
+++ b/obj/NiZBufferProperty.cpp
@@ -11,18 +11,22 @@ NiZBufferProperty::NiZBufferProperty() NI_Z_BUFFER_PROPERTY_CONSTRUCT {}
 NiZBufferProperty::~NiZBufferProperty() {}
 
 void NiZBufferProperty::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	NI_Z_BUFFER_PROPERTY_READ
+  NI_Z_BUFFER_PROPERTY_READ
 }
 
 void NiZBufferProperty::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	NI_Z_BUFFER_PROPERTY_WRITE
+  NI_Z_BUFFER_PROPERTY_WRITE
 }
 
 string NiZBufferProperty::asString( bool verbose ) const {
-	NI_Z_BUFFER_PROPERTY_STRING
+  NI_Z_BUFFER_PROPERTY_STRING
 }
 
 void NiZBufferProperty::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	NI_Z_BUFFER_PROPERTY_FIXLINKS
+  NI_Z_BUFFER_PROPERTY_FIXLINKS
 }
 
+const Type & NiZBufferProperty::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/NiZBufferProperty.h b/obj/NiZBufferProperty.h
index a7b0f99a..b33487dd 100644
--- a/obj/NiZBufferProperty.h
+++ b/obj/NiZBufferProperty.h
@@ -16,16 +16,17 @@ typedef Ref<NiZBufferProperty> NiZBufferPropertyRef;
 
 class NiZBufferProperty : public NI_Z_BUFFER_PROPERTY_PARENT {
 public:
-	NiZBufferProperty();
-	~NiZBufferProperty();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	NI_Z_BUFFER_PROPERTY_MEMBERS
+  NiZBufferProperty();
+  ~NiZBufferProperty();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  NI_Z_BUFFER_PROPERTY_MEMBERS
 };
+
 #endif
diff --git a/obj/RootCollisionNode.cpp b/obj/RootCollisionNode.cpp
index 4603f6b3..69f3766b 100644
--- a/obj/RootCollisionNode.cpp
+++ b/obj/RootCollisionNode.cpp
@@ -11,18 +11,22 @@ RootCollisionNode::RootCollisionNode() ROOT_COLLISION_NODE_CONSTRUCT {}
 RootCollisionNode::~RootCollisionNode() {}
 
 void RootCollisionNode::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	ROOT_COLLISION_NODE_READ
+  ROOT_COLLISION_NODE_READ
 }
 
 void RootCollisionNode::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	ROOT_COLLISION_NODE_WRITE
+  ROOT_COLLISION_NODE_WRITE
 }
 
 string RootCollisionNode::asString( bool verbose ) const {
-	ROOT_COLLISION_NODE_STRING
+  ROOT_COLLISION_NODE_STRING
 }
 
 void RootCollisionNode::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	ROOT_COLLISION_NODE_FIXLINKS
+  ROOT_COLLISION_NODE_FIXLINKS
 }
 
+const Type & RootCollisionNode::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/RootCollisionNode.h b/obj/RootCollisionNode.h
index efdea3c5..42e1409b 100644
--- a/obj/RootCollisionNode.h
+++ b/obj/RootCollisionNode.h
@@ -16,16 +16,17 @@ typedef Ref<RootCollisionNode> RootCollisionNodeRef;
 
 class RootCollisionNode : public ROOT_COLLISION_NODE_PARENT {
 public:
-	RootCollisionNode();
-	~RootCollisionNode();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	ROOT_COLLISION_NODE_MEMBERS
+  RootCollisionNode();
+  ~RootCollisionNode();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  ROOT_COLLISION_NODE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkBlendCollisionObject.cpp b/obj/bhkBlendCollisionObject.cpp
index 7adf0260..486479fd 100644
--- a/obj/bhkBlendCollisionObject.cpp
+++ b/obj/bhkBlendCollisionObject.cpp
@@ -11,18 +11,22 @@ bhkBlendCollisionObject::bhkBlendCollisionObject() BHK_BLEND_COLLISION_OBJECT_CO
 bhkBlendCollisionObject::~bhkBlendCollisionObject() {}
 
 void bhkBlendCollisionObject::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_BLEND_COLLISION_OBJECT_READ
+  BHK_BLEND_COLLISION_OBJECT_READ
 }
 
 void bhkBlendCollisionObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_BLEND_COLLISION_OBJECT_WRITE
+  BHK_BLEND_COLLISION_OBJECT_WRITE
 }
 
 string bhkBlendCollisionObject::asString( bool verbose ) const {
-	BHK_BLEND_COLLISION_OBJECT_STRING
+  BHK_BLEND_COLLISION_OBJECT_STRING
 }
 
 void bhkBlendCollisionObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_BLEND_COLLISION_OBJECT_FIXLINKS
+  BHK_BLEND_COLLISION_OBJECT_FIXLINKS
 }
 
+const Type & bhkBlendCollisionObject::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkBlendCollisionObject.h b/obj/bhkBlendCollisionObject.h
index fa31c24f..296cc796 100644
--- a/obj/bhkBlendCollisionObject.h
+++ b/obj/bhkBlendCollisionObject.h
@@ -16,16 +16,17 @@ typedef Ref<bhkBlendCollisionObject> bhkBlendCollisionObjectRef;
 
 class bhkBlendCollisionObject : public BHK_BLEND_COLLISION_OBJECT_PARENT {
 public:
-	bhkBlendCollisionObject();
-	~bhkBlendCollisionObject();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_BLEND_COLLISION_OBJECT_MEMBERS
+  bhkBlendCollisionObject();
+  ~bhkBlendCollisionObject();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_BLEND_COLLISION_OBJECT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkBlendController.cpp b/obj/bhkBlendController.cpp
index 345c7a86..8643ed91 100644
--- a/obj/bhkBlendController.cpp
+++ b/obj/bhkBlendController.cpp
@@ -11,18 +11,22 @@ bhkBlendController::bhkBlendController() BHK_BLEND_CONTROLLER_CONSTRUCT {}
 bhkBlendController::~bhkBlendController() {}
 
 void bhkBlendController::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_BLEND_CONTROLLER_READ
+  BHK_BLEND_CONTROLLER_READ
 }
 
 void bhkBlendController::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_BLEND_CONTROLLER_WRITE
+  BHK_BLEND_CONTROLLER_WRITE
 }
 
 string bhkBlendController::asString( bool verbose ) const {
-	BHK_BLEND_CONTROLLER_STRING
+  BHK_BLEND_CONTROLLER_STRING
 }
 
 void bhkBlendController::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_BLEND_CONTROLLER_FIXLINKS
+  BHK_BLEND_CONTROLLER_FIXLINKS
 }
 
+const Type & bhkBlendController::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkBlendController.h b/obj/bhkBlendController.h
index 133581a1..445814ef 100644
--- a/obj/bhkBlendController.h
+++ b/obj/bhkBlendController.h
@@ -16,16 +16,17 @@ typedef Ref<bhkBlendController> bhkBlendControllerRef;
 
 class bhkBlendController : public BHK_BLEND_CONTROLLER_PARENT {
 public:
-	bhkBlendController();
-	~bhkBlendController();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_BLEND_CONTROLLER_MEMBERS
+  bhkBlendController();
+  ~bhkBlendController();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_BLEND_CONTROLLER_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkBoxShape.cpp b/obj/bhkBoxShape.cpp
index 25498684..7effabb2 100644
--- a/obj/bhkBoxShape.cpp
+++ b/obj/bhkBoxShape.cpp
@@ -11,18 +11,22 @@ bhkBoxShape::bhkBoxShape() BHK_BOX_SHAPE_CONSTRUCT {}
 bhkBoxShape::~bhkBoxShape() {}
 
 void bhkBoxShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_BOX_SHAPE_READ
+  BHK_BOX_SHAPE_READ
 }
 
 void bhkBoxShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_BOX_SHAPE_WRITE
+  BHK_BOX_SHAPE_WRITE
 }
 
 string bhkBoxShape::asString( bool verbose ) const {
-	BHK_BOX_SHAPE_STRING
+  BHK_BOX_SHAPE_STRING
 }
 
 void bhkBoxShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_BOX_SHAPE_FIXLINKS
+  BHK_BOX_SHAPE_FIXLINKS
 }
 
+const Type & bhkBoxShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkBoxShape.h b/obj/bhkBoxShape.h
index c5c2ccbc..d9d56171 100644
--- a/obj/bhkBoxShape.h
+++ b/obj/bhkBoxShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkBoxShape> bhkBoxShapeRef;
 
 class bhkBoxShape : public BHK_BOX_SHAPE_PARENT {
 public:
-	bhkBoxShape();
-	~bhkBoxShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_BOX_SHAPE_MEMBERS
+  bhkBoxShape();
+  ~bhkBoxShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_BOX_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkCapsuleShape.cpp b/obj/bhkCapsuleShape.cpp
index f2f8549d..670118a8 100644
--- a/obj/bhkCapsuleShape.cpp
+++ b/obj/bhkCapsuleShape.cpp
@@ -11,18 +11,22 @@ bhkCapsuleShape::bhkCapsuleShape() BHK_CAPSULE_SHAPE_CONSTRUCT {}
 bhkCapsuleShape::~bhkCapsuleShape() {}
 
 void bhkCapsuleShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_CAPSULE_SHAPE_READ
+  BHK_CAPSULE_SHAPE_READ
 }
 
 void bhkCapsuleShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_CAPSULE_SHAPE_WRITE
+  BHK_CAPSULE_SHAPE_WRITE
 }
 
 string bhkCapsuleShape::asString( bool verbose ) const {
-	BHK_CAPSULE_SHAPE_STRING
+  BHK_CAPSULE_SHAPE_STRING
 }
 
 void bhkCapsuleShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_CAPSULE_SHAPE_FIXLINKS
+  BHK_CAPSULE_SHAPE_FIXLINKS
 }
 
+const Type & bhkCapsuleShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkCapsuleShape.h b/obj/bhkCapsuleShape.h
index 7395e417..48fd4f6f 100644
--- a/obj/bhkCapsuleShape.h
+++ b/obj/bhkCapsuleShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkCapsuleShape> bhkCapsuleShapeRef;
 
 class bhkCapsuleShape : public BHK_CAPSULE_SHAPE_PARENT {
 public:
-	bhkCapsuleShape();
-	~bhkCapsuleShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_CAPSULE_SHAPE_MEMBERS
+  bhkCapsuleShape();
+  ~bhkCapsuleShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_CAPSULE_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkCollisionObject.cpp b/obj/bhkCollisionObject.cpp
index 54a2bf10..b3f126d2 100644
--- a/obj/bhkCollisionObject.cpp
+++ b/obj/bhkCollisionObject.cpp
@@ -11,18 +11,22 @@ bhkCollisionObject::bhkCollisionObject() BHK_COLLISION_OBJECT_CONSTRUCT {}
 bhkCollisionObject::~bhkCollisionObject() {}
 
 void bhkCollisionObject::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_COLLISION_OBJECT_READ
+  BHK_COLLISION_OBJECT_READ
 }
 
 void bhkCollisionObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_COLLISION_OBJECT_WRITE
+  BHK_COLLISION_OBJECT_WRITE
 }
 
 string bhkCollisionObject::asString( bool verbose ) const {
-	BHK_COLLISION_OBJECT_STRING
+  BHK_COLLISION_OBJECT_STRING
 }
 
 void bhkCollisionObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_COLLISION_OBJECT_FIXLINKS
+  BHK_COLLISION_OBJECT_FIXLINKS
 }
 
+const Type & bhkCollisionObject::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkCollisionObject.h b/obj/bhkCollisionObject.h
index 7e99fcd5..2180b85e 100644
--- a/obj/bhkCollisionObject.h
+++ b/obj/bhkCollisionObject.h
@@ -16,16 +16,17 @@ typedef Ref<bhkCollisionObject> bhkCollisionObjectRef;
 
 class bhkCollisionObject : public BHK_COLLISION_OBJECT_PARENT {
 public:
-	bhkCollisionObject();
-	~bhkCollisionObject();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_COLLISION_OBJECT_MEMBERS
+  bhkCollisionObject();
+  ~bhkCollisionObject();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_COLLISION_OBJECT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkConvexShape.cpp b/obj/bhkConvexShape.cpp
index f25e98af..e1639ae4 100644
--- a/obj/bhkConvexShape.cpp
+++ b/obj/bhkConvexShape.cpp
@@ -11,18 +11,22 @@ bhkConvexShape::bhkConvexShape() BHK_CONVEX_SHAPE_CONSTRUCT {}
 bhkConvexShape::~bhkConvexShape() {}
 
 void bhkConvexShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_CONVEX_SHAPE_READ
+  BHK_CONVEX_SHAPE_READ
 }
 
 void bhkConvexShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_CONVEX_SHAPE_WRITE
+  BHK_CONVEX_SHAPE_WRITE
 }
 
 string bhkConvexShape::asString( bool verbose ) const {
-	BHK_CONVEX_SHAPE_STRING
+  BHK_CONVEX_SHAPE_STRING
 }
 
 void bhkConvexShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_CONVEX_SHAPE_FIXLINKS
+  BHK_CONVEX_SHAPE_FIXLINKS
 }
 
+const Type & bhkConvexShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkConvexShape.h b/obj/bhkConvexShape.h
index b772a45a..9a92fb18 100644
--- a/obj/bhkConvexShape.h
+++ b/obj/bhkConvexShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkConvexShape> bhkConvexShapeRef;
 
 class bhkConvexShape : public BHK_CONVEX_SHAPE_PARENT {
 public:
-	bhkConvexShape();
-	~bhkConvexShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_CONVEX_SHAPE_MEMBERS
+  bhkConvexShape();
+  ~bhkConvexShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_CONVEX_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkConvexTransformShape.cpp b/obj/bhkConvexTransformShape.cpp
index 687bbc24..e442bedd 100644
--- a/obj/bhkConvexTransformShape.cpp
+++ b/obj/bhkConvexTransformShape.cpp
@@ -11,18 +11,22 @@ bhkConvexTransformShape::bhkConvexTransformShape() BHK_CONVEX_TRANSFORM_SHAPE_CO
 bhkConvexTransformShape::~bhkConvexTransformShape() {}
 
 void bhkConvexTransformShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_CONVEX_TRANSFORM_SHAPE_READ
+  BHK_CONVEX_TRANSFORM_SHAPE_READ
 }
 
 void bhkConvexTransformShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_CONVEX_TRANSFORM_SHAPE_WRITE
+  BHK_CONVEX_TRANSFORM_SHAPE_WRITE
 }
 
 string bhkConvexTransformShape::asString( bool verbose ) const {
-	BHK_CONVEX_TRANSFORM_SHAPE_STRING
+  BHK_CONVEX_TRANSFORM_SHAPE_STRING
 }
 
 void bhkConvexTransformShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_CONVEX_TRANSFORM_SHAPE_FIXLINKS
+  BHK_CONVEX_TRANSFORM_SHAPE_FIXLINKS
 }
 
+const Type & bhkConvexTransformShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkConvexTransformShape.h b/obj/bhkConvexTransformShape.h
index e3aa73ab..64799fa4 100644
--- a/obj/bhkConvexTransformShape.h
+++ b/obj/bhkConvexTransformShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkConvexTransformShape> bhkConvexTransformShapeRef;
 
 class bhkConvexTransformShape : public BHK_CONVEX_TRANSFORM_SHAPE_PARENT {
 public:
-	bhkConvexTransformShape();
-	~bhkConvexTransformShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_CONVEX_TRANSFORM_SHAPE_MEMBERS
+  bhkConvexTransformShape();
+  ~bhkConvexTransformShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_CONVEX_TRANSFORM_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkConvexVerticesShape.cpp b/obj/bhkConvexVerticesShape.cpp
index dd098e53..c6b4af29 100644
--- a/obj/bhkConvexVerticesShape.cpp
+++ b/obj/bhkConvexVerticesShape.cpp
@@ -11,18 +11,22 @@ bhkConvexVerticesShape::bhkConvexVerticesShape() BHK_CONVEX_VERTICES_SHAPE_CONST
 bhkConvexVerticesShape::~bhkConvexVerticesShape() {}
 
 void bhkConvexVerticesShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_CONVEX_VERTICES_SHAPE_READ
+  BHK_CONVEX_VERTICES_SHAPE_READ
 }
 
 void bhkConvexVerticesShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_CONVEX_VERTICES_SHAPE_WRITE
+  BHK_CONVEX_VERTICES_SHAPE_WRITE
 }
 
 string bhkConvexVerticesShape::asString( bool verbose ) const {
-	BHK_CONVEX_VERTICES_SHAPE_STRING
+  BHK_CONVEX_VERTICES_SHAPE_STRING
 }
 
 void bhkConvexVerticesShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_CONVEX_VERTICES_SHAPE_FIXLINKS
+  BHK_CONVEX_VERTICES_SHAPE_FIXLINKS
 }
 
+const Type & bhkConvexVerticesShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkConvexVerticesShape.h b/obj/bhkConvexVerticesShape.h
index 49cf522e..e2c78f19 100644
--- a/obj/bhkConvexVerticesShape.h
+++ b/obj/bhkConvexVerticesShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkConvexVerticesShape> bhkConvexVerticesShapeRef;
 
 class bhkConvexVerticesShape : public BHK_CONVEX_VERTICES_SHAPE_PARENT {
 public:
-	bhkConvexVerticesShape();
-	~bhkConvexVerticesShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_CONVEX_VERTICES_SHAPE_MEMBERS
+  bhkConvexVerticesShape();
+  ~bhkConvexVerticesShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_CONVEX_VERTICES_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkEntity.cpp b/obj/bhkEntity.cpp
index a4920f23..58d9c520 100644
--- a/obj/bhkEntity.cpp
+++ b/obj/bhkEntity.cpp
@@ -2,7 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "bhkEntity.h"
-#include "bhkSphereRepShape.h"
+#include "bhkShape.h"
 
 //Definition of TYPE constant
 const Type bhkEntity::TYPE("bhkEntity", &BHK_ENTITY_PARENT::TYPE );
@@ -12,18 +12,22 @@ bhkEntity::bhkEntity() BHK_ENTITY_CONSTRUCT {}
 bhkEntity::~bhkEntity() {}
 
 void bhkEntity::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_ENTITY_READ
+  BHK_ENTITY_READ
 }
 
 void bhkEntity::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_ENTITY_WRITE
+  BHK_ENTITY_WRITE
 }
 
 string bhkEntity::asString( bool verbose ) const {
-	BHK_ENTITY_STRING
+  BHK_ENTITY_STRING
 }
 
 void bhkEntity::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_ENTITY_FIXLINKS
+  BHK_ENTITY_FIXLINKS
 }
 
+const Type & bhkEntity::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkEntity.h b/obj/bhkEntity.h
index e8678ea6..834e168e 100644
--- a/obj/bhkEntity.h
+++ b/obj/bhkEntity.h
@@ -16,16 +16,17 @@ typedef Ref<bhkEntity> bhkEntityRef;
 
 class bhkEntity : public BHK_ENTITY_PARENT {
 public:
-	bhkEntity();
-	~bhkEntity();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_ENTITY_MEMBERS
+  bhkEntity();
+  ~bhkEntity();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_ENTITY_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkHingeConstraint.cpp b/obj/bhkHingeConstraint.cpp
index 0db4e5ab..68d3a9cf 100644
--- a/obj/bhkHingeConstraint.cpp
+++ b/obj/bhkHingeConstraint.cpp
@@ -11,18 +11,22 @@ bhkHingeConstraint::bhkHingeConstraint() BHK_HINGE_CONSTRAINT_CONSTRUCT {}
 bhkHingeConstraint::~bhkHingeConstraint() {}
 
 void bhkHingeConstraint::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_HINGE_CONSTRAINT_READ
+  BHK_HINGE_CONSTRAINT_READ
 }
 
 void bhkHingeConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_HINGE_CONSTRAINT_WRITE
+  BHK_HINGE_CONSTRAINT_WRITE
 }
 
 string bhkHingeConstraint::asString( bool verbose ) const {
-	BHK_HINGE_CONSTRAINT_STRING
+  BHK_HINGE_CONSTRAINT_STRING
 }
 
 void bhkHingeConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_HINGE_CONSTRAINT_FIXLINKS
+  BHK_HINGE_CONSTRAINT_FIXLINKS
 }
 
+const Type & bhkHingeConstraint::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkHingeConstraint.h b/obj/bhkHingeConstraint.h
index fa871e5b..7fc52d32 100644
--- a/obj/bhkHingeConstraint.h
+++ b/obj/bhkHingeConstraint.h
@@ -16,16 +16,17 @@ typedef Ref<bhkHingeConstraint> bhkHingeConstraintRef;
 
 class bhkHingeConstraint : public BHK_HINGE_CONSTRAINT_PARENT {
 public:
-	bhkHingeConstraint();
-	~bhkHingeConstraint();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_HINGE_CONSTRAINT_MEMBERS
+  bhkHingeConstraint();
+  ~bhkHingeConstraint();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_HINGE_CONSTRAINT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkLimitedHingeConstraint.cpp b/obj/bhkLimitedHingeConstraint.cpp
index 1b5848d8..0b8bd537 100644
--- a/obj/bhkLimitedHingeConstraint.cpp
+++ b/obj/bhkLimitedHingeConstraint.cpp
@@ -11,18 +11,22 @@ bhkLimitedHingeConstraint::bhkLimitedHingeConstraint() BHK_LIMITED_HINGE_CONSTRA
 bhkLimitedHingeConstraint::~bhkLimitedHingeConstraint() {}
 
 void bhkLimitedHingeConstraint::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_LIMITED_HINGE_CONSTRAINT_READ
+  BHK_LIMITED_HINGE_CONSTRAINT_READ
 }
 
 void bhkLimitedHingeConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_LIMITED_HINGE_CONSTRAINT_WRITE
+  BHK_LIMITED_HINGE_CONSTRAINT_WRITE
 }
 
 string bhkLimitedHingeConstraint::asString( bool verbose ) const {
-	BHK_LIMITED_HINGE_CONSTRAINT_STRING
+  BHK_LIMITED_HINGE_CONSTRAINT_STRING
 }
 
 void bhkLimitedHingeConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_LIMITED_HINGE_CONSTRAINT_FIXLINKS
+  BHK_LIMITED_HINGE_CONSTRAINT_FIXLINKS
 }
 
+const Type & bhkLimitedHingeConstraint::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkLimitedHingeConstraint.h b/obj/bhkLimitedHingeConstraint.h
index 344178f4..f6d648ae 100644
--- a/obj/bhkLimitedHingeConstraint.h
+++ b/obj/bhkLimitedHingeConstraint.h
@@ -16,16 +16,17 @@ typedef Ref<bhkLimitedHingeConstraint> bhkLimitedHingeConstraintRef;
 
 class bhkLimitedHingeConstraint : public BHK_LIMITED_HINGE_CONSTRAINT_PARENT {
 public:
-	bhkLimitedHingeConstraint();
-	~bhkLimitedHingeConstraint();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_LIMITED_HINGE_CONSTRAINT_MEMBERS
+  bhkLimitedHingeConstraint();
+  ~bhkLimitedHingeConstraint();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_LIMITED_HINGE_CONSTRAINT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkListShape.cpp b/obj/bhkListShape.cpp
index ea79b31a..c246361a 100644
--- a/obj/bhkListShape.cpp
+++ b/obj/bhkListShape.cpp
@@ -2,7 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "bhkListShape.h"
-#include "bhkSphereRepShape.h"
+#include "bhkShape.h"
 
 //Definition of TYPE constant
 const Type bhkListShape::TYPE("bhkListShape", &BHK_LIST_SHAPE_PARENT::TYPE );
@@ -12,18 +12,22 @@ bhkListShape::bhkListShape() BHK_LIST_SHAPE_CONSTRUCT {}
 bhkListShape::~bhkListShape() {}
 
 void bhkListShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_LIST_SHAPE_READ
+  BHK_LIST_SHAPE_READ
 }
 
 void bhkListShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_LIST_SHAPE_WRITE
+  BHK_LIST_SHAPE_WRITE
 }
 
 string bhkListShape::asString( bool verbose ) const {
-	BHK_LIST_SHAPE_STRING
+  BHK_LIST_SHAPE_STRING
 }
 
 void bhkListShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_LIST_SHAPE_FIXLINKS
+  BHK_LIST_SHAPE_FIXLINKS
 }
 
+const Type & bhkListShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkListShape.h b/obj/bhkListShape.h
index a99c492c..f11437a9 100644
--- a/obj/bhkListShape.h
+++ b/obj/bhkListShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkListShape> bhkListShapeRef;
 
 class bhkListShape : public BHK_LIST_SHAPE_PARENT {
 public:
-	bhkListShape();
-	~bhkListShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_LIST_SHAPE_MEMBERS
+  bhkListShape();
+  ~bhkListShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_LIST_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkMalleableConstraint.cpp b/obj/bhkMalleableConstraint.cpp
index 9b59e55b..ff5168ff 100644
--- a/obj/bhkMalleableConstraint.cpp
+++ b/obj/bhkMalleableConstraint.cpp
@@ -2,6 +2,8 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "bhkMalleableConstraint.h"
+#include "NiObject.h"
+#include "NiObject.h"
 
 //Definition of TYPE constant
 const Type bhkMalleableConstraint::TYPE("bhkMalleableConstraint", &BHK_MALLEABLE_CONSTRAINT_PARENT::TYPE );
@@ -11,18 +13,22 @@ bhkMalleableConstraint::bhkMalleableConstraint() BHK_MALLEABLE_CONSTRAINT_CONSTR
 bhkMalleableConstraint::~bhkMalleableConstraint() {}
 
 void bhkMalleableConstraint::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_MALLEABLE_CONSTRAINT_READ
+  BHK_MALLEABLE_CONSTRAINT_READ
 }
 
 void bhkMalleableConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_MALLEABLE_CONSTRAINT_WRITE
+  BHK_MALLEABLE_CONSTRAINT_WRITE
 }
 
 string bhkMalleableConstraint::asString( bool verbose ) const {
-	BHK_MALLEABLE_CONSTRAINT_STRING
+  BHK_MALLEABLE_CONSTRAINT_STRING
 }
 
 void bhkMalleableConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_MALLEABLE_CONSTRAINT_FIXLINKS
+  BHK_MALLEABLE_CONSTRAINT_FIXLINKS
 }
 
+const Type & bhkMalleableConstraint::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkMalleableConstraint.h b/obj/bhkMalleableConstraint.h
index e709ff02..586bc7e3 100644
--- a/obj/bhkMalleableConstraint.h
+++ b/obj/bhkMalleableConstraint.h
@@ -16,16 +16,17 @@ typedef Ref<bhkMalleableConstraint> bhkMalleableConstraintRef;
 
 class bhkMalleableConstraint : public BHK_MALLEABLE_CONSTRAINT_PARENT {
 public:
-	bhkMalleableConstraint();
-	~bhkMalleableConstraint();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_MALLEABLE_CONSTRAINT_MEMBERS
+  bhkMalleableConstraint();
+  ~bhkMalleableConstraint();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_MALLEABLE_CONSTRAINT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkMoppBvTreeShape.cpp b/obj/bhkMoppBvTreeShape.cpp
index 28864ecc..ae0f223e 100644
--- a/obj/bhkMoppBvTreeShape.cpp
+++ b/obj/bhkMoppBvTreeShape.cpp
@@ -2,6 +2,7 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "bhkMoppBvTreeShape.h"
+#include "bhkShape.h"
 
 //Definition of TYPE constant
 const Type bhkMoppBvTreeShape::TYPE("bhkMoppBvTreeShape", &BHK_MOPP_BV_TREE_SHAPE_PARENT::TYPE );
@@ -11,18 +12,22 @@ bhkMoppBvTreeShape::bhkMoppBvTreeShape() BHK_MOPP_BV_TREE_SHAPE_CONSTRUCT {}
 bhkMoppBvTreeShape::~bhkMoppBvTreeShape() {}
 
 void bhkMoppBvTreeShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_MOPP_BV_TREE_SHAPE_READ
+  BHK_MOPP_BV_TREE_SHAPE_READ
 }
 
 void bhkMoppBvTreeShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_MOPP_BV_TREE_SHAPE_WRITE
+  BHK_MOPP_BV_TREE_SHAPE_WRITE
 }
 
 string bhkMoppBvTreeShape::asString( bool verbose ) const {
-	BHK_MOPP_BV_TREE_SHAPE_STRING
+  BHK_MOPP_BV_TREE_SHAPE_STRING
 }
 
 void bhkMoppBvTreeShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_MOPP_BV_TREE_SHAPE_FIXLINKS
+  BHK_MOPP_BV_TREE_SHAPE_FIXLINKS
 }
 
+const Type & bhkMoppBvTreeShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkMoppBvTreeShape.h b/obj/bhkMoppBvTreeShape.h
index 0bf5f534..9e6e8e68 100644
--- a/obj/bhkMoppBvTreeShape.h
+++ b/obj/bhkMoppBvTreeShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkMoppBvTreeShape> bhkMoppBvTreeShapeRef;
 
 class bhkMoppBvTreeShape : public BHK_MOPP_BV_TREE_SHAPE_PARENT {
 public:
-	bhkMoppBvTreeShape();
-	~bhkMoppBvTreeShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_MOPP_BV_TREE_SHAPE_MEMBERS
+  bhkMoppBvTreeShape();
+  ~bhkMoppBvTreeShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_MOPP_BV_TREE_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkMultiSphereShape.cpp b/obj/bhkMultiSphereShape.cpp
index 7add0ab9..4914c8a4 100644
--- a/obj/bhkMultiSphereShape.cpp
+++ b/obj/bhkMultiSphereShape.cpp
@@ -11,18 +11,22 @@ bhkMultiSphereShape::bhkMultiSphereShape() BHK_MULTI_SPHERE_SHAPE_CONSTRUCT {}
 bhkMultiSphereShape::~bhkMultiSphereShape() {}
 
 void bhkMultiSphereShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_MULTI_SPHERE_SHAPE_READ
+  BHK_MULTI_SPHERE_SHAPE_READ
 }
 
 void bhkMultiSphereShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_MULTI_SPHERE_SHAPE_WRITE
+  BHK_MULTI_SPHERE_SHAPE_WRITE
 }
 
 string bhkMultiSphereShape::asString( bool verbose ) const {
-	BHK_MULTI_SPHERE_SHAPE_STRING
+  BHK_MULTI_SPHERE_SHAPE_STRING
 }
 
 void bhkMultiSphereShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_MULTI_SPHERE_SHAPE_FIXLINKS
+  BHK_MULTI_SPHERE_SHAPE_FIXLINKS
 }
 
+const Type & bhkMultiSphereShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkMultiSphereShape.h b/obj/bhkMultiSphereShape.h
index a1797584..4895bdab 100644
--- a/obj/bhkMultiSphereShape.h
+++ b/obj/bhkMultiSphereShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkMultiSphereShape> bhkMultiSphereShapeRef;
 
 class bhkMultiSphereShape : public BHK_MULTI_SPHERE_SHAPE_PARENT {
 public:
-	bhkMultiSphereShape();
-	~bhkMultiSphereShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_MULTI_SPHERE_SHAPE_MEMBERS
+  bhkMultiSphereShape();
+  ~bhkMultiSphereShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_MULTI_SPHERE_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkNiTriStripsShape.cpp b/obj/bhkNiTriStripsShape.cpp
index e159287b..7bcafe15 100644
--- a/obj/bhkNiTriStripsShape.cpp
+++ b/obj/bhkNiTriStripsShape.cpp
@@ -12,18 +12,22 @@ bhkNiTriStripsShape::bhkNiTriStripsShape() BHK_NI_TRI_STRIPS_SHAPE_CONSTRUCT {}
 bhkNiTriStripsShape::~bhkNiTriStripsShape() {}
 
 void bhkNiTriStripsShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_NI_TRI_STRIPS_SHAPE_READ
+  BHK_NI_TRI_STRIPS_SHAPE_READ
 }
 
 void bhkNiTriStripsShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_NI_TRI_STRIPS_SHAPE_WRITE
+  BHK_NI_TRI_STRIPS_SHAPE_WRITE
 }
 
 string bhkNiTriStripsShape::asString( bool verbose ) const {
-	BHK_NI_TRI_STRIPS_SHAPE_STRING
+  BHK_NI_TRI_STRIPS_SHAPE_STRING
 }
 
 void bhkNiTriStripsShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_NI_TRI_STRIPS_SHAPE_FIXLINKS
+  BHK_NI_TRI_STRIPS_SHAPE_FIXLINKS
 }
 
+const Type & bhkNiTriStripsShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkNiTriStripsShape.h b/obj/bhkNiTriStripsShape.h
index 02c800c3..b1b50c60 100644
--- a/obj/bhkNiTriStripsShape.h
+++ b/obj/bhkNiTriStripsShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkNiTriStripsShape> bhkNiTriStripsShapeRef;
 
 class bhkNiTriStripsShape : public BHK_NI_TRI_STRIPS_SHAPE_PARENT {
 public:
-	bhkNiTriStripsShape();
-	~bhkNiTriStripsShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_NI_TRI_STRIPS_SHAPE_MEMBERS
+  bhkNiTriStripsShape();
+  ~bhkNiTriStripsShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_NI_TRI_STRIPS_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkPackedNiTriStripsShape.cpp b/obj/bhkPackedNiTriStripsShape.cpp
index e6171c12..4709132c 100644
--- a/obj/bhkPackedNiTriStripsShape.cpp
+++ b/obj/bhkPackedNiTriStripsShape.cpp
@@ -2,7 +2,6 @@
 All rights reserved.  Please see niflib.h for licence. */
 
 #include "bhkPackedNiTriStripsShape.h"
-#include "NiTriStripsData.h"
 #include "hkPackedNiTriStripsData.h"
 
 //Definition of TYPE constant
@@ -13,18 +12,22 @@ bhkPackedNiTriStripsShape::bhkPackedNiTriStripsShape() BHK_PACKED_NI_TRI_STRIPS_
 bhkPackedNiTriStripsShape::~bhkPackedNiTriStripsShape() {}
 
 void bhkPackedNiTriStripsShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_PACKED_NI_TRI_STRIPS_SHAPE_READ
+  BHK_PACKED_NI_TRI_STRIPS_SHAPE_READ
 }
 
 void bhkPackedNiTriStripsShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_PACKED_NI_TRI_STRIPS_SHAPE_WRITE
+  BHK_PACKED_NI_TRI_STRIPS_SHAPE_WRITE
 }
 
 string bhkPackedNiTriStripsShape::asString( bool verbose ) const {
-	BHK_PACKED_NI_TRI_STRIPS_SHAPE_STRING
+  BHK_PACKED_NI_TRI_STRIPS_SHAPE_STRING
 }
 
 void bhkPackedNiTriStripsShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_PACKED_NI_TRI_STRIPS_SHAPE_FIXLINKS
+  BHK_PACKED_NI_TRI_STRIPS_SHAPE_FIXLINKS
 }
 
+const Type & bhkPackedNiTriStripsShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkPackedNiTriStripsShape.h b/obj/bhkPackedNiTriStripsShape.h
index d7c9a0cb..d56ecebb 100644
--- a/obj/bhkPackedNiTriStripsShape.h
+++ b/obj/bhkPackedNiTriStripsShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkPackedNiTriStripsShape> bhkPackedNiTriStripsShapeRef;
 
 class bhkPackedNiTriStripsShape : public BHK_PACKED_NI_TRI_STRIPS_SHAPE_PARENT {
 public:
-	bhkPackedNiTriStripsShape();
-	~bhkPackedNiTriStripsShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_PACKED_NI_TRI_STRIPS_SHAPE_MEMBERS
+  bhkPackedNiTriStripsShape();
+  ~bhkPackedNiTriStripsShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_PACKED_NI_TRI_STRIPS_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkPrismaticConstraint.cpp b/obj/bhkPrismaticConstraint.cpp
index 35ae2ee4..733c294e 100644
--- a/obj/bhkPrismaticConstraint.cpp
+++ b/obj/bhkPrismaticConstraint.cpp
@@ -11,18 +11,22 @@ bhkPrismaticConstraint::bhkPrismaticConstraint() BHK_PRISMATIC_CONSTRAINT_CONSTR
 bhkPrismaticConstraint::~bhkPrismaticConstraint() {}
 
 void bhkPrismaticConstraint::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_PRISMATIC_CONSTRAINT_READ
+  BHK_PRISMATIC_CONSTRAINT_READ
 }
 
 void bhkPrismaticConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_PRISMATIC_CONSTRAINT_WRITE
+  BHK_PRISMATIC_CONSTRAINT_WRITE
 }
 
 string bhkPrismaticConstraint::asString( bool verbose ) const {
-	BHK_PRISMATIC_CONSTRAINT_STRING
+  BHK_PRISMATIC_CONSTRAINT_STRING
 }
 
 void bhkPrismaticConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_PRISMATIC_CONSTRAINT_FIXLINKS
+  BHK_PRISMATIC_CONSTRAINT_FIXLINKS
 }
 
+const Type & bhkPrismaticConstraint::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkPrismaticConstraint.h b/obj/bhkPrismaticConstraint.h
index e0fe19ae..7f105f8f 100644
--- a/obj/bhkPrismaticConstraint.h
+++ b/obj/bhkPrismaticConstraint.h
@@ -16,16 +16,17 @@ typedef Ref<bhkPrismaticConstraint> bhkPrismaticConstraintRef;
 
 class bhkPrismaticConstraint : public BHK_PRISMATIC_CONSTRAINT_PARENT {
 public:
-	bhkPrismaticConstraint();
-	~bhkPrismaticConstraint();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_PRISMATIC_CONSTRAINT_MEMBERS
+  bhkPrismaticConstraint();
+  ~bhkPrismaticConstraint();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_PRISMATIC_CONSTRAINT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkRagdollConstraint.cpp b/obj/bhkRagdollConstraint.cpp
index 1ba2878a..fe9ffbb2 100644
--- a/obj/bhkRagdollConstraint.cpp
+++ b/obj/bhkRagdollConstraint.cpp
@@ -11,18 +11,22 @@ bhkRagdollConstraint::bhkRagdollConstraint() BHK_RAGDOLL_CONSTRAINT_CONSTRUCT {}
 bhkRagdollConstraint::~bhkRagdollConstraint() {}
 
 void bhkRagdollConstraint::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_RAGDOLL_CONSTRAINT_READ
+  BHK_RAGDOLL_CONSTRAINT_READ
 }
 
 void bhkRagdollConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_RAGDOLL_CONSTRAINT_WRITE
+  BHK_RAGDOLL_CONSTRAINT_WRITE
 }
 
 string bhkRagdollConstraint::asString( bool verbose ) const {
-	BHK_RAGDOLL_CONSTRAINT_STRING
+  BHK_RAGDOLL_CONSTRAINT_STRING
 }
 
 void bhkRagdollConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_RAGDOLL_CONSTRAINT_FIXLINKS
+  BHK_RAGDOLL_CONSTRAINT_FIXLINKS
 }
 
+const Type & bhkRagdollConstraint::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkRagdollConstraint.h b/obj/bhkRagdollConstraint.h
index 7aadeecd..9cf61000 100644
--- a/obj/bhkRagdollConstraint.h
+++ b/obj/bhkRagdollConstraint.h
@@ -16,16 +16,17 @@ typedef Ref<bhkRagdollConstraint> bhkRagdollConstraintRef;
 
 class bhkRagdollConstraint : public BHK_RAGDOLL_CONSTRAINT_PARENT {
 public:
-	bhkRagdollConstraint();
-	~bhkRagdollConstraint();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_RAGDOLL_CONSTRAINT_MEMBERS
+  bhkRagdollConstraint();
+  ~bhkRagdollConstraint();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_RAGDOLL_CONSTRAINT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkRefObject.cpp b/obj/bhkRefObject.cpp
index dc4c1735..348bb33a 100644
--- a/obj/bhkRefObject.cpp
+++ b/obj/bhkRefObject.cpp
@@ -11,18 +11,22 @@ bhkRefObject::bhkRefObject() BHK_REF_OBJECT_CONSTRUCT {}
 bhkRefObject::~bhkRefObject() {}
 
 void bhkRefObject::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_REF_OBJECT_READ
+  BHK_REF_OBJECT_READ
 }
 
 void bhkRefObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_REF_OBJECT_WRITE
+  BHK_REF_OBJECT_WRITE
 }
 
 string bhkRefObject::asString( bool verbose ) const {
-	BHK_REF_OBJECT_STRING
+  BHK_REF_OBJECT_STRING
 }
 
 void bhkRefObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_REF_OBJECT_FIXLINKS
+  BHK_REF_OBJECT_FIXLINKS
 }
 
+const Type & bhkRefObject::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkRefObject.h b/obj/bhkRefObject.h
index b6b93c69..0714a630 100644
--- a/obj/bhkRefObject.h
+++ b/obj/bhkRefObject.h
@@ -16,16 +16,17 @@ typedef Ref<bhkRefObject> bhkRefObjectRef;
 
 class bhkRefObject : public BHK_REF_OBJECT_PARENT {
 public:
-	bhkRefObject();
-	~bhkRefObject();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_REF_OBJECT_MEMBERS
+  bhkRefObject();
+  ~bhkRefObject();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_REF_OBJECT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkRigidBody.cpp b/obj/bhkRigidBody.cpp
index ab4cdef0..3697fdc6 100644
--- a/obj/bhkRigidBody.cpp
+++ b/obj/bhkRigidBody.cpp
@@ -12,18 +12,22 @@ bhkRigidBody::bhkRigidBody() BHK_RIGID_BODY_CONSTRUCT {}
 bhkRigidBody::~bhkRigidBody() {}
 
 void bhkRigidBody::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_RIGID_BODY_READ
+  BHK_RIGID_BODY_READ
 }
 
 void bhkRigidBody::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_RIGID_BODY_WRITE
+  BHK_RIGID_BODY_WRITE
 }
 
 string bhkRigidBody::asString( bool verbose ) const {
-	BHK_RIGID_BODY_STRING
+  BHK_RIGID_BODY_STRING
 }
 
 void bhkRigidBody::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_RIGID_BODY_FIXLINKS
+  BHK_RIGID_BODY_FIXLINKS
 }
 
+const Type & bhkRigidBody::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkRigidBody.h b/obj/bhkRigidBody.h
index fd1b6d59..3891c53c 100644
--- a/obj/bhkRigidBody.h
+++ b/obj/bhkRigidBody.h
@@ -16,16 +16,17 @@ typedef Ref<bhkRigidBody> bhkRigidBodyRef;
 
 class bhkRigidBody : public BHK_RIGID_BODY_PARENT {
 public:
-	bhkRigidBody();
-	~bhkRigidBody();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_RIGID_BODY_MEMBERS
+  bhkRigidBody();
+  ~bhkRigidBody();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_RIGID_BODY_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkRigidBodyT.cpp b/obj/bhkRigidBodyT.cpp
index b59120e5..9f1c8afe 100644
--- a/obj/bhkRigidBodyT.cpp
+++ b/obj/bhkRigidBodyT.cpp
@@ -11,18 +11,22 @@ bhkRigidBodyT::bhkRigidBodyT() BHK_RIGID_BODY_T_CONSTRUCT {}
 bhkRigidBodyT::~bhkRigidBodyT() {}
 
 void bhkRigidBodyT::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_RIGID_BODY_T_READ
+  BHK_RIGID_BODY_T_READ
 }
 
 void bhkRigidBodyT::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_RIGID_BODY_T_WRITE
+  BHK_RIGID_BODY_T_WRITE
 }
 
 string bhkRigidBodyT::asString( bool verbose ) const {
-	BHK_RIGID_BODY_T_STRING
+  BHK_RIGID_BODY_T_STRING
 }
 
 void bhkRigidBodyT::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_RIGID_BODY_T_FIXLINKS
+  BHK_RIGID_BODY_T_FIXLINKS
 }
 
+const Type & bhkRigidBodyT::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkRigidBodyT.h b/obj/bhkRigidBodyT.h
index 11cb7209..e63e8002 100644
--- a/obj/bhkRigidBodyT.h
+++ b/obj/bhkRigidBodyT.h
@@ -16,16 +16,17 @@ typedef Ref<bhkRigidBodyT> bhkRigidBodyTRef;
 
 class bhkRigidBodyT : public BHK_RIGID_BODY_T_PARENT {
 public:
-	bhkRigidBodyT();
-	~bhkRigidBodyT();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_RIGID_BODY_T_MEMBERS
+  bhkRigidBodyT();
+  ~bhkRigidBodyT();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_RIGID_BODY_T_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkSPCollisionObject.cpp b/obj/bhkSPCollisionObject.cpp
index 0347e327..61dde371 100644
--- a/obj/bhkSPCollisionObject.cpp
+++ b/obj/bhkSPCollisionObject.cpp
@@ -11,18 +11,22 @@ bhkSPCollisionObject::bhkSPCollisionObject() BHK_S_P_COLLISION_OBJECT_CONSTRUCT
 bhkSPCollisionObject::~bhkSPCollisionObject() {}
 
 void bhkSPCollisionObject::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_S_P_COLLISION_OBJECT_READ
+  BHK_S_P_COLLISION_OBJECT_READ
 }
 
 void bhkSPCollisionObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_S_P_COLLISION_OBJECT_WRITE
+  BHK_S_P_COLLISION_OBJECT_WRITE
 }
 
 string bhkSPCollisionObject::asString( bool verbose ) const {
-	BHK_S_P_COLLISION_OBJECT_STRING
+  BHK_S_P_COLLISION_OBJECT_STRING
 }
 
 void bhkSPCollisionObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_S_P_COLLISION_OBJECT_FIXLINKS
+  BHK_S_P_COLLISION_OBJECT_FIXLINKS
 }
 
+const Type & bhkSPCollisionObject::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkSPCollisionObject.h b/obj/bhkSPCollisionObject.h
index c461df41..6d5dc239 100644
--- a/obj/bhkSPCollisionObject.h
+++ b/obj/bhkSPCollisionObject.h
@@ -16,16 +16,17 @@ typedef Ref<bhkSPCollisionObject> bhkSPCollisionObjectRef;
 
 class bhkSPCollisionObject : public BHK_S_P_COLLISION_OBJECT_PARENT {
 public:
-	bhkSPCollisionObject();
-	~bhkSPCollisionObject();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_S_P_COLLISION_OBJECT_MEMBERS
+  bhkSPCollisionObject();
+  ~bhkSPCollisionObject();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_S_P_COLLISION_OBJECT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkSerializable.cpp b/obj/bhkSerializable.cpp
index 1d2b0d27..07e95c77 100644
--- a/obj/bhkSerializable.cpp
+++ b/obj/bhkSerializable.cpp
@@ -11,18 +11,22 @@ bhkSerializable::bhkSerializable() BHK_SERIALIZABLE_CONSTRUCT {}
 bhkSerializable::~bhkSerializable() {}
 
 void bhkSerializable::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_SERIALIZABLE_READ
+  BHK_SERIALIZABLE_READ
 }
 
 void bhkSerializable::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_SERIALIZABLE_WRITE
+  BHK_SERIALIZABLE_WRITE
 }
 
 string bhkSerializable::asString( bool verbose ) const {
-	BHK_SERIALIZABLE_STRING
+  BHK_SERIALIZABLE_STRING
 }
 
 void bhkSerializable::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_SERIALIZABLE_FIXLINKS
+  BHK_SERIALIZABLE_FIXLINKS
 }
 
+const Type & bhkSerializable::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkSerializable.h b/obj/bhkSerializable.h
index 52a85ec8..fe3b45c4 100644
--- a/obj/bhkSerializable.h
+++ b/obj/bhkSerializable.h
@@ -16,16 +16,17 @@ typedef Ref<bhkSerializable> bhkSerializableRef;
 
 class bhkSerializable : public BHK_SERIALIZABLE_PARENT {
 public:
-	bhkSerializable();
-	~bhkSerializable();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_SERIALIZABLE_MEMBERS
+  bhkSerializable();
+  ~bhkSerializable();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_SERIALIZABLE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkShape.cpp b/obj/bhkShape.cpp
index 7d323073..dddca213 100644
--- a/obj/bhkShape.cpp
+++ b/obj/bhkShape.cpp
@@ -11,18 +11,22 @@ bhkShape::bhkShape() BHK_SHAPE_CONSTRUCT {}
 bhkShape::~bhkShape() {}
 
 void bhkShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_SHAPE_READ
+  BHK_SHAPE_READ
 }
 
 void bhkShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_SHAPE_WRITE
+  BHK_SHAPE_WRITE
 }
 
 string bhkShape::asString( bool verbose ) const {
-	BHK_SHAPE_STRING
+  BHK_SHAPE_STRING
 }
 
 void bhkShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_SHAPE_FIXLINKS
+  BHK_SHAPE_FIXLINKS
 }
 
+const Type & bhkShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkShape.h b/obj/bhkShape.h
index 5de843b5..d795e6ae 100644
--- a/obj/bhkShape.h
+++ b/obj/bhkShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkShape> bhkShapeRef;
 
 class bhkShape : public BHK_SHAPE_PARENT {
 public:
-	bhkShape();
-	~bhkShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_SHAPE_MEMBERS
+  bhkShape();
+  ~bhkShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkSimpleShapePhantom.cpp b/obj/bhkSimpleShapePhantom.cpp
index 39971bff..19e1a5c0 100644
--- a/obj/bhkSimpleShapePhantom.cpp
+++ b/obj/bhkSimpleShapePhantom.cpp
@@ -11,18 +11,22 @@ bhkSimpleShapePhantom::bhkSimpleShapePhantom() BHK_SIMPLE_SHAPE_PHANTOM_CONSTRUC
 bhkSimpleShapePhantom::~bhkSimpleShapePhantom() {}
 
 void bhkSimpleShapePhantom::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_SIMPLE_SHAPE_PHANTOM_READ
+  BHK_SIMPLE_SHAPE_PHANTOM_READ
 }
 
 void bhkSimpleShapePhantom::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_SIMPLE_SHAPE_PHANTOM_WRITE
+  BHK_SIMPLE_SHAPE_PHANTOM_WRITE
 }
 
 string bhkSimpleShapePhantom::asString( bool verbose ) const {
-	BHK_SIMPLE_SHAPE_PHANTOM_STRING
+  BHK_SIMPLE_SHAPE_PHANTOM_STRING
 }
 
 void bhkSimpleShapePhantom::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_SIMPLE_SHAPE_PHANTOM_FIXLINKS
+  BHK_SIMPLE_SHAPE_PHANTOM_FIXLINKS
 }
 
+const Type & bhkSimpleShapePhantom::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkSimpleShapePhantom.h b/obj/bhkSimpleShapePhantom.h
index ba80f89a..c72a1168 100644
--- a/obj/bhkSimpleShapePhantom.h
+++ b/obj/bhkSimpleShapePhantom.h
@@ -16,16 +16,17 @@ typedef Ref<bhkSimpleShapePhantom> bhkSimpleShapePhantomRef;
 
 class bhkSimpleShapePhantom : public BHK_SIMPLE_SHAPE_PHANTOM_PARENT {
 public:
-	bhkSimpleShapePhantom();
-	~bhkSimpleShapePhantom();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_SIMPLE_SHAPE_PHANTOM_MEMBERS
+  bhkSimpleShapePhantom();
+  ~bhkSimpleShapePhantom();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_SIMPLE_SHAPE_PHANTOM_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkSphereRepShape.cpp b/obj/bhkSphereRepShape.cpp
index ade1fe7e..cb943204 100644
--- a/obj/bhkSphereRepShape.cpp
+++ b/obj/bhkSphereRepShape.cpp
@@ -11,18 +11,22 @@ bhkSphereRepShape::bhkSphereRepShape() BHK_SPHERE_REP_SHAPE_CONSTRUCT {}
 bhkSphereRepShape::~bhkSphereRepShape() {}
 
 void bhkSphereRepShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_SPHERE_REP_SHAPE_READ
+  BHK_SPHERE_REP_SHAPE_READ
 }
 
 void bhkSphereRepShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_SPHERE_REP_SHAPE_WRITE
+  BHK_SPHERE_REP_SHAPE_WRITE
 }
 
 string bhkSphereRepShape::asString( bool verbose ) const {
-	BHK_SPHERE_REP_SHAPE_STRING
+  BHK_SPHERE_REP_SHAPE_STRING
 }
 
 void bhkSphereRepShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_SPHERE_REP_SHAPE_FIXLINKS
+  BHK_SPHERE_REP_SHAPE_FIXLINKS
 }
 
+const Type & bhkSphereRepShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkSphereRepShape.h b/obj/bhkSphereRepShape.h
index de8593b6..86dd489f 100644
--- a/obj/bhkSphereRepShape.h
+++ b/obj/bhkSphereRepShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkSphereRepShape> bhkSphereRepShapeRef;
 
 class bhkSphereRepShape : public BHK_SPHERE_REP_SHAPE_PARENT {
 public:
-	bhkSphereRepShape();
-	~bhkSphereRepShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_SPHERE_REP_SHAPE_MEMBERS
+  bhkSphereRepShape();
+  ~bhkSphereRepShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_SPHERE_REP_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkSphereShape.cpp b/obj/bhkSphereShape.cpp
index 234585b4..b2b678af 100644
--- a/obj/bhkSphereShape.cpp
+++ b/obj/bhkSphereShape.cpp
@@ -11,18 +11,22 @@ bhkSphereShape::bhkSphereShape() BHK_SPHERE_SHAPE_CONSTRUCT {}
 bhkSphereShape::~bhkSphereShape() {}
 
 void bhkSphereShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_SPHERE_SHAPE_READ
+  BHK_SPHERE_SHAPE_READ
 }
 
 void bhkSphereShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_SPHERE_SHAPE_WRITE
+  BHK_SPHERE_SHAPE_WRITE
 }
 
 string bhkSphereShape::asString( bool verbose ) const {
-	BHK_SPHERE_SHAPE_STRING
+  BHK_SPHERE_SHAPE_STRING
 }
 
 void bhkSphereShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_SPHERE_SHAPE_FIXLINKS
+  BHK_SPHERE_SHAPE_FIXLINKS
 }
 
+const Type & bhkSphereShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkSphereShape.h b/obj/bhkSphereShape.h
index 9b16f0ca..1557c92e 100644
--- a/obj/bhkSphereShape.h
+++ b/obj/bhkSphereShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkSphereShape> bhkSphereShapeRef;
 
 class bhkSphereShape : public BHK_SPHERE_SHAPE_PARENT {
 public:
-	bhkSphereShape();
-	~bhkSphereShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_SPHERE_SHAPE_MEMBERS
+  bhkSphereShape();
+  ~bhkSphereShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_SPHERE_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkStiffSpringConstraint.cpp b/obj/bhkStiffSpringConstraint.cpp
index f4b40b6a..fdcd3dcd 100644
--- a/obj/bhkStiffSpringConstraint.cpp
+++ b/obj/bhkStiffSpringConstraint.cpp
@@ -11,18 +11,22 @@ bhkStiffSpringConstraint::bhkStiffSpringConstraint() BHK_STIFF_SPRING_CONSTRAINT
 bhkStiffSpringConstraint::~bhkStiffSpringConstraint() {}
 
 void bhkStiffSpringConstraint::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_STIFF_SPRING_CONSTRAINT_READ
+  BHK_STIFF_SPRING_CONSTRAINT_READ
 }
 
 void bhkStiffSpringConstraint::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_STIFF_SPRING_CONSTRAINT_WRITE
+  BHK_STIFF_SPRING_CONSTRAINT_WRITE
 }
 
 string bhkStiffSpringConstraint::asString( bool verbose ) const {
-	BHK_STIFF_SPRING_CONSTRAINT_STRING
+  BHK_STIFF_SPRING_CONSTRAINT_STRING
 }
 
 void bhkStiffSpringConstraint::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_STIFF_SPRING_CONSTRAINT_FIXLINKS
+  BHK_STIFF_SPRING_CONSTRAINT_FIXLINKS
 }
 
+const Type & bhkStiffSpringConstraint::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkStiffSpringConstraint.h b/obj/bhkStiffSpringConstraint.h
index aded5a56..b96967ff 100644
--- a/obj/bhkStiffSpringConstraint.h
+++ b/obj/bhkStiffSpringConstraint.h
@@ -16,16 +16,17 @@ typedef Ref<bhkStiffSpringConstraint> bhkStiffSpringConstraintRef;
 
 class bhkStiffSpringConstraint : public BHK_STIFF_SPRING_CONSTRAINT_PARENT {
 public:
-	bhkStiffSpringConstraint();
-	~bhkStiffSpringConstraint();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_STIFF_SPRING_CONSTRAINT_MEMBERS
+  bhkStiffSpringConstraint();
+  ~bhkStiffSpringConstraint();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_STIFF_SPRING_CONSTRAINT_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkTransformShape.cpp b/obj/bhkTransformShape.cpp
index c16ca1e4..d7dea440 100644
--- a/obj/bhkTransformShape.cpp
+++ b/obj/bhkTransformShape.cpp
@@ -11,18 +11,22 @@ bhkTransformShape::bhkTransformShape() BHK_TRANSFORM_SHAPE_CONSTRUCT {}
 bhkTransformShape::~bhkTransformShape() {}
 
 void bhkTransformShape::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_TRANSFORM_SHAPE_READ
+  BHK_TRANSFORM_SHAPE_READ
 }
 
 void bhkTransformShape::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_TRANSFORM_SHAPE_WRITE
+  BHK_TRANSFORM_SHAPE_WRITE
 }
 
 string bhkTransformShape::asString( bool verbose ) const {
-	BHK_TRANSFORM_SHAPE_STRING
+  BHK_TRANSFORM_SHAPE_STRING
 }
 
 void bhkTransformShape::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_TRANSFORM_SHAPE_FIXLINKS
+  BHK_TRANSFORM_SHAPE_FIXLINKS
 }
 
+const Type & bhkTransformShape::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkTransformShape.h b/obj/bhkTransformShape.h
index 092d7011..3a537bc2 100644
--- a/obj/bhkTransformShape.h
+++ b/obj/bhkTransformShape.h
@@ -16,16 +16,17 @@ typedef Ref<bhkTransformShape> bhkTransformShapeRef;
 
 class bhkTransformShape : public BHK_TRANSFORM_SHAPE_PARENT {
 public:
-	bhkTransformShape();
-	~bhkTransformShape();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_TRANSFORM_SHAPE_MEMBERS
+  bhkTransformShape();
+  ~bhkTransformShape();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_TRANSFORM_SHAPE_MEMBERS
 };
+
 #endif
diff --git a/obj/bhkWorldObject.cpp b/obj/bhkWorldObject.cpp
index 9cd5a5c7..b5cce9d0 100644
--- a/obj/bhkWorldObject.cpp
+++ b/obj/bhkWorldObject.cpp
@@ -11,18 +11,22 @@ bhkWorldObject::bhkWorldObject() BHK_WORLD_OBJECT_CONSTRUCT {}
 bhkWorldObject::~bhkWorldObject() {}
 
 void bhkWorldObject::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	BHK_WORLD_OBJECT_READ
+  BHK_WORLD_OBJECT_READ
 }
 
 void bhkWorldObject::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	BHK_WORLD_OBJECT_WRITE
+  BHK_WORLD_OBJECT_WRITE
 }
 
 string bhkWorldObject::asString( bool verbose ) const {
-	BHK_WORLD_OBJECT_STRING
+  BHK_WORLD_OBJECT_STRING
 }
 
 void bhkWorldObject::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	BHK_WORLD_OBJECT_FIXLINKS
+  BHK_WORLD_OBJECT_FIXLINKS
 }
 
+const Type & bhkWorldObject::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/bhkWorldObject.h b/obj/bhkWorldObject.h
index 9d38b23f..54ed2919 100644
--- a/obj/bhkWorldObject.h
+++ b/obj/bhkWorldObject.h
@@ -16,16 +16,17 @@ typedef Ref<bhkWorldObject> bhkWorldObjectRef;
 
 class bhkWorldObject : public BHK_WORLD_OBJECT_PARENT {
 public:
-	bhkWorldObject();
-	~bhkWorldObject();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	BHK_WORLD_OBJECT_MEMBERS
+  bhkWorldObject();
+  ~bhkWorldObject();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  BHK_WORLD_OBJECT_MEMBERS
 };
+
 #endif
diff --git a/obj/hkPackedNiTriStripsData.cpp b/obj/hkPackedNiTriStripsData.cpp
index 4bfb39a4..381e2424 100644
--- a/obj/hkPackedNiTriStripsData.cpp
+++ b/obj/hkPackedNiTriStripsData.cpp
@@ -11,18 +11,22 @@ hkPackedNiTriStripsData::hkPackedNiTriStripsData() HK_PACKED_NI_TRI_STRIPS_DATA_
 hkPackedNiTriStripsData::~hkPackedNiTriStripsData() {}
 
 void hkPackedNiTriStripsData::Read( istream& in, list<uint> & link_stack, unsigned int version ) {
-	HK_PACKED_NI_TRI_STRIPS_DATA_READ
+  HK_PACKED_NI_TRI_STRIPS_DATA_READ
 }
 
 void hkPackedNiTriStripsData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	HK_PACKED_NI_TRI_STRIPS_DATA_WRITE
+  HK_PACKED_NI_TRI_STRIPS_DATA_WRITE
 }
 
 string hkPackedNiTriStripsData::asString( bool verbose ) const {
-	HK_PACKED_NI_TRI_STRIPS_DATA_STRING
+  HK_PACKED_NI_TRI_STRIPS_DATA_STRING
 }
 
 void hkPackedNiTriStripsData::FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version ) {
-	HK_PACKED_NI_TRI_STRIPS_DATA_FIXLINKS
+  HK_PACKED_NI_TRI_STRIPS_DATA_FIXLINKS
 }
 
+const Type & hkPackedNiTriStripsData::GetType() const {
+  return TYPE;
+};
+
diff --git a/obj/hkPackedNiTriStripsData.h b/obj/hkPackedNiTriStripsData.h
index cfd80d17..ac582caa 100644
--- a/obj/hkPackedNiTriStripsData.h
+++ b/obj/hkPackedNiTriStripsData.h
@@ -16,16 +16,17 @@ typedef Ref<hkPackedNiTriStripsData> hkPackedNiTriStripsDataRef;
 
 class hkPackedNiTriStripsData : public HK_PACKED_NI_TRI_STRIPS_DATA_PARENT {
 public:
-	hkPackedNiTriStripsData();
-	~hkPackedNiTriStripsData();
-	//Run-Time Type Information
-	static const Type TYPE;
-	virtual const Type & GetType() const { return TYPE; };
-	virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
-	virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
-	virtual string asString( bool verbose = false ) const;
-	virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
-private:
-	HK_PACKED_NI_TRI_STRIPS_DATA_MEMBERS
+  hkPackedNiTriStripsData();
+  ~hkPackedNiTriStripsData();
+  //Run-Time Type Information
+  static const Type TYPE;
+  virtual void Read( istream& in, list<uint> & link_stack, unsigned int version );
+  virtual void Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const;
+  virtual string asString( bool verbose = false ) const;
+  virtual void FixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version );
+  virtual const Type & GetType() const;
+protected:
+  HK_PACKED_NI_TRI_STRIPS_DATA_MEMBERS
 };
+
 #endif
diff --git a/xml_extract.h b/xml_extract.h
index 3cbd41f9..f509e086 100644
--- a/xml_extract.h
+++ b/xml_extract.h
@@ -14,14 +14,8 @@ All rights reserved.  Please see niflib.h for licence. */
 using namespace std;
 
 class NiObject;
-class AInterpolator;
-class ABlendInterpolator;
-class ABSplineCompInterpolator;
 class AKeyedData;
 class AParticleModifier;
-class APSysModifier;
-class APSysEmitter;
-class APSysVolumeEmitter;
 class bhkRefObject;
 class bhkSerializable;
 class AbhkConstraint;
@@ -34,17 +28,23 @@ class bhkWorldObject;
 class bhkEntity;
 class NiCollisionObject;
 class NiExtraData;
+class NiInterpolator;
+class NiBlendInterpolator;
+class NiBSplineInterpolator;
 class NiObjectNET;
 class NiAVObject;
 class NiDynamicEffect;
 class NiLight;
 class NiProperty;
+class NiPSysModifier;
+class NiPSysEmitter;
+class NiPSysVolumeEmitter;
 class NiTimeController;
 class ABoneLODController;
 class NiSingleInterpolatorController;
 class APSysCtlr;
 class NiTriBasedGeom;
-class TriBasedGeomData;
+class NiTriBasedGeomData;
 class APSysData;
 class bhkBlendCollisionObject;
 class bhkBlendController;
@@ -474,7 +474,7 @@ struct ControllerLink {
   /*!
    * Link to an interpolator.
    */
-  Ref<AInterpolator > interpolator;
+  Ref<NiInterpolator > interpolator;
   /*!
    * Unknown link. Usually -1.
    */
@@ -1128,88 +1128,6 @@ return out.str(); \
 
 #define NI_OBJECT_FIXLINKS \
 
-#define A_INTERPOLATOR_MEMBERS \
-
-#define A_INTERPOLATOR_INCLUDE "NiObject.h" \
-
-#define A_INTERPOLATOR_PARENT NiObject \
-
-#define A_INTERPOLATOR_CONSTRUCT \
-
-#define A_INTERPOLATOR_READ \
-NiObject::Read( in, link_stack, version ); \
-
-#define A_INTERPOLATOR_WRITE \
-NiObject::Write( out, link_map, version ); \
-
-#define A_INTERPOLATOR_STRING \
-stringstream out; \
-out << NiObject::asString(); \
-return out.str(); \
-
-#define A_INTERPOLATOR_FIXLINKS \
-NiObject::FixLinks( objects, link_stack, version ); \
-
-#define A_BLEND_INTERPOLATOR_MEMBERS \
-ushort unknownShort; \
-uint unknownInt; \
-
-#define A_BLEND_INTERPOLATOR_INCLUDE "AInterpolator.h" \
-
-#define A_BLEND_INTERPOLATOR_PARENT AInterpolator \
-
-#define A_BLEND_INTERPOLATOR_CONSTRUCT \
-
-#define A_BLEND_INTERPOLATOR_READ \
-AInterpolator::Read( in, link_stack, version ); \
-NifStream( unknownShort, in, version ); \
-NifStream( unknownInt, in, version ); \
-
-#define A_BLEND_INTERPOLATOR_WRITE \
-AInterpolator::Write( out, link_map, version ); \
-NifStream( unknownShort, out, version ); \
-NifStream( unknownInt, out, version ); \
-
-#define A_BLEND_INTERPOLATOR_STRING \
-stringstream out; \
-out << AInterpolator::asString(); \
-out << "Unknown Short:  " << unknownShort << endl; \
-out << "Unknown Int:  " << unknownInt << endl; \
-return out.str(); \
-
-#define A_BLEND_INTERPOLATOR_FIXLINKS \
-AInterpolator::FixLinks( objects, link_stack, version ); \
-
-#define A_B_SPLINE_COMP_INTERPOLATOR_MEMBERS \
-float startTime; \
-float stopTime; \
-
-#define A_B_SPLINE_COMP_INTERPOLATOR_INCLUDE "AInterpolator.h" \
-
-#define A_B_SPLINE_COMP_INTERPOLATOR_PARENT AInterpolator \
-
-#define A_B_SPLINE_COMP_INTERPOLATOR_CONSTRUCT \
-
-#define A_B_SPLINE_COMP_INTERPOLATOR_READ \
-AInterpolator::Read( in, link_stack, version ); \
-NifStream( startTime, in, version ); \
-NifStream( stopTime, in, version ); \
-
-#define A_B_SPLINE_COMP_INTERPOLATOR_WRITE \
-AInterpolator::Write( out, link_map, version ); \
-NifStream( startTime, out, version ); \
-NifStream( stopTime, out, version ); \
-
-#define A_B_SPLINE_COMP_INTERPOLATOR_STRING \
-stringstream out; \
-out << AInterpolator::asString(); \
-out << "Start Time:  " << startTime << endl; \
-out << "Stop Time:  " << stopTime << endl; \
-return out.str(); \
-
-#define A_B_SPLINE_COMP_INTERPOLATOR_FIXLINKS \
-AInterpolator::FixLinks( objects, link_stack, version ); \
-
 #define A_KEYED_DATA_MEMBERS \
 
 #define A_KEYED_DATA_INCLUDE "NiObject.h" \
@@ -1234,7 +1152,7 @@ NiObject::FixLinks( objects, link_stack, version ); \
 
 #define A_PARTICLE_MODIFIER_MEMBERS \
 Ref<AParticleModifier > nextModifier; \
-AParticleModifier * previousModifier; \
+NiParticleSystemController * controller; \
 
 #define A_PARTICLE_MODIFIER_INCLUDE "NiObject.h" \
 
@@ -1253,166 +1171,28 @@ link_stack.push_back( block_num ); \
 #define A_PARTICLE_MODIFIER_WRITE \
 NiObject::Write( out, link_map, version ); \
 NifStream( link_map[StaticCast<NiObject>(nextModifier)], out, version ); \
-NifStream( link_map[StaticCast<NiObject>(previousModifier)], out, version ); \
+NifStream( link_map[StaticCast<NiObject>(controller)], out, version ); \
 
 #define A_PARTICLE_MODIFIER_STRING \
 stringstream out; \
 out << NiObject::asString(); \
 out << "Next Modifier:  " << nextModifier << endl; \
-out << "Previous Modifier:  " << previousModifier << endl; \
+out << "Controller:  " << controller << endl; \
 return out.str(); \
 
 #define A_PARTICLE_MODIFIER_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-nextModifier = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  nextModifier = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
+else \
+  nextModifier = NULL; \
 link_stack.pop_front(); \
-previousModifier = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
-link_stack.pop_front(); \
-
-#define A_P_SYS_MODIFIER_MEMBERS \
-string name; \
-uint order; \
-NiParticleSystem * target; \
-bool active; \
-
-#define A_P_SYS_MODIFIER_INCLUDE "NiObject.h" \
-
-#define A_P_SYS_MODIFIER_PARENT NiObject \
-
-#define A_P_SYS_MODIFIER_CONSTRUCT \
-
-#define A_P_SYS_MODIFIER_READ \
-uint block_num; \
-NiObject::Read( in, link_stack, version ); \
-NifStream( name, in, version ); \
-NifStream( order, in, version ); \
-NifStream( block_num, in, version ); \
-link_stack.push_back( block_num ); \
-NifStream( active, in, version ); \
-
-#define A_P_SYS_MODIFIER_WRITE \
-NiObject::Write( out, link_map, version ); \
-NifStream( name, out, version ); \
-NifStream( order, out, version ); \
-NifStream( link_map[StaticCast<NiObject>(target)], out, version ); \
-NifStream( active, out, version ); \
-
-#define A_P_SYS_MODIFIER_STRING \
-stringstream out; \
-out << NiObject::asString(); \
-out << "Name:  " << name << endl; \
-out << "Order:  " << order << endl; \
-out << "Target:  " << target << endl; \
-out << "Active:  " << active << endl; \
-return out.str(); \
-
-#define A_P_SYS_MODIFIER_FIXLINKS \
-NiObject::FixLinks( objects, link_stack, version ); \
-target = DynamicCast<NiParticleSystem>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  controller = DynamicCast<NiParticleSystemController>(objects[link_stack.front()]); \
+else \
+  controller = NULL; \
 link_stack.pop_front(); \
 
-#define A_P_SYS_EMITTER_MEMBERS \
-float speed; \
-float speedVariation; \
-float declination; \
-float declinationVariation; \
-float planarAngle; \
-float planarAngleVariation; \
-Color4 initialColor; \
-float initialRadius; \
-float radiusVariation; \
-float lifeSpan; \
-float lifeSpanVariation; \
-
-#define A_P_SYS_EMITTER_INCLUDE "APSysModifier.h" \
-
-#define A_P_SYS_EMITTER_PARENT APSysModifier \
-
-#define A_P_SYS_EMITTER_CONSTRUCT \
-
-#define A_P_SYS_EMITTER_READ \
-APSysModifier::Read( in, link_stack, version ); \
-NifStream( speed, in, version ); \
-NifStream( speedVariation, in, version ); \
-NifStream( declination, in, version ); \
-NifStream( declinationVariation, in, version ); \
-NifStream( planarAngle, in, version ); \
-NifStream( planarAngleVariation, in, version ); \
-NifStream( initialColor, in, version ); \
-NifStream( initialRadius, in, version ); \
-NifStream( radiusVariation, in, version ); \
-NifStream( lifeSpan, in, version ); \
-NifStream( lifeSpanVariation, in, version ); \
-
-#define A_P_SYS_EMITTER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
-NifStream( speed, out, version ); \
-NifStream( speedVariation, out, version ); \
-NifStream( declination, out, version ); \
-NifStream( declinationVariation, out, version ); \
-NifStream( planarAngle, out, version ); \
-NifStream( planarAngleVariation, out, version ); \
-NifStream( initialColor, out, version ); \
-NifStream( initialRadius, out, version ); \
-NifStream( radiusVariation, out, version ); \
-NifStream( lifeSpan, out, version ); \
-NifStream( lifeSpanVariation, out, version ); \
-
-#define A_P_SYS_EMITTER_STRING \
-stringstream out; \
-out << APSysModifier::asString(); \
-out << "Speed:  " << speed << endl; \
-out << "Speed Variation:  " << speedVariation << endl; \
-out << "Declination:  " << declination << endl; \
-out << "Declination Variation:  " << declinationVariation << endl; \
-out << "Planar Angle:  " << planarAngle << endl; \
-out << "Planar Angle Variation:  " << planarAngleVariation << endl; \
-out << "Initial Color:  " << initialColor << endl; \
-out << "Initial Radius:  " << initialRadius << endl; \
-out << "Radius Variation:  " << radiusVariation << endl; \
-out << "Life Span:  " << lifeSpan << endl; \
-out << "Life Span Variation:  " << lifeSpanVariation << endl; \
-return out.str(); \
-
-#define A_P_SYS_EMITTER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
-
-#define A_P_SYS_VOLUME_EMITTER_MEMBERS \
-NiNode * emitterObject; \
-
-#define A_P_SYS_VOLUME_EMITTER_INCLUDE "APSysEmitter.h" \
-
-#define A_P_SYS_VOLUME_EMITTER_PARENT APSysEmitter \
-
-#define A_P_SYS_VOLUME_EMITTER_CONSTRUCT \
-
-#define A_P_SYS_VOLUME_EMITTER_READ \
-uint block_num; \
-APSysEmitter::Read( in, link_stack, version ); \
-if ( version >= 0x14000004 ) { \
-  NifStream( block_num, in, version ); \
-  link_stack.push_back( block_num ); \
-}; \
-
-#define A_P_SYS_VOLUME_EMITTER_WRITE \
-APSysEmitter::Write( out, link_map, version ); \
-if ( version >= 0x14000004 ) { \
-  NifStream( link_map[StaticCast<NiObject>(emitterObject)], out, version ); \
-}; \
-
-#define A_P_SYS_VOLUME_EMITTER_STRING \
-stringstream out; \
-out << APSysEmitter::asString(); \
-out << "Emitter Object:  " << emitterObject << endl; \
-return out.str(); \
-
-#define A_P_SYS_VOLUME_EMITTER_FIXLINKS \
-APSysEmitter::FixLinks( objects, link_stack, version ); \
-if ( version >= 0x14000004 ) { \
-  emitterObject = DynamicCast<NiNode>(objects[link_stack.front()]); \
-  link_stack.pop_front(); \
-}; \
-
 #define BHK_REF_OBJECT_MEMBERS \
 
 #define BHK_REF_OBJECT_INCLUDE "NiObject.h" \
@@ -1507,7 +1287,10 @@ bhkSerializable::FixLinks( objects, link_stack, version ); \
 uint numBodies; \
 numBodies = uint(bodies.size()); \
 for (uint i0 = 0; i0 < numBodies; i0++) { \
-  bodies[i0] = DynamicCast<bhkShape>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    bodies[i0] = DynamicCast<bhkShape>(objects[link_stack.front()]); \
+  else \
+    bodies[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -1726,7 +1509,10 @@ return out.str(); \
 
 #define BHK_ENTITY_FIXLINKS \
 bhkWorldObject::FixLinks( objects, link_stack, version ); \
-shape = DynamicCast<bhkShape>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  shape = DynamicCast<bhkShape>(objects[link_stack.front()]); \
+else \
+  shape = NULL; \
 link_stack.pop_front(); \
 
 #define NI_COLLISION_OBJECT_MEMBERS \
@@ -1771,9 +1557,15 @@ return out.str(); \
 NiObject::FixLinks( objects, link_stack, version ); \
 NiAVObject * parent; \
 parent = Parent(); \
-parent = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  parent = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
+else \
+  parent = NULL; \
 link_stack.pop_front(); \
-body = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  body = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  body = NULL; \
 link_stack.pop_front(); \
 
 #define NI_EXTRA_DATA_MEMBERS \
@@ -1818,10 +1610,95 @@ NiObject::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x0A000100 ) { \
 }; \
 if ( version <= 0x04020200 ) { \
-  nextExtraData = DynamicCast<NiExtraData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    nextExtraData = DynamicCast<NiExtraData>(objects[link_stack.front()]); \
+  else \
+    nextExtraData = NULL; \
   link_stack.pop_front(); \
 }; \
 
+#define NI_INTERPOLATOR_MEMBERS \
+
+#define NI_INTERPOLATOR_INCLUDE "NiObject.h" \
+
+#define NI_INTERPOLATOR_PARENT NiObject \
+
+#define NI_INTERPOLATOR_CONSTRUCT \
+
+#define NI_INTERPOLATOR_READ \
+NiObject::Read( in, link_stack, version ); \
+
+#define NI_INTERPOLATOR_WRITE \
+NiObject::Write( out, link_map, version ); \
+
+#define NI_INTERPOLATOR_STRING \
+stringstream out; \
+out << NiObject::asString(); \
+return out.str(); \
+
+#define NI_INTERPOLATOR_FIXLINKS \
+NiObject::FixLinks( objects, link_stack, version ); \
+
+#define NI_BLEND_INTERPOLATOR_MEMBERS \
+ushort unknownShort; \
+uint unknownInt; \
+
+#define NI_BLEND_INTERPOLATOR_INCLUDE "NiInterpolator.h" \
+
+#define NI_BLEND_INTERPOLATOR_PARENT NiInterpolator \
+
+#define NI_BLEND_INTERPOLATOR_CONSTRUCT \
+
+#define NI_BLEND_INTERPOLATOR_READ \
+NiInterpolator::Read( in, link_stack, version ); \
+NifStream( unknownShort, in, version ); \
+NifStream( unknownInt, in, version ); \
+
+#define NI_BLEND_INTERPOLATOR_WRITE \
+NiInterpolator::Write( out, link_map, version ); \
+NifStream( unknownShort, out, version ); \
+NifStream( unknownInt, out, version ); \
+
+#define NI_BLEND_INTERPOLATOR_STRING \
+stringstream out; \
+out << NiInterpolator::asString(); \
+out << "Unknown Short:  " << unknownShort << endl; \
+out << "Unknown Int:  " << unknownInt << endl; \
+return out.str(); \
+
+#define NI_BLEND_INTERPOLATOR_FIXLINKS \
+NiInterpolator::FixLinks( objects, link_stack, version ); \
+
+#define NI_B_SPLINE_INTERPOLATOR_MEMBERS \
+float startTime; \
+float stopTime; \
+
+#define NI_B_SPLINE_INTERPOLATOR_INCLUDE "NiInterpolator.h" \
+
+#define NI_B_SPLINE_INTERPOLATOR_PARENT NiInterpolator \
+
+#define NI_B_SPLINE_INTERPOLATOR_CONSTRUCT \
+
+#define NI_B_SPLINE_INTERPOLATOR_READ \
+NiInterpolator::Read( in, link_stack, version ); \
+NifStream( startTime, in, version ); \
+NifStream( stopTime, in, version ); \
+
+#define NI_B_SPLINE_INTERPOLATOR_WRITE \
+NiInterpolator::Write( out, link_map, version ); \
+NifStream( startTime, out, version ); \
+NifStream( stopTime, out, version ); \
+
+#define NI_B_SPLINE_INTERPOLATOR_STRING \
+stringstream out; \
+out << NiInterpolator::asString(); \
+out << "Start Time:  " << startTime << endl; \
+out << "Stop Time:  " << stopTime << endl; \
+return out.str(); \
+
+#define NI_B_SPLINE_INTERPOLATOR_FIXLINKS \
+NiInterpolator::FixLinks( objects, link_stack, version ); \
+
 #define NI_OBJECT_N_E_T_MEMBERS \
 string name; \
 Ref<NiExtraData > extraData; \
@@ -1889,16 +1766,25 @@ NiObject::FixLinks( objects, link_stack, version ); \
 uint numExtraDataList; \
 numExtraDataList = uint(extraDataList.size()); \
 if ( version <= 0x04020200 ) { \
-  extraData = DynamicCast<NiExtraData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    extraData = DynamicCast<NiExtraData>(objects[link_stack.front()]); \
+  else \
+    extraData = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x0A000100 ) { \
   for (uint i1 = 0; i1 < numExtraDataList; i1++) { \
-    extraDataList[i1] = DynamicCast<NiExtraData>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      extraDataList[i1] = DynamicCast<NiExtraData>(objects[link_stack.front()]); \
+    else \
+      extraDataList[i1] = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
-controller = DynamicCast<NiTimeController>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  controller = DynamicCast<NiTimeController>(objects[link_stack.front()]); \
+else \
+  controller = NULL; \
 link_stack.pop_front(); \
 
 #define NI_A_V_OBJECT_MEMBERS \
@@ -2018,7 +1904,10 @@ numProperties = uint(properties.size()); \
 if ( version <= 0x04020200 ) { \
 }; \
 for (uint i0 = 0; i0 < numProperties; i0++) { \
-  properties[i0] = DynamicCast<NiProperty>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    properties[i0] = DynamicCast<NiProperty>(objects[link_stack.front()]); \
+  else \
+    properties[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( version <= 0x04020200 ) { \
@@ -2026,11 +1915,17 @@ if ( version <= 0x04020200 ) { \
   }; \
 }; \
 if ( ( version >= 0x0A000100 ) && ( version <= 0x14000004 ) ) { \
-  collisionData = DynamicCast<NiCollisionData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    collisionData = DynamicCast<NiCollisionData>(objects[link_stack.front()]); \
+  else \
+    collisionData = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x14000005 ) { \
-  collisionObject = DynamicCast<NiCollisionObject>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    collisionObject = DynamicCast<NiCollisionObject>(objects[link_stack.front()]); \
+  else \
+    collisionObject = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -2116,7 +2011,10 @@ if ( version >= 0x0A020000 ) { \
 }; \
 if ( version >= 0x0A010000 ) { \
   for (uint i1 = 0; i1 < numAffectedNodes; i1++) { \
-    affectedNodes[i1] = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      affectedNodes[i1] = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
+    else \
+      affectedNodes[i1] = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
@@ -2181,6 +2079,156 @@ return out.str(); \
 #define NI_PROPERTY_FIXLINKS \
 NiObjectNET::FixLinks( objects, link_stack, version ); \
 
+#define NI_P_SYS_MODIFIER_MEMBERS \
+string name; \
+uint order; \
+NiParticleSystem * target; \
+bool active; \
+
+#define NI_P_SYS_MODIFIER_INCLUDE "NiObject.h" \
+
+#define NI_P_SYS_MODIFIER_PARENT NiObject \
+
+#define NI_P_SYS_MODIFIER_CONSTRUCT \
+
+#define NI_P_SYS_MODIFIER_READ \
+uint block_num; \
+NiObject::Read( in, link_stack, version ); \
+NifStream( name, in, version ); \
+NifStream( order, in, version ); \
+NifStream( block_num, in, version ); \
+link_stack.push_back( block_num ); \
+NifStream( active, in, version ); \
+
+#define NI_P_SYS_MODIFIER_WRITE \
+NiObject::Write( out, link_map, version ); \
+NifStream( name, out, version ); \
+NifStream( order, out, version ); \
+NifStream( link_map[StaticCast<NiObject>(target)], out, version ); \
+NifStream( active, out, version ); \
+
+#define NI_P_SYS_MODIFIER_STRING \
+stringstream out; \
+out << NiObject::asString(); \
+out << "Name:  " << name << endl; \
+out << "Order:  " << order << endl; \
+out << "Target:  " << target << endl; \
+out << "Active:  " << active << endl; \
+return out.str(); \
+
+#define NI_P_SYS_MODIFIER_FIXLINKS \
+NiObject::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  target = DynamicCast<NiParticleSystem>(objects[link_stack.front()]); \
+else \
+  target = NULL; \
+link_stack.pop_front(); \
+
+#define NI_P_SYS_EMITTER_MEMBERS \
+float speed; \
+float speedVariation; \
+float declination; \
+float declinationVariation; \
+float planarAngle; \
+float planarAngleVariation; \
+Color4 initialColor; \
+float initialRadius; \
+float radiusVariation; \
+float lifeSpan; \
+float lifeSpanVariation; \
+
+#define NI_P_SYS_EMITTER_INCLUDE "NiPSysModifier.h" \
+
+#define NI_P_SYS_EMITTER_PARENT NiPSysModifier \
+
+#define NI_P_SYS_EMITTER_CONSTRUCT \
+
+#define NI_P_SYS_EMITTER_READ \
+NiPSysModifier::Read( in, link_stack, version ); \
+NifStream( speed, in, version ); \
+NifStream( speedVariation, in, version ); \
+NifStream( declination, in, version ); \
+NifStream( declinationVariation, in, version ); \
+NifStream( planarAngle, in, version ); \
+NifStream( planarAngleVariation, in, version ); \
+NifStream( initialColor, in, version ); \
+NifStream( initialRadius, in, version ); \
+NifStream( radiusVariation, in, version ); \
+NifStream( lifeSpan, in, version ); \
+NifStream( lifeSpanVariation, in, version ); \
+
+#define NI_P_SYS_EMITTER_WRITE \
+NiPSysModifier::Write( out, link_map, version ); \
+NifStream( speed, out, version ); \
+NifStream( speedVariation, out, version ); \
+NifStream( declination, out, version ); \
+NifStream( declinationVariation, out, version ); \
+NifStream( planarAngle, out, version ); \
+NifStream( planarAngleVariation, out, version ); \
+NifStream( initialColor, out, version ); \
+NifStream( initialRadius, out, version ); \
+NifStream( radiusVariation, out, version ); \
+NifStream( lifeSpan, out, version ); \
+NifStream( lifeSpanVariation, out, version ); \
+
+#define NI_P_SYS_EMITTER_STRING \
+stringstream out; \
+out << NiPSysModifier::asString(); \
+out << "Speed:  " << speed << endl; \
+out << "Speed Variation:  " << speedVariation << endl; \
+out << "Declination:  " << declination << endl; \
+out << "Declination Variation:  " << declinationVariation << endl; \
+out << "Planar Angle:  " << planarAngle << endl; \
+out << "Planar Angle Variation:  " << planarAngleVariation << endl; \
+out << "Initial Color:  " << initialColor << endl; \
+out << "Initial Radius:  " << initialRadius << endl; \
+out << "Radius Variation:  " << radiusVariation << endl; \
+out << "Life Span:  " << lifeSpan << endl; \
+out << "Life Span Variation:  " << lifeSpanVariation << endl; \
+return out.str(); \
+
+#define NI_P_SYS_EMITTER_FIXLINKS \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
+
+#define NI_P_SYS_VOLUME_EMITTER_MEMBERS \
+NiNode * emitterObject; \
+
+#define NI_P_SYS_VOLUME_EMITTER_INCLUDE "NiPSysEmitter.h" \
+
+#define NI_P_SYS_VOLUME_EMITTER_PARENT NiPSysEmitter \
+
+#define NI_P_SYS_VOLUME_EMITTER_CONSTRUCT \
+
+#define NI_P_SYS_VOLUME_EMITTER_READ \
+uint block_num; \
+NiPSysEmitter::Read( in, link_stack, version ); \
+if ( version >= 0x14000004 ) { \
+  NifStream( block_num, in, version ); \
+  link_stack.push_back( block_num ); \
+}; \
+
+#define NI_P_SYS_VOLUME_EMITTER_WRITE \
+NiPSysEmitter::Write( out, link_map, version ); \
+if ( version >= 0x14000004 ) { \
+  NifStream( link_map[StaticCast<NiObject>(emitterObject)], out, version ); \
+}; \
+
+#define NI_P_SYS_VOLUME_EMITTER_STRING \
+stringstream out; \
+out << NiPSysEmitter::asString(); \
+out << "Emitter Object:  " << emitterObject << endl; \
+return out.str(); \
+
+#define NI_P_SYS_VOLUME_EMITTER_FIXLINKS \
+NiPSysEmitter::FixLinks( objects, link_stack, version ); \
+if ( version >= 0x14000004 ) { \
+  if (link_stack.front() != 0xffffffff) \
+    emitterObject = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  else \
+    emitterObject = NULL; \
+  link_stack.pop_front(); \
+}; \
+
 #define NI_TIME_CONTROLLER_MEMBERS \
 Ref<NiTimeController > nextController; \
 unsigned short flags; \
@@ -2233,9 +2281,15 @@ return out.str(); \
 
 #define NI_TIME_CONTROLLER_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-nextController = DynamicCast<NiTimeController>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  nextController = DynamicCast<NiTimeController>(objects[link_stack.front()]); \
+else \
+  nextController = NULL; \
 link_stack.pop_front(); \
-target = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  target = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  target = NULL; \
 link_stack.pop_front(); \
 
 #define A_BONE_L_O_D_CONTROLLER_MEMBERS \
@@ -2309,13 +2363,16 @@ for (uint i0 = 0; i0 < numNodeGroups; i0++) { \
   uint nodeGroups_numNodes; \
   nodeGroups_numNodes = uint(nodeGroups[i0].nodes.size()); \
   for (uint i1 = 0; i1 < nodeGroups_numNodes; i1++) { \
-    nodeGroups[i0].nodes[i1] = DynamicCast<NiNode>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      nodeGroups[i0].nodes[i1] = DynamicCast<NiNode>(objects[link_stack.front()]); \
+    else \
+      nodeGroups[i0].nodes[i1] = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
 
 #define NI_SINGLE_INTERPOLATOR_CONTROLLER_MEMBERS \
-Ref<AInterpolator > interpolator; \
+Ref<NiInterpolator > interpolator; \
 
 #define NI_SINGLE_INTERPOLATOR_CONTROLLER_INCLUDE "NiTimeController.h" \
 
@@ -2346,7 +2403,10 @@ return out.str(); \
 #define NI_SINGLE_INTERPOLATOR_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x0A020000 ) { \
-  interpolator = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    interpolator = DynamicCast<NiInterpolator>(objects[link_stack.front()]); \
+  else \
+    interpolator = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -2377,7 +2437,7 @@ return out.str(); \
 NiSingleInterpolatorController::FixLinks( objects, link_stack, version ); \
 
 #define NI_TRI_BASED_GEOM_MEMBERS \
-Ref<TriBasedGeomData > data; \
+Ref<NiTriBasedGeomData > data; \
 Ref<NiSkinInstance > skinInstance; \
 bool hasShader; \
 string shaderName; \
@@ -2431,18 +2491,27 @@ return out.str(); \
 
 #define NI_TRI_BASED_GEOM_FIXLINKS \
 NiAVObject::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<TriBasedGeomData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiTriBasedGeomData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
-skinInstance = DynamicCast<NiSkinInstance>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  skinInstance = DynamicCast<NiSkinInstance>(objects[link_stack.front()]); \
+else \
+  skinInstance = NULL; \
 link_stack.pop_front(); \
 if ( version >= 0x0A000100 ) { \
   if ( (hasShader != 0) ) { \
-    unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    else \
+      unknownLink = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
 
-#define TRI_BASED_GEOM_DATA_MEMBERS \
+#define NI_TRI_BASED_GEOM_DATA_MEMBERS \
 string name; \
 ushort numVertices; \
 ushort unknownShort1; \
@@ -2462,13 +2531,13 @@ vector<vector<TexCoord > > uvSets2; \
 ushort unknownShort2; \
 Ref<NiObject > unknownLink; \
 
-#define TRI_BASED_GEOM_DATA_INCLUDE "NiObject.h" \
+#define NI_TRI_BASED_GEOM_DATA_INCLUDE "NiObject.h" \
 
-#define TRI_BASED_GEOM_DATA_PARENT NiObject \
+#define NI_TRI_BASED_GEOM_DATA_PARENT NiObject \
 
-#define TRI_BASED_GEOM_DATA_CONSTRUCT \
+#define NI_TRI_BASED_GEOM_DATA_CONSTRUCT \
 
-#define TRI_BASED_GEOM_DATA_READ \
+#define NI_TRI_BASED_GEOM_DATA_READ \
 uint block_num; \
 NiObject::Read( in, link_stack, version ); \
 ushort numUvSets; \
@@ -2552,7 +2621,7 @@ if ( version >= 0x14000004 ) { \
   link_stack.push_back( block_num ); \
 }; \
 
-#define TRI_BASED_GEOM_DATA_WRITE \
+#define NI_TRI_BASED_GEOM_DATA_WRITE \
 NiObject::Write( out, link_map, version ); \
 ushort numUvSets; \
 numUvSets = ushort(uvSets.size()); \
@@ -2626,7 +2695,7 @@ if ( version >= 0x14000004 ) { \
   NifStream( link_map[StaticCast<NiObject>(unknownLink)], out, version ); \
 }; \
 
-#define TRI_BASED_GEOM_DATA_STRING \
+#define NI_TRI_BASED_GEOM_DATA_STRING \
 stringstream out; \
 out << NiObject::asString(); \
 ushort numUvSets; \
@@ -2684,7 +2753,7 @@ out << "Unknown Short 2:  " << unknownShort2 << endl; \
 out << "Unknown Link:  " << unknownLink << endl; \
 return out.str(); \
 
-#define TRI_BASED_GEOM_DATA_FIXLINKS \
+#define NI_TRI_BASED_GEOM_DATA_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
 ushort numUvSets; \
 numUvSets = ushort(uvSets.size()); \
@@ -2735,7 +2804,10 @@ if ( version >= 0x0A000100 ) { \
   }; \
 }; \
 if ( version >= 0x14000004 ) { \
-  unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+  else \
+    unknownLink = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -2747,14 +2819,14 @@ bool hasUnknownFloats2; \
 vector<float > unknownFloats2; \
 byte unknownByte1; \
 
-#define A_P_SYS_DATA_INCLUDE "TriBasedGeomData.h" \
+#define A_P_SYS_DATA_INCLUDE "NiTriBasedGeomData.h" \
 
-#define A_P_SYS_DATA_PARENT TriBasedGeomData \
+#define A_P_SYS_DATA_PARENT NiTriBasedGeomData \
 
 #define A_P_SYS_DATA_CONSTRUCT \
 
 #define A_P_SYS_DATA_READ \
-TriBasedGeomData::Read( in, link_stack, version ); \
+NiTriBasedGeomData::Read( in, link_stack, version ); \
 NifStream( hasUnknownFloats1, in, version ); \
 if ( (hasUnknownFloats1 != 0) ) { \
   unknownFloats1.resize(numVertices); \
@@ -2773,7 +2845,7 @@ if ( (hasUnknownFloats2 != 0) ) { \
 NifStream( unknownByte1, in, version ); \
 
 #define A_P_SYS_DATA_WRITE \
-TriBasedGeomData::Write( out, link_map, version ); \
+NiTriBasedGeomData::Write( out, link_map, version ); \
 NifStream( hasUnknownFloats1, out, version ); \
 if ( (hasUnknownFloats1 != 0) ) { \
   for (uint i1 = 0; i1 < numVertices; i1++) { \
@@ -2791,7 +2863,7 @@ NifStream( unknownByte1, out, version ); \
 
 #define A_P_SYS_DATA_STRING \
 stringstream out; \
-out << TriBasedGeomData::asString(); \
+out << NiTriBasedGeomData::asString(); \
 out << "Has Unknown Floats 1:  " << hasUnknownFloats1 << endl; \
 if ( (hasUnknownFloats1 != 0) ) { \
   for (uint i1 = 0; i1 < numVertices; i1++) { \
@@ -2809,7 +2881,7 @@ out << "Unknown Byte 1:  " << unknownByte1 << endl; \
 return out.str(); \
 
 #define A_P_SYS_DATA_FIXLINKS \
-TriBasedGeomData::FixLinks( objects, link_stack, version ); \
+NiTriBasedGeomData::FixLinks( objects, link_stack, version ); \
 if ( (hasUnknownFloats1 != 0) ) { \
   for (uint i1 = 0; i1 < numVertices; i1++) { \
   }; \
@@ -3238,7 +3310,10 @@ numUnknownInts = uint(unknownInts.size()); \
 uint numSubShapes; \
 numSubShapes = uint(subShapes.size()); \
 for (uint i0 = 0; i0 < numSubShapes; i0++) { \
-  subShapes[i0] = DynamicCast<bhkShape>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    subShapes[i0] = DynamicCast<bhkShape>(objects[link_stack.front()]); \
+  else \
+    subShapes[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 for (uint i0 = 0; i0 < 6; i0++) { \
@@ -3334,9 +3409,15 @@ return out.str(); \
 
 #define BHK_MALLEABLE_CONSTRAINT_FIXLINKS \
 AbhkConstraint::FixLinks( objects, link_stack, version ); \
-unknownLink1 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink1 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  unknownLink1 = NULL; \
 link_stack.pop_front(); \
-unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  unknownLink2 = NULL; \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < 3; i0++) { \
 }; \
@@ -3348,21 +3429,27 @@ if ( (type == 2) ) { \
 }; \
 
 #define BHK_MOPP_BV_TREE_SHAPE_MEMBERS \
+Ref<bhkShape > shape; \
+uint material; \
 vector<byte > unknownBytes1; \
 float unknownFloat; \
 vector<byte > unknownBytes2; \
 Vector3 unknownVector; \
 float unknownFloat2; \
 
-#define BHK_MOPP_BV_TREE_SHAPE_INCLUDE "bhkEntity.h" \
+#define BHK_MOPP_BV_TREE_SHAPE_INCLUDE "bhkShape.h" \
 
-#define BHK_MOPP_BV_TREE_SHAPE_PARENT bhkEntity \
+#define BHK_MOPP_BV_TREE_SHAPE_PARENT bhkShape \
 
 #define BHK_MOPP_BV_TREE_SHAPE_CONSTRUCT \
 
 #define BHK_MOPP_BV_TREE_SHAPE_READ \
-bhkEntity::Read( in, link_stack, version ); \
+uint block_num; \
+bhkShape::Read( in, link_stack, version ); \
 uint numUnknownBytes2; \
+NifStream( block_num, in, version ); \
+link_stack.push_back( block_num ); \
+NifStream( material, in, version ); \
 unknownBytes1.resize(8); \
 for (uint i0 = 0; i0 < 8; i0++) { \
   NifStream( unknownBytes1[i0], in, version ); \
@@ -3377,9 +3464,11 @@ NifStream( unknownVector, in, version ); \
 NifStream( unknownFloat2, in, version ); \
 
 #define BHK_MOPP_BV_TREE_SHAPE_WRITE \
-bhkEntity::Write( out, link_map, version ); \
+bhkShape::Write( out, link_map, version ); \
 uint numUnknownBytes2; \
 numUnknownBytes2 = uint(unknownBytes2.size()); \
+NifStream( link_map[StaticCast<NiObject>(shape)], out, version ); \
+NifStream( material, out, version ); \
 for (uint i0 = 0; i0 < 8; i0++) { \
   NifStream( unknownBytes1[i0], out, version ); \
 }; \
@@ -3393,9 +3482,11 @@ NifStream( unknownFloat2, out, version ); \
 
 #define BHK_MOPP_BV_TREE_SHAPE_STRING \
 stringstream out; \
-out << bhkEntity::asString(); \
+out << bhkShape::asString(); \
 uint numUnknownBytes2; \
 numUnknownBytes2 = uint(unknownBytes2.size()); \
+out << "Shape:  " << shape << endl; \
+out << "Material:  " << material << endl; \
 for (uint i0 = 0; i0 < 8; i0++) { \
   out << "  Unknown Bytes 1[" << i0 << "]:  " << unknownBytes1[i0] << endl; \
 }; \
@@ -3409,9 +3500,14 @@ out << "Unknown Float 2:  " << unknownFloat2 << endl; \
 return out.str(); \
 
 #define BHK_MOPP_BV_TREE_SHAPE_FIXLINKS \
-bhkEntity::FixLinks( objects, link_stack, version ); \
+bhkShape::FixLinks( objects, link_stack, version ); \
 uint numUnknownBytes2; \
 numUnknownBytes2 = uint(unknownBytes2.size()); \
+if (link_stack.front() != 0xffffffff) \
+  shape = DynamicCast<bhkShape>(objects[link_stack.front()]); \
+else \
+  shape = NULL; \
+link_stack.pop_front(); \
 for (uint i0 = 0; i0 < 8; i0++) { \
 }; \
 for (uint i0 = 0; i0 < numUnknownBytes2; i0++) { \
@@ -3577,15 +3673,20 @@ for (uint i0 = 0; i0 < 5; i0++) { \
 for (uint i0 = 0; i0 < 3; i0++) { \
 }; \
 for (uint i0 = 0; i0 < numStripsData; i0++) { \
-  stripsData[i0] = DynamicCast<NiTriStripsData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    stripsData[i0] = DynamicCast<NiTriStripsData>(objects[link_stack.front()]); \
+  else \
+    stripsData[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 for (uint i0 = 0; i0 < numUnknownInts3; i0++) { \
 }; \
 
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_MEMBERS \
-vector<vector<uint > > unknownInts; \
+vector<vector<uint > > subparts; \
 vector<float > unknownFloats; \
+float scale; \
+vector<float > unknownFloats2; \
 Ref<hkPackedNiTriStripsData > data; \
 
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_INCLUDE "AbhkShapeCollection.h" \
@@ -3593,70 +3694,89 @@ Ref<hkPackedNiTriStripsData > data; \
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_PARENT AbhkShapeCollection \
 
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_CONSTRUCT \
+ : scale(1.0f) \
 
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_READ \
 uint block_num; \
 AbhkShapeCollection::Read( in, link_stack, version ); \
-ushort numUnknownInts; \
-NifStream( numUnknownInts, in, version ); \
-unknownInts.resize(numUnknownInts); \
-for (uint i0 = 0; i0 < numUnknownInts; i0++) \
-  unknownInts[i0].resize(3); \
-for (uint i0 = 0; i0 < numUnknownInts; i0++) { \
+ushort numSubparts; \
+NifStream( numSubparts, in, version ); \
+subparts.resize(numSubparts); \
+for (uint i0 = 0; i0 < numSubparts; i0++) \
+  subparts[i0].resize(3); \
+for (uint i0 = 0; i0 < numSubparts; i0++) { \
   for (uint i1 = 0; i1 < 3; i1++) { \
-    NifStream( unknownInts[i0][i1], in, version ); \
+    NifStream( subparts[i0][i1], in, version ); \
   }; \
 }; \
-unknownFloats.resize(13); \
-for (uint i0 = 0; i0 < 13; i0++) { \
+unknownFloats.resize(9); \
+for (uint i0 = 0; i0 < 9; i0++) { \
   NifStream( unknownFloats[i0], in, version ); \
 }; \
+NifStream( scale, in, version ); \
+unknownFloats2.resize(3); \
+for (uint i0 = 0; i0 < 3; i0++) { \
+  NifStream( unknownFloats2[i0], in, version ); \
+}; \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_WRITE \
 AbhkShapeCollection::Write( out, link_map, version ); \
-ushort numUnknownInts; \
-numUnknownInts = ushort(unknownInts.size()); \
-NifStream( numUnknownInts, out, version ); \
-for (uint i0 = 0; i0 < numUnknownInts; i0++) { \
+ushort numSubparts; \
+numSubparts = ushort(subparts.size()); \
+NifStream( numSubparts, out, version ); \
+for (uint i0 = 0; i0 < numSubparts; i0++) { \
   for (uint i1 = 0; i1 < 3; i1++) { \
-    NifStream( unknownInts[i0][i1], out, version ); \
+    NifStream( subparts[i0][i1], out, version ); \
   }; \
 }; \
-for (uint i0 = 0; i0 < 13; i0++) { \
+for (uint i0 = 0; i0 < 9; i0++) { \
   NifStream( unknownFloats[i0], out, version ); \
 }; \
+NifStream( scale, out, version ); \
+for (uint i0 = 0; i0 < 3; i0++) { \
+  NifStream( unknownFloats2[i0], out, version ); \
+}; \
 NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_STRING \
 stringstream out; \
 out << AbhkShapeCollection::asString(); \
-ushort numUnknownInts; \
-numUnknownInts = ushort(unknownInts.size()); \
-out << "Num Unknown Ints:  " << numUnknownInts << endl; \
-for (uint i0 = 0; i0 < numUnknownInts; i0++) { \
+ushort numSubparts; \
+numSubparts = ushort(subparts.size()); \
+out << "Num Subparts:  " << numSubparts << endl; \
+for (uint i0 = 0; i0 < numSubparts; i0++) { \
   for (uint i1 = 0; i1 < 3; i1++) { \
-    out << "    Unknown Ints[" << i0 << "][" << i1 << "]:  " << unknownInts[i0][i1] << endl; \
+    out << "    Subparts[" << i0 << "][" << i1 << "]:  " << subparts[i0][i1] << endl; \
   }; \
 }; \
-for (uint i0 = 0; i0 < 13; i0++) { \
+for (uint i0 = 0; i0 < 9; i0++) { \
   out << "  Unknown Floats[" << i0 << "]:  " << unknownFloats[i0] << endl; \
 }; \
+out << "Scale:  " << scale << endl; \
+for (uint i0 = 0; i0 < 3; i0++) { \
+  out << "  Unknown Floats 2[" << i0 << "]:  " << unknownFloats2[i0] << endl; \
+}; \
 out << "Data:  " << data << endl; \
 return out.str(); \
 
 #define BHK_PACKED_NI_TRI_STRIPS_SHAPE_FIXLINKS \
 AbhkShapeCollection::FixLinks( objects, link_stack, version ); \
-ushort numUnknownInts; \
-numUnknownInts = ushort(unknownInts.size()); \
-for (uint i0 = 0; i0 < numUnknownInts; i0++) { \
+ushort numSubparts; \
+numSubparts = ushort(subparts.size()); \
+for (uint i0 = 0; i0 < numSubparts; i0++) { \
   for (uint i1 = 0; i1 < 3; i1++) { \
   }; \
 }; \
-for (uint i0 = 0; i0 < 13; i0++) { \
+for (uint i0 = 0; i0 < 9; i0++) { \
+}; \
+for (uint i0 = 0; i0 < 3; i0++) { \
 }; \
-data = DynamicCast<hkPackedNiTriStripsData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<hkPackedNiTriStripsData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define BHK_PRISMATIC_CONSTRAINT_MEMBERS \
@@ -3949,7 +4069,10 @@ for (uint i0 = 0; i0 < 6; i0++) { \
 for (uint i0 = 0; i0 < 12; i0++) { \
 }; \
 for (uint i0 = 0; i0 < numConstraints; i0++) { \
-  constraints[i0] = DynamicCast<AbhkConstraint>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    constraints[i0] = DynamicCast<AbhkConstraint>(objects[link_stack.front()]); \
+  else \
+    constraints[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -4286,50 +4409,50 @@ for (uint i0 = 0; i0 < numPositions; i0++) { \
 #define B_S_PARENT_VELOCITY_MODIFIER_MEMBERS \
 float unknownFloat; \
 
-#define B_S_PARENT_VELOCITY_MODIFIER_INCLUDE "APSysModifier.h" \
+#define B_S_PARENT_VELOCITY_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define B_S_PARENT_VELOCITY_MODIFIER_PARENT APSysModifier \
+#define B_S_PARENT_VELOCITY_MODIFIER_PARENT NiPSysModifier \
 
 #define B_S_PARENT_VELOCITY_MODIFIER_CONSTRUCT \
 
 #define B_S_PARENT_VELOCITY_MODIFIER_READ \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( unknownFloat, in, version ); \
 
 #define B_S_PARENT_VELOCITY_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( unknownFloat, out, version ); \
 
 #define B_S_PARENT_VELOCITY_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Unknown Float:  " << unknownFloat << endl; \
 return out.str(); \
 
 #define B_S_PARENT_VELOCITY_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
 
 #define B_S_P_SYS_ARRAY_EMITTER_MEMBERS \
 
-#define B_S_P_SYS_ARRAY_EMITTER_INCLUDE "APSysVolumeEmitter.h" \
+#define B_S_P_SYS_ARRAY_EMITTER_INCLUDE "NiPSysVolumeEmitter.h" \
 
-#define B_S_P_SYS_ARRAY_EMITTER_PARENT APSysVolumeEmitter \
+#define B_S_P_SYS_ARRAY_EMITTER_PARENT NiPSysVolumeEmitter \
 
 #define B_S_P_SYS_ARRAY_EMITTER_CONSTRUCT \
 
 #define B_S_P_SYS_ARRAY_EMITTER_READ \
-APSysVolumeEmitter::Read( in, link_stack, version ); \
+NiPSysVolumeEmitter::Read( in, link_stack, version ); \
 
 #define B_S_P_SYS_ARRAY_EMITTER_WRITE \
-APSysVolumeEmitter::Write( out, link_map, version ); \
+NiPSysVolumeEmitter::Write( out, link_map, version ); \
 
 #define B_S_P_SYS_ARRAY_EMITTER_STRING \
 stringstream out; \
-out << APSysVolumeEmitter::asString(); \
+out << NiPSysVolumeEmitter::asString(); \
 return out.str(); \
 
 #define B_S_P_SYS_ARRAY_EMITTER_FIXLINKS \
-APSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
+NiPSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
 
 #define B_S_X_FLAGS_MEMBERS \
 uint flags; \
@@ -4457,7 +4580,10 @@ return out.str(); \
 #define NI_ALPHA_CONTROLLER_FIXLINKS \
 NiSingleInterpolatorController::FixLinks( objects, link_stack, version ); \
 if ( version <= 0x0A010000 ) { \
-  data = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    data = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+  else \
+    data = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -4522,14 +4648,14 @@ ushort unknownShort; \
 bool hasSizes; \
 vector<float > sizes; \
 
-#define NI_AUTO_NORMAL_PARTICLES_DATA_INCLUDE "TriBasedGeomData.h" \
+#define NI_AUTO_NORMAL_PARTICLES_DATA_INCLUDE "NiTriBasedGeomData.h" \
 
-#define NI_AUTO_NORMAL_PARTICLES_DATA_PARENT TriBasedGeomData \
+#define NI_AUTO_NORMAL_PARTICLES_DATA_PARENT NiTriBasedGeomData \
 
 #define NI_AUTO_NORMAL_PARTICLES_DATA_CONSTRUCT \
 
 #define NI_AUTO_NORMAL_PARTICLES_DATA_READ \
-TriBasedGeomData::Read( in, link_stack, version ); \
+NiTriBasedGeomData::Read( in, link_stack, version ); \
 if ( version <= 0x04000002 ) { \
   NifStream( numParticles, in, version ); \
 }; \
@@ -4551,7 +4677,7 @@ if ( (hasSizes != 0) ) { \
 }; \
 
 #define NI_AUTO_NORMAL_PARTICLES_DATA_WRITE \
-TriBasedGeomData::Write( out, link_map, version ); \
+NiTriBasedGeomData::Write( out, link_map, version ); \
 if ( version <= 0x04000002 ) { \
   NifStream( numParticles, out, version ); \
 }; \
@@ -4573,7 +4699,7 @@ if ( (hasSizes != 0) ) { \
 
 #define NI_AUTO_NORMAL_PARTICLES_DATA_STRING \
 stringstream out; \
-out << TriBasedGeomData::asString(); \
+out << NiTriBasedGeomData::asString(); \
 out << "Num Particles:  " << numParticles << endl; \
 out << "Size:  " << size << endl; \
 out << "Num Active:  " << numActive << endl; \
@@ -4587,7 +4713,7 @@ if ( (hasSizes != 0) ) { \
 return out.str(); \
 
 #define NI_AUTO_NORMAL_PARTICLES_DATA_FIXLINKS \
-TriBasedGeomData::FixLinks( objects, link_stack, version ); \
+NiTriBasedGeomData::FixLinks( objects, link_stack, version ); \
 if ( version <= 0x04000002 ) { \
 }; \
 if ( version <= 0x0A000100 ) { \
@@ -4658,102 +4784,102 @@ for (uint i0 = 0; i0 < binaryData_size; i0++) { \
 #define NI_BLEND_BOOL_INTERPOLATOR_MEMBERS \
 byte boolValue; \
 
-#define NI_BLEND_BOOL_INTERPOLATOR_INCLUDE "ABlendInterpolator.h" \
+#define NI_BLEND_BOOL_INTERPOLATOR_INCLUDE "NiBlendInterpolator.h" \
 
-#define NI_BLEND_BOOL_INTERPOLATOR_PARENT ABlendInterpolator \
+#define NI_BLEND_BOOL_INTERPOLATOR_PARENT NiBlendInterpolator \
 
 #define NI_BLEND_BOOL_INTERPOLATOR_CONSTRUCT \
 
 #define NI_BLEND_BOOL_INTERPOLATOR_READ \
-ABlendInterpolator::Read( in, link_stack, version ); \
+NiBlendInterpolator::Read( in, link_stack, version ); \
 NifStream( boolValue, in, version ); \
 
 #define NI_BLEND_BOOL_INTERPOLATOR_WRITE \
-ABlendInterpolator::Write( out, link_map, version ); \
+NiBlendInterpolator::Write( out, link_map, version ); \
 NifStream( boolValue, out, version ); \
 
 #define NI_BLEND_BOOL_INTERPOLATOR_STRING \
 stringstream out; \
-out << ABlendInterpolator::asString(); \
+out << NiBlendInterpolator::asString(); \
 out << "Bool Value:  " << boolValue << endl; \
 return out.str(); \
 
 #define NI_BLEND_BOOL_INTERPOLATOR_FIXLINKS \
-ABlendInterpolator::FixLinks( objects, link_stack, version ); \
+NiBlendInterpolator::FixLinks( objects, link_stack, version ); \
 
 #define NI_BLEND_FLOAT_INTERPOLATOR_MEMBERS \
 float floatValue; \
 
-#define NI_BLEND_FLOAT_INTERPOLATOR_INCLUDE "ABlendInterpolator.h" \
+#define NI_BLEND_FLOAT_INTERPOLATOR_INCLUDE "NiBlendInterpolator.h" \
 
-#define NI_BLEND_FLOAT_INTERPOLATOR_PARENT ABlendInterpolator \
+#define NI_BLEND_FLOAT_INTERPOLATOR_PARENT NiBlendInterpolator \
 
 #define NI_BLEND_FLOAT_INTERPOLATOR_CONSTRUCT \
 
 #define NI_BLEND_FLOAT_INTERPOLATOR_READ \
-ABlendInterpolator::Read( in, link_stack, version ); \
+NiBlendInterpolator::Read( in, link_stack, version ); \
 NifStream( floatValue, in, version ); \
 
 #define NI_BLEND_FLOAT_INTERPOLATOR_WRITE \
-ABlendInterpolator::Write( out, link_map, version ); \
+NiBlendInterpolator::Write( out, link_map, version ); \
 NifStream( floatValue, out, version ); \
 
 #define NI_BLEND_FLOAT_INTERPOLATOR_STRING \
 stringstream out; \
-out << ABlendInterpolator::asString(); \
+out << NiBlendInterpolator::asString(); \
 out << "Float Value:  " << floatValue << endl; \
 return out.str(); \
 
 #define NI_BLEND_FLOAT_INTERPOLATOR_FIXLINKS \
-ABlendInterpolator::FixLinks( objects, link_stack, version ); \
+NiBlendInterpolator::FixLinks( objects, link_stack, version ); \
 
 #define NI_BLEND_POINT3_INTERPOLATOR_MEMBERS \
-Vector3 point3Value; \
+Vector3 pointValue; \
 
-#define NI_BLEND_POINT3_INTERPOLATOR_INCLUDE "ABlendInterpolator.h" \
+#define NI_BLEND_POINT3_INTERPOLATOR_INCLUDE "NiBlendInterpolator.h" \
 
-#define NI_BLEND_POINT3_INTERPOLATOR_PARENT ABlendInterpolator \
+#define NI_BLEND_POINT3_INTERPOLATOR_PARENT NiBlendInterpolator \
 
 #define NI_BLEND_POINT3_INTERPOLATOR_CONSTRUCT \
 
 #define NI_BLEND_POINT3_INTERPOLATOR_READ \
-ABlendInterpolator::Read( in, link_stack, version ); \
-NifStream( point3Value, in, version ); \
+NiBlendInterpolator::Read( in, link_stack, version ); \
+NifStream( pointValue, in, version ); \
 
 #define NI_BLEND_POINT3_INTERPOLATOR_WRITE \
-ABlendInterpolator::Write( out, link_map, version ); \
-NifStream( point3Value, out, version ); \
+NiBlendInterpolator::Write( out, link_map, version ); \
+NifStream( pointValue, out, version ); \
 
 #define NI_BLEND_POINT3_INTERPOLATOR_STRING \
 stringstream out; \
-out << ABlendInterpolator::asString(); \
-out << "Point3 Value:  " << point3Value << endl; \
+out << NiBlendInterpolator::asString(); \
+out << "Point Value:  " << pointValue << endl; \
 return out.str(); \
 
 #define NI_BLEND_POINT3_INTERPOLATOR_FIXLINKS \
-ABlendInterpolator::FixLinks( objects, link_stack, version ); \
+NiBlendInterpolator::FixLinks( objects, link_stack, version ); \
 
 #define NI_BLEND_TRANSFORM_INTERPOLATOR_MEMBERS \
 
-#define NI_BLEND_TRANSFORM_INTERPOLATOR_INCLUDE "ABlendInterpolator.h" \
+#define NI_BLEND_TRANSFORM_INTERPOLATOR_INCLUDE "NiBlendInterpolator.h" \
 
-#define NI_BLEND_TRANSFORM_INTERPOLATOR_PARENT ABlendInterpolator \
+#define NI_BLEND_TRANSFORM_INTERPOLATOR_PARENT NiBlendInterpolator \
 
 #define NI_BLEND_TRANSFORM_INTERPOLATOR_CONSTRUCT \
 
 #define NI_BLEND_TRANSFORM_INTERPOLATOR_READ \
-ABlendInterpolator::Read( in, link_stack, version ); \
+NiBlendInterpolator::Read( in, link_stack, version ); \
 
 #define NI_BLEND_TRANSFORM_INTERPOLATOR_WRITE \
-ABlendInterpolator::Write( out, link_map, version ); \
+NiBlendInterpolator::Write( out, link_map, version ); \
 
 #define NI_BLEND_TRANSFORM_INTERPOLATOR_STRING \
 stringstream out; \
-out << ABlendInterpolator::asString(); \
+out << NiBlendInterpolator::asString(); \
 return out.str(); \
 
 #define NI_BLEND_TRANSFORM_INTERPOLATOR_FIXLINKS \
-ABlendInterpolator::FixLinks( objects, link_stack, version ); \
+NiBlendInterpolator::FixLinks( objects, link_stack, version ); \
 
 #define NI_BONE_L_O_D_CONTROLLER_MEMBERS \
 vector<SkinShapeGroup > shapeGroups1; \
@@ -4844,14 +4970,23 @@ for (uint i0 = 0; i0 < numShapeGroups; i0++) { \
   uint shapeGroups1_numLinkPairs; \
   shapeGroups1_numLinkPairs = uint(shapeGroups1[i0].linkPairs.size()); \
   for (uint i1 = 0; i1 < shapeGroups1_numLinkPairs; i1++) { \
-    shapeGroups1[i0].linkPairs[i1].shape = DynamicCast<NiTriShape>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      shapeGroups1[i0].linkPairs[i1].shape = DynamicCast<NiTriShape>(objects[link_stack.front()]); \
+    else \
+      shapeGroups1[i0].linkPairs[i1].shape = NULL; \
     link_stack.pop_front(); \
-    shapeGroups1[i0].linkPairs[i1].skinInstance = DynamicCast<NiSkinInstance>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      shapeGroups1[i0].linkPairs[i1].skinInstance = DynamicCast<NiSkinInstance>(objects[link_stack.front()]); \
+    else \
+      shapeGroups1[i0].linkPairs[i1].skinInstance = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
 for (uint i0 = 0; i0 < numShapeGroups2; i0++) { \
-  shapeGroups2[i0] = DynamicCast<NiTriShape>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    shapeGroups2[i0] = DynamicCast<NiTriShape>(objects[link_stack.front()]); \
+  else \
+    shapeGroups2[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -4934,68 +5069,74 @@ NiExtraData::FixLinks( objects, link_stack, version ); \
 bool boolValue; \
 Ref<NiBoolData > data; \
 
-#define NI_BOOL_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+#define NI_BOOL_INTERPOLATOR_INCLUDE "NiInterpolator.h" \
 
-#define NI_BOOL_INTERPOLATOR_PARENT AInterpolator \
+#define NI_BOOL_INTERPOLATOR_PARENT NiInterpolator \
 
 #define NI_BOOL_INTERPOLATOR_CONSTRUCT \
 
 #define NI_BOOL_INTERPOLATOR_READ \
 uint block_num; \
-AInterpolator::Read( in, link_stack, version ); \
+NiInterpolator::Read( in, link_stack, version ); \
 NifStream( boolValue, in, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_BOOL_INTERPOLATOR_WRITE \
-AInterpolator::Write( out, link_map, version ); \
+NiInterpolator::Write( out, link_map, version ); \
 NifStream( boolValue, out, version ); \
 NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_BOOL_INTERPOLATOR_STRING \
 stringstream out; \
-out << AInterpolator::asString(); \
+out << NiInterpolator::asString(); \
 out << "Bool Value:  " << boolValue << endl; \
 out << "Data:  " << data << endl; \
 return out.str(); \
 
 #define NI_BOOL_INTERPOLATOR_FIXLINKS \
-AInterpolator::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiBoolData>(objects[link_stack.front()]); \
+NiInterpolator::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiBoolData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define NI_BOOL_TIMELINE_INTERPOLATOR_MEMBERS \
 byte boolValue; \
 Ref<NiBoolData > data; \
 
-#define NI_BOOL_TIMELINE_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+#define NI_BOOL_TIMELINE_INTERPOLATOR_INCLUDE "NiInterpolator.h" \
 
-#define NI_BOOL_TIMELINE_INTERPOLATOR_PARENT AInterpolator \
+#define NI_BOOL_TIMELINE_INTERPOLATOR_PARENT NiInterpolator \
 
 #define NI_BOOL_TIMELINE_INTERPOLATOR_CONSTRUCT \
 
 #define NI_BOOL_TIMELINE_INTERPOLATOR_READ \
 uint block_num; \
-AInterpolator::Read( in, link_stack, version ); \
+NiInterpolator::Read( in, link_stack, version ); \
 NifStream( boolValue, in, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_BOOL_TIMELINE_INTERPOLATOR_WRITE \
-AInterpolator::Write( out, link_map, version ); \
+NiInterpolator::Write( out, link_map, version ); \
 NifStream( boolValue, out, version ); \
 NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_BOOL_TIMELINE_INTERPOLATOR_STRING \
 stringstream out; \
-out << AInterpolator::asString(); \
+out << NiInterpolator::asString(); \
 out << "Bool Value:  " << boolValue << endl; \
 out << "Data:  " << data << endl; \
 return out.str(); \
 
 #define NI_BOOL_TIMELINE_INTERPOLATOR_FIXLINKS \
-AInterpolator::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiBoolData>(objects[link_stack.front()]); \
+NiInterpolator::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiBoolData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define NI_B_S_BONE_L_O_D_CONTROLLER_MEMBERS \
@@ -5049,35 +5190,35 @@ NiObject::FixLinks( objects, link_stack, version ); \
 #define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_MEMBERS \
 vector<float > unknownFloats; \
 
-#define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_INCLUDE "ABSplineCompInterpolator.h" \
+#define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_INCLUDE "NiBSplineInterpolator.h" \
 
-#define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_PARENT ABSplineCompInterpolator \
+#define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_PARENT NiBSplineInterpolator \
 
 #define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_CONSTRUCT \
 
 #define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_READ \
-ABSplineCompInterpolator::Read( in, link_stack, version ); \
+NiBSplineInterpolator::Read( in, link_stack, version ); \
 unknownFloats.resize(6); \
 for (uint i0 = 0; i0 < 6; i0++) { \
   NifStream( unknownFloats[i0], in, version ); \
 }; \
 
 #define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_WRITE \
-ABSplineCompInterpolator::Write( out, link_map, version ); \
+NiBSplineInterpolator::Write( out, link_map, version ); \
 for (uint i0 = 0; i0 < 6; i0++) { \
   NifStream( unknownFloats[i0], out, version ); \
 }; \
 
 #define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_STRING \
 stringstream out; \
-out << ABSplineCompInterpolator::asString(); \
+out << NiBSplineInterpolator::asString(); \
 for (uint i0 = 0; i0 < 6; i0++) { \
   out << "  Unknown Floats[" << i0 << "]:  " << unknownFloats[i0] << endl; \
 }; \
 return out.str(); \
 
 #define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_FIXLINKS \
-ABSplineCompInterpolator::FixLinks( objects, link_stack, version ); \
+NiBSplineInterpolator::FixLinks( objects, link_stack, version ); \
 for (uint i0 = 0; i0 < 6; i0++) { \
 }; \
 
@@ -5086,15 +5227,15 @@ Ref<NiBSplineData > data; \
 Ref<NiObject > unknownLink; \
 vector<float > unknownFloats; \
 
-#define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_INCLUDE "ABSplineCompInterpolator.h" \
+#define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_INCLUDE "NiBSplineInterpolator.h" \
 
-#define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENT ABSplineCompInterpolator \
+#define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENT NiBSplineInterpolator \
 
 #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_CONSTRUCT \
 
 #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_READ \
 uint block_num; \
-ABSplineCompInterpolator::Read( in, link_stack, version ); \
+NiBSplineInterpolator::Read( in, link_stack, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 NifStream( block_num, in, version ); \
@@ -5105,7 +5246,7 @@ for (uint i0 = 0; i0 < 6; i0++) { \
 }; \
 
 #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_WRITE \
-ABSplineCompInterpolator::Write( out, link_map, version ); \
+NiBSplineInterpolator::Write( out, link_map, version ); \
 NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 NifStream( link_map[StaticCast<NiObject>(unknownLink)], out, version ); \
 for (uint i0 = 0; i0 < 6; i0++) { \
@@ -5114,7 +5255,7 @@ for (uint i0 = 0; i0 < 6; i0++) { \
 
 #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_STRING \
 stringstream out; \
-out << ABSplineCompInterpolator::asString(); \
+out << NiBSplineInterpolator::asString(); \
 out << "Data:  " << data << endl; \
 out << "Unknown Link:  " << unknownLink << endl; \
 for (uint i0 = 0; i0 < 6; i0++) { \
@@ -5123,10 +5264,16 @@ for (uint i0 = 0; i0 < 6; i0++) { \
 return out.str(); \
 
 #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_FIXLINKS \
-ABSplineCompInterpolator::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiBSplineData>(objects[link_stack.front()]); \
+NiBSplineInterpolator::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiBSplineData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
-unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  unknownLink = NULL; \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < 6; i0++) { \
 }; \
@@ -5136,15 +5283,15 @@ Ref<NiBSplineData > data; \
 Ref<NiBSplineBasisData > basisData; \
 vector<float > unknown4; \
 
-#define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_INCLUDE "ABSplineCompInterpolator.h" \
+#define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_INCLUDE "NiBSplineInterpolator.h" \
 
-#define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_PARENT ABSplineCompInterpolator \
+#define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_PARENT NiBSplineInterpolator \
 
 #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_CONSTRUCT \
 
 #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_READ \
 uint block_num; \
-ABSplineCompInterpolator::Read( in, link_stack, version ); \
+NiBSplineInterpolator::Read( in, link_stack, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 NifStream( block_num, in, version ); \
@@ -5155,7 +5302,7 @@ for (uint i0 = 0; i0 < 17; i0++) { \
 }; \
 
 #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_WRITE \
-ABSplineCompInterpolator::Write( out, link_map, version ); \
+NiBSplineInterpolator::Write( out, link_map, version ); \
 NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 NifStream( link_map[StaticCast<NiObject>(basisData)], out, version ); \
 for (uint i0 = 0; i0 < 17; i0++) { \
@@ -5164,7 +5311,7 @@ for (uint i0 = 0; i0 < 17; i0++) { \
 
 #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_STRING \
 stringstream out; \
-out << ABSplineCompInterpolator::asString(); \
+out << NiBSplineInterpolator::asString(); \
 out << "Data:  " << data << endl; \
 out << "Basis Data:  " << basisData << endl; \
 for (uint i0 = 0; i0 < 17; i0++) { \
@@ -5173,10 +5320,16 @@ for (uint i0 = 0; i0 < 17; i0++) { \
 return out.str(); \
 
 #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_FIXLINKS \
-ABSplineCompInterpolator::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiBSplineData>(objects[link_stack.front()]); \
+NiBSplineInterpolator::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiBSplineData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
-basisData = DynamicCast<NiBSplineBasisData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  basisData = DynamicCast<NiBSplineBasisData>(objects[link_stack.front()]); \
+else \
+  basisData = NULL; \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < 17; i0++) { \
 }; \
@@ -5343,7 +5496,10 @@ if ( version >= 0x0A010000 ) { \
 }; \
 if ( version >= 0x0A010000 ) { \
 }; \
-unknownLink_ = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink_ = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  unknownLink_ = NULL; \
 link_stack.pop_front(); \
 if ( version >= 0x04020100 ) { \
 }; \
@@ -5435,7 +5591,10 @@ return out.str(); \
 
 #define NI_COLLISION_DATA_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-targetNode = DynamicCast<NiNode>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  targetNode = DynamicCast<NiNode>(objects[link_stack.front()]); \
+else \
+  targetNode = NULL; \
 link_stack.pop_front(); \
 if ( (collisionType == 0) ) { \
 }; \
@@ -5577,10 +5736,16 @@ NiTimeController::FixLinks( objects, link_stack, version ); \
 uint numControllerSequences; \
 numControllerSequences = uint(controllerSequences.size()); \
 for (uint i0 = 0; i0 < numControllerSequences; i0++) { \
-  controllerSequences[i0] = DynamicCast<NiControllerSequence>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    controllerSequences[i0] = DynamicCast<NiControllerSequence>(objects[link_stack.front()]); \
+  else \
+    controllerSequences[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
-objectPalette = DynamicCast<NiDefaultAVObjectPalette>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  objectPalette = DynamicCast<NiDefaultAVObjectPalette>(objects[link_stack.front()]); \
+else \
+  objectPalette = NULL; \
 link_stack.pop_front(); \
 
 #define NI_CONTROLLER_SEQUENCE_MEMBERS \
@@ -5959,20 +6124,32 @@ numControlledBlocks = uint(controlledBlocks.size()); \
 if ( version <= 0x0A010000 ) { \
   if ( version <= 0x0A010000 ) { \
   }; \
-  textKeys.interpolator = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    textKeys.interpolator = DynamicCast<NiInterpolator>(objects[link_stack.front()]); \
+  else \
+    textKeys.interpolator = NULL; \
   link_stack.pop_front(); \
   if ( version >= 0x0A01006A ) { \
-    textKeys.unknownLink1 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      textKeys.unknownLink1 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    else \
+      textKeys.unknownLink1 = NULL; \
     link_stack.pop_front(); \
   }; \
   if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
-    textKeys.unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      textKeys.unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    else \
+      textKeys.unknownLink2 = NULL; \
     link_stack.pop_front(); \
   }; \
   if ( version >= 0x0A01006A ) { \
   }; \
   if ( version >= 0x0A020000 ) { \
-    textKeys.stringPalette = DynamicCast<NiStringPalette>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      textKeys.stringPalette = DynamicCast<NiStringPalette>(objects[link_stack.front()]); \
+    else \
+      textKeys.stringPalette = NULL; \
     link_stack.pop_front(); \
   }; \
   if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
@@ -6001,20 +6178,32 @@ if ( version >= 0x0A01006A ) { \
 for (uint i0 = 0; i0 < numControlledBlocks; i0++) { \
   if ( version <= 0x0A010000 ) { \
   }; \
-  controlledBlocks[i0].interpolator = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    controlledBlocks[i0].interpolator = DynamicCast<NiInterpolator>(objects[link_stack.front()]); \
+  else \
+    controlledBlocks[i0].interpolator = NULL; \
   link_stack.pop_front(); \
   if ( version >= 0x0A01006A ) { \
-    controlledBlocks[i0].unknownLink1 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      controlledBlocks[i0].unknownLink1 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    else \
+      controlledBlocks[i0].unknownLink1 = NULL; \
     link_stack.pop_front(); \
   }; \
   if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
-    controlledBlocks[i0].unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      controlledBlocks[i0].unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    else \
+      controlledBlocks[i0].unknownLink2 = NULL; \
     link_stack.pop_front(); \
   }; \
   if ( version >= 0x0A01006A ) { \
   }; \
   if ( version >= 0x0A020000 ) { \
-    controlledBlocks[i0].stringPalette = DynamicCast<NiStringPalette>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      controlledBlocks[i0].stringPalette = DynamicCast<NiStringPalette>(objects[link_stack.front()]); \
+    else \
+      controlledBlocks[i0].stringPalette = NULL; \
     link_stack.pop_front(); \
   }; \
   if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
@@ -6039,7 +6228,10 @@ for (uint i0 = 0; i0 < numControlledBlocks; i0++) { \
   }; \
 }; \
 if ( version >= 0x0A01006A ) { \
-  textKeys2 = DynamicCast<NiTextKeyExtraData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    textKeys2 = DynamicCast<NiTextKeyExtraData>(objects[link_stack.front()]); \
+  else \
+    textKeys2 = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
@@ -6051,17 +6243,23 @@ if ( ( version >= 0x0A020000 ) && ( version <= 0x0A020000 ) ) { \
 if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
 }; \
 if ( version >= 0x0A01006A ) { \
-  manager = DynamicCast<NiControllerManager>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    manager = DynamicCast<NiControllerManager>(objects[link_stack.front()]); \
+  else \
+    manager = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x0A020000 ) { \
-  stringPalette = DynamicCast<NiStringPalette>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    stringPalette = DynamicCast<NiStringPalette>(objects[link_stack.front()]); \
+  else \
+    stringPalette = NULL; \
   link_stack.pop_front(); \
 }; \
 
 #define NI_DEFAULT_A_V_OBJECT_PALETTE_MEMBERS \
 uint unknownInt; \
-vector<AVObject > theObjects; \
+vector<AVObject > objs; \
 
 #define NI_DEFAULT_A_V_OBJECT_PALETTE_INCLUDE "NiObject.h" \
 
@@ -6072,46 +6270,49 @@ vector<AVObject > theObjects; \
 #define NI_DEFAULT_A_V_OBJECT_PALETTE_READ \
 uint block_num; \
 NiObject::Read( in, link_stack, version ); \
-uint numObjects; \
+uint numObjs; \
 NifStream( unknownInt, in, version ); \
-NifStream( numObjects, in, version ); \
-theObjects.resize(numObjects); \
-for (uint i0 = 0; i0 < numObjects; i0++) { \
-  NifStream( theObjects[i0].name, in, version ); \
+NifStream( numObjs, in, version ); \
+objs.resize(numObjs); \
+for (uint i0 = 0; i0 < numObjs; i0++) { \
+  NifStream( objs[i0].name, in, version ); \
   NifStream( block_num, in, version ); \
   link_stack.push_back( block_num ); \
 }; \
 
 #define NI_DEFAULT_A_V_OBJECT_PALETTE_WRITE \
 NiObject::Write( out, link_map, version ); \
-uint numObjects; \
-numObjects = uint(theObjects.size()); \
+uint numObjs; \
+numObjs = uint(objs.size()); \
 NifStream( unknownInt, out, version ); \
-NifStream( numObjects, out, version ); \
-for (uint i0 = 0; i0 < numObjects; i0++) { \
-  NifStream( theObjects[i0].name, out, version ); \
-  NifStream( link_map[StaticCast<NiObject>(theObjects[i0].object)], out, version ); \
+NifStream( numObjs, out, version ); \
+for (uint i0 = 0; i0 < numObjs; i0++) { \
+  NifStream( objs[i0].name, out, version ); \
+  NifStream( link_map[StaticCast<NiObject>(objs[i0].object)], out, version ); \
 }; \
 
 #define NI_DEFAULT_A_V_OBJECT_PALETTE_STRING \
 stringstream out; \
 out << NiObject::asString(); \
-uint numObjects; \
-numObjects = uint(theObjects.size()); \
+uint numObjs; \
+numObjs = uint(objs.size()); \
 out << "Unknown Int:  " << unknownInt << endl; \
-out << "Num Objects:  " << numObjects << endl; \
-for (uint i0 = 0; i0 < numObjects; i0++) { \
-  out << "  Name:  " << theObjects[i0].name << endl; \
-  out << "  Object:  " << theObjects[i0].object << endl; \
+out << "Num Objs:  " << numObjs << endl; \
+for (uint i0 = 0; i0 < numObjs; i0++) { \
+  out << "  Name:  " << objs[i0].name << endl; \
+  out << "  Object:  " << objs[i0].object << endl; \
 }; \
 return out.str(); \
 
 #define NI_DEFAULT_A_V_OBJECT_PALETTE_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-uint numObjects; \
-numObjects = uint(theObjects.size()); \
-for (uint i0 = 0; i0 < numObjects; i0++) { \
-  theObjects[i0].object = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
+uint numObjs; \
+numObjs = uint(objs.size()); \
+for (uint i0 = 0; i0 < numObjs; i0++) { \
+  if (link_stack.front() != 0xffffffff) \
+    objs[i0].object = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
+  else \
+    objs[i0].object = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -6226,7 +6427,10 @@ numSources = uint(sources.size()); \
 if ( version <= 0x0A010000 ) { \
 }; \
 for (uint i0 = 0; i0 < numSources; i0++) { \
-  sources[i0] = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    sources[i0] = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  else \
+    sources[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -6341,7 +6545,10 @@ return out.str(); \
 #define NI_FLOAT_EXTRA_DATA_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x14000004 ) { \
-  unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+  else \
+    unknownLink = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -6349,34 +6556,37 @@ if ( version >= 0x14000004 ) { \
 float floatValue; \
 Ref<NiFloatData > data; \
 
-#define NI_FLOAT_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+#define NI_FLOAT_INTERPOLATOR_INCLUDE "NiInterpolator.h" \
 
-#define NI_FLOAT_INTERPOLATOR_PARENT AInterpolator \
+#define NI_FLOAT_INTERPOLATOR_PARENT NiInterpolator \
 
 #define NI_FLOAT_INTERPOLATOR_CONSTRUCT \
 
 #define NI_FLOAT_INTERPOLATOR_READ \
 uint block_num; \
-AInterpolator::Read( in, link_stack, version ); \
+NiInterpolator::Read( in, link_stack, version ); \
 NifStream( floatValue, in, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_FLOAT_INTERPOLATOR_WRITE \
-AInterpolator::Write( out, link_map, version ); \
+NiInterpolator::Write( out, link_map, version ); \
 NifStream( floatValue, out, version ); \
 NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_FLOAT_INTERPOLATOR_STRING \
 stringstream out; \
-out << AInterpolator::asString(); \
+out << NiInterpolator::asString(); \
 out << "Float Value:  " << floatValue << endl; \
 out << "Data:  " << data << endl; \
 return out.str(); \
 
 #define NI_FLOAT_INTERPOLATOR_FIXLINKS \
-AInterpolator::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+NiInterpolator::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define NI_FLOATS_EXTRA_DATA_MEMBERS \
@@ -6463,7 +6673,7 @@ ushort unknown; \
 byte unknown2; \
 Ref<NiMorphData > data; \
 byte unknownByte; \
-vector<Ref<AInterpolator > > interpolators; \
+vector<Ref<NiInterpolator > > interpolators; \
 vector<uint > unknownInts; \
 
 #define NI_GEOM_MORPHER_CONTROLLER_INCLUDE "NiTimeController.h" \
@@ -6560,11 +6770,17 @@ if ( version >= 0x0A010000 ) { \
 }; \
 if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
 }; \
-data = DynamicCast<NiMorphData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiMorphData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 if ( version >= 0x0A01006A ) { \
   for (uint i1 = 0; i1 < numInterpolators; i1++) { \
-    interpolators[i1] = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      interpolators[i1] = DynamicCast<NiInterpolator>(objects[link_stack.front()]); \
+    else \
+      interpolators[i1] = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
@@ -6713,7 +6929,10 @@ return out.str(); \
 
 #define NI_KEYFRAME_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiKeyframeData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiKeyframeData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define B_S_KEYFRAME_CONTROLLER_MEMBERS \
@@ -6743,7 +6962,10 @@ return out.str(); \
 
 #define B_S_KEYFRAME_CONTROLLER_FIXLINKS \
 NiKeyframeController::FixLinks( objects, link_stack, version ); \
-data2 = DynamicCast<NiKeyframeData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  data2 = DynamicCast<NiKeyframeData>(objects[link_stack.front()]); \
+else \
+  data2 = NULL; \
 link_stack.pop_front(); \
 
 #define NI_KEYFRAME_DATA_MEMBERS \
@@ -6973,16 +7195,22 @@ NiTimeController::FixLinks( objects, link_stack, version ); \
 if ( ( version >= 0x0A010000 ) && ( version <= 0x0A010000 ) ) { \
 }; \
 if ( version <= 0x0A010000 ) { \
-  data = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    data = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+  else \
+    data = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x0A020000 ) { \
-  interpolator = DynamicCast<NiPoint3Interpolator>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    interpolator = DynamicCast<NiPoint3Interpolator>(objects[link_stack.front()]); \
+  else \
+    interpolator = NULL; \
   link_stack.pop_front(); \
 }; \
 
 #define NI_LIGHT_DIMMER_CONTROLLER_MEMBERS \
-Ref<AInterpolator > unknownLink; \
+Ref<NiInterpolator > unknownLink; \
 
 #define NI_LIGHT_DIMMER_CONTROLLER_INCLUDE "NiTimeController.h" \
 
@@ -7008,7 +7236,10 @@ return out.str(); \
 
 #define NI_LIGHT_DIMMER_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
-unknownLink = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink = DynamicCast<NiInterpolator>(objects[link_stack.front()]); \
+else \
+  unknownLink = NULL; \
 link_stack.pop_front(); \
 
 #define NI_LOOK_AT_CONTROLLER_MEMBERS \
@@ -7048,7 +7279,10 @@ return out.str(); \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x0A010000 ) { \
 }; \
-lookAtNode = DynamicCast<NiNode>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  lookAtNode = DynamicCast<NiNode>(objects[link_stack.front()]); \
+else \
+  lookAtNode = NULL; \
 link_stack.pop_front(); \
 
 #define NI_LOOK_AT_INTERPOLATOR_MEMBERS \
@@ -7062,15 +7296,15 @@ Ref<NiPoint3Interpolator > unknownLink1; \
 Ref<NiFloatInterpolator > unknownLink2; \
 Ref<NiFloatInterpolator > unknownLink3; \
 
-#define NI_LOOK_AT_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+#define NI_LOOK_AT_INTERPOLATOR_INCLUDE "NiInterpolator.h" \
 
-#define NI_LOOK_AT_INTERPOLATOR_PARENT AInterpolator \
+#define NI_LOOK_AT_INTERPOLATOR_PARENT NiInterpolator \
 
 #define NI_LOOK_AT_INTERPOLATOR_CONSTRUCT \
 
 #define NI_LOOK_AT_INTERPOLATOR_READ \
 uint block_num; \
-AInterpolator::Read( in, link_stack, version ); \
+NiInterpolator::Read( in, link_stack, version ); \
 NifStream( unknownShort, in, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
@@ -7086,7 +7320,7 @@ NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_LOOK_AT_INTERPOLATOR_WRITE \
-AInterpolator::Write( out, link_map, version ); \
+NiInterpolator::Write( out, link_map, version ); \
 NifStream( unknownShort, out, version ); \
 NifStream( link_map[StaticCast<NiObject>(lookAt)], out, version ); \
 NifStream( unknownFloat, out, version ); \
@@ -7099,7 +7333,7 @@ NifStream( link_map[StaticCast<NiObject>(unknownLink3)], out, version ); \
 
 #define NI_LOOK_AT_INTERPOLATOR_STRING \
 stringstream out; \
-out << AInterpolator::asString(); \
+out << NiInterpolator::asString(); \
 out << "Unknown Short:  " << unknownShort << endl; \
 out << "Look At:  " << lookAt << endl; \
 out << "Unknown Float:  " << unknownFloat << endl; \
@@ -7112,19 +7346,31 @@ out << "Unknown Link 3:  " << unknownLink3 << endl; \
 return out.str(); \
 
 #define NI_LOOK_AT_INTERPOLATOR_FIXLINKS \
-AInterpolator::FixLinks( objects, link_stack, version ); \
-lookAt = DynamicCast<NiNode>(objects[link_stack.front()]); \
+NiInterpolator::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  lookAt = DynamicCast<NiNode>(objects[link_stack.front()]); \
+else \
+  lookAt = NULL; \
 link_stack.pop_front(); \
-unknownLink1 = DynamicCast<NiPoint3Interpolator>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink1 = DynamicCast<NiPoint3Interpolator>(objects[link_stack.front()]); \
+else \
+  unknownLink1 = NULL; \
 link_stack.pop_front(); \
-unknownLink2 = DynamicCast<NiFloatInterpolator>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink2 = DynamicCast<NiFloatInterpolator>(objects[link_stack.front()]); \
+else \
+  unknownLink2 = NULL; \
 link_stack.pop_front(); \
-unknownLink3 = DynamicCast<NiFloatInterpolator>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink3 = DynamicCast<NiFloatInterpolator>(objects[link_stack.front()]); \
+else \
+  unknownLink3 = NULL; \
 link_stack.pop_front(); \
 
 #define NI_MATERIAL_COLOR_CONTROLLER_MEMBERS \
 ushort unknown; \
-Ref<NiColorData > data; \
+Ref<NiPosData > data; \
 
 #define NI_MATERIAL_COLOR_CONTROLLER_INCLUDE "NiSingleInterpolatorController.h" \
 
@@ -7164,7 +7410,10 @@ NiSingleInterpolatorController::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x0A010000 ) { \
 }; \
 if ( version <= 0x0A010000 ) { \
-  data = DynamicCast<NiColorData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    data = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+  else \
+    data = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -7414,19 +7663,28 @@ if ( version >= 0x14000005 ) { \
   }; \
 }; \
 if ( version <= 0x14000004 ) { \
-  modifier = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    modifier = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
+  else \
+    modifier = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( ( version >= 0x0A020000 ) && ( version <= 0x14000004 ) ) { \
   for (uint i1 = 0; i1 < numUnknownLinks; i1++) { \
-    unknownLinks[i1] = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      unknownLinks[i1] = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
+    else \
+      unknownLinks[i1] = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
 if ( version >= 0x14000005 ) { \
 }; \
 if ( version >= 0x0A020000 ) { \
-  unknownLink2 = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    unknownLink2 = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  else \
+    unknownLink2 = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -7586,7 +7844,10 @@ NiTimeController::FixLinks( objects, link_stack, version ); \
 ushort numExtraTargets; \
 numExtraTargets = ushort(extraTargets.size()); \
 for (uint i0 = 0; i0 < numExtraTargets; i0++) { \
-  extraTargets[i0] = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    extraTargets[i0] = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  else \
+    extraTargets[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -7657,11 +7918,17 @@ numEffects = uint(effects.size()); \
 uint numChildren; \
 numChildren = uint(children.size()); \
 for (uint i0 = 0; i0 < numChildren; i0++) { \
-  children[i0] = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    children[i0] = DynamicCast<NiAVObject>(objects[link_stack.front()]); \
+  else \
+    children[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 for (uint i0 = 0; i0 < numEffects; i0++) { \
-  effects[i0] = DynamicCast<NiDynamicEffect>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    effects[i0] = DynamicCast<NiDynamicEffect>(objects[link_stack.front()]); \
+  else \
+    effects[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -7805,7 +8072,10 @@ FxWidget::FixLinks( objects, link_stack, version ); \
 uint numUnknownLinks; \
 numUnknownLinks = uint(unknownLinks.size()); \
 for (uint i0 = 0; i0 < numUnknownLinks; i0++) { \
-  unknownLinks[i0] = DynamicCast<NiObject>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    unknownLinks[i0] = DynamicCast<NiObject>(objects[link_stack.front()]); \
+  else \
+    unknownLinks[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -7965,7 +8235,10 @@ if ( (lodType == 0) ) { \
   }; \
 }; \
 if ( (lodType == 1) ) { \
-  rangeData = DynamicCast<NiRangeLODData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    rangeData = DynamicCast<NiRangeLODData>(objects[link_stack.front()]); \
+  else \
+    rangeData = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -8119,7 +8392,10 @@ return out.str(); \
 
 #define NI_PARTICLE_COLOR_MODIFIER_FIXLINKS \
 AParticleModifier::FixLinks( objects, link_stack, version ); \
-colorData = DynamicCast<NiColorData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  colorData = DynamicCast<NiColorData>(objects[link_stack.front()]); \
+else \
+  colorData = NULL; \
 link_stack.pop_front(); \
 
 #define NI_PARTICLE_GROW_FADE_MEMBERS \
@@ -8183,7 +8459,10 @@ return out.str(); \
 
 #define NI_PARTICLE_MESH_MODIFIER_FIXLINKS \
 AParticleModifier::FixLinks( objects, link_stack, version ); \
-particleMeshes = DynamicCast<NiTriBasedGeom>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  particleMeshes = DynamicCast<NiTriBasedGeom>(objects[link_stack.front()]); \
+else \
+  particleMeshes = NULL; \
 link_stack.pop_front(); \
 
 #define NI_PARTICLE_ROTATION_MEMBERS \
@@ -8403,12 +8682,15 @@ return out.str(); \
 
 #define NI_PARTICLE_MESHES_DATA_FIXLINKS \
 NiParticlesData::FixLinks( objects, link_stack, version ); \
-unknownLink2 = DynamicCast<NiTriBasedGeom>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink2 = DynamicCast<NiTriBasedGeom>(objects[link_stack.front()]); \
+else \
+  unknownLink2 = NULL; \
 link_stack.pop_front(); \
 
 #define NI_PARTICLE_SYSTEM_MEMBERS \
 bool unknownBool; \
-vector<Ref<APSysModifier > > modifiers; \
+vector<Ref<NiPSysModifier > > modifiers; \
 
 #define NI_PARTICLE_SYSTEM_INCLUDE "NiParticles.h" \
 
@@ -8460,7 +8742,10 @@ uint numModifiers; \
 numModifiers = uint(modifiers.size()); \
 if ( version >= 0x0A010000 ) { \
   for (uint i1 = 0; i1 < numModifiers; i1++) { \
-    modifiers[i1] = DynamicCast<APSysModifier>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      modifiers[i1] = DynamicCast<NiPSysModifier>(objects[link_stack.front()]); \
+    else \
+      modifiers[i1] = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
@@ -8684,15 +8969,27 @@ return out.str(); \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 ushort numParticles; \
 numParticles = ushort(particles.size()); \
-emitter = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  emitter = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  emitter = NULL; \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < numParticles; i0++) { \
 }; \
-unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  unknownLink = NULL; \
 link_stack.pop_front(); \
-particleExtra = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  particleExtra = DynamicCast<AParticleModifier>(objects[link_stack.front()]); \
+else \
+  particleExtra = NULL; \
 link_stack.pop_front(); \
-unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink2 = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  unknownLink2 = NULL; \
 link_stack.pop_front(); \
 
 #define NI_B_S_P_ARRAY_CONTROLLER_MEMBERS \
@@ -8775,9 +9072,15 @@ return out.str(); \
 NiTimeController::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x0A010000 ) { \
 }; \
-posData = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  posData = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+else \
+  posData = NULL; \
 link_stack.pop_front(); \
-floatData = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  floatData = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+else \
+  floatData = NULL; \
 link_stack.pop_front(); \
 
 #define NI_PATH_INTERPOLATOR_MEMBERS \
@@ -8787,15 +9090,15 @@ ushort unknownShort2; \
 Ref<NiPosData > posData; \
 Ref<NiFloatData > floatData; \
 
-#define NI_PATH_INTERPOLATOR_INCLUDE "ABlendInterpolator.h" \
+#define NI_PATH_INTERPOLATOR_INCLUDE "NiBlendInterpolator.h" \
 
-#define NI_PATH_INTERPOLATOR_PARENT ABlendInterpolator \
+#define NI_PATH_INTERPOLATOR_PARENT NiBlendInterpolator \
 
 #define NI_PATH_INTERPOLATOR_CONSTRUCT \
 
 #define NI_PATH_INTERPOLATOR_READ \
 uint block_num; \
-ABlendInterpolator::Read( in, link_stack, version ); \
+NiBlendInterpolator::Read( in, link_stack, version ); \
 NifStream( unknownFloat1, in, version ); \
 NifStream( unknownFloat2, in, version ); \
 NifStream( unknownShort2, in, version ); \
@@ -8805,7 +9108,7 @@ NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_PATH_INTERPOLATOR_WRITE \
-ABlendInterpolator::Write( out, link_map, version ); \
+NiBlendInterpolator::Write( out, link_map, version ); \
 NifStream( unknownFloat1, out, version ); \
 NifStream( unknownFloat2, out, version ); \
 NifStream( unknownShort2, out, version ); \
@@ -8814,7 +9117,7 @@ NifStream( link_map[StaticCast<NiObject>(floatData)], out, version ); \
 
 #define NI_PATH_INTERPOLATOR_STRING \
 stringstream out; \
-out << ABlendInterpolator::asString(); \
+out << NiBlendInterpolator::asString(); \
 out << "Unknown Float 1:  " << unknownFloat1 << endl; \
 out << "Unknown Float 2:  " << unknownFloat2 << endl; \
 out << "Unknown Short 2:  " << unknownShort2 << endl; \
@@ -8823,10 +9126,16 @@ out << "Float Data:  " << floatData << endl; \
 return out.str(); \
 
 #define NI_PATH_INTERPOLATOR_FIXLINKS \
-ABlendInterpolator::FixLinks( objects, link_stack, version ); \
-posData = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+NiBlendInterpolator::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  posData = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+else \
+  posData = NULL; \
 link_stack.pop_front(); \
-floatData = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  floatData = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+else \
+  floatData = NULL; \
 link_stack.pop_front(); \
 
 #define NI_PIXEL_DATA_MEMBERS \
@@ -8985,7 +9294,10 @@ if ( version >= 0x14000004 ) { \
   for (uint i1 = 0; i1 < 54; i1++) { \
   }; \
 }; \
-palette = DynamicCast<NiPalette>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  palette = DynamicCast<NiPalette>(objects[link_stack.front()]); \
+else \
+  palette = NULL; \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < numMipmaps; i0++) { \
 }; \
@@ -9106,34 +9418,37 @@ if ( ( version >= 0x04020200 ) && ( version <= 0x04020200 ) ) { \
 Vector3 point3Value; \
 Ref<NiPosData > data; \
 
-#define NI_POINT3_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+#define NI_POINT3_INTERPOLATOR_INCLUDE "NiInterpolator.h" \
 
-#define NI_POINT3_INTERPOLATOR_PARENT AInterpolator \
+#define NI_POINT3_INTERPOLATOR_PARENT NiInterpolator \
 
 #define NI_POINT3_INTERPOLATOR_CONSTRUCT \
 
 #define NI_POINT3_INTERPOLATOR_READ \
 uint block_num; \
-AInterpolator::Read( in, link_stack, version ); \
+NiInterpolator::Read( in, link_stack, version ); \
 NifStream( point3Value, in, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_POINT3_INTERPOLATOR_WRITE \
-AInterpolator::Write( out, link_map, version ); \
+NiInterpolator::Write( out, link_map, version ); \
 NifStream( point3Value, out, version ); \
 NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_POINT3_INTERPOLATOR_STRING \
 stringstream out; \
-out << AInterpolator::asString(); \
+out << NiInterpolator::asString(); \
 out << "Point 3 Value:  " << point3Value << endl; \
 out << "Data:  " << data << endl; \
 return out.str(); \
 
 #define NI_POINT3_INTERPOLATOR_FIXLINKS \
-AInterpolator::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+NiInterpolator::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiPosData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define NI_POINT_LIGHT_MEMBERS \
@@ -9223,34 +9538,37 @@ for (uint i0 = 0; i0 < data.numKeys; i0++) { \
 bool spawnOnDeath; \
 Ref<NiPSysSpawnModifier > spawnModifier; \
 
-#define NI_P_SYS_AGE_DEATH_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_AGE_DEATH_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_AGE_DEATH_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_AGE_DEATH_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_AGE_DEATH_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_AGE_DEATH_MODIFIER_READ \
 uint block_num; \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( spawnOnDeath, in, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_P_SYS_AGE_DEATH_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( spawnOnDeath, out, version ); \
 NifStream( link_map[StaticCast<NiObject>(spawnModifier)], out, version ); \
 
 #define NI_P_SYS_AGE_DEATH_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Spawn on Death:  " << spawnOnDeath << endl; \
 out << "Spawn Modifier:  " << spawnModifier << endl; \
 return out.str(); \
 
 #define NI_P_SYS_AGE_DEATH_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
-spawnModifier = DynamicCast<NiPSysSpawnModifier>(objects[link_stack.front()]); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  spawnModifier = DynamicCast<NiPSysSpawnModifier>(objects[link_stack.front()]); \
+else \
+  spawnModifier = NULL; \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_BOMB_MODIFIER_MEMBERS \
@@ -9259,15 +9577,15 @@ vector<uint > unknownInts1; \
 vector<float > unknownFloats; \
 vector<uint > unknownInts2; \
 
-#define NI_P_SYS_BOMB_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_BOMB_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_BOMB_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_BOMB_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_BOMB_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_BOMB_MODIFIER_READ \
 uint block_num; \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 unknownInts1.resize(2); \
@@ -9284,7 +9602,7 @@ for (uint i0 = 0; i0 < 2; i0++) { \
 }; \
 
 #define NI_P_SYS_BOMB_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( link_map[StaticCast<NiObject>(unknownLink)], out, version ); \
 for (uint i0 = 0; i0 < 2; i0++) { \
   NifStream( unknownInts1[i0], out, version ); \
@@ -9298,7 +9616,7 @@ for (uint i0 = 0; i0 < 2; i0++) { \
 
 #define NI_P_SYS_BOMB_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Unknown Link:  " << unknownLink << endl; \
 for (uint i0 = 0; i0 < 2; i0++) { \
   out << "  Unknown Ints 1[" << i0 << "]:  " << unknownInts1[i0] << endl; \
@@ -9312,8 +9630,11 @@ for (uint i0 = 0; i0 < 2; i0++) { \
 return out.str(); \
 
 #define NI_P_SYS_BOMB_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
-unknownLink = DynamicCast<NiNode>(objects[link_stack.front()]); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink = DynamicCast<NiNode>(objects[link_stack.front()]); \
+else \
+  unknownLink = NULL; \
 link_stack.pop_front(); \
 for (uint i0 = 0; i0 < 2; i0++) { \
 }; \
@@ -9325,152 +9646,158 @@ for (uint i0 = 0; i0 < 2; i0++) { \
 #define NI_P_SYS_BOUND_UPDATE_MODIFIER_MEMBERS \
 ushort updateSkip; \
 
-#define NI_P_SYS_BOUND_UPDATE_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_BOUND_UPDATE_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_BOUND_UPDATE_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_BOUND_UPDATE_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_BOUND_UPDATE_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_BOUND_UPDATE_MODIFIER_READ \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( updateSkip, in, version ); \
 
 #define NI_P_SYS_BOUND_UPDATE_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( updateSkip, out, version ); \
 
 #define NI_P_SYS_BOUND_UPDATE_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Update Skip:  " << updateSkip << endl; \
 return out.str(); \
 
 #define NI_P_SYS_BOUND_UPDATE_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_BOX_EMITTER_MEMBERS \
 float width; \
 float height; \
 float depth; \
 
-#define NI_P_SYS_BOX_EMITTER_INCLUDE "APSysVolumeEmitter.h" \
+#define NI_P_SYS_BOX_EMITTER_INCLUDE "NiPSysVolumeEmitter.h" \
 
-#define NI_P_SYS_BOX_EMITTER_PARENT APSysVolumeEmitter \
+#define NI_P_SYS_BOX_EMITTER_PARENT NiPSysVolumeEmitter \
 
 #define NI_P_SYS_BOX_EMITTER_CONSTRUCT \
 
 #define NI_P_SYS_BOX_EMITTER_READ \
-APSysVolumeEmitter::Read( in, link_stack, version ); \
+NiPSysVolumeEmitter::Read( in, link_stack, version ); \
 NifStream( width, in, version ); \
 NifStream( height, in, version ); \
 NifStream( depth, in, version ); \
 
 #define NI_P_SYS_BOX_EMITTER_WRITE \
-APSysVolumeEmitter::Write( out, link_map, version ); \
+NiPSysVolumeEmitter::Write( out, link_map, version ); \
 NifStream( width, out, version ); \
 NifStream( height, out, version ); \
 NifStream( depth, out, version ); \
 
 #define NI_P_SYS_BOX_EMITTER_STRING \
 stringstream out; \
-out << APSysVolumeEmitter::asString(); \
+out << NiPSysVolumeEmitter::asString(); \
 out << "Width:  " << width << endl; \
 out << "Height:  " << height << endl; \
 out << "Depth:  " << depth << endl; \
 return out.str(); \
 
 #define NI_P_SYS_BOX_EMITTER_FIXLINKS \
-APSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
+NiPSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_COLLIDER_MANAGER_MEMBERS \
 Ref<NiPSysPlanarCollider > collider; \
 
-#define NI_P_SYS_COLLIDER_MANAGER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_COLLIDER_MANAGER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_COLLIDER_MANAGER_PARENT APSysModifier \
+#define NI_P_SYS_COLLIDER_MANAGER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_COLLIDER_MANAGER_CONSTRUCT \
 
 #define NI_P_SYS_COLLIDER_MANAGER_READ \
 uint block_num; \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_P_SYS_COLLIDER_MANAGER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( link_map[StaticCast<NiObject>(collider)], out, version ); \
 
 #define NI_P_SYS_COLLIDER_MANAGER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Collider:  " << collider << endl; \
 return out.str(); \
 
 #define NI_P_SYS_COLLIDER_MANAGER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
-collider = DynamicCast<NiPSysPlanarCollider>(objects[link_stack.front()]); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  collider = DynamicCast<NiPSysPlanarCollider>(objects[link_stack.front()]); \
+else \
+  collider = NULL; \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_COLOR_MODIFIER_MEMBERS \
 Ref<NiColorData > data; \
 
-#define NI_P_SYS_COLOR_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_COLOR_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_COLOR_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_COLOR_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_COLOR_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_COLOR_MODIFIER_READ \
 uint block_num; \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_P_SYS_COLOR_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_P_SYS_COLOR_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Data:  " << data << endl; \
 return out.str(); \
 
 #define NI_P_SYS_COLOR_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiColorData>(objects[link_stack.front()]); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiColorData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_CYLINDER_EMITTER_MEMBERS \
 float radius; \
 float height; \
 
-#define NI_P_SYS_CYLINDER_EMITTER_INCLUDE "APSysVolumeEmitter.h" \
+#define NI_P_SYS_CYLINDER_EMITTER_INCLUDE "NiPSysVolumeEmitter.h" \
 
-#define NI_P_SYS_CYLINDER_EMITTER_PARENT APSysVolumeEmitter \
+#define NI_P_SYS_CYLINDER_EMITTER_PARENT NiPSysVolumeEmitter \
 
 #define NI_P_SYS_CYLINDER_EMITTER_CONSTRUCT \
 
 #define NI_P_SYS_CYLINDER_EMITTER_READ \
-APSysVolumeEmitter::Read( in, link_stack, version ); \
+NiPSysVolumeEmitter::Read( in, link_stack, version ); \
 NifStream( radius, in, version ); \
 NifStream( height, in, version ); \
 
 #define NI_P_SYS_CYLINDER_EMITTER_WRITE \
-APSysVolumeEmitter::Write( out, link_map, version ); \
+NiPSysVolumeEmitter::Write( out, link_map, version ); \
 NifStream( radius, out, version ); \
 NifStream( height, out, version ); \
 
 #define NI_P_SYS_CYLINDER_EMITTER_STRING \
 stringstream out; \
-out << APSysVolumeEmitter::asString(); \
+out << NiPSysVolumeEmitter::asString(); \
 out << "Radius:  " << radius << endl; \
 out << "Height:  " << height << endl; \
 return out.str(); \
 
 #define NI_P_SYS_CYLINDER_EMITTER_FIXLINKS \
-APSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
+NiPSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_DATA_MEMBERS \
 vector<vector<float > > unknownFloats4; \
@@ -9645,15 +9972,15 @@ float percentage; \
 float range; \
 float rangeFalloff; \
 
-#define NI_P_SYS_DRAG_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_DRAG_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_DRAG_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_DRAG_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_DRAG_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_DRAG_MODIFIER_READ \
 uint block_num; \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 NifStream( dragAxis, in, version ); \
@@ -9662,7 +9989,7 @@ NifStream( range, in, version ); \
 NifStream( rangeFalloff, in, version ); \
 
 #define NI_P_SYS_DRAG_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( link_map[StaticCast<NiObject>(parent)], out, version ); \
 NifStream( dragAxis, out, version ); \
 NifStream( percentage, out, version ); \
@@ -9671,7 +9998,7 @@ NifStream( rangeFalloff, out, version ); \
 
 #define NI_P_SYS_DRAG_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Parent:  " << parent << endl; \
 out << "Drag Axis:  " << dragAxis << endl; \
 out << "Percentage:  " << percentage << endl; \
@@ -9680,12 +10007,15 @@ out << "Range Falloff:  " << rangeFalloff << endl; \
 return out.str(); \
 
 #define NI_P_SYS_DRAG_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
-parent = DynamicCast<NiObject>(objects[link_stack.front()]); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  parent = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  parent = NULL; \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_EMITTER_CTLR_MEMBERS \
-Ref<AInterpolator > visibilityInterpolator; \
+Ref<NiInterpolator > visibilityInterpolator; \
 
 #define NI_P_SYS_EMITTER_CTLR_INCLUDE "APSysCtlr.h" \
 
@@ -9711,7 +10041,10 @@ return out.str(); \
 
 #define NI_P_SYS_EMITTER_CTLR_FIXLINKS \
 APSysCtlr::FixLinks( objects, link_stack, version ); \
-visibilityInterpolator = DynamicCast<AInterpolator>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  visibilityInterpolator = DynamicCast<NiInterpolator>(objects[link_stack.front()]); \
+else \
+  visibilityInterpolator = NULL; \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_EMITTER_CTLR_DATA_MEMBERS \
@@ -9905,16 +10238,16 @@ uint forceType; \
 float turbulence; \
 float turbulenceScale; \
 
-#define NI_P_SYS_GRAVITY_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_GRAVITY_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_GRAVITY_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_GRAVITY_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_GRAVITY_MODIFIER_CONSTRUCT \
  : turbulenceScale(1.0f) \
 
 #define NI_P_SYS_GRAVITY_MODIFIER_READ \
 uint block_num; \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 NifStream( gravityAxis, in, version ); \
@@ -9925,7 +10258,7 @@ NifStream( turbulence, in, version ); \
 NifStream( turbulenceScale, in, version ); \
 
 #define NI_P_SYS_GRAVITY_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( link_map[StaticCast<NiObject>(gravityObject)], out, version ); \
 NifStream( gravityAxis, out, version ); \
 NifStream( decay, out, version ); \
@@ -9936,7 +10269,7 @@ NifStream( turbulenceScale, out, version ); \
 
 #define NI_P_SYS_GRAVITY_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Gravity Object:  " << gravityObject << endl; \
 out << "Gravity Axis:  " << gravityAxis << endl; \
 out << "Decay:  " << decay << endl; \
@@ -9947,8 +10280,11 @@ out << "Turbulence Scale:  " << turbulenceScale << endl; \
 return out.str(); \
 
 #define NI_P_SYS_GRAVITY_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
-gravityObject = DynamicCast<NiNode>(objects[link_stack.front()]); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
+if (link_stack.front() != 0xffffffff) \
+  gravityObject = DynamicCast<NiNode>(objects[link_stack.front()]); \
+else \
+  gravityObject = NULL; \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_GRAVITY_STRENGTH_CTLR_MEMBERS \
@@ -9979,21 +10315,21 @@ ushort growGeneration; \
 float fadeTime; \
 ushort fadeGeneration; \
 
-#define NI_P_SYS_GROW_FADE_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_GROW_FADE_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_GROW_FADE_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_GROW_FADE_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_GROW_FADE_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_GROW_FADE_MODIFIER_READ \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( growTime, in, version ); \
 NifStream( growGeneration, in, version ); \
 NifStream( fadeTime, in, version ); \
 NifStream( fadeGeneration, in, version ); \
 
 #define NI_P_SYS_GROW_FADE_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( growTime, out, version ); \
 NifStream( growGeneration, out, version ); \
 NifStream( fadeTime, out, version ); \
@@ -10001,7 +10337,7 @@ NifStream( fadeGeneration, out, version ); \
 
 #define NI_P_SYS_GROW_FADE_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Grow Time:  " << growTime << endl; \
 out << "Grow Generation:  " << growGeneration << endl; \
 out << "Fade Time:  " << fadeTime << endl; \
@@ -10009,7 +10345,7 @@ out << "Fade Generation:  " << fadeGeneration << endl; \
 return out.str(); \
 
 #define NI_P_SYS_GROW_FADE_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_MESH_EMITTER_MEMBERS \
 vector<Ref<NiTriBasedGeom > > emitterMeshes; \
@@ -10017,15 +10353,15 @@ uint initialVelocityType; \
 uint emissionType; \
 Vector3 emissionAxis; \
 
-#define NI_P_SYS_MESH_EMITTER_INCLUDE "APSysEmitter.h" \
+#define NI_P_SYS_MESH_EMITTER_INCLUDE "NiPSysEmitter.h" \
 
-#define NI_P_SYS_MESH_EMITTER_PARENT APSysEmitter \
+#define NI_P_SYS_MESH_EMITTER_PARENT NiPSysEmitter \
 
 #define NI_P_SYS_MESH_EMITTER_CONSTRUCT \
 
 #define NI_P_SYS_MESH_EMITTER_READ \
 uint block_num; \
-APSysEmitter::Read( in, link_stack, version ); \
+NiPSysEmitter::Read( in, link_stack, version ); \
 uint numEmitterMeshes; \
 NifStream( numEmitterMeshes, in, version ); \
 emitterMeshes.resize(numEmitterMeshes); \
@@ -10038,7 +10374,7 @@ NifStream( emissionType, in, version ); \
 NifStream( emissionAxis, in, version ); \
 
 #define NI_P_SYS_MESH_EMITTER_WRITE \
-APSysEmitter::Write( out, link_map, version ); \
+NiPSysEmitter::Write( out, link_map, version ); \
 uint numEmitterMeshes; \
 numEmitterMeshes = uint(emitterMeshes.size()); \
 NifStream( numEmitterMeshes, out, version ); \
@@ -10051,7 +10387,7 @@ NifStream( emissionAxis, out, version ); \
 
 #define NI_P_SYS_MESH_EMITTER_STRING \
 stringstream out; \
-out << APSysEmitter::asString(); \
+out << NiPSysEmitter::asString(); \
 uint numEmitterMeshes; \
 numEmitterMeshes = uint(emitterMeshes.size()); \
 out << "Num Emitter Meshes:  " << numEmitterMeshes << endl; \
@@ -10064,26 +10400,29 @@ out << "Emission Axis:  " << emissionAxis << endl; \
 return out.str(); \
 
 #define NI_P_SYS_MESH_EMITTER_FIXLINKS \
-APSysEmitter::FixLinks( objects, link_stack, version ); \
+NiPSysEmitter::FixLinks( objects, link_stack, version ); \
 uint numEmitterMeshes; \
 numEmitterMeshes = uint(emitterMeshes.size()); \
 for (uint i0 = 0; i0 < numEmitterMeshes; i0++) { \
-  emitterMeshes[i0] = DynamicCast<NiTriBasedGeom>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    emitterMeshes[i0] = DynamicCast<NiTriBasedGeom>(objects[link_stack.front()]); \
+  else \
+    emitterMeshes[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_MEMBERS \
 vector<Ref<NiNode > > meshes; \
 
-#define NI_P_SYS_MESH_UPDATE_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_MESH_UPDATE_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_MESH_UPDATE_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_MESH_UPDATE_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_READ \
 uint block_num; \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 uint numMeshes; \
 NifStream( numMeshes, in, version ); \
 meshes.resize(numMeshes); \
@@ -10093,7 +10432,7 @@ for (uint i0 = 0; i0 < numMeshes; i0++) { \
 }; \
 
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 uint numMeshes; \
 numMeshes = uint(meshes.size()); \
 NifStream( numMeshes, out, version ); \
@@ -10103,7 +10442,7 @@ for (uint i0 = 0; i0 < numMeshes; i0++) { \
 
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 uint numMeshes; \
 numMeshes = uint(meshes.size()); \
 out << "Num Meshes:  " << numMeshes << endl; \
@@ -10113,11 +10452,14 @@ for (uint i0 = 0; i0 < numMeshes; i0++) { \
 return out.str(); \
 
 #define NI_P_SYS_MESH_UPDATE_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
 uint numMeshes; \
 numMeshes = uint(meshes.size()); \
 for (uint i0 = 0; i0 < numMeshes; i0++) { \
-  meshes[i0] = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    meshes[i0] = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  else \
+    meshes[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -10213,36 +10555,48 @@ return out.str(); \
 
 #define NI_P_SYS_PLANAR_COLLIDER_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-spawnModifier = DynamicCast<NiPSysSpawnModifier>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  spawnModifier = DynamicCast<NiPSysSpawnModifier>(objects[link_stack.front()]); \
+else \
+  spawnModifier = NULL; \
 link_stack.pop_front(); \
-parent = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  parent = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  parent = NULL; \
 link_stack.pop_front(); \
-unknownLink_ = DynamicCast<NiObject>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  unknownLink_ = DynamicCast<NiObject>(objects[link_stack.front()]); \
+else \
+  unknownLink_ = NULL; \
 link_stack.pop_front(); \
-colliderObject = DynamicCast<NiNode>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  colliderObject = DynamicCast<NiNode>(objects[link_stack.front()]); \
+else \
+  colliderObject = NULL; \
 link_stack.pop_front(); \
 
 #define NI_P_SYS_POSITION_MODIFIER_MEMBERS \
 
-#define NI_P_SYS_POSITION_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_POSITION_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_POSITION_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_POSITION_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_POSITION_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_POSITION_MODIFIER_READ \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 
 #define NI_P_SYS_POSITION_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 
 #define NI_P_SYS_POSITION_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 return out.str(); \
 
 #define NI_P_SYS_POSITION_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_RESET_ON_LOOP_CTLR_MEMBERS \
 
@@ -10275,14 +10629,14 @@ bool randomRotSpeedSign; \
 bool randomInitialAxis; \
 Vector3 initialAxis; \
 
-#define NI_P_SYS_ROTATION_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_ROTATION_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_ROTATION_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_ROTATION_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_ROTATION_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_ROTATION_MODIFIER_READ \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( initialRotationSpeed, in, version ); \
 if ( version >= 0x14000004 ) { \
   NifStream( initialRotationSpeedVariation, in, version ); \
@@ -10294,7 +10648,7 @@ NifStream( randomInitialAxis, in, version ); \
 NifStream( initialAxis, in, version ); \
 
 #define NI_P_SYS_ROTATION_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( initialRotationSpeed, out, version ); \
 if ( version >= 0x14000004 ) { \
   NifStream( initialRotationSpeedVariation, out, version ); \
@@ -10307,7 +10661,7 @@ NifStream( initialAxis, out, version ); \
 
 #define NI_P_SYS_ROTATION_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Initial Rotation Speed:  " << initialRotationSpeed << endl; \
 out << "Initial Rotation Speed Variation:  " << initialRotationSpeedVariation << endl; \
 out << "Initial Rotation Angle:  " << initialRotationAngle << endl; \
@@ -10318,7 +10672,7 @@ out << "Initial Axis:  " << initialAxis << endl; \
 return out.str(); \
 
 #define NI_P_SYS_ROTATION_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
 if ( version >= 0x14000004 ) { \
 }; \
 
@@ -10332,14 +10686,14 @@ float spawnDirChaos; \
 float lifeSpan; \
 float lifeSpanVariation; \
 
-#define NI_P_SYS_SPAWN_MODIFIER_INCLUDE "APSysModifier.h" \
+#define NI_P_SYS_SPAWN_MODIFIER_INCLUDE "NiPSysModifier.h" \
 
-#define NI_P_SYS_SPAWN_MODIFIER_PARENT APSysModifier \
+#define NI_P_SYS_SPAWN_MODIFIER_PARENT NiPSysModifier \
 
 #define NI_P_SYS_SPAWN_MODIFIER_CONSTRUCT \
 
 #define NI_P_SYS_SPAWN_MODIFIER_READ \
-APSysModifier::Read( in, link_stack, version ); \
+NiPSysModifier::Read( in, link_stack, version ); \
 NifStream( numSpawnGenerations, in, version ); \
 NifStream( percentageSpawned, in, version ); \
 NifStream( minNumToSpawn, in, version ); \
@@ -10350,7 +10704,7 @@ NifStream( lifeSpan, in, version ); \
 NifStream( lifeSpanVariation, in, version ); \
 
 #define NI_P_SYS_SPAWN_MODIFIER_WRITE \
-APSysModifier::Write( out, link_map, version ); \
+NiPSysModifier::Write( out, link_map, version ); \
 NifStream( numSpawnGenerations, out, version ); \
 NifStream( percentageSpawned, out, version ); \
 NifStream( minNumToSpawn, out, version ); \
@@ -10362,7 +10716,7 @@ NifStream( lifeSpanVariation, out, version ); \
 
 #define NI_P_SYS_SPAWN_MODIFIER_STRING \
 stringstream out; \
-out << APSysModifier::asString(); \
+out << NiPSysModifier::asString(); \
 out << "Num Spawn Generations:  " << numSpawnGenerations << endl; \
 out << "Percentage Spawned:  " << percentageSpawned << endl; \
 out << "Min Num to Spawn:  " << minNumToSpawn << endl; \
@@ -10374,33 +10728,33 @@ out << "Life Span Variation:  " << lifeSpanVariation << endl; \
 return out.str(); \
 
 #define NI_P_SYS_SPAWN_MODIFIER_FIXLINKS \
-APSysModifier::FixLinks( objects, link_stack, version ); \
+NiPSysModifier::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_SPHERE_EMITTER_MEMBERS \
 float radius; \
 
-#define NI_P_SYS_SPHERE_EMITTER_INCLUDE "APSysVolumeEmitter.h" \
+#define NI_P_SYS_SPHERE_EMITTER_INCLUDE "NiPSysVolumeEmitter.h" \
 
-#define NI_P_SYS_SPHERE_EMITTER_PARENT APSysVolumeEmitter \
+#define NI_P_SYS_SPHERE_EMITTER_PARENT NiPSysVolumeEmitter \
 
 #define NI_P_SYS_SPHERE_EMITTER_CONSTRUCT \
 
 #define NI_P_SYS_SPHERE_EMITTER_READ \
-APSysVolumeEmitter::Read( in, link_stack, version ); \
+NiPSysVolumeEmitter::Read( in, link_stack, version ); \
 NifStream( radius, in, version ); \
 
 #define NI_P_SYS_SPHERE_EMITTER_WRITE \
-APSysVolumeEmitter::Write( out, link_map, version ); \
+NiPSysVolumeEmitter::Write( out, link_map, version ); \
 NifStream( radius, out, version ); \
 
 #define NI_P_SYS_SPHERE_EMITTER_STRING \
 stringstream out; \
-out << APSysVolumeEmitter::asString(); \
+out << NiPSysVolumeEmitter::asString(); \
 out << "Radius:  " << radius << endl; \
 return out.str(); \
 
 #define NI_P_SYS_SPHERE_EMITTER_FIXLINKS \
-APSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
+NiPSysVolumeEmitter::FixLinks( objects, link_stack, version ); \
 
 #define NI_P_SYS_UPDATE_CTLR_MEMBERS \
 
@@ -10731,7 +11085,10 @@ NiObject::FixLinks( objects, link_stack, version ); \
 uint numBones; \
 numBones = uint(boneList.size()); \
 if ( version <= 0x0A010000 ) { \
-  skinPartition = DynamicCast<NiSkinPartition>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    skinPartition = DynamicCast<NiSkinPartition>(objects[link_stack.front()]); \
+  else \
+    skinPartition = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x04020100 ) { \
@@ -10810,18 +11167,30 @@ return out.str(); \
 NiObject::FixLinks( objects, link_stack, version ); \
 NiNode * skeletonRoot; \
 skeletonRoot = SkeletonRoot(); \
-data = DynamicCast<NiSkinData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiSkinData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 if ( version >= 0x0A020000 ) { \
-  skinPartition = DynamicCast<NiSkinPartition>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    skinPartition = DynamicCast<NiSkinPartition>(objects[link_stack.front()]); \
+  else \
+    skinPartition = NULL; \
   link_stack.pop_front(); \
 }; \
-skeletonRoot = DynamicCast<NiNode>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  skeletonRoot = DynamicCast<NiNode>(objects[link_stack.front()]); \
+else \
+  skeletonRoot = NULL; \
 link_stack.pop_front(); \
 uint bones_numBones; \
 bones_numBones = uint(bones.bones.size()); \
 for (uint i0 = 0; i0 < bones_numBones; i0++) { \
-  bones.bones[i0] = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    bones.bones[i0] = DynamicCast<NiNode>(objects[link_stack.front()]); \
+  else \
+    bones.bones[i0] = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -11298,7 +11667,10 @@ if ( (useExternal == 1) ) { \
 }; \
 if ( version >= 0x0A010000 ) { \
   if ( (useExternal == 1) ) { \
-    unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); \
+    else \
+      unknownLink = NULL; \
     link_stack.pop_front(); \
   }; \
 }; \
@@ -11311,7 +11683,10 @@ if ( version >= 0x0A010000 ) { \
   }; \
 }; \
 if ( (useExternal == 0) ) { \
-  pixelData = DynamicCast<NiPixelData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    pixelData = DynamicCast<NiPixelData>(objects[link_stack.front()]); \
+  else \
+    pixelData = NULL; \
   link_stack.pop_front(); \
 }; \
 if ( version >= 0x0A01006A ) { \
@@ -11738,7 +12113,10 @@ return out.str(); \
 
 #define NI_TEXTURE_EFFECT_FIXLINKS \
 NiDynamicEffect::FixLinks( objects, link_stack, version ); \
-sourceTexture = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  sourceTexture = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+else \
+  sourceTexture = NULL; \
 link_stack.pop_front(); \
 if ( version <= 0x0A020000 ) { \
 }; \
@@ -11789,7 +12167,10 @@ return out.str(); \
 #define NI_TEXTURE_TRANSFORM_CONTROLLER_FIXLINKS \
 NiSingleInterpolatorController::FixLinks( objects, link_stack, version ); \
 if ( version <= 0x0A010000 ) { \
-  data = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    data = DynamicCast<NiFloatData>(objects[link_stack.front()]); \
+  else \
+    data = NULL; \
   link_stack.pop_front(); \
 }; \
 
@@ -12501,7 +12882,10 @@ numShaderTextures = uint(shaderTextures.size()); \
 if ( version <= 0x0A000102 ) { \
 }; \
 if ( (hasBaseTexture != 0) ) { \
-  baseTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    baseTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  else \
+    baseTexture.source = NULL; \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -12513,7 +12897,10 @@ if ( (hasBaseTexture != 0) ) { \
   }; \
 }; \
 if ( (hasDarkTexture != 0) ) { \
-  darkTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    darkTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  else \
+    darkTexture.source = NULL; \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -12525,7 +12912,10 @@ if ( (hasDarkTexture != 0) ) { \
   }; \
 }; \
 if ( (hasDetailTexture != 0) ) { \
-  detailTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    detailTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  else \
+    detailTexture.source = NULL; \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -12537,7 +12927,10 @@ if ( (hasDetailTexture != 0) ) { \
   }; \
 }; \
 if ( (hasGlossTexture != 0) ) { \
-  glossTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    glossTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  else \
+    glossTexture.source = NULL; \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -12549,7 +12942,10 @@ if ( (hasGlossTexture != 0) ) { \
   }; \
 }; \
 if ( (hasGlowTexture != 0) ) { \
-  glowTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    glowTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  else \
+    glowTexture.source = NULL; \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -12561,7 +12957,10 @@ if ( (hasGlowTexture != 0) ) { \
   }; \
 }; \
 if ( (hasBumpMapTexture != 0) ) { \
-  bumpMapTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    bumpMapTexture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  else \
+    bumpMapTexture.source = NULL; \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -12573,7 +12972,10 @@ if ( (hasBumpMapTexture != 0) ) { \
   }; \
 }; \
 if ( (hasDecal0Texture != 0) ) { \
-  decal0Texture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    decal0Texture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+  else \
+    decal0Texture.source = NULL; \
   link_stack.pop_front(); \
   if ( version <= 0x0A020000 ) { \
   }; \
@@ -12588,7 +12990,10 @@ if ( (textureCount == 8) ) { \
 }; \
 if ( version >= 0x14000004 ) { \
   if ( (((textureCount == 8)) && ((hasDecal1Texture != 0))) ) { \
-    decal1Texture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+    if (link_stack.front() != 0xffffffff) \
+      decal1Texture.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+    else \
+      decal1Texture.source = NULL; \
     link_stack.pop_front(); \
     if ( version <= 0x0A020000 ) { \
     }; \
@@ -12603,7 +13008,10 @@ if ( version >= 0x14000004 ) { \
 if ( version >= 0x0A000100 ) { \
   for (uint i1 = 0; i1 < numShaderTextures; i1++) { \
     if ( (shaderTextures[i1].isUsed != 0) ) { \
-      shaderTextures[i1].textureData.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+      if (link_stack.front() != 0xffffffff) \
+        shaderTextures[i1].textureData.source = DynamicCast<NiSourceTexture>(objects[link_stack.front()]); \
+      else \
+        shaderTextures[i1].textureData.source = NULL; \
       link_stack.pop_front(); \
       if ( version <= 0x0A020000 ) { \
       }; \
@@ -12668,15 +13076,15 @@ float scale; \
 vector<byte > unknownBytes; \
 Ref<NiTransformData > data; \
 
-#define NI_TRANSFORM_INTERPOLATOR_INCLUDE "AInterpolator.h" \
+#define NI_TRANSFORM_INTERPOLATOR_INCLUDE "NiInterpolator.h" \
 
-#define NI_TRANSFORM_INTERPOLATOR_PARENT AInterpolator \
+#define NI_TRANSFORM_INTERPOLATOR_PARENT NiInterpolator \
 
 #define NI_TRANSFORM_INTERPOLATOR_CONSTRUCT \
 
 #define NI_TRANSFORM_INTERPOLATOR_READ \
 uint block_num; \
-AInterpolator::Read( in, link_stack, version ); \
+NiInterpolator::Read( in, link_stack, version ); \
 NifStream( translation, in, version ); \
 NifStream( rotation, in, version ); \
 NifStream( scale, in, version ); \
@@ -12690,7 +13098,7 @@ NifStream( block_num, in, version ); \
 link_stack.push_back( block_num ); \
 
 #define NI_TRANSFORM_INTERPOLATOR_WRITE \
-AInterpolator::Write( out, link_map, version ); \
+NiInterpolator::Write( out, link_map, version ); \
 NifStream( translation, out, version ); \
 NifStream( rotation, out, version ); \
 NifStream( scale, out, version ); \
@@ -12703,7 +13111,7 @@ NifStream( link_map[StaticCast<NiObject>(data)], out, version ); \
 
 #define NI_TRANSFORM_INTERPOLATOR_STRING \
 stringstream out; \
-out << AInterpolator::asString(); \
+out << NiInterpolator::asString(); \
 out << "Translation:  " << translation << endl; \
 out << "Rotation:  " << rotation << endl; \
 out << "Scale:  " << scale << endl; \
@@ -12714,12 +13122,15 @@ out << "Data:  " << data << endl; \
 return out.str(); \
 
 #define NI_TRANSFORM_INTERPOLATOR_FIXLINKS \
-AInterpolator::FixLinks( objects, link_stack, version ); \
+NiInterpolator::FixLinks( objects, link_stack, version ); \
 if ( ( version >= 0x0A01006A ) && ( version <= 0x0A01006A ) ) { \
   for (uint i1 = 0; i1 < 3; i1++) { \
   }; \
 }; \
-data = DynamicCast<NiTransformData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiTransformData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define NI_TRI_SHAPE_MEMBERS \
@@ -12750,14 +13161,14 @@ bool hasTriangles; \
 vector<Triangle > triangles; \
 vector<MatchGroup > matchGroups; \
 
-#define NI_TRI_SHAPE_DATA_INCLUDE "TriBasedGeomData.h" \
+#define NI_TRI_SHAPE_DATA_INCLUDE "NiTriBasedGeomData.h" \
 
-#define NI_TRI_SHAPE_DATA_PARENT TriBasedGeomData \
+#define NI_TRI_SHAPE_DATA_PARENT NiTriBasedGeomData \
 
 #define NI_TRI_SHAPE_DATA_CONSTRUCT \
 
 #define NI_TRI_SHAPE_DATA_READ \
-TriBasedGeomData::Read( in, link_stack, version ); \
+NiTriBasedGeomData::Read( in, link_stack, version ); \
 ushort numMatchGroups; \
 ushort numTriangles; \
 NifStream( numTriangles, in, version ); \
@@ -12790,7 +13201,7 @@ for (uint i0 = 0; i0 < numMatchGroups; i0++) { \
 }; \
 
 #define NI_TRI_SHAPE_DATA_WRITE \
-TriBasedGeomData::Write( out, link_map, version ); \
+NiTriBasedGeomData::Write( out, link_map, version ); \
 ushort numMatchGroups; \
 numMatchGroups = ushort(matchGroups.size()); \
 ushort numTriangles; \
@@ -12822,7 +13233,7 @@ for (uint i0 = 0; i0 < numMatchGroups; i0++) { \
 
 #define NI_TRI_SHAPE_DATA_STRING \
 stringstream out; \
-out << TriBasedGeomData::asString(); \
+out << NiTriBasedGeomData::asString(); \
 ushort numMatchGroups; \
 numMatchGroups = ushort(matchGroups.size()); \
 ushort numTriangles; \
@@ -12848,7 +13259,7 @@ for (uint i0 = 0; i0 < numMatchGroups; i0++) { \
 return out.str(); \
 
 #define NI_TRI_SHAPE_DATA_FIXLINKS \
-TriBasedGeomData::FixLinks( objects, link_stack, version ); \
+NiTriBasedGeomData::FixLinks( objects, link_stack, version ); \
 ushort numMatchGroups; \
 numMatchGroups = ushort(matchGroups.size()); \
 ushort numTriangles; \
@@ -12897,14 +13308,14 @@ ushort numTriangles; \
 bool hasPoints; \
 vector<vector<ushort > > points; \
 
-#define NI_TRI_STRIPS_DATA_INCLUDE "TriBasedGeomData.h" \
+#define NI_TRI_STRIPS_DATA_INCLUDE "NiTriBasedGeomData.h" \
 
-#define NI_TRI_STRIPS_DATA_PARENT TriBasedGeomData \
+#define NI_TRI_STRIPS_DATA_PARENT NiTriBasedGeomData \
 
 #define NI_TRI_STRIPS_DATA_CONSTRUCT \
 
 #define NI_TRI_STRIPS_DATA_READ \
-TriBasedGeomData::Read( in, link_stack, version ); \
+NiTriBasedGeomData::Read( in, link_stack, version ); \
 vector<ushort > stripLengths; \
 ushort numStrips; \
 NifStream( numTriangles, in, version ); \
@@ -12940,7 +13351,7 @@ if ( version >= 0x0A010000 ) { \
 }; \
 
 #define NI_TRI_STRIPS_DATA_WRITE \
-TriBasedGeomData::Write( out, link_map, version ); \
+NiTriBasedGeomData::Write( out, link_map, version ); \
 vector<ushort > stripLengths; \
 stripLengths.resize(points.size()); \
 for (uint i0 = 0; i0 < points.size(); i0++) \
@@ -12974,7 +13385,7 @@ if ( version >= 0x0A010000 ) { \
 
 #define NI_TRI_STRIPS_DATA_STRING \
 stringstream out; \
-out << TriBasedGeomData::asString(); \
+out << NiTriBasedGeomData::asString(); \
 vector<ushort > stripLengths; \
 stripLengths.resize(points.size()); \
 for (uint i0 = 0; i0 < points.size(); i0++) \
@@ -13002,7 +13413,7 @@ if ( (hasPoints != 0) ) { \
 return out.str(); \
 
 #define NI_TRI_STRIPS_DATA_FIXLINKS \
-TriBasedGeomData::FixLinks( objects, link_stack, version ); \
+NiTriBasedGeomData::FixLinks( objects, link_stack, version ); \
 vector<ushort > stripLengths; \
 stripLengths.resize(points.size()); \
 for (uint i0 = 0; i0 < points.size(); i0++) \
@@ -13059,7 +13470,10 @@ return out.str(); \
 
 #define NI_U_V_CONTROLLER_FIXLINKS \
 NiTimeController::FixLinks( objects, link_stack, version ); \
-data = DynamicCast<NiUVData>(objects[link_stack.front()]); \
+if (link_stack.front() != 0xffffffff) \
+  data = DynamicCast<NiUVData>(objects[link_stack.front()]); \
+else \
+  data = NULL; \
 link_stack.pop_front(); \
 
 #define NI_U_V_DATA_MEMBERS \
@@ -13259,7 +13673,10 @@ return out.str(); \
 #define NI_VIS_CONTROLLER_FIXLINKS \
 NiSingleInterpolatorController::FixLinks( objects, link_stack, version ); \
 if ( version <= 0x0A010000 ) { \
-  data = DynamicCast<NiVisData>(objects[link_stack.front()]); \
+  if (link_stack.front() != 0xffffffff) \
+    data = DynamicCast<NiVisData>(objects[link_stack.front()]); \
+  else \
+    data = NULL; \
   link_stack.pop_front(); \
 }; \
 
-- 
GitLab