diff --git a/docsys b/docsys
index 174aae56e174590ebeada2159f7991a1807d309b..8e3f22c1ebedb0afed9759af2edd1bf2d498eaf0 160000
--- a/docsys
+++ b/docsys
@@ -1 +1 @@
-Subproject commit 174aae56e174590ebeada2159f7991a1807d309b
+Subproject commit 8e3f22c1ebedb0afed9759af2edd1bf2d498eaf0
diff --git a/src/obj/ATextureRenderData.cpp b/src/obj/ATextureRenderData.cpp
index a207389761f01039453519f8dbab69e8e8106309..815a081e3460f9b6240bba91ef504bbdc2728412 100644
--- a/src/obj/ATextureRenderData.cpp
+++ b/src/obj/ATextureRenderData.cpp
@@ -255,7 +255,7 @@ void ATextureRenderData::FixLinks( const map<unsigned int,NiObjectRef> & objects
 	//--END CUSTOM CODE--//
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
-	palette = FixLink<NiPalette>( objects, link_stack, info );
+	palette = FixLink<NiPalette>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 
diff --git a/src/obj/BSFrustumFOVController.cpp b/src/obj/BSFrustumFOVController.cpp
index 74af4f837bdc7e496759fee46120561ba0e16ae0..0ebf5443efc928fe77b0b9a1e16ce85557bb4ad0 100644
--- a/src/obj/BSFrustumFOVController.cpp
+++ b/src/obj/BSFrustumFOVController.cpp
@@ -106,7 +106,7 @@ void BSFrustumFOVController::FixLinks( const map<unsigned int,NiObjectRef> & obj
 	//--END CUSTOM CODE--//
 
 	NiTimeController::FixLinks( objects, link_stack, missing_link_stack, info );
-	interpolator = FixLink<NiFloatInterpolator>( objects, link_stack, info );
+	interpolator = FixLink<NiFloatInterpolator>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 
diff --git a/src/obj/BSKeyframeController.cpp b/src/obj/BSKeyframeController.cpp
index dad44eb3c9f14992b1d84f414f3a4b0731eb682f..9479de4fa4836e39d591007401bb66428e72521d 100644
--- a/src/obj/BSKeyframeController.cpp
+++ b/src/obj/BSKeyframeController.cpp
@@ -96,7 +96,7 @@ void BSKeyframeController::FixLinks( const map<unsigned int,NiObjectRef> & objec
 	//--END CUSTOM CODE--//
 
 	NiKeyframeController::FixLinks( objects, link_stack, missing_link_stack, info );
-	data2 = FixLink<NiKeyframeData>( objects, link_stack, info );
+	data2 = FixLink<NiKeyframeData>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/BSMasterParticleSystem.cpp b/src/obj/BSMasterParticleSystem.cpp
index 6488e00d89d7f8c3b33a195dd5e61a33e4aed193..16ed61a875fe23c9fbd3415450a7472d5642de8c 100644
--- a/src/obj/BSMasterParticleSystem.cpp
+++ b/src/obj/BSMasterParticleSystem.cpp
@@ -132,7 +132,7 @@ void BSMasterParticleSystem::FixLinks( const map<unsigned int,NiObjectRef> & obj
 
 	NiNode::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < particleSystems.size(); i1++) {
-		particleSystems[i1] = FixLink<NiAVObject>( objects, link_stack, info );
+		particleSystems[i1] = FixLink<NiAVObject>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/BSMultiBound.cpp b/src/obj/BSMultiBound.cpp
index 440d99a542e508c990236a9af075923528e9f34d..1ecc9407aafb9925bda92a0c5dd3772821cbffde 100644
--- a/src/obj/BSMultiBound.cpp
+++ b/src/obj/BSMultiBound.cpp
@@ -106,7 +106,7 @@ void BSMultiBound::FixLinks( const map<unsigned int,NiObjectRef> & objects, list
 	//--END CUSTOM CODE--//
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
-	data = FixLink<BSMultiBoundData>( objects, link_stack, info );
+	data = FixLink<BSMultiBoundData>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 
diff --git a/src/obj/BSMultiBoundNode.cpp b/src/obj/BSMultiBoundNode.cpp
index b43a30ca807dc91d7d0db35edb05267429cb9808..1d3eedaeccff67bf34ad8b9914471d418f3bc89e 100644
--- a/src/obj/BSMultiBoundNode.cpp
+++ b/src/obj/BSMultiBoundNode.cpp
@@ -106,7 +106,7 @@ void BSMultiBoundNode::FixLinks( const map<unsigned int,NiObjectRef> & objects,
 	//--END CUSTOM CODE--//
 
 	NiNode::FixLinks( objects, link_stack, missing_link_stack, info );
-	multiBound = FixLink<BSMultiBound>( objects, link_stack, info );
+	multiBound = FixLink<BSMultiBound>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 
diff --git a/src/obj/BSPSysMultiTargetEmitterCtlr.cpp b/src/obj/BSPSysMultiTargetEmitterCtlr.cpp
index 73c1f6eee521d16448f2adbcc0f5576138a56e37..407cd1ae520e6fac82c15e739b85d15d47590b6f 100644
--- a/src/obj/BSPSysMultiTargetEmitterCtlr.cpp
+++ b/src/obj/BSPSysMultiTargetEmitterCtlr.cpp
@@ -142,10 +142,10 @@ void BSPSysMultiTargetEmitterCtlr::FixLinks( const map<unsigned int,NiObjectRef>
 
 	NiPSysModifierCtlr::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version <= 0x0A010000 ) {
-		data = FixLink<NiPSysEmitterCtlrData>( objects, link_stack, info );
+		data = FixLink<NiPSysEmitterCtlrData>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( info.version >= 0x0A020000 ) {
-		visibilityInterpolator = FixLink<NiInterpolator>( objects, link_stack, info );
+		visibilityInterpolator = FixLink<NiInterpolator>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/BSShaderPPLightingProperty.cpp b/src/obj/BSShaderPPLightingProperty.cpp
index f6a1286dfef8d0cd2497a66651796cfc77ffb5f8..7fb3d34d80c357206022abd82b84b68b3a4c2f45 100644
--- a/src/obj/BSShaderPPLightingProperty.cpp
+++ b/src/obj/BSShaderPPLightingProperty.cpp
@@ -126,7 +126,7 @@ void BSShaderPPLightingProperty::FixLinks( const map<unsigned int,NiObjectRef> &
 	//--END CUSTOM CODE--//
 
 	BSShaderLightingProperty::FixLinks( objects, link_stack, missing_link_stack, info );
-	textureSet = FixLink<BSShaderTextureSet>( objects, link_stack, info );
+	textureSet = FixLink<BSShaderTextureSet>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 
diff --git a/src/obj/FxRadioButton.cpp b/src/obj/FxRadioButton.cpp
index f6951206b821b74a79bc70d24d620fd0b6a79348..21462e6b5dd57982cbb82594af55143b3462d6f6 100644
--- a/src/obj/FxRadioButton.cpp
+++ b/src/obj/FxRadioButton.cpp
@@ -127,7 +127,7 @@ void FxRadioButton::FixLinks( const map<unsigned int,NiObjectRef> & objects, lis
 
 	FxWidget::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < buttons.size(); i1++) {
-		buttons[i1] = FixLink<FxRadioButton>( objects, link_stack, info );
+		buttons[i1] = FixLink<FxRadioButton>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/Ni3dsAlphaAnimator.cpp b/src/obj/Ni3dsAlphaAnimator.cpp
index 294d7f2e5ef8ed8128b4158ce11a2fe08493ca24..d563532e35c71df7f6596455abce3f355bd2f52c 100644
--- a/src/obj/Ni3dsAlphaAnimator.cpp
+++ b/src/obj/Ni3dsAlphaAnimator.cpp
@@ -161,7 +161,7 @@ void Ni3dsAlphaAnimator::FixLinks( const map<unsigned int,NiObjectRef> & objects
 	//--END CUSTOM CODE--//
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
-	parent = FixLink<NiObject>( objects, link_stack, info );
+	parent = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 
diff --git a/src/obj/Ni3dsAnimationNode.cpp b/src/obj/Ni3dsAnimationNode.cpp
index c2b37d8f2ccde821072160e833bebd6cc4efc09c..1f230feca1452627fd0dca2c11fb774481e29d05 100644
--- a/src/obj/Ni3dsAnimationNode.cpp
+++ b/src/obj/Ni3dsAnimationNode.cpp
@@ -183,7 +183,7 @@ void Ni3dsAnimationNode::FixLinks( const map<unsigned int,NiObjectRef> & objects
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( hasData ) {
-		child = FixLink<NiObject>( objects, link_stack, info );
+		child = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiAVObject.cpp b/src/obj/NiAVObject.cpp
index 6c2188cef1652b89d8a52f1ed5ba4d7529b3c777..855cd99590f9c4f2055e69909626f0555e430ddd 100644
--- a/src/obj/NiAVObject.cpp
+++ b/src/obj/NiAVObject.cpp
@@ -238,10 +238,10 @@ void NiAVObject::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<u
 
 	NiObjectNET::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < properties.size(); i1++) {
-		properties[i1] = FixLink<NiProperty>( objects, link_stack, info );
+		properties[i1] = FixLink<NiProperty>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( info.version >= 0x0A000100 ) {
-		collisionObject = FixLink<NiCollisionObject>( objects, link_stack, info );
+		collisionObject = FixLink<NiCollisionObject>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiAlphaController.cpp b/src/obj/NiAlphaController.cpp
index e2b20b8af80bf3c44747c34879b945bfeedd31bd..ec437b4d95da4ffc2fdd07778aa2b2a17be7eafe 100644
--- a/src/obj/NiAlphaController.cpp
+++ b/src/obj/NiAlphaController.cpp
@@ -102,7 +102,7 @@ void NiAlphaController::FixLinks( const map<unsigned int,NiObjectRef> & objects,
 
 	NiFloatInterpController::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version <= 0x0A010000 ) {
-		data = FixLink<NiFloatData>( objects, link_stack, info );
+		data = FixLink<NiFloatData>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiArkTextureExtraData.cpp b/src/obj/NiArkTextureExtraData.cpp
index 429bff7b086c68df55be3edfe928cf1cac14166e..712347f9ed67596e33e1b8e94e9ae4f2b86d9dad 100644
--- a/src/obj/NiArkTextureExtraData.cpp
+++ b/src/obj/NiArkTextureExtraData.cpp
@@ -181,7 +181,7 @@ void NiArkTextureExtraData::FixLinks( const map<unsigned int,NiObjectRef> & obje
 
 	NiExtraData::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < textures.size(); i1++) {
-		textures[i1].texturingProperty = FixLink<NiTexturingProperty>( objects, link_stack, info );
+		textures[i1].texturingProperty = FixLink<NiTexturingProperty>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiBSplineInterpolator.cpp b/src/obj/NiBSplineInterpolator.cpp
index de8c1146e874a637640f9c890ad6ecebbc96aeb8..e4b96d7c8ec59c01543e38c202a0f06bc35cc82c 100644
--- a/src/obj/NiBSplineInterpolator.cpp
+++ b/src/obj/NiBSplineInterpolator.cpp
@@ -123,8 +123,8 @@ void NiBSplineInterpolator::FixLinks( const map<unsigned int,NiObjectRef> & obje
 	//--END CUSTOM CODE--//
 
 	NiInterpolator::FixLinks( objects, link_stack, missing_link_stack, info );
-	splineData = FixLink<NiBSplineData>( objects, link_stack, info );
-	basisData = FixLink<NiBSplineBasisData>( objects, link_stack, info );
+	splineData = FixLink<NiBSplineData>( objects, link_stack, missing_link_stack, info );
+	basisData = FixLink<NiBSplineBasisData>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiBezierMesh.cpp b/src/obj/NiBezierMesh.cpp
index d018a56903887a2e9a1e8e4ddaba3d132b596cb0..6bae8a31ad51a0c61928467d0d3dbce261310b34 100644
--- a/src/obj/NiBezierMesh.cpp
+++ b/src/obj/NiBezierMesh.cpp
@@ -220,7 +220,7 @@ void NiBezierMesh::FixLinks( const map<unsigned int,NiObjectRef> & objects, list
 
 	NiAVObject::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < bezierTriangle.size(); i1++) {
-		bezierTriangle[i1] = FixLink<NiBezierTriangle4>( objects, link_stack, info );
+		bezierTriangle[i1] = FixLink<NiBezierTriangle4>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiBinaryVoxelExtraData.cpp b/src/obj/NiBinaryVoxelExtraData.cpp
index 34cdfdab3bdbc45786f70173754ecf7ffa4bacf2..377066df41586c8778652f1d8e617710bb5f9ac2 100644
--- a/src/obj/NiBinaryVoxelExtraData.cpp
+++ b/src/obj/NiBinaryVoxelExtraData.cpp
@@ -99,7 +99,7 @@ void NiBinaryVoxelExtraData::FixLinks( const map<unsigned int,NiObjectRef> & obj
 	//--END CUSTOM CODE--//
 
 	NiExtraData::FixLinks( objects, link_stack, missing_link_stack, info );
-	data = FixLink<NiBinaryVoxelData>( objects, link_stack, info );
+	data = FixLink<NiBinaryVoxelData>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiBoneLODController.cpp b/src/obj/NiBoneLODController.cpp
index 1802a287b31c8e14f6d75ca024d0f8df49a68a77..cb4d90b508c6298de6dc4a97a03697a3a82ba0e9 100644
--- a/src/obj/NiBoneLODController.cpp
+++ b/src/obj/NiBoneLODController.cpp
@@ -269,18 +269,18 @@ void NiBoneLODController::FixLinks( const map<unsigned int,NiObjectRef> & object
 	NiTimeController::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < nodeGroups.size(); i1++) {
 		for (unsigned int i2 = 0; i2 < nodeGroups[i1].nodes.size(); i2++) {
-			nodeGroups[i1].nodes[i2] = FixLink<NiNode>( objects, link_stack, info );
+			nodeGroups[i1].nodes[i2] = FixLink<NiNode>( objects, link_stack, missing_link_stack, info );
 		};
 	};
 	if ( ( info.version >= 0x04020200 ) && ( info.userVersion == 0 ) ) {
 		for (unsigned int i2 = 0; i2 < shapeGroups1.size(); i2++) {
 			for (unsigned int i3 = 0; i3 < shapeGroups1[i2].linkPairs.size(); i3++) {
-				shapeGroups1[i2].linkPairs[i3].shape = FixLink<NiTriBasedGeom>( objects, link_stack, info );
-				shapeGroups1[i2].linkPairs[i3].skinInstance = FixLink<NiSkinInstance>( objects, link_stack, info );
+				shapeGroups1[i2].linkPairs[i3].shape = FixLink<NiTriBasedGeom>( objects, link_stack, missing_link_stack, info );
+				shapeGroups1[i2].linkPairs[i3].skinInstance = FixLink<NiSkinInstance>( objects, link_stack, missing_link_stack, info );
 			};
 		};
 		for (unsigned int i2 = 0; i2 < shapeGroups2.size(); i2++) {
-			shapeGroups2[i2] = FixLink<NiTriBasedGeom>( objects, link_stack, info );
+			shapeGroups2[i2] = FixLink<NiTriBasedGeom>( objects, link_stack, missing_link_stack, info );
 		};
 	};
 
diff --git a/src/obj/NiBoolInterpolator.cpp b/src/obj/NiBoolInterpolator.cpp
index 1b4dc7de29756a85eb00fa79fad342fcdd9ff278..9134fe151310f7cf39e6dc59ffe8b1cb2fb76b92 100644
--- a/src/obj/NiBoolInterpolator.cpp
+++ b/src/obj/NiBoolInterpolator.cpp
@@ -99,7 +99,7 @@ void NiBoolInterpolator::FixLinks( const map<unsigned int,NiObjectRef> & objects
 	//--END CUSTOM CODE--//
 
 	NiKeyBasedInterpolator::FixLinks( objects, link_stack, missing_link_stack, info );
-	data = FixLink<NiBoolData>( objects, link_stack, info );
+	data = FixLink<NiBoolData>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiCamera.cpp b/src/obj/NiCamera.cpp
index 6381a7d217a9f0a9511676036f8f18d112137a4d..fa98fe45807b8dc1418eedeb3250cac3b3d19dbb 100644
--- a/src/obj/NiCamera.cpp
+++ b/src/obj/NiCamera.cpp
@@ -160,7 +160,7 @@ void NiCamera::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<uns
 	//--END CUSTOM CODE--//
 
 	NiAVObject::FixLinks( objects, link_stack, missing_link_stack, info );
-	unknownLink = FixLink<NiObject>( objects, link_stack, info );
+	unknownLink = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiCollisionObject.cpp b/src/obj/NiCollisionObject.cpp
index b0c67e0e5f2dc4e2132a0b0d6c4ac60a2805d235..3bf73b0cf085731dfa2fbe3680f23d2cbc19c013 100644
--- a/src/obj/NiCollisionObject.cpp
+++ b/src/obj/NiCollisionObject.cpp
@@ -96,7 +96,7 @@ void NiCollisionObject::FixLinks( const map<unsigned int,NiObjectRef> & objects,
 	//--END CUSTOM CODE--//
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
-	target = FixLink<NiAVObject>( objects, link_stack, info );
+	target = FixLink<NiAVObject>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiControllerManager.cpp b/src/obj/NiControllerManager.cpp
index 242255c43571cb93c8cc9ebea2b74616e811e018..4bf4c827136368ac6014ddc04944d2bbf65f5caf 100644
--- a/src/obj/NiControllerManager.cpp
+++ b/src/obj/NiControllerManager.cpp
@@ -144,9 +144,9 @@ void NiControllerManager::FixLinks( const map<unsigned int,NiObjectRef> & object
 
 	NiTimeController::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < controllerSequences.size(); i1++) {
-		controllerSequences[i1] = FixLink<NiControllerSequence>( objects, link_stack, info );
+		controllerSequences[i1] = FixLink<NiControllerSequence>( objects, link_stack, missing_link_stack, info );
 	};
-	objectPalette = FixLink<NiDefaultAVObjectPalette>( objects, link_stack, info );
+	objectPalette = FixLink<NiDefaultAVObjectPalette>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiControllerSequence.cpp b/src/obj/NiControllerSequence.cpp
index 43ef257c602926f971a4f10e97e1aed0bb1c977f..404acce2c59f4aeb45961c423a2da0920ca2b450 100644
--- a/src/obj/NiControllerSequence.cpp
+++ b/src/obj/NiControllerSequence.cpp
@@ -223,11 +223,11 @@ void NiControllerSequence::FixLinks( const map<unsigned int,NiObjectRef> & objec
 
 	NiSequence::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version >= 0x0A01006A ) {
-		textKeys = FixLink<NiTextKeyExtraData>( objects, link_stack, info );
-		manager = FixLink<NiControllerManager>( objects, link_stack, info );
+		textKeys = FixLink<NiTextKeyExtraData>( objects, link_stack, missing_link_stack, info );
+		manager = FixLink<NiControllerManager>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( ( info.version >= 0x0A020000 ) && ( info.version <= 0x14000005 ) ) {
-		stringPalette = FixLink<NiStringPalette>( objects, link_stack, info );
+		stringPalette = FixLink<NiStringPalette>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiDefaultAVObjectPalette.cpp b/src/obj/NiDefaultAVObjectPalette.cpp
index bb8ab9718a644c403c8becff187a223f535aad74..8265a53629d3ae04b19d38cd71f77bf240fd6b9c 100644
--- a/src/obj/NiDefaultAVObjectPalette.cpp
+++ b/src/obj/NiDefaultAVObjectPalette.cpp
@@ -122,7 +122,7 @@ void NiDefaultAVObjectPalette::FixLinks( const map<unsigned int,NiObjectRef> & o
 
 	NiAVObjectPalette::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < objs.size(); i1++) {
-		objs[i1].avObject = FixLink<NiAVObject>( objects, link_stack, info );
+		objs[i1].avObject = FixLink<NiAVObject>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiDynamicEffect.cpp b/src/obj/NiDynamicEffect.cpp
index 56872d820859b350ed7f7de6bdacc647c474fba2..4a1864dd1f97b5bf148573f603dd90ef2761d218 100644
--- a/src/obj/NiDynamicEffect.cpp
+++ b/src/obj/NiDynamicEffect.cpp
@@ -167,7 +167,7 @@ void NiDynamicEffect::FixLinks( const map<unsigned int,NiObjectRef> & objects, l
 	NiAVObject::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version >= 0x0A010000 ) {
 		for (unsigned int i2 = 0; i2 < affectedNodes.size(); i2++) {
-			affectedNodes[i2] = FixLink<NiAVObject>( objects, link_stack, info );
+			affectedNodes[i2] = FixLink<NiAVObject>( objects, link_stack, missing_link_stack, info );
 		};
 	};
 
diff --git a/src/obj/NiEnvMappedTriShape.cpp b/src/obj/NiEnvMappedTriShape.cpp
index 21c85df12850a749295dec16a4b8e782c5590cd8..1b705f248cff5f5444a070a4c9864a60608a760d 100644
--- a/src/obj/NiEnvMappedTriShape.cpp
+++ b/src/obj/NiEnvMappedTriShape.cpp
@@ -176,10 +176,10 @@ void NiEnvMappedTriShape::FixLinks( const map<unsigned int,NiObjectRef> & object
 
 	NiObjectNET::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < children.size(); i1++) {
-		children[i1] = FixLink<NiAVObject>( objects, link_stack, info );
+		children[i1] = FixLink<NiAVObject>( objects, link_stack, missing_link_stack, info );
 	};
-	child2 = FixLink<NiObject>( objects, link_stack, info );
-	child3 = FixLink<NiObject>( objects, link_stack, info );
+	child2 = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
+	child3 = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 
diff --git a/src/obj/NiExtraData.cpp b/src/obj/NiExtraData.cpp
index 9d5f01871f1ee90abfa959ce38e9d208a312d2f2..b24db4dd1e5aa257fa64f0c0b7c2a1be217ffce6 100644
--- a/src/obj/NiExtraData.cpp
+++ b/src/obj/NiExtraData.cpp
@@ -107,7 +107,7 @@ void NiExtraData::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version <= 0x04020200 ) {
-		nextExtraData = FixLink<NiExtraData>( objects, link_stack, info );
+		nextExtraData = FixLink<NiExtraData>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiFlipController.cpp b/src/obj/NiFlipController.cpp
index 1ef29cd76ec3058bbff03a317981a488f7d8b1a7..ad05ae243b0a8c18d5edabce5c990fbafbad4279 100644
--- a/src/obj/NiFlipController.cpp
+++ b/src/obj/NiFlipController.cpp
@@ -182,12 +182,12 @@ void NiFlipController::FixLinks( const map<unsigned int,NiObjectRef> & objects,
 	NiFloatInterpController::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version >= 0x04000000 ) {
 		for (unsigned int i2 = 0; i2 < sources.size(); i2++) {
-			sources[i2] = FixLink<NiSourceTexture>( objects, link_stack, info );
+			sources[i2] = FixLink<NiSourceTexture>( objects, link_stack, missing_link_stack, info );
 		};
 	};
 	if ( info.version <= 0x03010000 ) {
 		for (unsigned int i2 = 0; i2 < images.size(); i2++) {
-			images[i2] = FixLink<NiImage>( objects, link_stack, info );
+			images[i2] = FixLink<NiImage>( objects, link_stack, missing_link_stack, info );
 		};
 	};
 
diff --git a/src/obj/NiFloatInterpolator.cpp b/src/obj/NiFloatInterpolator.cpp
index 1064d4854c96566c64bcaf5fce764ee832db111e..4305126eb58ff09c801fc5660eaa082a8d4bb936 100644
--- a/src/obj/NiFloatInterpolator.cpp
+++ b/src/obj/NiFloatInterpolator.cpp
@@ -99,7 +99,7 @@ void NiFloatInterpolator::FixLinks( const map<unsigned int,NiObjectRef> & object
 	//--END CUSTOM CODE--//
 
 	NiKeyBasedInterpolator::FixLinks( objects, link_stack, missing_link_stack, info );
-	data = FixLink<NiFloatData>( objects, link_stack, info );
+	data = FixLink<NiFloatData>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiGeomMorpherController.cpp b/src/obj/NiGeomMorpherController.cpp
index 7213d871fa5816d0e6bac9b5c82b0e9a62e08893..49d11beb9408fef83cb6b2e37c4214e5101bdc6b 100644
--- a/src/obj/NiGeomMorpherController.cpp
+++ b/src/obj/NiGeomMorpherController.cpp
@@ -252,15 +252,15 @@ void NiGeomMorpherController::FixLinks( const map<unsigned int,NiObjectRef> & ob
 	//--END CUSTOM CODE--//
 
 	NiInterpController::FixLinks( objects, link_stack, missing_link_stack, info );
-	data = FixLink<NiMorphData>( objects, link_stack, info );
+	data = FixLink<NiMorphData>( objects, link_stack, missing_link_stack, info );
 	if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x14020006 ) ) {
 		for (unsigned int i2 = 0; i2 < interpolators.size(); i2++) {
-			interpolators[i2] = FixLink<NiInterpolator>( objects, link_stack, info );
+			interpolators[i2] = FixLink<NiInterpolator>( objects, link_stack, missing_link_stack, info );
 		};
 	};
 	if ( info.version >= 0x14020007 ) {
 		for (unsigned int i2 = 0; i2 < interpolatorWeights.size(); i2++) {
-			interpolatorWeights[i2].interpolator = FixLink<NiInterpolator>( objects, link_stack, info );
+			interpolatorWeights[i2].interpolator = FixLink<NiInterpolator>( objects, link_stack, missing_link_stack, info );
 		};
 	};
 
diff --git a/src/obj/NiGeometry.cpp b/src/obj/NiGeometry.cpp
index d3ff8a52bc49234599097c13728bdb4a8eb027b7..9426eedfbeb0e5af6225bdfa65e46b0d90bf22ee 100644
--- a/src/obj/NiGeometry.cpp
+++ b/src/obj/NiGeometry.cpp
@@ -215,9 +215,9 @@ void NiGeometry::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<u
 	//--END CUSTOM CODE--//
 
 	NiAVObject::FixLinks( objects, link_stack, missing_link_stack, info );
-	data = FixLink<NiObject>( objects, link_stack, info );
+	data = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 	if ( info.version >= 0x0303000D ) {
-		skinInstance = FixLink<NiSkinInstance>( objects, link_stack, info );
+		skinInstance = FixLink<NiSkinInstance>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiGeometryData.cpp b/src/obj/NiGeometryData.cpp
index ae523edc8e87964e65f7076c4f724b5456f46318..8a336813b266f53228a21076b3b22957a4f7157c 100644
--- a/src/obj/NiGeometryData.cpp
+++ b/src/obj/NiGeometryData.cpp
@@ -342,7 +342,7 @@ void NiGeometryData::FixLinks( const map<unsigned int,NiObjectRef> & objects, li
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version >= 0x14000004 ) {
-		additionalData = FixLink<NiAdditionalGeometryData>( objects, link_stack, info );
+		additionalData = FixLink<NiAdditionalGeometryData>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiImage.cpp b/src/obj/NiImage.cpp
index 8360b20e451491315c02d60837ab822304cd8292..7bd51eed195560007c3a733c1c34e02f2992950d 100644
--- a/src/obj/NiImage.cpp
+++ b/src/obj/NiImage.cpp
@@ -125,7 +125,7 @@ void NiImage::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsi
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( (external == 0) ) {
-		imageData = FixLink<NiRawImageData>( objects, link_stack, info );
+		imageData = FixLink<NiRawImageData>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiKeyframeController.cpp b/src/obj/NiKeyframeController.cpp
index aacfa60bd52252592db487625ce8b51be81b2100..7e8d8d0b59f066e5391a5e0afbd257b206f5cca0 100644
--- a/src/obj/NiKeyframeController.cpp
+++ b/src/obj/NiKeyframeController.cpp
@@ -101,7 +101,7 @@ void NiKeyframeController::FixLinks( const map<unsigned int,NiObjectRef> & objec
 
 	NiSingleInterpController::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version <= 0x0A010000 ) {
-		data = FixLink<NiKeyframeData>( objects, link_stack, info );
+		data = FixLink<NiKeyframeData>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiLODNode.cpp b/src/obj/NiLODNode.cpp
index 947cde2e3a6b42d8d00fc4dea765886c87760b9c..4d2ab4f316c9ec2edf7568f40ba672ddb331b8bb 100644
--- a/src/obj/NiLODNode.cpp
+++ b/src/obj/NiLODNode.cpp
@@ -159,7 +159,7 @@ void NiLODNode::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<un
 
 	NiSwitchNode::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version >= 0x0A010000 ) {
-		lodLevelData = FixLink<NiLODData>( objects, link_stack, info );
+		lodLevelData = FixLink<NiLODData>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiLookAtController.cpp b/src/obj/NiLookAtController.cpp
index 51fc833dc60ece89554e62ce15a146faf3adf2d6..b5efbee9a6b0be2fa781d7799e71969a61957f39 100644
--- a/src/obj/NiLookAtController.cpp
+++ b/src/obj/NiLookAtController.cpp
@@ -103,7 +103,7 @@ void NiLookAtController::FixLinks( const map<unsigned int,NiObjectRef> & objects
 	//--END CUSTOM CODE--//
 
 	NiTimeController::FixLinks( objects, link_stack, missing_link_stack, info );
-	lookAtNode = FixLink<NiNode>( objects, link_stack, info );
+	lookAtNode = FixLink<NiNode>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiLookAtInterpolator.cpp b/src/obj/NiLookAtInterpolator.cpp
index 0781971e19b18ccd25423556d99a8969d2bc00e5..fb87dcd78772e351ddcbaeea41e6ef9c2d10e94e 100644
--- a/src/obj/NiLookAtInterpolator.cpp
+++ b/src/obj/NiLookAtInterpolator.cpp
@@ -173,10 +173,10 @@ void NiLookAtInterpolator::FixLinks( const map<unsigned int,NiObjectRef> & objec
 	//--END CUSTOM CODE--//
 
 	NiInterpolator::FixLinks( objects, link_stack, missing_link_stack, info );
-	lookAt = FixLink<NiNode>( objects, link_stack, info );
-	unknownLink1 = FixLink<NiPoint3Interpolator>( objects, link_stack, info );
-	unknownLink2 = FixLink<NiFloatInterpolator>( objects, link_stack, info );
-	unknownLink3 = FixLink<NiFloatInterpolator>( objects, link_stack, info );
+	lookAt = FixLink<NiNode>( objects, link_stack, missing_link_stack, info );
+	unknownLink1 = FixLink<NiPoint3Interpolator>( objects, link_stack, missing_link_stack, info );
+	unknownLink2 = FixLink<NiFloatInterpolator>( objects, link_stack, missing_link_stack, info );
+	unknownLink3 = FixLink<NiFloatInterpolator>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiMeshPSysData.cpp b/src/obj/NiMeshPSysData.cpp
index 0e94328afb3285279effbad991339a25cf4180bb..f1f5174d338a931c76c8f1888322247d55d1d7e2 100644
--- a/src/obj/NiMeshPSysData.cpp
+++ b/src/obj/NiMeshPSysData.cpp
@@ -131,7 +131,7 @@ void NiMeshPSysData::FixLinks( const map<unsigned int,NiObjectRef> & objects, li
 	//--END CUSTOM CODE--//
 
 	NiPSysData::FixLinks( objects, link_stack, missing_link_stack, info );
-	unknownNode = FixLink<NiNode>( objects, link_stack, info );
+	unknownNode = FixLink<NiNode>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiMorpherController.cpp b/src/obj/NiMorpherController.cpp
index 049ca5a78c710fceb52535c22f78c7f6a07b03bd..68521dce521ec4422aa62856dad44c4b7d4c0b5b 100644
--- a/src/obj/NiMorpherController.cpp
+++ b/src/obj/NiMorpherController.cpp
@@ -106,7 +106,7 @@ void NiMorpherController::FixLinks( const map<unsigned int,NiObjectRef> & object
 	//--END CUSTOM CODE--//
 
 	NiInterpController::FixLinks( objects, link_stack, missing_link_stack, info );
-	data = FixLink<NiMorphData>( objects, link_stack, info );
+	data = FixLink<NiMorphData>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 
diff --git a/src/obj/NiMultiTargetTransformController.cpp b/src/obj/NiMultiTargetTransformController.cpp
index 46964bb49afd2ae552dc9addb74ae592f7519e8b..1f9fa47c83229434af6fa4d773925bf803d8946f 100644
--- a/src/obj/NiMultiTargetTransformController.cpp
+++ b/src/obj/NiMultiTargetTransformController.cpp
@@ -120,7 +120,7 @@ void NiMultiTargetTransformController::FixLinks( const map<unsigned int,NiObject
 
 	NiInterpController::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < extraTargets.size(); i1++) {
-		extraTargets[i1] = FixLink<NiAVObject>( objects, link_stack, info );
+		extraTargets[i1] = FixLink<NiAVObject>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiMultiTextureProperty.cpp b/src/obj/NiMultiTextureProperty.cpp
index e7b57802569cc63cb895417f525a3b6b245826f2..9901a8df2c7efcdf91b7e36a23fe6a37ade9b533 100644
--- a/src/obj/NiMultiTextureProperty.cpp
+++ b/src/obj/NiMultiTextureProperty.cpp
@@ -160,7 +160,7 @@ void NiMultiTextureProperty::FixLinks( const map<unsigned int,NiObjectRef> & obj
 	NiProperty::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < 5; i1++) {
 		if ( textureElements[i1].hasImage ) {
-			textureElements[i1].image = FixLink<NiImage>( objects, link_stack, info );
+			textureElements[i1].image = FixLink<NiImage>( objects, link_stack, missing_link_stack, info );
 		};
 	};
 
diff --git a/src/obj/NiNode.cpp b/src/obj/NiNode.cpp
index 53c2feb0ce5e7c96f224f57b13b2d65d745f5ea8..1325acc7b5913890a15a5903f760072b3e368c02 100644
--- a/src/obj/NiNode.cpp
+++ b/src/obj/NiNode.cpp
@@ -177,10 +177,10 @@ void NiNode::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsig
 
 	NiAVObject::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < children.size(); i1++) {
-		children[i1] = FixLink<NiAVObject>( objects, link_stack, info );
+		children[i1] = FixLink<NiAVObject>( objects, link_stack, missing_link_stack, info );
 	};
 	for (unsigned int i1 = 0; i1 < effects.size(); i1++) {
-		effects[i1] = FixLink<NiDynamicEffect>( objects, link_stack, info );
+		effects[i1] = FixLink<NiDynamicEffect>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiObjectNET.cpp b/src/obj/NiObjectNET.cpp
index f7c3bf406b86f812d7bc0dbd76526a310aab8858..3f1618a6f7090302ab97dc47bb205623ae440dfc 100644
--- a/src/obj/NiObjectNET.cpp
+++ b/src/obj/NiObjectNET.cpp
@@ -205,15 +205,15 @@ void NiObjectNET::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( ( info.version >= 0x03000000 ) && ( info.version <= 0x04020200 ) ) {
-		extraData = FixLink<NiExtraData>( objects, link_stack, info );
+		extraData = FixLink<NiExtraData>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( info.version >= 0x0A000100 ) {
 		for (unsigned int i2 = 0; i2 < extraDataList.size(); i2++) {
-			extraDataList[i2] = FixLink<NiExtraData>( objects, link_stack, info );
+			extraDataList[i2] = FixLink<NiExtraData>( objects, link_stack, missing_link_stack, info );
 		};
 	};
 	if ( info.version >= 0x03000000 ) {
-		controller = FixLink<NiTimeController>( objects, link_stack, info );
+		controller = FixLink<NiTimeController>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiPSysAgeDeathModifier.cpp b/src/obj/NiPSysAgeDeathModifier.cpp
index e5135a3dab6cfb3bbb942830a1a805bd40ac3d93..a74f4195c6edb154b65f464d5fb20d5306cab788 100644
--- a/src/obj/NiPSysAgeDeathModifier.cpp
+++ b/src/obj/NiPSysAgeDeathModifier.cpp
@@ -99,7 +99,7 @@ void NiPSysAgeDeathModifier::FixLinks( const map<unsigned int,NiObjectRef> & obj
 	//--END CUSTOM CODE--//
 
 	NiPSysModifier::FixLinks( objects, link_stack, missing_link_stack, info );
-	spawnModifier = FixLink<NiPSysSpawnModifier>( objects, link_stack, info );
+	spawnModifier = FixLink<NiPSysSpawnModifier>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiPSysBombModifier.cpp b/src/obj/NiPSysBombModifier.cpp
index 0725dcd3534d630fa2bb15e85fa616ba6b13bb66..2de2057fcc468442e3a59a9d0469cb7cfb11a94c 100644
--- a/src/obj/NiPSysBombModifier.cpp
+++ b/src/obj/NiPSysBombModifier.cpp
@@ -111,7 +111,7 @@ void NiPSysBombModifier::FixLinks( const map<unsigned int,NiObjectRef> & objects
 	//--END CUSTOM CODE--//
 
 	NiPSysModifier::FixLinks( objects, link_stack, missing_link_stack, info );
-	bombObject = FixLink<NiNode>( objects, link_stack, info );
+	bombObject = FixLink<NiNode>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiPSysCollider.cpp b/src/obj/NiPSysCollider.cpp
index e256db2993104ad79f3c05dbc0303b92789dead6..6d2b54ead1579584fe9e8b21657c9893a9cccc25 100644
--- a/src/obj/NiPSysCollider.cpp
+++ b/src/obj/NiPSysCollider.cpp
@@ -167,10 +167,10 @@ void NiPSysCollider::FixLinks( const map<unsigned int,NiObjectRef> & objects, li
 	//--END CUSTOM CODE--//
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
-	spawnModifier = FixLink<NiPSysSpawnModifier>( objects, link_stack, info );
-	parent = FixLink<NiObject>( objects, link_stack, info );
-	nextCollider = FixLink<NiObject>( objects, link_stack, info );
-	colliderObject = FixLink<NiNode>( objects, link_stack, info );
+	spawnModifier = FixLink<NiPSysSpawnModifier>( objects, link_stack, missing_link_stack, info );
+	parent = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
+	nextCollider = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
+	colliderObject = FixLink<NiNode>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiPSysColliderManager.cpp b/src/obj/NiPSysColliderManager.cpp
index 876e7cfa8e9b4fa80cbf83a9d890fec5105e5629..1c0b633d361bf4b1bf83ea0cfc2955fb30cfdcf9 100644
--- a/src/obj/NiPSysColliderManager.cpp
+++ b/src/obj/NiPSysColliderManager.cpp
@@ -96,7 +96,7 @@ void NiPSysColliderManager::FixLinks( const map<unsigned int,NiObjectRef> & obje
 	//--END CUSTOM CODE--//
 
 	NiPSysModifier::FixLinks( objects, link_stack, missing_link_stack, info );
-	collider = FixLink<NiPSysCollider>( objects, link_stack, info );
+	collider = FixLink<NiPSysCollider>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiPSysColorModifier.cpp b/src/obj/NiPSysColorModifier.cpp
index c5aa7f35b06533fdbe4fdadf29ca0b370e0fd3dd..fc3ea88978bb2382d4cf426cfce939224c801ddd 100644
--- a/src/obj/NiPSysColorModifier.cpp
+++ b/src/obj/NiPSysColorModifier.cpp
@@ -96,7 +96,7 @@ void NiPSysColorModifier::FixLinks( const map<unsigned int,NiObjectRef> & object
 	//--END CUSTOM CODE--//
 
 	NiPSysModifier::FixLinks( objects, link_stack, missing_link_stack, info );
-	data = FixLink<NiColorData>( objects, link_stack, info );
+	data = FixLink<NiColorData>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiPSysDragModifier.cpp b/src/obj/NiPSysDragModifier.cpp
index 7dc398325604db5e9f89d9ae33bbf9730acb35ff..9adc09146c88c69087b94807dd23366b97c4b049 100644
--- a/src/obj/NiPSysDragModifier.cpp
+++ b/src/obj/NiPSysDragModifier.cpp
@@ -108,7 +108,7 @@ void NiPSysDragModifier::FixLinks( const map<unsigned int,NiObjectRef> & objects
 	//--END CUSTOM CODE--//
 
 	NiPSysModifier::FixLinks( objects, link_stack, missing_link_stack, info );
-	parent = FixLink<NiObject>( objects, link_stack, info );
+	parent = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiPSysEmitterCtlr.cpp b/src/obj/NiPSysEmitterCtlr.cpp
index f85a0fd2d327f3cfab0ea417d6af74e88ec96d75..efc37df75bb6bc2023fd7596e2d8461f04bd7c08 100644
--- a/src/obj/NiPSysEmitterCtlr.cpp
+++ b/src/obj/NiPSysEmitterCtlr.cpp
@@ -126,10 +126,10 @@ void NiPSysEmitterCtlr::FixLinks( const map<unsigned int,NiObjectRef> & objects,
 
 	NiPSysModifierCtlr::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version <= 0x0A010000 ) {
-		data = FixLink<NiPSysEmitterCtlrData>( objects, link_stack, info );
+		data = FixLink<NiPSysEmitterCtlrData>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( info.version >= 0x0A020000 ) {
-		visibilityInterpolator = FixLink<NiInterpolator>( objects, link_stack, info );
+		visibilityInterpolator = FixLink<NiInterpolator>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiPSysFieldModifier.cpp b/src/obj/NiPSysFieldModifier.cpp
index 09f951cf25668277cd32379149ed617895d48709..cc4c88588b82698d155ed991ac556959e8155a1e 100644
--- a/src/obj/NiPSysFieldModifier.cpp
+++ b/src/obj/NiPSysFieldModifier.cpp
@@ -118,7 +118,7 @@ void NiPSysFieldModifier::FixLinks( const map<unsigned int,NiObjectRef> & object
 	//--END CUSTOM CODE--//
 
 	NiPSysModifier::FixLinks( objects, link_stack, missing_link_stack, info );
-	fieldObject = FixLink<NiAVObject>( objects, link_stack, info );
+	fieldObject = FixLink<NiAVObject>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 
diff --git a/src/obj/NiPSysGravityModifier.cpp b/src/obj/NiPSysGravityModifier.cpp
index 521f1530710bf2e177f3b9e1b92532b5cfa07a66..98294710a42d4c2091282145ff7f78fe6520017d 100644
--- a/src/obj/NiPSysGravityModifier.cpp
+++ b/src/obj/NiPSysGravityModifier.cpp
@@ -121,7 +121,7 @@ void NiPSysGravityModifier::FixLinks( const map<unsigned int,NiObjectRef> & obje
 	//--END CUSTOM CODE--//
 
 	NiPSysModifier::FixLinks( objects, link_stack, missing_link_stack, info );
-	gravityObject = FixLink<NiNode>( objects, link_stack, info );
+	gravityObject = FixLink<NiNode>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiPSysMeshEmitter.cpp b/src/obj/NiPSysMeshEmitter.cpp
index 363fd20e4bd5751ce5c944d038a3c575cac95971..2bd4ca59483ce3b7e84fb9cb5b689f7abe357250 100644
--- a/src/obj/NiPSysMeshEmitter.cpp
+++ b/src/obj/NiPSysMeshEmitter.cpp
@@ -128,7 +128,7 @@ void NiPSysMeshEmitter::FixLinks( const map<unsigned int,NiObjectRef> & objects,
 
 	NiPSysEmitter::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < emitterMeshes.size(); i1++) {
-		emitterMeshes[i1] = FixLink<NiTriBasedGeom>( objects, link_stack, info );
+		emitterMeshes[i1] = FixLink<NiTriBasedGeom>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiPSysMeshUpdateModifier.cpp b/src/obj/NiPSysMeshUpdateModifier.cpp
index 70e9081ddb69969d2b25e626c7cb0559e46cacad..14338011aa860155fc0019c669e4264c5b2725ef 100644
--- a/src/obj/NiPSysMeshUpdateModifier.cpp
+++ b/src/obj/NiPSysMeshUpdateModifier.cpp
@@ -119,7 +119,7 @@ void NiPSysMeshUpdateModifier::FixLinks( const map<unsigned int,NiObjectRef> & o
 
 	NiPSysModifier::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < meshes.size(); i1++) {
-		meshes[i1] = FixLink<NiAVObject>( objects, link_stack, info );
+		meshes[i1] = FixLink<NiAVObject>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiPSysModifier.cpp b/src/obj/NiPSysModifier.cpp
index 5cc1e48ea1158a78e32569ede6889ed60008f1f8..d0dfac46372f08570c20386f9175c95d72a6433c 100644
--- a/src/obj/NiPSysModifier.cpp
+++ b/src/obj/NiPSysModifier.cpp
@@ -105,7 +105,7 @@ void NiPSysModifier::FixLinks( const map<unsigned int,NiObjectRef> & objects, li
 	//--END CUSTOM CODE--//
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
-	target = FixLink<NiParticleSystem>( objects, link_stack, info );
+	target = FixLink<NiParticleSystem>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiPSysModifierActiveCtlr.cpp b/src/obj/NiPSysModifierActiveCtlr.cpp
index 5d4ae3c2db6f9bcc503bac33e2036d2a8c2cce47..7c70f183e1fb57a7961195cf9a33abcab925e42d 100644
--- a/src/obj/NiPSysModifierActiveCtlr.cpp
+++ b/src/obj/NiPSysModifierActiveCtlr.cpp
@@ -101,7 +101,7 @@ void NiPSysModifierActiveCtlr::FixLinks( const map<unsigned int,NiObjectRef> & o
 
 	NiPSysModifierBoolCtlr::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version <= 0x0A010000 ) {
-		data = FixLink<NiVisData>( objects, link_stack, info );
+		data = FixLink<NiVisData>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiPSysModifierFloatCtlr.cpp b/src/obj/NiPSysModifierFloatCtlr.cpp
index 14ae0b723115e303ed54c45f940bb4a7b9e1062d..f38afdf9fac179418c6a3c96505d215e3d54c4e1 100644
--- a/src/obj/NiPSysModifierFloatCtlr.cpp
+++ b/src/obj/NiPSysModifierFloatCtlr.cpp
@@ -101,7 +101,7 @@ void NiPSysModifierFloatCtlr::FixLinks( const map<unsigned int,NiObjectRef> & ob
 
 	NiPSysModifierCtlr::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version <= 0x0A010000 ) {
-		data = FixLink<NiFloatData>( objects, link_stack, info );
+		data = FixLink<NiFloatData>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiPSysVolumeEmitter.cpp b/src/obj/NiPSysVolumeEmitter.cpp
index db4a0b2acc5468b2cc2fd99166ef6df8270b07f2..f7c841f525f2177979102c0b249366817f1242e4 100644
--- a/src/obj/NiPSysVolumeEmitter.cpp
+++ b/src/obj/NiPSysVolumeEmitter.cpp
@@ -101,7 +101,7 @@ void NiPSysVolumeEmitter::FixLinks( const map<unsigned int,NiObjectRef> & object
 
 	NiPSysEmitter::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version >= 0x0A010000 ) {
-		emitterObject = FixLink<NiNode>( objects, link_stack, info );
+		emitterObject = FixLink<NiNode>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiParticleColorModifier.cpp b/src/obj/NiParticleColorModifier.cpp
index 887c43f940884844d4ccf96520e84f2bdfba8064..5f28bf3174841319db41dcacc29a22f48f687eb2 100644
--- a/src/obj/NiParticleColorModifier.cpp
+++ b/src/obj/NiParticleColorModifier.cpp
@@ -96,7 +96,7 @@ void NiParticleColorModifier::FixLinks( const map<unsigned int,NiObjectRef> & ob
 	//--END CUSTOM CODE--//
 
 	NiParticleModifier::FixLinks( objects, link_stack, missing_link_stack, info );
-	colorData = FixLink<NiColorData>( objects, link_stack, info );
+	colorData = FixLink<NiColorData>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiParticleMeshModifier.cpp b/src/obj/NiParticleMeshModifier.cpp
index 4eede536b73cc6a83a60adb4969cff5aaf4feabb..26a4ca74641d1cb5c36acf21c3e91bc686371ec1 100644
--- a/src/obj/NiParticleMeshModifier.cpp
+++ b/src/obj/NiParticleMeshModifier.cpp
@@ -119,7 +119,7 @@ void NiParticleMeshModifier::FixLinks( const map<unsigned int,NiObjectRef> & obj
 
 	NiParticleModifier::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < particleMeshes.size(); i1++) {
-		particleMeshes[i1] = FixLink<NiAVObject>( objects, link_stack, info );
+		particleMeshes[i1] = FixLink<NiAVObject>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiParticleMeshesData.cpp b/src/obj/NiParticleMeshesData.cpp
index cb80bf1c6753093d4d2c79fb9c5a71ee6c18cdba..b5b0804ea2ead3fa229d93d17dc6de70d634c40e 100644
--- a/src/obj/NiParticleMeshesData.cpp
+++ b/src/obj/NiParticleMeshesData.cpp
@@ -96,7 +96,7 @@ void NiParticleMeshesData::FixLinks( const map<unsigned int,NiObjectRef> & objec
 	//--END CUSTOM CODE--//
 
 	NiRotatingParticlesData::FixLinks( objects, link_stack, missing_link_stack, info );
-	unknownLink2 = FixLink<NiAVObject>( objects, link_stack, info );
+	unknownLink2 = FixLink<NiAVObject>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiParticleModifier.cpp b/src/obj/NiParticleModifier.cpp
index e8a06814d02f48a915184ff0a2fce527d28ced30..ad7fb7c6bfc30e948717c115bf37f0f9ace73cfe 100644
--- a/src/obj/NiParticleModifier.cpp
+++ b/src/obj/NiParticleModifier.cpp
@@ -130,9 +130,9 @@ void NiParticleModifier::FixLinks( const map<unsigned int,NiObjectRef> & objects
 	//--END CUSTOM CODE--//
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
-	nextModifier = FixLink<NiParticleModifier>( objects, link_stack, info );
+	nextModifier = FixLink<NiParticleModifier>( objects, link_stack, missing_link_stack, info );
 	if ( info.version >= 0x04000002 ) {
-		controller = FixLink<NiParticleSystemController>( objects, link_stack, info );
+		controller = FixLink<NiParticleSystemController>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiParticleSystem.cpp b/src/obj/NiParticleSystem.cpp
index c549a55bb237f46b6fc9fbe3ad4d58c424969488..a421703058dc5c21d387f15f123fd71f5c24b940 100644
--- a/src/obj/NiParticleSystem.cpp
+++ b/src/obj/NiParticleSystem.cpp
@@ -127,7 +127,7 @@ void NiParticleSystem::FixLinks( const map<unsigned int,NiObjectRef> & objects,
 	NiParticles::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version >= 0x0A010000 ) {
 		for (unsigned int i2 = 0; i2 < modifiers.size(); i2++) {
-			modifiers[i2] = FixLink<NiPSysModifier>( objects, link_stack, info );
+			modifiers[i2] = FixLink<NiPSysModifier>( objects, link_stack, missing_link_stack, info );
 		};
 	};
 
diff --git a/src/obj/NiParticleSystemController.cpp b/src/obj/NiParticleSystemController.cpp
index 7bd6f5e31929840deec499940067b764dece5d8d..b2700b7c7fbcdc1394148b712ff983bcd36d19d6 100644
--- a/src/obj/NiParticleSystemController.cpp
+++ b/src/obj/NiParticleSystemController.cpp
@@ -402,17 +402,17 @@ void NiParticleSystemController::FixLinks( const map<unsigned int,NiObjectRef> &
 	//--END CUSTOM CODE--//
 
 	NiTimeController::FixLinks( objects, link_stack, missing_link_stack, info );
-	emitter = FixLink<NiObject>( objects, link_stack, info );
+	emitter = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 	if ( info.version <= 0x03010000 ) {
-		particleLink = FixLink<NiObject>( objects, link_stack, info );
+		particleLink = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( info.version >= 0x04000002 ) {
-		unknownLink = FixLink<NiObject>( objects, link_stack, info );
+		unknownLink = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 	};
-	particleExtra = FixLink<NiParticleModifier>( objects, link_stack, info );
-	unknownLink2 = FixLink<NiObject>( objects, link_stack, info );
+	particleExtra = FixLink<NiParticleModifier>( objects, link_stack, missing_link_stack, info );
+	unknownLink2 = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 	if ( info.version <= 0x03010000 ) {
-		colorData = FixLink<NiColorData>( objects, link_stack, info );
+		colorData = FixLink<NiColorData>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiParticlesData.cpp b/src/obj/NiParticlesData.cpp
index 01ab8f0bd85ec935efb6c31aba646ca733076dae..13e710d623baac490c02c2c57d19a3b9096a256e 100644
--- a/src/obj/NiParticlesData.cpp
+++ b/src/obj/NiParticlesData.cpp
@@ -568,7 +568,7 @@ void NiParticlesData::FixLinks( const map<unsigned int,NiObjectRef> & objects, l
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version >= 0x14000004 ) {
-		additionalData = FixLink<NiAdditionalGeometryData>( objects, link_stack, info );
+		additionalData = FixLink<NiAdditionalGeometryData>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiPathController.cpp b/src/obj/NiPathController.cpp
index 9f08ce3b32001779460701efb16a62f3273543f6..0f6c5e2992967ef16bd55eacc551c9df66b8ecd3 100644
--- a/src/obj/NiPathController.cpp
+++ b/src/obj/NiPathController.cpp
@@ -136,8 +136,8 @@ void NiPathController::FixLinks( const map<unsigned int,NiObjectRef> & objects,
 	//--END CUSTOM CODE--//
 
 	NiTimeController::FixLinks( objects, link_stack, missing_link_stack, info );
-	posData = FixLink<NiPosData>( objects, link_stack, info );
-	floatData = FixLink<NiFloatData>( objects, link_stack, info );
+	posData = FixLink<NiPosData>( objects, link_stack, missing_link_stack, info );
+	floatData = FixLink<NiFloatData>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiPathInterpolator.cpp b/src/obj/NiPathInterpolator.cpp
index 95f6c266255f2539bf2028ce3fd86c137cbd89fb..add4a88baf8d37cc6bdf240809d70df4f8b846a2 100644
--- a/src/obj/NiPathInterpolator.cpp
+++ b/src/obj/NiPathInterpolator.cpp
@@ -132,8 +132,8 @@ void NiPathInterpolator::FixLinks( const map<unsigned int,NiObjectRef> & objects
 	//--END CUSTOM CODE--//
 
 	NiKeyBasedInterpolator::FixLinks( objects, link_stack, missing_link_stack, info );
-	posData = FixLink<NiPosData>( objects, link_stack, info );
-	floatData = FixLink<NiFloatData>( objects, link_stack, info );
+	posData = FixLink<NiPosData>( objects, link_stack, missing_link_stack, info );
+	floatData = FixLink<NiFloatData>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiPhysXActorDesc.cpp b/src/obj/NiPhysXActorDesc.cpp
index 784a07e740c6a0ed1b9b4eb471e49bdf47f45be4..1ff4c820d4233b0c696094ea710337fd8fb21d00 100644
--- a/src/obj/NiPhysXActorDesc.cpp
+++ b/src/obj/NiPhysXActorDesc.cpp
@@ -237,12 +237,12 @@ void NiPhysXActorDesc::FixLinks( const map<unsigned int,NiObjectRef> & objects,
 	//--END CUSTOM CODE--//
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
-	unknownRef0 = FixLink<NiPhysXBodyDesc>( objects, link_stack, info );
-	shapeDescription = FixLink<NiPhysXShapeDesc>( objects, link_stack, info );
-	unknownRef1 = FixLink<NiObject>( objects, link_stack, info );
-	unknownRef2 = FixLink<NiObject>( objects, link_stack, info );
+	unknownRef0 = FixLink<NiPhysXBodyDesc>( objects, link_stack, missing_link_stack, info );
+	shapeDescription = FixLink<NiPhysXShapeDesc>( objects, link_stack, missing_link_stack, info );
+	unknownRef1 = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
+	unknownRef2 = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < unknownRefs3.size(); i1++) {
-		unknownRefs3[i1] = FixLink<NiObject>( objects, link_stack, info );
+		unknownRefs3[i1] = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiPhysXProp.cpp b/src/obj/NiPhysXProp.cpp
index f74ccf126c086010920c12290eab9293bdf9f0a3..40c4ce66d5240651b4d32c05c2fb9715c95e141c 100644
--- a/src/obj/NiPhysXProp.cpp
+++ b/src/obj/NiPhysXProp.cpp
@@ -198,12 +198,12 @@ void NiPhysXProp::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<
 
 	NiObjectNET::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < unknownRefs1.size(); i1++) {
-		unknownRefs1[i1] = FixLink<NiObject>( objects, link_stack, info );
+		unknownRefs1[i1] = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 	};
 	for (unsigned int i1 = 0; i1 < transformDests.size(); i1++) {
-		transformDests[i1] = FixLink<NiPhysXTransformDest>( objects, link_stack, info );
+		transformDests[i1] = FixLink<NiPhysXTransformDest>( objects, link_stack, missing_link_stack, info );
 	};
-	propDescription = FixLink<NiPhysXPropDesc>( objects, link_stack, info );
+	propDescription = FixLink<NiPhysXPropDesc>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 
diff --git a/src/obj/NiPhysXPropDesc.cpp b/src/obj/NiPhysXPropDesc.cpp
index 862b7d38ab8484e33c393c8fdfa13978f9ba5a88..7a507c6d1c23c0e7eb2ec8180765ea19c59533c3 100644
--- a/src/obj/NiPhysXPropDesc.cpp
+++ b/src/obj/NiPhysXPropDesc.cpp
@@ -222,13 +222,13 @@ void NiPhysXPropDesc::FixLinks( const map<unsigned int,NiObjectRef> & objects, l
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < actorDescs.size(); i1++) {
-		actorDescs[i1] = FixLink<NiPhysXActorDesc>( objects, link_stack, info );
+		actorDescs[i1] = FixLink<NiPhysXActorDesc>( objects, link_stack, missing_link_stack, info );
 	};
 	for (unsigned int i1 = 0; i1 < jointDescs.size(); i1++) {
-		jointDescs[i1] = FixLink<NiPhysXD6JointDesc>( objects, link_stack, info );
+		jointDescs[i1] = FixLink<NiPhysXD6JointDesc>( objects, link_stack, missing_link_stack, info );
 	};
 	for (unsigned int i1 = 0; i1 < materialDescs.size(); i1++) {
-		materialDescs[i1].materialDesc = FixLink<NiPhysXMaterialDesc>( objects, link_stack, info );
+		materialDescs[i1].materialDesc = FixLink<NiPhysXMaterialDesc>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiPhysXShapeDesc.cpp b/src/obj/NiPhysXShapeDesc.cpp
index 3b57cf97632228ee38160c10749239d62b9bc45e..6cfda8cfb9fca58cbcff26219687ec8d0a1001ad 100644
--- a/src/obj/NiPhysXShapeDesc.cpp
+++ b/src/obj/NiPhysXShapeDesc.cpp
@@ -174,7 +174,7 @@ void NiPhysXShapeDesc::FixLinks( const map<unsigned int,NiObjectRef> & objects,
 	//--END CUSTOM CODE--//
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
-	meshDescription = FixLink<NiPhysXMeshDesc>( objects, link_stack, info );
+	meshDescription = FixLink<NiPhysXMeshDesc>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 
diff --git a/src/obj/NiPhysXTransformDest.cpp b/src/obj/NiPhysXTransformDest.cpp
index 67d9c28d5d6aff4903ca00c40baebfa4973bdbcb..e7facfdf49574dab40d565bceed5f83094d2cc08 100644
--- a/src/obj/NiPhysXTransformDest.cpp
+++ b/src/obj/NiPhysXTransformDest.cpp
@@ -112,7 +112,7 @@ void NiPhysXTransformDest::FixLinks( const map<unsigned int,NiObjectRef> & objec
 	//--END CUSTOM CODE--//
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
-	node = FixLink<NiNode>( objects, link_stack, info );
+	node = FixLink<NiNode>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 
diff --git a/src/obj/NiPoint3InterpController.cpp b/src/obj/NiPoint3InterpController.cpp
index 3f0fa75ea9a453daddfd0363dea267079f9b2b0d..a304443ca4d269865d6bcdd9e593e2eb20aa1ea3 100644
--- a/src/obj/NiPoint3InterpController.cpp
+++ b/src/obj/NiPoint3InterpController.cpp
@@ -108,7 +108,7 @@ void NiPoint3InterpController::FixLinks( const map<unsigned int,NiObjectRef> & o
 
 	NiSingleInterpController::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version <= 0x0A010000 ) {
-		data = FixLink<NiPosData>( objects, link_stack, info );
+		data = FixLink<NiPosData>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiPoint3Interpolator.cpp b/src/obj/NiPoint3Interpolator.cpp
index 8eda16683a345afcda3f8f5f5f38942a0daa2f98..3891f129f0539416e48d91cdc6901b056a16174a 100644
--- a/src/obj/NiPoint3Interpolator.cpp
+++ b/src/obj/NiPoint3Interpolator.cpp
@@ -99,7 +99,7 @@ void NiPoint3Interpolator::FixLinks( const map<unsigned int,NiObjectRef> & objec
 	//--END CUSTOM CODE--//
 
 	NiKeyBasedInterpolator::FixLinks( objects, link_stack, missing_link_stack, info );
-	data = FixLink<NiPosData>( objects, link_stack, info );
+	data = FixLink<NiPosData>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiPortal.cpp b/src/obj/NiPortal.cpp
index e63d2349775d62801a9a52e62744b9da46cf531d..78e04c98ab9a6f4b7de6b6568b425ea6ed4c6d16 100644
--- a/src/obj/NiPortal.cpp
+++ b/src/obj/NiPortal.cpp
@@ -137,7 +137,7 @@ void NiPortal::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<uns
 	//--END CUSTOM CODE--//
 
 	NiAVObject::FixLinks( objects, link_stack, missing_link_stack, info );
-	target = FixLink<NiNode>( objects, link_stack, info );
+	target = FixLink<NiNode>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 
diff --git a/src/obj/NiRollController.cpp b/src/obj/NiRollController.cpp
index 7802223e6276e5a5ca0ae632448cfef93ae2a4dd..c36605d789068221686f1d14d08fa968c7e3b4ff 100644
--- a/src/obj/NiRollController.cpp
+++ b/src/obj/NiRollController.cpp
@@ -96,7 +96,7 @@ void NiRollController::FixLinks( const map<unsigned int,NiObjectRef> & objects,
 	//--END CUSTOM CODE--//
 
 	NiSingleInterpController::FixLinks( objects, link_stack, missing_link_stack, info );
-	data = FixLink<NiFloatData>( objects, link_stack, info );
+	data = FixLink<NiFloatData>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiRoom.cpp b/src/obj/NiRoom.cpp
index 4174229d411b3d4de9a55a07bf6f276f6f3ebf53..74adf8c19aaf6a683fbd32a3bed71d17eb5ad6a3 100644
--- a/src/obj/NiRoom.cpp
+++ b/src/obj/NiRoom.cpp
@@ -236,13 +236,13 @@ void NiRoom::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<unsig
 
 	NiNode::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < inPortals.size(); i1++) {
-		inPortals[i1] = FixLink<NiPortal>( objects, link_stack, info );
+		inPortals[i1] = FixLink<NiPortal>( objects, link_stack, missing_link_stack, info );
 	};
 	for (unsigned int i1 = 0; i1 < portals2.size(); i1++) {
-		portals2[i1] = FixLink<NiPortal>( objects, link_stack, info );
+		portals2[i1] = FixLink<NiPortal>( objects, link_stack, missing_link_stack, info );
 	};
 	for (unsigned int i1 = 0; i1 < items.size(); i1++) {
-		items[i1] = FixLink<NiAVObject>( objects, link_stack, info );
+		items[i1] = FixLink<NiAVObject>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiRoomGroup.cpp b/src/obj/NiRoomGroup.cpp
index edda6b2880b6843eb833ec6ea3c45d2befbd9387..63b7b2b18ab5851ac2e2ac89e420519fb506b179 100644
--- a/src/obj/NiRoomGroup.cpp
+++ b/src/obj/NiRoomGroup.cpp
@@ -149,9 +149,9 @@ void NiRoomGroup::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<
 	//--END CUSTOM CODE--//
 
 	NiNode::FixLinks( objects, link_stack, missing_link_stack, info );
-	shellLink = FixLink<NiNode>( objects, link_stack, info );
+	shellLink = FixLink<NiNode>( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < rooms.size(); i1++) {
-		rooms[i1] = FixLink<NiRoom>( objects, link_stack, info );
+		rooms[i1] = FixLink<NiRoom>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiSequence.cpp b/src/obj/NiSequence.cpp
index d3d58a5252599aeff308981e7437908542307463..4f29e713d86a964fef8a05b9035bc53b990adc14 100644
--- a/src/obj/NiSequence.cpp
+++ b/src/obj/NiSequence.cpp
@@ -365,21 +365,21 @@ void NiSequence::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<u
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version <= 0x0A010000 ) {
-		textKeys = FixLink<NiTextKeyExtraData>( objects, link_stack, info );
+		textKeys = FixLink<NiTextKeyExtraData>( objects, link_stack, missing_link_stack, info );
 	};
 	for (unsigned int i1 = 0; i1 < controlledBlocks.size(); i1++) {
 		if ( info.version <= 0x0A010000 ) {
-			controlledBlocks[i1].controller = FixLink<NiTimeController>( objects, link_stack, info );
+			controlledBlocks[i1].controller = FixLink<NiTimeController>( objects, link_stack, missing_link_stack, info );
 		};
 		if ( info.version >= 0x0A01006A ) {
-			controlledBlocks[i1].interpolator = FixLink<NiInterpolator>( objects, link_stack, info );
-			controlledBlocks[i1].controller = FixLink<NiTimeController>( objects, link_stack, info );
+			controlledBlocks[i1].interpolator = FixLink<NiInterpolator>( objects, link_stack, missing_link_stack, info );
+			controlledBlocks[i1].controller = FixLink<NiTimeController>( objects, link_stack, missing_link_stack, info );
 		};
 		if ( ( info.version >= 0x0A01006A ) && ( info.version <= 0x0A01006A ) ) {
-			controlledBlocks[i1].unknownLink2 = FixLink<NiObject>( objects, link_stack, info );
+			controlledBlocks[i1].unknownLink2 = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 		};
 		if ( ( info.version >= 0x0A020000 ) && ( info.version <= 0x14000005 ) ) {
-			controlledBlocks[i1].stringPalette = FixLink<NiStringPalette>( objects, link_stack, info );
+			controlledBlocks[i1].stringPalette = FixLink<NiStringPalette>( objects, link_stack, missing_link_stack, info );
 		};
 	};
 
diff --git a/src/obj/NiSingleInterpController.cpp b/src/obj/NiSingleInterpController.cpp
index dd490b6785253de954bf6b908f605d8d9a23cbcd..4b2205832bc6fb2344ef858bdcebd4c34f1b7473 100644
--- a/src/obj/NiSingleInterpController.cpp
+++ b/src/obj/NiSingleInterpController.cpp
@@ -102,7 +102,7 @@ void NiSingleInterpController::FixLinks( const map<unsigned int,NiObjectRef> & o
 
 	NiInterpController::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version >= 0x0A020000 ) {
-		interpolator = FixLink<NiInterpolator>( objects, link_stack, info );
+		interpolator = FixLink<NiInterpolator>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiSkinData.cpp b/src/obj/NiSkinData.cpp
index 62fb79a1b33c61db79ef8222d220b0e85cfc5b56..23e4ffba5232d97c6c842507005a990f01b5dfaa 100644
--- a/src/obj/NiSkinData.cpp
+++ b/src/obj/NiSkinData.cpp
@@ -200,7 +200,7 @@ void NiSkinData::FixLinks( const map<unsigned int,NiObjectRef> & objects, list<u
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( ( info.version >= 0x04000002 ) && ( info.version <= 0x0A010000 ) ) {
-		skinPartition = FixLink<NiSkinPartition>( objects, link_stack, info );
+		skinPartition = FixLink<NiSkinPartition>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiSkinInstance.cpp b/src/obj/NiSkinInstance.cpp
index 309e10c91cb641772dff68e530997e9b7739b8b8..68631c4f0df394d4cf40396a969a88b51c6aa3ba 100644
--- a/src/obj/NiSkinInstance.cpp
+++ b/src/obj/NiSkinInstance.cpp
@@ -197,13 +197,13 @@ void NiSkinInstance::FixLinks( const map<unsigned int,NiObjectRef> & objects, li
 	//--END CUSTOM CODE--//
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
-	data = FixLink<NiSkinData>( objects, link_stack, info );
+	data = FixLink<NiSkinData>( objects, link_stack, missing_link_stack, info );
 	if ( info.version >= 0x0A020000 ) {
-		skinPartition = FixLink<NiSkinPartition>( objects, link_stack, info );
+		skinPartition = FixLink<NiSkinPartition>( objects, link_stack, missing_link_stack, info );
 	};
-	skeletonRoot = FixLink<NiNode>( objects, link_stack, info );
+	skeletonRoot = FixLink<NiNode>( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < bones.size(); i1++) {
-		bones[i1] = FixLink<NiNode>( objects, link_stack, info );
+		bones[i1] = FixLink<NiNode>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiSourceTexture.cpp b/src/obj/NiSourceTexture.cpp
index 3e6f848d53ec71efe4a0d8278e132831f89eb5ce..b209b287c84438c219f27f41be718949d1e50b95 100644
--- a/src/obj/NiSourceTexture.cpp
+++ b/src/obj/NiSourceTexture.cpp
@@ -192,11 +192,11 @@ void NiSourceTexture::FixLinks( const map<unsigned int,NiObjectRef> & objects, l
 	NiTexture::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version >= 0x0A010000 ) {
 		if ( (useExternal == 1) ) {
-			unknownLink = FixLink<NiObject>( objects, link_stack, info );
+			unknownLink = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 		};
 	};
 	if ( (useExternal == 0) ) {
-		pixelData = FixLink<ATextureRenderData>( objects, link_stack, info );
+		pixelData = FixLink<ATextureRenderData>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiTextureEffect.cpp b/src/obj/NiTextureEffect.cpp
index c092b8fef2307c851e022a943e1557ff83dc4bd1..a99f12855cab0c1d4479f6cdcb9084816ff3192e 100644
--- a/src/obj/NiTextureEffect.cpp
+++ b/src/obj/NiTextureEffect.cpp
@@ -170,10 +170,10 @@ void NiTextureEffect::FixLinks( const map<unsigned int,NiObjectRef> & objects, l
 
 	NiDynamicEffect::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version <= 0x03010000 ) {
-		image = FixLink<NiImage>( objects, link_stack, info );
+		image = FixLink<NiImage>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( info.version >= 0x04000000 ) {
-		sourceTexture = FixLink<NiSourceTexture>( objects, link_stack, info );
+		sourceTexture = FixLink<NiSourceTexture>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiTextureProperty.cpp b/src/obj/NiTextureProperty.cpp
index d2937af3f284101b6658687d8258924cebb3cdd5..ef9838086352c084d0e2167be3b1ea7618e23306 100644
--- a/src/obj/NiTextureProperty.cpp
+++ b/src/obj/NiTextureProperty.cpp
@@ -109,7 +109,7 @@ void NiTextureProperty::FixLinks( const map<unsigned int,NiObjectRef> & objects,
 	//--END CUSTOM CODE--//
 
 	NiProperty::FixLinks( objects, link_stack, missing_link_stack, info );
-	image = FixLink<NiImage>( objects, link_stack, info );
+	image = FixLink<NiImage>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiTextureTransformController.cpp b/src/obj/NiTextureTransformController.cpp
index f5777e0f34917db4b0acd44d6987fedcd88e62ad..d1fc01a72e35f13a057217ee1284b1f673b94bc1 100644
--- a/src/obj/NiTextureTransformController.cpp
+++ b/src/obj/NiTextureTransformController.cpp
@@ -111,7 +111,7 @@ void NiTextureTransformController::FixLinks( const map<unsigned int,NiObjectRef>
 
 	NiFloatInterpController::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version <= 0x0A010000 ) {
-		data = FixLink<NiFloatData>( objects, link_stack, info );
+		data = FixLink<NiFloatData>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiTexturingProperty.cpp b/src/obj/NiTexturingProperty.cpp
index 6e7a67a5711fcc98d6c1f9b2258a86c34e228e3b..c26fb078e156b1a2e7b18409cfb8c2fa23871283 100644
--- a/src/obj/NiTexturingProperty.cpp
+++ b/src/obj/NiTexturingProperty.cpp
@@ -1505,47 +1505,47 @@ void NiTexturingProperty::FixLinks( const map<unsigned int,NiObjectRef> & object
 
 	NiProperty::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( (hasBaseTexture != 0) ) {
-		baseTexture.source = FixLink<NiSourceTexture>( objects, link_stack, info );
+		baseTexture.source = FixLink<NiSourceTexture>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( (hasDarkTexture != 0) ) {
-		darkTexture.source = FixLink<NiSourceTexture>( objects, link_stack, info );
+		darkTexture.source = FixLink<NiSourceTexture>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( (hasDetailTexture != 0) ) {
-		detailTexture.source = FixLink<NiSourceTexture>( objects, link_stack, info );
+		detailTexture.source = FixLink<NiSourceTexture>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( (hasGlossTexture != 0) ) {
-		glossTexture.source = FixLink<NiSourceTexture>( objects, link_stack, info );
+		glossTexture.source = FixLink<NiSourceTexture>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( (hasGlowTexture != 0) ) {
-		glowTexture.source = FixLink<NiSourceTexture>( objects, link_stack, info );
+		glowTexture.source = FixLink<NiSourceTexture>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( (hasBumpMapTexture != 0) ) {
-		bumpMapTexture.source = FixLink<NiSourceTexture>( objects, link_stack, info );
+		bumpMapTexture.source = FixLink<NiSourceTexture>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( info.version >= 0x14020007 ) {
 		if ( (hasNormalTexture != 0) ) {
-			normalTexture.source = FixLink<NiSourceTexture>( objects, link_stack, info );
+			normalTexture.source = FixLink<NiSourceTexture>( objects, link_stack, missing_link_stack, info );
 		};
 		if ( (hasUnknown2Texture != 0) ) {
-			unknown2Texture.source = FixLink<NiSourceTexture>( objects, link_stack, info );
+			unknown2Texture.source = FixLink<NiSourceTexture>( objects, link_stack, missing_link_stack, info );
 		};
 	};
 	if ( (hasDecal0Texture != 0) ) {
-		decal0Texture.source = FixLink<NiSourceTexture>( objects, link_stack, info );
+		decal0Texture.source = FixLink<NiSourceTexture>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( (hasDecal1Texture != 0) ) {
-		decal1Texture.source = FixLink<NiSourceTexture>( objects, link_stack, info );
+		decal1Texture.source = FixLink<NiSourceTexture>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( (hasDecal2Texture != 0) ) {
-		decal2Texture.source = FixLink<NiSourceTexture>( objects, link_stack, info );
+		decal2Texture.source = FixLink<NiSourceTexture>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( (hasDecal3Texture != 0) ) {
-		decal3Texture.source = FixLink<NiSourceTexture>( objects, link_stack, info );
+		decal3Texture.source = FixLink<NiSourceTexture>( objects, link_stack, missing_link_stack, info );
 	};
 	if ( info.version >= 0x0A000100 ) {
 		for (unsigned int i2 = 0; i2 < shaderTextures.size(); i2++) {
 			if ( (shaderTextures[i2].isUsed != 0) ) {
-				shaderTextures[i2].textureData.source = FixLink<NiSourceTexture>( objects, link_stack, info );
+				shaderTextures[i2].textureData.source = FixLink<NiSourceTexture>( objects, link_stack, missing_link_stack, info );
 			};
 		};
 	};
diff --git a/src/obj/NiTimeController.cpp b/src/obj/NiTimeController.cpp
index 9e724a45a82d418e6aba32beda914676ed2bd9e2..99b89a4742b1e9b22029dd9af07062f70d66fad1 100644
--- a/src/obj/NiTimeController.cpp
+++ b/src/obj/NiTimeController.cpp
@@ -142,9 +142,9 @@ void NiTimeController::FixLinks( const map<unsigned int,NiObjectRef> & objects,
 	//--END CUSTOM CODE--//
 
 	NiObject::FixLinks( objects, link_stack, missing_link_stack, info );
-	nextController = FixLink<NiTimeController>( objects, link_stack, info );
+	nextController = FixLink<NiTimeController>( objects, link_stack, missing_link_stack, info );
 	if ( info.version >= 0x0303000D ) {
-		target = FixLink<NiObjectNET>( objects, link_stack, info );
+		target = FixLink<NiObjectNET>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiTransformInterpolator.cpp b/src/obj/NiTransformInterpolator.cpp
index ef301d4407aab3183cf232806e868fa6e78d1945..8286068c7196db270100c9bd9656a7f4eef0380a 100644
--- a/src/obj/NiTransformInterpolator.cpp
+++ b/src/obj/NiTransformInterpolator.cpp
@@ -128,7 +128,7 @@ void NiTransformInterpolator::FixLinks( const map<unsigned int,NiObjectRef> & ob
 	//--END CUSTOM CODE--//
 
 	NiKeyBasedInterpolator::FixLinks( objects, link_stack, missing_link_stack, info );
-	data = FixLink<NiTransformData>( objects, link_stack, info );
+	data = FixLink<NiTransformData>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiTriShapeSkinController.cpp b/src/obj/NiTriShapeSkinController.cpp
index a472e6293a9124bdbdf095decedbedeedc479ff2..c4c51ba3145d3370e3e2023e16333cbb220dfc3f 100644
--- a/src/obj/NiTriShapeSkinController.cpp
+++ b/src/obj/NiTriShapeSkinController.cpp
@@ -171,7 +171,7 @@ void NiTriShapeSkinController::FixLinks( const map<unsigned int,NiObjectRef> & o
 
 	NiTimeController::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < bones.size(); i1++) {
-		bones[i1] = FixLink<NiBone>( objects, link_stack, info );
+		bones[i1] = FixLink<NiBone>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/NiUVController.cpp b/src/obj/NiUVController.cpp
index 38f122dc6aae951d08f7b35146466f4e36062a19..452501fb199c63ea9ce930bff3b4a997f3a13efa 100644
--- a/src/obj/NiUVController.cpp
+++ b/src/obj/NiUVController.cpp
@@ -99,7 +99,7 @@ void NiUVController::FixLinks( const map<unsigned int,NiObjectRef> & objects, li
 	//--END CUSTOM CODE--//
 
 	NiTimeController::FixLinks( objects, link_stack, missing_link_stack, info );
-	data = FixLink<NiUVData>( objects, link_stack, info );
+	data = FixLink<NiUVData>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/NiVisController.cpp b/src/obj/NiVisController.cpp
index 297b78eb8d74a74a880a5f18e95b7fcfccd28c4d..cc08f6d60e0c12ffaa136d96ce08a04f0d0e1c83 100644
--- a/src/obj/NiVisController.cpp
+++ b/src/obj/NiVisController.cpp
@@ -101,7 +101,7 @@ void NiVisController::FixLinks( const map<unsigned int,NiObjectRef> & objects, l
 
 	NiBoolInterpController::FixLinks( objects, link_stack, missing_link_stack, info );
 	if ( info.version <= 0x0A010000 ) {
-		data = FixLink<NiVisData>( objects, link_stack, info );
+		data = FixLink<NiVisData>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/bhkConstraint.cpp b/src/obj/bhkConstraint.cpp
index f6a038ba00cd75ac174b36b47db01993a513946d..a8f0e1b0fb746ef2c96446cca39ffc568fa7627d 100644
--- a/src/obj/bhkConstraint.cpp
+++ b/src/obj/bhkConstraint.cpp
@@ -122,7 +122,7 @@ void bhkConstraint::FixLinks( const map<unsigned int,NiObjectRef> & objects, lis
 
 	bhkSerializable::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < entities.size(); i1++) {
-		entities[i1] = FixLink<bhkEntity>( objects, link_stack, info );
+		entities[i1] = FixLink<bhkEntity>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/bhkConvexListShape.cpp b/src/obj/bhkConvexListShape.cpp
index 8d09da254a930717f78744baa8d5190082ad28ac..001f817a358aed42c2b93eb2204f9b7823a8fff6 100644
--- a/src/obj/bhkConvexListShape.cpp
+++ b/src/obj/bhkConvexListShape.cpp
@@ -156,7 +156,7 @@ void bhkConvexListShape::FixLinks( const map<unsigned int,NiObjectRef> & objects
 
 	bhkShape::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < subShapes.size(); i1++) {
-		subShapes[i1] = FixLink<bhkShape>( objects, link_stack, info );
+		subShapes[i1] = FixLink<bhkShape>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/bhkListShape.cpp b/src/obj/bhkListShape.cpp
index f49bac2a96d9e1c9e6b600f020bf0b21fcbe6998..983d009a63622d0760c5d7d9d37b80415afae92e 100644
--- a/src/obj/bhkListShape.cpp
+++ b/src/obj/bhkListShape.cpp
@@ -165,7 +165,7 @@ void bhkListShape::FixLinks( const map<unsigned int,NiObjectRef> & objects, list
 
 	bhkShapeCollection::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < subShapes.size(); i1++) {
-		subShapes[i1] = FixLink<bhkShape>( objects, link_stack, info );
+		subShapes[i1] = FixLink<bhkShape>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/bhkMalleableConstraint.cpp b/src/obj/bhkMalleableConstraint.cpp
index c32a2787d30c6dda64e7e1e0a817d615fc6503bc..09f376185f8c8f343f8a89f5c9f3dc138aa93a8c 100644
--- a/src/obj/bhkMalleableConstraint.cpp
+++ b/src/obj/bhkMalleableConstraint.cpp
@@ -321,8 +321,8 @@ void bhkMalleableConstraint::FixLinks( const map<unsigned int,NiObjectRef> & obj
 	//--END CUSTOM CODE--//
 
 	bhkConstraint::FixLinks( objects, link_stack, missing_link_stack, info );
-	unknownLink1 = FixLink<NiObject>( objects, link_stack, info );
-	unknownLink2 = FixLink<NiObject>( objects, link_stack, info );
+	unknownLink1 = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
+	unknownLink2 = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/bhkMoppBvTreeShape.cpp b/src/obj/bhkMoppBvTreeShape.cpp
index 88a5a9cd28ca8d45da4dbe5eb7d1b77a4fe47f28..426dae8b6030a9d718faac561d43d7a06ec11727 100644
--- a/src/obj/bhkMoppBvTreeShape.cpp
+++ b/src/obj/bhkMoppBvTreeShape.cpp
@@ -139,7 +139,7 @@ void bhkMoppBvTreeShape::FixLinks( const map<unsigned int,NiObjectRef> & objects
 	//--END CUSTOM CODE--//
 
 	bhkBvTreeShape::FixLinks( objects, link_stack, missing_link_stack, info );
-	shape = FixLink<bhkShape>( objects, link_stack, info );
+	shape = FixLink<bhkShape>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/bhkNiCollisionObject.cpp b/src/obj/bhkNiCollisionObject.cpp
index 6f0b10b510cd516c34302bf268929e42c5154258..d4b19b5c8c585370907dbdc71f360f1fd7359240 100644
--- a/src/obj/bhkNiCollisionObject.cpp
+++ b/src/obj/bhkNiCollisionObject.cpp
@@ -99,7 +99,7 @@ void bhkNiCollisionObject::FixLinks( const map<unsigned int,NiObjectRef> & objec
 	//--END CUSTOM CODE--//
 
 	NiCollisionObject::FixLinks( objects, link_stack, missing_link_stack, info );
-	body = FixLink<NiObject>( objects, link_stack, info );
+	body = FixLink<NiObject>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/bhkNiTriStripsShape.cpp b/src/obj/bhkNiTriStripsShape.cpp
index 1094a44272ec8820a58236fa9928e27796b60320..c603d316a392d226e21fb60300fad819d1f5cf3f 100644
--- a/src/obj/bhkNiTriStripsShape.cpp
+++ b/src/obj/bhkNiTriStripsShape.cpp
@@ -183,7 +183,7 @@ void bhkNiTriStripsShape::FixLinks( const map<unsigned int,NiObjectRef> & object
 
 	bhkShapeCollection::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < stripsData.size(); i1++) {
-		stripsData[i1] = FixLink<NiTriStripsData>( objects, link_stack, info );
+		stripsData[i1] = FixLink<NiTriStripsData>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/bhkPackedNiTriStripsShape.cpp b/src/obj/bhkPackedNiTriStripsShape.cpp
index 9cfa714c6bf6860b73681ccb28ade65b0ddb311e..33db02fda8f6d5e58298ca85d5f884dd98f77881 100644
--- a/src/obj/bhkPackedNiTriStripsShape.cpp
+++ b/src/obj/bhkPackedNiTriStripsShape.cpp
@@ -162,7 +162,7 @@ void bhkPackedNiTriStripsShape::FixLinks( const map<unsigned int,NiObjectRef> &
 	//--END CUSTOM CODE--//
 
 	bhkShapeCollection::FixLinks( objects, link_stack, missing_link_stack, info );
-	data = FixLink<hkPackedNiTriStripsData>( objects, link_stack, info );
+	data = FixLink<hkPackedNiTriStripsData>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/bhkRigidBody.cpp b/src/obj/bhkRigidBody.cpp
index 5c250c3c39ea7e8166383f2e512b72d23e83927b..e47712dbf035a3eab1e7f06de4a6cc542340adf2 100644
--- a/src/obj/bhkRigidBody.cpp
+++ b/src/obj/bhkRigidBody.cpp
@@ -271,7 +271,7 @@ void bhkRigidBody::FixLinks( const map<unsigned int,NiObjectRef> & objects, list
 
 	bhkEntity::FixLinks( objects, link_stack, missing_link_stack, info );
 	for (unsigned int i1 = 0; i1 < constraints.size(); i1++) {
-		constraints[i1] = FixLink<bhkSerializable>( objects, link_stack, info );
+		constraints[i1] = FixLink<bhkSerializable>( objects, link_stack, missing_link_stack, info );
 	};
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
diff --git a/src/obj/bhkTransformShape.cpp b/src/obj/bhkTransformShape.cpp
index 9806ee522566756c7bc12be5fc17e770f2bd26c9..df91dfc1e2cdd6898a341b4c9da4caa804b6a94a 100644
--- a/src/obj/bhkTransformShape.cpp
+++ b/src/obj/bhkTransformShape.cpp
@@ -124,7 +124,7 @@ void bhkTransformShape::FixLinks( const map<unsigned int,NiObjectRef> & objects,
 	//--END CUSTOM CODE--//
 
 	bhkShape::FixLinks( objects, link_stack, missing_link_stack, info );
-	shape = FixLink<bhkShape>( objects, link_stack, info );
+	shape = FixLink<bhkShape>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//
diff --git a/src/obj/bhkWorldObject.cpp b/src/obj/bhkWorldObject.cpp
index 0c5a27774e02a9fc48671aa1d988682f73d4fe92..48fc595938292a9df8c01f87e68ff2372c00ae7c 100644
--- a/src/obj/bhkWorldObject.cpp
+++ b/src/obj/bhkWorldObject.cpp
@@ -105,7 +105,7 @@ void bhkWorldObject::FixLinks( const map<unsigned int,NiObjectRef> & objects, li
 	//--END CUSTOM CODE--//
 
 	bhkSerializable::FixLinks( objects, link_stack, missing_link_stack, info );
-	shape = FixLink<bhkShape>( objects, link_stack, info );
+	shape = FixLink<bhkShape>( objects, link_stack, missing_link_stack, info );
 
 	//--BEGIN POST-FIXLINKS CUSTOM CODE--//
 	//--END CUSTOM CODE--//