Index: /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	return 1;
 }/*}}}*/
-void AdjointBalancethicknessAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void AdjointBalancethicknessAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 	_error_("not implemented yet");
 }/*}}}*/
@@ -15,11 +15,11 @@
 	_error_("not implemented yet");
 }/*}}}*/
-void AdjointBalancethicknessAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void AdjointBalancethicknessAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 	_error_("not implemented yet");
 }/*}}}*/
-void AdjointBalancethicknessAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void AdjointBalancethicknessAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 	_error_("not implemented yet");
 }/*}}}*/
-void AdjointBalancethicknessAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void AdjointBalancethicknessAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 	_error_("not implemented yet");
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	_error_("not implemented");
 }/*}}}*/
-void AdjointHorizAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void AdjointHorizAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 	   _error_("not implemented yet");
 }/*}}}*/
@@ -15,11 +15,11 @@
 	   _error_("not implemented yet");
 }/*}}}*/
-void AdjointHorizAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void AdjointHorizAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 	   _error_("not implemented yet");
 }/*}}}*/
-void AdjointHorizAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void AdjointHorizAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 	   _error_("not implemented yet");
 }/*}}}*/
-void AdjointHorizAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void AdjointHorizAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 	   _error_("not implemented yet");
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/Analysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/Analysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/Analysis.h	(revision 16542)
@@ -19,9 +19,9 @@
 		virtual      ~Analysis(){};
 		virtual int  DofsPerNode(int** doflist,int meshtype,int approximation)=0;
-		virtual void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum)=0;
+		virtual void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum)=0;
 		virtual void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type)=0;
-		virtual void CreateNodes(Nodes** pnodes,IoModel* iomodel)=0;
-		virtual void CreateConstraints(Constraints** pconstraints,IoModel* iomodel)=0;
-		virtual void CreateLoads(Loads** ploads, IoModel* iomodel)=0;
+		virtual void CreateNodes(Nodes* nodes,IoModel* iomodel)=0;
+		virtual void CreateConstraints(Constraints* constraints,IoModel* iomodel)=0;
+		virtual void CreateLoads(Loads* loads, IoModel* iomodel)=0;
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	return 1;
 }/*}}}*/
-void BalancethicknessAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void BalancethicknessAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 }/*}}}*/
 void BalancethicknessAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -49,5 +49,5 @@
 	}
 }/*}}}*/
-void BalancethicknessAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void BalancethicknessAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
 	int  stabilization;
@@ -60,19 +60,16 @@
 	if(iomodel->meshtype==Mesh3DEnum) iomodel->FetchData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
 	if(stabilization!=3){
-		::CreateNodes(pnodes,iomodel,BalancethicknessAnalysisEnum,P1Enum);
+		::CreateNodes(nodes,iomodel,BalancethicknessAnalysisEnum,P1Enum);
 	}
 	else{
-		::CreateNodes(pnodes,iomodel,BalancethicknessAnalysisEnum,P1DGEnum);
+		::CreateNodes(nodes,iomodel,BalancethicknessAnalysisEnum,P1DGEnum);
 	}
 	iomodel->DeleteData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
 }/*}}}*/
-void BalancethicknessAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void BalancethicknessAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 
 	/*Fetch parameters: */
 	int    stabilization;	
 	iomodel->Constant(&stabilization,BalancethicknessStabilizationEnum);
-
-	/*Recover pointer: */
-	Constraints* constraints=*pconstraints;
 
 	/*Do not add constraints in DG*/
@@ -81,8 +78,6 @@
 	}
 
-	/*Assign output pointer: */
-	*pconstraints=constraints;
 }/*}}}*/
-void BalancethicknessAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void BalancethicknessAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 
 	/*Intermediary*/
@@ -92,7 +87,4 @@
 	/*Fetch parameters: */
 	iomodel->Constant(&stabilization,BalancethicknessStabilizationEnum);
-
-	/*Recover pointer: */
-	Loads* loads=*ploads;
 
 	/*Loads only in DG*/
@@ -119,6 +111,3 @@
 		iomodel->DeleteData(1,ThicknessEnum);
 	}
-
-	/*Assign output pointer: */
-	*ploads=loads;
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/BalancethicknessSoftAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancethicknessSoftAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/BalancethicknessSoftAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	_error_("not implemented");
 }/*}}}*/
-void BalancethicknessSoftAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void BalancethicknessSoftAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 	   _error_("not implemented yet");
 }/*}}}*/
@@ -15,11 +15,11 @@
 	   _error_("not implemented yet");
 }/*}}}*/
-void BalancethicknessSoftAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void BalancethicknessSoftAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 	   _error_("not implemented yet");
 }/*}}}*/
-void BalancethicknessSoftAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void BalancethicknessSoftAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 	   _error_("not implemented yet");
 }/*}}}*/
-void BalancethicknessSoftAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void BalancethicknessSoftAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 	   _error_("not implemented yet");
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/BalancethicknessSoftAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancethicknessSoftAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/BalancethicknessSoftAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	return 1;
 }/*}}}*/
-void BalancevelocityAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void BalancevelocityAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 }/*}}}*/
 void BalancevelocityAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -38,5 +38,5 @@
 	}
 }/*}}}*/
-void BalancevelocityAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void BalancevelocityAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
 	/*Check in 3d*/
@@ -45,19 +45,13 @@
 	/*First fetch data: */
 	iomodel->FetchData(3,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,FlowequationVertexEquationEnum);
-	::CreateNodes(pnodes,iomodel,BalancevelocityAnalysisEnum,P1Enum);
+	::CreateNodes(nodes,iomodel,BalancevelocityAnalysisEnum,P1Enum);
 	iomodel->DeleteData(3,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,FlowequationVertexEquationEnum);
 }/*}}}*/
-void BalancevelocityAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
-
-	/*Recover pointer: */
-	Constraints* constraints=*pconstraints;
+void BalancevelocityAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 
 	/*No constraints for now*/
 	//IoModelToConstraintsx(constraints,iomodel,BalancethicknessSpcthicknessEnum,BalancevelocityAnalysisEnum,P1Enum);
-
-	/*Assign output pointer: */
-	*pconstraints=constraints;
 }/*}}}*/
-void BalancevelocityAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void BalancevelocityAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 
 	/*No loads*/
Index: /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 16542)
@@ -9,10 +9,5 @@
 	return 1;
 }/*}}}*/
-void DamageEvolutionAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
-	Parameters *parameters = NULL;
-	char*       law        = NULL;
-
-	/*Get parameters: */
-	parameters=*pparameters;
+void DamageEvolutionAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 
 	/*retrieve some parameters: */
@@ -27,4 +22,5 @@
 
 	/*Retrieve law dependent parameters: */
+	char* law  = NULL;
 	iomodel->Constant(&law,DamageLawEnum);
 	if (strcmp(law,"pralong")==0){
@@ -36,8 +32,6 @@
 		parameters->AddObject(iomodel->CopyConstantObject(DamageHealingEnum));
 	}
+	xDelete<char>(law);
 
-	/*Assign output pointer: */
-	xDelete<char>(law);
-	*pparameters=parameters;
 }/*}}}*/
 void DamageEvolutionAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -67,28 +61,19 @@
 	}
 }/*}}}*/
-void DamageEvolutionAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void DamageEvolutionAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
 	iomodel->FetchData(1,MeshVertexonbedEnum);
-	::CreateNodes(pnodes,iomodel,DamageEvolutionAnalysisEnum,P1Enum);
+	::CreateNodes(nodes,iomodel,DamageEvolutionAnalysisEnum,P1Enum);
 	iomodel->DeleteData(1,MeshVertexonbedEnum);
 }/*}}}*/
-void DamageEvolutionAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void DamageEvolutionAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 
-	/*Fetch parameters: */
 	int stabilization;
 	iomodel->Constant(&stabilization,DamageStabilizationEnum);
 
-	/*Recover pointer: */
-	Constraints* constraints=*pconstraints;
-
 	IoModelToConstraintsx(constraints,iomodel,DamageSpcdamageEnum,DamageEvolutionAnalysisEnum,P1Enum);
 
-	/*Assign output pointer: */
-	*pconstraints=constraints;
 }/*}}}*/
-void DamageEvolutionAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
-
-	/*Recover pointer: */
-	Loads* loads=*ploads;
+void DamageEvolutionAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 
 	/*create penalties for nodes: no node can have a damage > 1*/
@@ -107,5 +92,3 @@
 	iomodel->DeleteData(1,DamageSpcdamageEnum);
 
-	/*Assign output pointer: */
-	*ploads=loads;
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	return 1;
 }/*}}}*/
-void EnthalpyAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void EnthalpyAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 }/*}}}*/
 void EnthalpyAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -75,11 +75,11 @@
 	iomodel->DeleteData(3,TemperatureEnum,WaterfractionEnum,PressureEnum);
 }/*}}}*/
-void EnthalpyAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void EnthalpyAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
 	if(iomodel->meshtype==Mesh3DEnum) iomodel->FetchData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
-	::CreateNodes(pnodes,iomodel,EnthalpyAnalysisEnum,P1Enum);
+	::CreateNodes(nodes,iomodel,EnthalpyAnalysisEnum,P1Enum);
 	iomodel->DeleteData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
 }/*}}}*/
-void EnthalpyAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void EnthalpyAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 
 	/*Intermediary*/
@@ -98,7 +98,4 @@
 	iomodel->Constant(&heatcapacity,MaterialsHeatcapacityEnum);
 	iomodel->Constant(&referencetemperature,ConstantsReferencetemperatureEnum);
-
-	/*Recover pointer: */
-	Constraints* constraints=*pconstraints;
 
 	/*return if 2d mesh*/
@@ -168,9 +165,6 @@
 	xDelete<IssmDouble>(times);
 	xDelete<IssmDouble>(values);
-
-	/*Assign output pointer: */
-	*pconstraints=constraints;
 }/*}}}*/
-void EnthalpyAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void EnthalpyAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 
 	/*No loads */
Index: /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.h	(revision 16542)
@@ -8,7 +8,7 @@
 #endif
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
Index: /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	return 1;
 }/*}}}*/
-void ExtrudeFromBaseAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void ExtrudeFromBaseAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 }/*}}}*/
 void ExtrudeFromBaseAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -26,11 +26,11 @@
 	}
 }/*}}}*/
-void ExtrudeFromBaseAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void ExtrudeFromBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
-	::CreateNodes(pnodes,iomodel,ExtrudeFromBaseAnalysisEnum,P1Enum);
+	::CreateNodes(nodes,iomodel,ExtrudeFromBaseAnalysisEnum,P1Enum);
 
 }/*}}}*/
-void ExtrudeFromBaseAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void ExtrudeFromBaseAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 }/*}}}*/
-void ExtrudeFromBaseAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void ExtrudeFromBaseAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	return 1;
 }/*}}}*/
-void ExtrudeFromTopAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void ExtrudeFromTopAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 }/*}}}*/
 void ExtrudeFromTopAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -26,11 +26,11 @@
 	}
 }/*}}}*/
-void ExtrudeFromTopAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void ExtrudeFromTopAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
-	::CreateNodes(pnodes,iomodel,ExtrudeFromBaseAnalysisEnum,P1Enum);
+	::CreateNodes(nodes,iomodel,ExtrudeFromBaseAnalysisEnum,P1Enum);
 
 }/*}}}*/
-void ExtrudeFromTopAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void ExtrudeFromTopAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 }/*}}}*/
-void ExtrudeFromTopAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void ExtrudeFromTopAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	return 1;
 }/*}}}*/
-void FreeSurfaceBaseAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void FreeSurfaceBaseAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 }/*}}}*/
 void FreeSurfaceBaseAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -41,13 +41,13 @@
 	}
 }/*}}}*/
-void FreeSurfaceBaseAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void FreeSurfaceBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
 	if(iomodel->meshtype!=Mesh2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
-	::CreateNodes(pnodes,iomodel,FreeSurfaceBaseAnalysisEnum,P1Enum);
+	::CreateNodes(nodes,iomodel,FreeSurfaceBaseAnalysisEnum,P1Enum);
 	iomodel->DeleteData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
 }/*}}}*/
-void FreeSurfaceBaseAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void FreeSurfaceBaseAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 }/*}}}*/
-void FreeSurfaceBaseAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void FreeSurfaceBaseAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 
 	/*Intermediaries*/
@@ -55,7 +55,4 @@
 	int count=0;
 	int numvertex_pairing;
-
-	/*Recover pointer: */
-	Loads* loads=*ploads;
 
 	/*Create Penpair for vertex_pairing: */
@@ -90,6 +87,3 @@
 	iomodel->DeleteData(vertex_pairing,MasstransportVertexPairingEnum);
 	iomodel->DeleteData(nodeonbed,MeshVertexonbedEnum);
-
-	/*Assign output pointer: */
-	*ploads=loads;
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	return 1;
 }/*}}}*/
-void FreeSurfaceTopAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void FreeSurfaceTopAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 }/*}}}*/
 void FreeSurfaceTopAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -39,13 +39,13 @@
 	}
 }/*}}}*/
-void FreeSurfaceTopAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void FreeSurfaceTopAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
 	if(iomodel->meshtype!=Mesh2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
-	::CreateNodes(pnodes,iomodel,FreeSurfaceTopAnalysisEnum,P1Enum);
+	::CreateNodes(nodes,iomodel,FreeSurfaceTopAnalysisEnum,P1Enum);
 	iomodel->DeleteData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
 }/*}}}*/
-void FreeSurfaceTopAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void FreeSurfaceTopAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 }/*}}}*/
-void FreeSurfaceTopAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void FreeSurfaceTopAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 
 	/*Intermediaries*/
@@ -53,7 +53,4 @@
 	int count=0;
 	int numvertex_pairing;
-
-	/*Recover pointer: */
-	Loads* loads=*ploads;
 
 	/*Create Penpair for vertex_pairing: */
@@ -88,6 +85,3 @@
 	iomodel->DeleteData(vertex_pairing,MasstransportVertexPairingEnum);
 	iomodel->DeleteData(nodeonsurface,MeshVertexonsurfaceEnum);
-
-	/*Assign output pointer: */
-	*ploads=loads;
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/GiaAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/GiaAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/GiaAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	return 1;
 }/*}}}*/
-void GiaAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void GiaAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 }/*}}}*/
 void GiaAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -27,11 +27,11 @@
 	iomodel->FetchDataToInput(elements,GiaLithosphereThicknessEnum);
 }/*}}}*/
-void GiaAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
-	::CreateNodes(pnodes,iomodel,GiaAnalysisEnum,P1Enum);
+void GiaAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+	::CreateNodes(nodes,iomodel,GiaAnalysisEnum,P1Enum);
 }/*}}}*/
-void GiaAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void GiaAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 	/*No constraints*/
 }/*}}}*/
-void GiaAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void GiaAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 	/*No loads*/
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/GiaAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/GiaAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/GiaAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp	(revision 16542)
@@ -9,12 +9,8 @@
 	return 1;
 }/*}}}*/
-void HydrologyDCEfficientAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void HydrologyDCEfficientAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 
-	Parameters *parameters = NULL;
 	int         hydrology_model;
 	bool        isefficientlayer;
-
-	/*Get parameters: */
-	parameters=*pparameters;
 
 	/*retrieve some parameters: */
@@ -22,20 +18,11 @@
 
 	/*Now, do we really want DC?*/
-	if(hydrology_model!=HydrologydcEnum){
-		*pparameters=parameters;
-		return;
-	}
+	if(hydrology_model!=HydrologydcEnum) return;
 
 	/*Do we want an efficient layer*/
 	iomodel->Constant(&isefficientlayer,HydrologydcIsefficientlayerEnum);
-	if(!isefficientlayer){
-		*pparameters=parameters;
-		return;
-	}
+	if(!isefficientlayer) return;
 
 	/*Nothing for now*/
-
-	/*Assign output pointer: */
-	*pparameters=parameters;
 }/*}}}*/
 void HydrologyDCEfficientAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -71,5 +58,5 @@
 	iomodel->FetchDataToInput(elements,EplHeadEnum);
 }/*}}}*/
-void HydrologyDCEfficientAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void HydrologyDCEfficientAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
 	/*Now, do we really want DC?*/
@@ -84,11 +71,8 @@
 
 	iomodel->FetchData(3,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,FlowequationVertexEquationEnum);
-	::CreateNodes(pnodes,iomodel,HydrologyDCEfficientAnalysisEnum,P1Enum);
+	::CreateNodes(nodes,iomodel,HydrologyDCEfficientAnalysisEnum,P1Enum);
 	iomodel->DeleteData(3,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,FlowequationVertexEquationEnum);
 }/*}}}*/
-void HydrologyDCEfficientAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
-
-	/*Recover pointer: */
-	Constraints* constraints=*pconstraints;
+void HydrologyDCEfficientAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 
 	/*Do we really want DC?*/
@@ -104,11 +88,6 @@
 	IoModelToConstraintsx(constraints,iomodel,HydrologydcSpceplHeadEnum,HydrologyDCEfficientAnalysisEnum,P1Enum);
 
-	/*Assign output pointer: */
-	*pconstraints=constraints;
 }/*}}}*/
-void HydrologyDCEfficientAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
-
-	/*Recover pointer: */
-	Loads* loads=*ploads;
+void HydrologyDCEfficientAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 
 	/*Do we really want DC?*/
@@ -123,6 +102,3 @@
 
 	/*Nothing for now*/
-
-	/*Assign output pointer: */
-	*ploads=loads;
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp	(revision 16542)
@@ -9,7 +9,6 @@
 	return 1;
 }/*}}}*/
-void HydrologyDCInefficientAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void HydrologyDCInefficientAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 
-	Parameters *parameters = NULL;
 	int         hydrology_model;
 	int         sedimentlimit_flag;
@@ -21,15 +20,9 @@
 	IssmDouble  rel_tol;
 
-	/*Get parameters: */
-	parameters=*pparameters;
-
 	/*retrieve some parameters: */
 	iomodel->Constant(&hydrology_model,HydrologyModelEnum);
 
 	/*Now, do we really want DC?*/
-	if(hydrology_model!=HydrologydcEnum){
-		*pparameters=parameters;
-		return;
-	}
+	if(hydrology_model!=HydrologydcEnum) return;
 
 	iomodel->FetchData(&isefficientlayer,HydrologydcIsefficientlayerEnum);
@@ -56,6 +49,4 @@
 	parameters->AddObject(new DoubleParam(HydrologydcRelTolEnum,rel_tol));
 
-	/*Assign output pointer: */
-	*pparameters=parameters;
 }/*}}}*/
 void HydrologyDCInefficientAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -93,5 +84,5 @@
 	if(isefficientlayer)iomodel->FetchDataToInput(elements,HydrologydcMaskEplactiveEnum);
 }/*}}}*/
-void HydrologyDCInefficientAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void HydrologyDCInefficientAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
 	/*Fetch parameters: */
@@ -103,11 +94,8 @@
 
 	if(iomodel->meshtype==Mesh3DEnum) iomodel->FetchData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
-	::CreateNodes(pnodes,iomodel,HydrologyDCInefficientAnalysisEnum,P1Enum);
+	::CreateNodes(nodes,iomodel,HydrologyDCInefficientAnalysisEnum,P1Enum);
 	iomodel->DeleteData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
 }/*}}}*/
-void HydrologyDCInefficientAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
-
-	/*Recover pointer: */
-	Constraints* constraints=*pconstraints;
+void HydrologyDCInefficientAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 
 	/*retrieve some parameters: */
@@ -117,12 +105,6 @@
 
 	IoModelToConstraintsx(constraints,iomodel,HydrologydcSpcsedimentHeadEnum,HydrologyDCInefficientAnalysisEnum,P1Enum);
-
-	/*Assign output pointer: */
-	*pconstraints=constraints;
 }/*}}}*/
-void HydrologyDCInefficientAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
-
-	/*Recover pointer: */
-	Loads* loads=*ploads;
+void HydrologyDCInefficientAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 
 	/*Fetch parameters: */
@@ -148,6 +130,4 @@
 		}
 	}
-	/*Assign output pointer: */
-	*ploads=loads;
 	iomodel->DeleteData(1,MeshVertexonbedEnum);
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp	(revision 16542)
@@ -9,26 +9,16 @@
 	return 1;
 }/*}}}*/
-void HydrologyShreveAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
-
-	Parameters *parameters = NULL;
-	int         hydrology_model;
-
-	/*Get parameters: */
-	parameters=*pparameters;
+void HydrologyShreveAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 
 	/*retrieve some parameters: */
+	int  hydrology_model;
 	iomodel->Constant(&hydrology_model,HydrologyModelEnum);
 
 	/*Now, do we really want Shreve?*/
-	if(hydrology_model!=HydrologyshreveEnum){
-		*pparameters=parameters;
-		return;
-	}
+	if(hydrology_model!=HydrologyshreveEnum) return;
 
 	parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
 	parameters->AddObject(iomodel->CopyConstantObject(HydrologyshreveStabilizationEnum));
 
-	/*Assign output pointer: */
-	*pparameters=parameters;
 }/*}}}*/
 void HydrologyShreveAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -63,5 +53,5 @@
 	elements->InputDuplicate(WatercolumnEnum,WaterColumnOldEnum);
 }/*}}}*/
-void HydrologyShreveAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void HydrologyShreveAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
 	/*Fetch parameters: */
@@ -73,11 +63,8 @@
 
 	if(iomodel->meshtype==Mesh3DEnum) iomodel->FetchData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
-	::CreateNodes(pnodes,iomodel,HydrologyShreveAnalysisEnum,P1Enum);
+	::CreateNodes(nodes,iomodel,HydrologyShreveAnalysisEnum,P1Enum);
 	iomodel->DeleteData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
 }/*}}}*/
-void HydrologyShreveAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
-
-	/*Recover pointer: */
-	Constraints* constraints=*pconstraints;
+void HydrologyShreveAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 
 	/*retrieve some parameters: */
@@ -89,8 +76,6 @@
 	IoModelToConstraintsx(constraints,iomodel,HydrologyshreveSpcwatercolumnEnum,HydrologyShreveAnalysisEnum,P1Enum);
 
-	/*Assign output pointer: */
-	*pconstraints=constraints;
 }/*}}}*/
-void HydrologyShreveAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void HydrologyShreveAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 	/*No loads*/
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	return 1;
 }/*}}}*/
-void L2ProjectionBaseAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void L2ProjectionBaseAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 }/*}}}*/
 void L2ProjectionBaseAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -34,5 +34,5 @@
 	}
 }/*}}}*/
-void L2ProjectionBaseAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void L2ProjectionBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
 	if(iomodel->meshtype==Mesh3DEnum){
@@ -42,12 +42,12 @@
 		iomodel->FetchData(1,MeshVertexonbedEnum);
 	}
-	::CreateNodes(pnodes,iomodel,L2ProjectionBaseAnalysisEnum,P1Enum);
+	::CreateNodes(nodes,iomodel,L2ProjectionBaseAnalysisEnum,P1Enum);
 	iomodel->DeleteData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
 }/*}}}*/
-void L2ProjectionBaseAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void L2ProjectionBaseAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 
 	/*No constraints*/
 }/*}}}*/
-void L2ProjectionBaseAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void L2ProjectionBaseAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 
 	/*No loads*/
Index: /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 16542)
@@ -9,13 +9,8 @@
 	return 1;
 }/*}}}*/
-void MasstransportAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
-
-	/*Get parameters: */
-	Parameters *parameters=*pparameters;
+void MasstransportAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 
 	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsFSEnum));
 
-	/*Assign output pointer: */
-	*pparameters = parameters;
 }/*}}}*/
 void MasstransportAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -101,5 +96,5 @@
 	}
 }/*}}}*/
-void MasstransportAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void MasstransportAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
 	/*Fetch parameters: */
@@ -113,12 +108,12 @@
 	if(iomodel->meshtype!=Mesh2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
 	if(stabilization!=3){
-		::CreateNodes(pnodes,iomodel,MasstransportAnalysisEnum,P1Enum);
+		::CreateNodes(nodes,iomodel,MasstransportAnalysisEnum,P1Enum);
 	}
 	else{
-		::CreateNodes(pnodes,iomodel,MasstransportAnalysisEnum,P1DGEnum);
+		::CreateNodes(nodes,iomodel,MasstransportAnalysisEnum,P1DGEnum);
 	}
 	iomodel->DeleteData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
 }/*}}}*/
-void MasstransportAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void MasstransportAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 
 	/*Fetch parameters: */
@@ -126,16 +121,10 @@
 	iomodel->Constant(&stabilization,MasstransportStabilizationEnum);
 
-	/*Recover pointer: */
-	Constraints* constraints=*pconstraints;
-
 	/*Do not add constraints in DG, they are weakly imposed*/
 	if(stabilization!=3){
 		IoModelToConstraintsx(constraints,iomodel,MasstransportSpcthicknessEnum,MasstransportAnalysisEnum,P1Enum);
 	}
-
-	/*Assign output pointer: */
-	*pconstraints=constraints;
 }/*}}}*/
-void MasstransportAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void MasstransportAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 
 	/*Intermediaries*/
@@ -148,7 +137,4 @@
 	/*Fetch parameters: */
 	iomodel->Constant(&stabilization,MasstransportStabilizationEnum);
-
-	/*Recover pointer: */
-	Loads* loads=*ploads;
 
 	/*Loads only in DG*/
@@ -209,5 +195,3 @@
 	iomodel->DeleteData(nodeonbed,MeshVertexonbedEnum);
 
-	/*Assign output pointer: */
-	*ploads=loads;
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/MeltingAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MeltingAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/MeltingAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	return 1;
 }/*}}}*/
-void MeltingAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void MeltingAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 }/*}}}*/
 void MeltingAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -42,20 +42,17 @@
 	iomodel->FetchDataToInput(elements,PressureEnum);
 }/*}}}*/
-void MeltingAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void MeltingAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
 	if(iomodel->meshtype==Mesh3DEnum) iomodel->FetchData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
-	::CreateNodes(pnodes,iomodel,MeltingAnalysisEnum,P1Enum);
+	::CreateNodes(nodes,iomodel,MeltingAnalysisEnum,P1Enum);
 	iomodel->DeleteData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
 }/*}}}*/
-void MeltingAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void MeltingAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 	/*No Constraints*/
 }/*}}}*/
-void MeltingAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void MeltingAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 
 	/*if 2d: Error*/
 	if(iomodel->meshtype==Mesh2DhorizontalEnum) _error_("2d meshes not supported yet");
-
-	/*Recover pointer: */
-	Loads* loads=*ploads;
 
 	//create penalties for nodes: no node can have a temperature over the melting point
@@ -72,5 +69,3 @@
 	iomodel->DeleteData(1,MeshVertexonbedEnum);
 
-	/*Assign output pointer: */
-	*ploads=loads;
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/MeltingAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MeltingAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/MeltingAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/MeshdeformationAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MeshdeformationAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/MeshdeformationAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	_error_("not implemented");
 }/*}}}*/
-void MeshdeformationAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void MeshdeformationAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 	   _error_("not implemented yet");
 }/*}}}*/
@@ -15,11 +15,11 @@
 	   _error_("not implemented yet");
 }/*}}}*/
-void MeshdeformationAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void MeshdeformationAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 	   _error_("not implemented yet");
 }/*}}}*/
-void MeshdeformationAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void MeshdeformationAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 	   _error_("not implemented yet");
 }/*}}}*/
-void MeshdeformationAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void MeshdeformationAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 	   _error_("not implemented yet");
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/MeshdeformationAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MeshdeformationAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/MeshdeformationAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeXAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeXAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeXAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	return 1;
 }/*}}}*/
-void SmoothedSurfaceSlopeXAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void SmoothedSurfaceSlopeXAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 }/*}}}*/
 void SmoothedSurfaceSlopeXAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -34,11 +34,11 @@
 	}
 }/*}}}*/
-void SmoothedSurfaceSlopeXAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void SmoothedSurfaceSlopeXAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 	iomodel->FetchData(1,MeshVertexonbedEnum);
-	::CreateNodes(pnodes,iomodel,SmoothedSurfaceSlopeXAnalysisEnum,P1Enum);
+	::CreateNodes(nodes,iomodel,SmoothedSurfaceSlopeXAnalysisEnum,P1Enum);
 	iomodel->DeleteData(1,MeshVertexonbedEnum);
 }/*}}}*/
-void SmoothedSurfaceSlopeXAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void SmoothedSurfaceSlopeXAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 }/*}}}*/
-void SmoothedSurfaceSlopeXAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void SmoothedSurfaceSlopeXAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeXAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeXAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeXAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeYAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeYAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeYAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	return 1;
 }/*}}}*/
-void SmoothedSurfaceSlopeYAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void SmoothedSurfaceSlopeYAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 }/*}}}*/
 void SmoothedSurfaceSlopeYAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -34,11 +34,11 @@
 	}
 }/*}}}*/
-void SmoothedSurfaceSlopeYAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void SmoothedSurfaceSlopeYAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 	iomodel->FetchData(1,MeshVertexonbedEnum);
-	::CreateNodes(pnodes,iomodel,SmoothedSurfaceSlopeYAnalysisEnum,P1Enum);
+	::CreateNodes(nodes,iomodel,SmoothedSurfaceSlopeYAnalysisEnum,P1Enum);
 	iomodel->DeleteData(1,MeshVertexonbedEnum);
 }/*}}}*/
-void SmoothedSurfaceSlopeYAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void SmoothedSurfaceSlopeYAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 }/*}}}*/
-void SmoothedSurfaceSlopeYAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void SmoothedSurfaceSlopeYAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeYAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeYAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeYAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 16542)
@@ -66,12 +66,9 @@
 	return numdofs;
 }/*}}}*/
-void StressbalanceAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void StressbalanceAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 
 	/*Intermediaries*/
 	int         numoutputs;
 	char**      requestedoutputs = NULL;
-
-	/*Get parameters: */
-	Parameters *parameters=*pparameters;
 
 	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsSIAEnum));
@@ -98,6 +95,4 @@
 	iomodel->DeleteData(&requestedoutputs,numoutputs,StressbalanceRequestedOutputsEnum);
 
-	/*Assign output pointer: */
-	*pparameters = parameters;
 }/*}}}*/
 void StressbalanceAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -215,5 +210,5 @@
 	xDelete<int>(finiteelement_list);
 }/*}}}*/
-void StressbalanceAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void StressbalanceAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
 	/*Intermediary*/
@@ -258,5 +253,5 @@
 		iomodel->FetchData(3,FlowequationBorderSSAEnum,FlowequationVertexEquationEnum,StressbalanceReferentialEnum);
 		if(iomodel->meshtype==Mesh3DEnum) iomodel->FetchData(3,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,FlowequationBorderFSEnum);
-		::CreateNodes(pnodes,iomodel,StressbalanceAnalysisEnum,finiteelement,approximation);
+		::CreateNodes(nodes,iomodel,StressbalanceAnalysisEnum,finiteelement,approximation);
 		iomodel->DeleteData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,FlowequationBorderSSAEnum,FlowequationBorderFSEnum,
 					FlowequationVertexEquationEnum,StressbalanceReferentialEnum);
@@ -265,6 +260,4 @@
 		/*Coupling: we are going to create P1 Elements only*/
 
-		/*Recover nodes*/
-		Nodes* nodes = *pnodes;
 		Node*  node  = NULL;
 		int    lid=0;
@@ -310,10 +303,7 @@
 		iomodel->DeleteData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,FlowequationBorderSSAEnum,FlowequationBorderFSEnum,
 					FlowequationVertexEquationEnum,StressbalanceReferentialEnum);
-
-		/*Assign output pointer: */
-		*pnodes=nodes;
 	}
 }/*}}}*/
-void StressbalanceAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void StressbalanceAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 
 	/*Intermediary*/
@@ -344,7 +334,4 @@
    IssmDouble* values=NULL;
 
-	/*Output*/
-	Constraints *constraints      = NULL;
-
 	/*Fetch parameters: */
 	iomodel->Constant(&g,ConstantsGEnum);
@@ -357,12 +344,6 @@
 	iomodel->Constant(&isFS,FlowequationIsFSEnum);
 
-	/*Recover pointer: */
-	constraints=*pconstraints;
-
 	/*Now, is the flag macayaealHO on? otherwise, do nothing: */
-	if(!isSSA && !isHO && !isFS && !isL1L2){
-		*pconstraints=constraints;
-		return;
-	}
+	if(!isSSA && !isHO && !isFS && !isL1L2) return;
 
 	/*Do we have coupling*/
@@ -479,5 +460,4 @@
 		}
 
-		*pconstraints=constraints;
 		return;
 	}
@@ -751,8 +731,6 @@
 	xDelete<IssmDouble>(values);
 
-	/*Assign output pointer: */
-	*pconstraints=constraints;
 }/*}}}*/
-void StressbalanceAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void StressbalanceAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 
 	/*Intermediary*/
@@ -774,7 +752,4 @@
 	iomodel->Constant(&numrifts,RiftsNumriftsEnum);
 
-	/*Recover pointer: */
-	Loads* loads=*ploads;
-
 	/*Now, is the flag macayaealHO on? otherwise, do nothing: */
 	if(!isSSA && !isHO && !isFS && !isL1L2) return;
@@ -821,6 +796,3 @@
 	}
 #endif
-
-	/*Assign output pointer: */
-	*ploads=loads;
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	return 2;
 }/*}}}*/
-void StressbalanceSIAAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void StressbalanceSIAAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 
 	/*No specific parameters*/
@@ -40,5 +40,5 @@
 	iomodel->DeleteData(1,FlowequationElementEquationEnum);
 }/*}}}*/
-void StressbalanceSIAAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void StressbalanceSIAAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
 	/*Intermediaries*/
@@ -53,8 +53,5 @@
 
 	/*First create nodes*/
-	Nodes* nodes=*pnodes;
 	int    lid=0;
-	if(!nodes) nodes = new Nodes();
-
 	iomodel->FetchData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,FlowequationBorderSSAEnum,FlowequationBorderFSEnum,
 				FlowequationVertexEquationEnum,StressbalanceReferentialEnum);
@@ -79,9 +76,6 @@
 				FlowequationVertexEquationEnum,StressbalanceReferentialEnum);
 
-	/*Assign output pointer: */
-	*pnodes=nodes;
-
 }/*}}}*/
-void StressbalanceSIAAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void StressbalanceSIAAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 
 	/*Intermediary*/
@@ -89,10 +83,4 @@
 	IssmDouble yts;
 	bool       isSIA;
-
-	/*Output*/
-	Constraints* constraints = NULL;
-
-	/*Recover pointer: */
-	constraints=*pconstraints;
 
 	/*Fetch parameters: */
@@ -138,8 +126,6 @@
 	iomodel->DeleteData(3,StressbalanceSpcvxEnum,StressbalanceSpcvyEnum,FlowequationVertexEquationEnum);
 
-	/*Assign output pointer: */
-	*pconstraints=constraints;
 }/*}}}*/
-void StressbalanceSIAAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void StressbalanceSIAAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 
 	/*No loads*/
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	return 1;
 }/*}}}*/
-void StressbalanceVerticalAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void StressbalanceVerticalAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 
 	/*No specific parameters*/
@@ -39,5 +39,5 @@
 	iomodel->FetchDataToInput(elements,VyEnum,0.);
 }/*}}}*/
-void StressbalanceVerticalAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void StressbalanceVerticalAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
 	/*return if not 3d mesh*/
@@ -45,8 +45,8 @@
 
 	iomodel->FetchData(3,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,FlowequationVertexEquationEnum);
-	::CreateNodes(pnodes,iomodel,StressbalanceVerticalAnalysisEnum,P1Enum);
+	::CreateNodes(nodes,iomodel,StressbalanceVerticalAnalysisEnum,P1Enum);
 	iomodel->DeleteData(3,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,FlowequationVertexEquationEnum);
 }/*}}}*/
-void StressbalanceVerticalAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
+void StressbalanceVerticalAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 
 	/*Intermediary*/
@@ -56,7 +56,4 @@
 	/*Fetch parameters: */
 	iomodel->Constant(&yts,ConstantsYtsEnum);
-
-	/*Recover pointer: */
-	Constraints* constraints=*pconstraints;
 
 	/*return if not 3d mesh*/
@@ -91,8 +88,6 @@
 	iomodel->DeleteData(2,StressbalanceSpcvzEnum,FlowequationBorderFSEnum);
 
-	/*Assign output pointer: */
-	*pconstraints=constraints;
 }/*}}}*/
-void StressbalanceVerticalAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
+void StressbalanceVerticalAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 
 	/*No loads*/
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 	return 1;
 }/*}}}*/
-void ThermalAnalysis::UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+void ThermalAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
 }/*}}}*/
 void ThermalAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -59,14 +59,11 @@
 	}
 }/*}}}*/
-void ThermalAnalysis::CreateNodes(Nodes** pnodes,IoModel* iomodel){/*{{{*/
+void ThermalAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
 	if(iomodel->meshtype==Mesh3DEnum) iomodel->FetchData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
-	::CreateNodes(pnodes,iomodel,ThermalAnalysisEnum,P1Enum);
+	::CreateNodes(nodes,iomodel,ThermalAnalysisEnum,P1Enum);
 	iomodel->DeleteData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
 }/*}}}*/
-void ThermalAnalysis::CreateConstraints(Constraints** pconstraints,IoModel* iomodel){/*{{{*/
-
-	/*Recover pointer: */
-	Constraints* constraints=*pconstraints;
+void ThermalAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 
 	/*Only 3d mesh supported*/
@@ -75,11 +72,6 @@
 	}
 
-	/*Assign output pointer: */
-	*pconstraints=constraints;
 }/*}}}*/
-void ThermalAnalysis::CreateLoads(Loads** ploads, IoModel* iomodel){/*{{{*/
-
-	/*Recover pointer: */
-	Loads* loads=*ploads;
+void ThermalAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 
 	if(iomodel->meshtype==Mesh2DhorizontalEnum) _error_("2d meshes not supported yet");
@@ -100,5 +92,3 @@
 	iomodel->DeleteData(1,ThermalSpctemperatureEnum);
 
-	/*Assign output pointer: */
-	*ploads=loads;
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.h	(revision 16542)
@@ -13,9 +13,9 @@
 	public:
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
-		void UpdateParameters(Parameters** pparameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes** pnodes,IoModel* iomodel);
-		void CreateConstraints(Constraints** pconstraints,IoModel* iomodel);
-		void CreateLoads(Loads** ploads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
 };
 #endif
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp	(revision 16542)
@@ -8,5 +8,5 @@
 #include "../ModelProcessorx.h"
 
-void CreateParametersAutodiff(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type){
+void CreateParametersAutodiff(Parameters** pparameters,IoModel* iomodel){
 
 	int         i;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 16542)
@@ -8,7 +8,6 @@
 #include "../ModelProcessorx.h"
 
-void CreateParametersControl(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type){
+void CreateParametersControl(Parameters* parameters,IoModel* iomodel,int solution_type){
 
-	Parameters *parameters       = NULL;
 	bool        control_analysis,tao_analysis;
 	int         nsteps;
@@ -20,7 +19,4 @@
 	IssmDouble *optscal          = NULL;
 	IssmDouble *maxiter          = NULL;
-
-	/*Get parameters: */
-	parameters=*pparameters;
 
 	/*retrieve some parameters: */
@@ -40,5 +36,5 @@
 
 		/*What solution type?*/
-		if (solution_type==SteadystateSolutionEnum){
+		if(solution_type==SteadystateSolutionEnum){
 			parameters->AddObject(new BoolParam(ControlSteadyEnum,true));
 		}
@@ -74,6 +70,3 @@
 		iomodel->DeleteData(maxiter,InversionMaxiterPerStepEnum);
 	}
-
-	/*Assign output pointer: */
-	*pparameters=parameters;
 }
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateDataSets.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateDataSets.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateDataSets.cpp	(revision 16542)
@@ -14,36 +14,14 @@
 #include "./ModelProcessorx.h"
 
-void CreateDataSets(Elements** pelements,Nodes** pnodes, Vertices** pvertices, Materials** pmaterials, Constraints** pconstraints, Loads** ploads,Parameters** pparameters,IoModel* iomodel,FILE* toolkitfile,char* rootpath,const int solution_enum,const int analysis_enum,const int nummodels,int analysis_counter){
-
-	Elements   *elements   = NULL;
-	Materials  *materials  = NULL;
-	Parameters *parameters = NULL;
-
-	/*Process Finite Element Mesh*/
-
-	/*Partition Elements and Nodes*/
-	ElementsAndVerticesPartitioning(&iomodel->my_elements,&iomodel->my_vertices,iomodel);
-
-	/*Create elements, vertices and materials, independent of analysis_enum: */
-	CreateElementsVerticesAndMaterials(pelements, pvertices, pmaterials, iomodel,nummodels);
-
-	/*Create Parameters*/
-	CreateParameters(pparameters,iomodel,rootpath,toolkitfile,solution_enum,analysis_enum,analysis_counter);
-
-	/*Recover elements and materials, for future update: */
-	elements  = *pelements;
-	materials = *pmaterials;
+void CreateDataSets(Elements* elements,Nodes* nodes, Vertices* vertices, Materials* materials,Constraints* constraints, Loads* loads,Parameters* parameters,IoModel* iomodel,FILE* toolkitfile,char* rootpath,const int solution_enum,const int analysis_enum,const int nummodels,int analysis_counter){
 
 	/*Creates Nodes and constraints datasets if empty*/
-	if(!*pnodes)       *pnodes       = new Nodes();
-	if(!*pconstraints) *pconstraints = new Constraints();
-	if(!*ploads)       *ploads       = new Loads();
 
 	/*Now, branch onto analysis dependent model generation: */
 	Analysis* analysis = EnumToAnalysis(analysis_enum);
-	analysis->UpdateParameters(pparameters,iomodel,solution_enum,analysis_enum);
-	analysis->CreateNodes(pnodes,iomodel);
-	analysis->CreateConstraints(pconstraints,iomodel);
-	analysis->CreateLoads(ploads,iomodel);
+	analysis->UpdateParameters(parameters,iomodel,solution_enum,analysis_enum);
+	analysis->CreateNodes(nodes,iomodel);
+	analysis->CreateConstraints(constraints,iomodel);
+	analysis->CreateLoads(loads,iomodel);
 	analysis->UpdateElements(elements,iomodel,analysis_counter,analysis_enum);
 	delete analysis;
@@ -59,8 +37,6 @@
 	#endif
 
-
 	/*Update Elements in case we are running a transient solution: */
 	#ifdef _HAVE_TRANSIENT_
-	parameters=*pparameters;
 	if(analysis_counter==(nummodels-1)&& solution_enum==TransientSolutionEnum){
 		UpdateElementsTransient(elements,parameters,iomodel,analysis_counter,analysis_enum);
@@ -69,9 +45,9 @@
 
 	/*Sort datasets: */
-	SortDataSets(pelements,pnodes,pvertices, ploads, pmaterials, pconstraints, pparameters);
+	SortDataSets(elements,nodes,vertices,loads,materials,constraints,parameters);
 
 	/* Update counters, because we have created more nodes, loads and
 	 * constraints, and ids for objects created in next call to CreateDataSets
 	 * will need to start at the end of the updated counters: */
-	UpdateCounters(iomodel,pnodes,ploads,pconstraints);
+	UpdateCounters(iomodel,nodes,loads,constraints);
 }
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 16542)
@@ -8,5 +8,5 @@
 #include "./ModelProcessorx.h"
 
-void	CreateElementsVerticesAndMaterials(Elements** pelements,Vertices** pvertices,Materials** pmaterials, IoModel* iomodel,const int nummodels){
+void CreateElementsVerticesAndMaterials(Elements* elements,Vertices* vertices,Materials* materials,IoModel* iomodel,const int nummodels){
 
 	/*Intermediary*/
@@ -16,9 +16,4 @@
 	bool dakota_analysis;
 
-	/*DataSets: */
-	Elements  *elements  = NULL;
-	Vertices  *vertices  = NULL;
-	Materials *materials = NULL;
-
 	/*Fetch parameters: */
 	iomodel->Constant(&control_analysis,InversionIscontrolEnum);
@@ -27,10 +22,5 @@
 
 	/*Did we already create the elements? : */
-	if(*pelements)return;
-
-	/*First create the elements, vertices, nodes and material properties, if they don't already exist */
-	elements  = new Elements();
-	vertices  = new Vertices();
-	materials = new Materials();
+	_assert_(elements->Size()==0);
 
 	/*Create elements*/
@@ -104,8 +94,3 @@
 	/*Free data: */
 	iomodel->DeleteData(6,MeshXEnum,MeshYEnum,MeshZEnum,BedEnum,ThicknessEnum,MaskIceLevelsetEnum);
-
-	/*Assign output pointer: */
-	*pelements=elements;
-	*pvertices=vertices;
-	*pmaterials=materials;
 }
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 #include "./ModelProcessorx.h"
 
-void CreateNodes(Nodes** pnodes, IoModel* iomodel,int analysis,int finite_element,int approximation){
+void CreateNodes(Nodes* nodes, IoModel* iomodel,int analysis,int finite_element,int approximation){
 
 	/*Intermediaries*/
@@ -16,10 +16,4 @@
 	bool *my_nodes = NULL;
 	Node *node     = NULL;
-
-	/*Recover pointer: */
-	Nodes* nodes=*pnodes;
-
-	/*First create nodes*/
-	if(!nodes) nodes = new Nodes();
 
 	switch(finite_element){
@@ -228,6 +222,3 @@
 	xDelete<bool>(my_edges);
 	xDelete<bool>(my_nodes);
-
-	/*Assign output pointer: */
-	*pnodes=nodes;
 }
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp	(revision 16542)
@@ -8,9 +8,8 @@
 #include "./ModelProcessorx.h"
 
-void CreateOutputDefinitions(Parameters** pparameters,IoModel* iomodel){
+void CreateOutputDefinitions(Parameters* parameters,IoModel* iomodel){
 
 	int i,j;
 	
-	Parameters  *parameters              = NULL;
 	DataSet     *output_definitions      = NULL;
 	int         *output_definition_enums = NULL;
@@ -20,7 +19,4 @@
 	IssmDouble **gatesegments            = NULL;
 	int         *gatesegments_M          = NULL;
-
-	/*Get parameters: */
-	parameters=*pparameters;
 
 	/*Create output_definitions dataset: */
@@ -59,6 +55,3 @@
 	delete output_definitions;
 	xDelete<int>(output_definition_enums);
-
-	/*Assign output pointer: */
-	*pparameters=parameters;
 }
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 16542)
@@ -16,9 +16,8 @@
 #include "./ModelProcessorx.h"
 
-void CreateParameters(Parameters** pparameters,IoModel* iomodel,char* rootpath,FILE* toolkitsoptionsfid,const int solution_type,int analysis_type,int analysis_counter){
+void CreateParameters(Parameters* parameters,IoModel* iomodel,char* rootpath,FILE* toolkitsoptionsfid,const int solution_type){
 
 	int         i,j,m,k;
 	int         numoutputs,meshtype;
-	Parameters *parameters       = NULL;
 	char**      requestedoutputs = NULL;
 	IssmDouble  time;
@@ -38,8 +37,6 @@
 	int          count;
 
-	if(*pparameters)return; //do not create parameters twice!
-
-	/*Initialize dataset: */
-	parameters = new Parameters();
+	/*Make sure current dataset is empty*/
+	_assert_(parameters->Size()==0); 
 
 	/*Copy some constants from iomodel */
@@ -130,6 +127,4 @@
 	/*some parameters that did not come with the iomodel: */
 	parameters->AddObject(new IntParam(SolutionTypeEnum,solution_type));
-	parameters->AddObject(new IntParam(AnalysisTypeEnum,analysis_type));
-	parameters->AddObject(new IntParam(AnalysisCounterEnum,analysis_counter));
 
 	iomodel->Constant(&time,TimesteppingStartTimeEnum);
@@ -224,13 +219,13 @@
 
 	/*Output definitions dataset: */
-	CreateOutputDefinitions(&parameters,iomodel);
+	CreateOutputDefinitions(parameters,iomodel);
 
 	/*Before returning, create parameters in case we are running Qmu or control types runs: */
 	#ifdef _HAVE_CONTROL_
-	CreateParametersControl(&parameters,iomodel,solution_type,analysis_type);
+	CreateParametersControl(parameters,iomodel,solution_type);
 	#endif
 
 	#ifdef _HAVE_DAKOTA_
-	CreateParametersDakota(&parameters,iomodel,rootpath,solution_type,analysis_type);
+	CreateParametersDakota(parameters,iomodel,rootpath);
 	#endif
 
@@ -239,8 +234,5 @@
 
  	#ifdef _HAVE_ADOLC_
-	CreateParametersAutodiff(&parameters,iomodel,solution_type,analysis_type);
+	CreateParametersAutodiff(parameters,iomodel);
 	#endif
-
-	/*Assign output pointer: */
-	*pparameters=parameters;
 }
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp	(revision 16542)
@@ -9,5 +9,5 @@
 #include "../ModelProcessorx.h"
 
-void CreateParametersDakota(Parameters** pparameters,IoModel* iomodel,char* rootpath,int solution_type,int analysis_type){
+void CreateParametersDakota(Parameters** pparameters,IoModel* iomodel,char* rootpath){
 
 	/*variable declarations*/
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 16542)
@@ -13,17 +13,17 @@
 #include "./ModelProcessorx.h"
 
-void ModelProcessorx(Elements** pelements, Nodes** pnodes, Vertices** pvertices, Materials** pmaterials, Constraints** pconstraints, Loads** ploads, Parameters** pparameters, FILE* IOMODEL,FILE* toolkitfile, char* rootpath,const int solution_type,const int nummodels,const int* analysis_type_list){
+void ModelProcessorx(Elements** pelements, Nodes** pnodes, Vertices** pvertices, Materials** pmaterials, Constraints** pconstraints, Loads** ploads, Parameters** pparameters, FILE* IOMODEL,FILE* toolkitfile, char* rootpath,const int solution_enum,const int nummodels,const int* analysis_type_list){
 
 	int   i,analysis_type,verbose;
 	bool  isthermal,ismasstransport,isstressbalance,isgroundingline,isenthalpy;
 
-	/*output: */
-	Elements    *elements    = NULL;
-	Nodes       *nodes       = NULL;
-	Vertices    *vertices    = NULL;
-	Materials   *materials   = NULL;
-	Constraints *constraints = NULL;
-	Loads       *loads       = NULL;
-	Parameters  *parameters  = NULL;
+	/*Initialize datasets*/
+	Elements    *elements    = new Elements();
+	Nodes       *nodes       = new Nodes();
+	Vertices    *vertices    = new Vertices();
+	Materials   *materials   = new Materials();
+	Constraints *constraints = new Constraints();
+	Loads       *loads       = new Loads();
+	Parameters  *parameters  = new Parameters();
 
 	/*Initialize IoModel from input file*/
@@ -42,28 +42,38 @@
 	if(VerboseMProcessor()) _printf0_("   starting model processor \n");
 
+	/*Partition Elements and Nodes*/
+	ElementsAndVerticesPartitioning(&iomodel->my_elements,&iomodel->my_vertices,iomodel);
+
+	/*Create elements, vertices and materials, independent of analysis_enum: */
+	CreateElementsVerticesAndMaterials(elements,vertices,materials,iomodel,nummodels);
+
+	/*Create Parameters*/
+	CreateParameters(parameters,iomodel,rootpath,toolkitfile,solution_enum);
+
 	for(i=0;i<nummodels;i++){
 
 		analysis_type=analysis_type_list[i];
+		parameters->AddObject(new IntParam(AnalysisCounterEnum,i));
 
 		/*Hack for trasient runs (FIXME: to be improved)*/
-		if(solution_type==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum  && iomodel->meshtype==Mesh2DhorizontalEnum) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum  && iomodel->meshtype==Mesh2DhorizontalEnum) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && iomodel->meshtype==Mesh2DhorizontalEnum) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && isthermal==false) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum && isthermal==false) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && isthermal==false) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && isenthalpy==true) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum && isenthalpy==true) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && isenthalpy==false) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==MasstransportAnalysisEnum && ismasstransport==false && isgroundingline==false) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==StressbalanceAnalysisEnum && isstressbalance==false) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==StressbalanceVerticalAnalysisEnum && isstressbalance==false) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==StressbalanceSIAAnalysisEnum && isstressbalance==false) continue;
-		if(solution_type==SteadystateSolutionEnum && analysis_type==ThermalAnalysisEnum && isenthalpy==true) continue;
-		if(solution_type==SteadystateSolutionEnum && analysis_type==MeltingAnalysisEnum && isenthalpy==true) continue;
-		if(solution_type==SteadystateSolutionEnum && analysis_type==EnthalpyAnalysisEnum && isenthalpy==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum  && iomodel->meshtype==Mesh2DhorizontalEnum) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum  && iomodel->meshtype==Mesh2DhorizontalEnum) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && iomodel->meshtype==Mesh2DhorizontalEnum) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && isthermal==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum && isthermal==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && isthermal==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && isenthalpy==true) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum && isenthalpy==true) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && isenthalpy==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_type==MasstransportAnalysisEnum && ismasstransport==false && isgroundingline==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_type==StressbalanceAnalysisEnum && isstressbalance==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_type==StressbalanceVerticalAnalysisEnum && isstressbalance==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_type==StressbalanceSIAAnalysisEnum && isstressbalance==false) continue;
+		if(solution_enum==SteadystateSolutionEnum && analysis_type==ThermalAnalysisEnum && isenthalpy==true) continue;
+		if(solution_enum==SteadystateSolutionEnum && analysis_type==MeltingAnalysisEnum && isenthalpy==true) continue;
+		if(solution_enum==SteadystateSolutionEnum && analysis_type==EnthalpyAnalysisEnum && isenthalpy==false) continue;
 
 		if(VerboseMProcessor()) _printf0_("   creating datasets for analysis " << EnumToStringx(analysis_type) << "\n");
-		CreateDataSets(&elements,&nodes,&vertices,&materials,&constraints,&loads,&parameters,iomodel,toolkitfile,rootpath,solution_type,analysis_type,nummodels,i);
+		CreateDataSets(elements,nodes,vertices,materials,constraints,loads,parameters,iomodel,toolkitfile,rootpath,solution_enum,analysis_type,nummodels,i);
 	}
 	if(VerboseMProcessor()) _printf0_("   done with model processor \n");
@@ -73,11 +83,10 @@
 
 	/*Assign output pointers:*/
-	*pelements=elements;
-	*pnodes=nodes;
-	*pvertices=vertices;
-	*pmaterials=materials;
-	*pconstraints=constraints;
-	*ploads=loads;
-	*pparameters=parameters;
-
+	*pelements    = elements;
+	*pnodes       = nodes;
+	*pvertices    = vertices;
+	*pmaterials   = materials;
+	*pconstraints = constraints;
+	*ploads       = loads;
+	*pparameters  = parameters;
 }
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 16541)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 16542)
@@ -12,15 +12,15 @@
 
 /*Creation of fem datasets: general drivers*/
-void CreateDataSets(Elements** pelements,Nodes** pnodes,Vertices** pvertices, Materials** pmaterials, Constraints** pconstraints, Loads** ploads,Parameters** pparameters,IoModel* iomodel,FILE* toolkitfile,char* rootpath,const int solution_type,int analysis_type,const int nummodels,int analysis_counter);
-void CreateElementsVerticesAndMaterials(Elements** pelements,Vertices** pvertices,Materials** pmaterials, IoModel* iomodel,const int nummodels);
-void CreateParameters(Parameters** pparameters,IoModel* iomodel,char* rootpath,FILE* toolkitfile,const int solution_type,int analysis_type,int analysis_counter);
-void CreateParametersAutodiff(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type);
-void CreateParametersControl(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type);
-void CreateParametersDakota(Parameters** pparameters,IoModel* iomodel,char* rootpath,int solution_type,int analysis_type);
-void CreateOutputDefinitions(Parameters** pparameters,IoModel* iomodel);
+void CreateDataSets(Elements* elements,Nodes* nodes,Vertices* vertices, Materials* materials, Constraints* constraints, Loads* loads,Parameters* parameters,IoModel* iomodel,FILE* toolkitfile,char* rootpath,const int solution_type,int analysis_type,const int nummodels,int analysis_counter);
+void CreateElementsVerticesAndMaterials(Elements* elements,Vertices* vertices,Materials* materials, IoModel* iomodel,const int nummodels);
+void CreateParameters(Parameters*parameters,IoModel* iomodel,char* rootpath,FILE* toolkitfile,const int solution_type);
+void CreateParametersAutodiff(Parameters* parameters,IoModel* iomodel);
+void CreateParametersControl(Parameters* parameters,IoModel* iomodel,int solution_type);
+void CreateParametersDakota(Parameters* parameters,IoModel* iomodel,char* rootpath);
+void CreateOutputDefinitions(Parameters* parameters,IoModel* iomodel);
 void UpdateElementsAndMaterialsControl(Elements* elements,Materials* materials, IoModel* iomodel);
 void UpdateElementsAndMaterialsDakota(Elements* elements,Materials* materials, IoModel* iomodel);
 void UpdateElementsTransient(Elements* elements,Parameters* parameters,IoModel* iomodel,int analysis_counter,int analysis_type);
-void CreateNodes(Nodes** pnodes, IoModel* iomodel,int analysis,int finite_element,int approximation=NoneApproximationEnum);
+void CreateNodes(Nodes*nodes, IoModel* iomodel,int analysis,int finite_element,int approximation=NoneApproximationEnum);
 
 /*partitioning: */
@@ -39,6 +39,6 @@
 
 /*Diverse: */
-void SortDataSets(Elements** pelements,Nodes** pnodes,Vertices** pvertices, Loads** ploads, Materials** pmaterials, Constraints** pconstraints, Parameters** pparameters);
-void UpdateCounters(IoModel* iomodel,Nodes** pnodes,Loads** ploads, Constraints** pconstraints);
+void SortDataSets(Elements*elements,Nodes*nodes,Vertices*vertices, Loads*loads, Materials*materials, Constraints*constraints, Parameters*parameters);
+void UpdateCounters(IoModel* iomodel,Nodes*nodes,Loads*loads, Constraints*constraints);
 
 #endif
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/SortDataSets.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/SortDataSets.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/SortDataSets.cpp	(revision 16542)
@@ -13,33 +13,15 @@
 #include "./ModelProcessorx.h"
 
-void SortDataSets(Elements** pelements,Nodes** pnodes,Vertices** pvertices, Loads** ploads, Materials** pmaterials, Constraints** pconstraints, Parameters** pparameters){
-
-	Elements    *elements    = NULL;
-	Nodes       *nodes       = NULL;
-	Vertices    *vertices    = NULL;
-	Loads       *loads       = NULL;
-	Materials   *materials   = NULL;
-	Constraints *constraints = NULL;
-	Parameters  *parameters  = NULL;
-
-	/*Recover pointers: */
-	elements    = *pelements;
-	nodes       = *pnodes;
-	vertices    = *pvertices;
-	loads       = *ploads;
-	materials   = *pmaterials;
-	constraints = *pconstraints;
-	parameters  = *pparameters;
+void SortDataSets(Elements*elements,Nodes*nodes,Vertices*vertices, Loads*loads, Materials*materials, Constraints*constraints, Parameters*parameters){
 
 	/*All our datasets are already ordered by ids. Set presort flag so that
 	 * later on, when sorting is requested on these datasets, it will not be
 	 * redone: */
-	if(elements)    elements->Presort();
-	if(nodes)       nodes->Presort();
-	if(vertices)    vertices->Presort();
-	if(loads)       loads->Presort();
-	if(materials)   materials->Presort();
-	if(constraints) constraints->Presort();
-	if(parameters)  parameters->Presort();
-
+	elements->Presort();
+	nodes->Presort();
+	vertices->Presort();
+	loads->Presort();
+	materials->Presort();
+	constraints->Presort();
+	parameters->Presort();
 }
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/UpdateCounters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/UpdateCounters.cpp	(revision 16541)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/UpdateCounters.cpp	(revision 16542)
@@ -13,23 +13,9 @@
 #include "./ModelProcessorx.h"
 
-void    UpdateCounters(IoModel* iomodel,Nodes** pnodes,Loads** ploads, Constraints** pconstraints){
+void    UpdateCounters(IoModel* iomodel,Nodes* nodes,Loads* loads, Constraints* constraints){
 
-	Nodes* nodes=NULL;
-	Loads* loads=NULL;
-	Constraints* constraints=NULL;
-
-	/*recover pointers: */
-	nodes=*pnodes;
-	loads=*ploads;
-	constraints=*pconstraints;
-
-	if(nodes) iomodel->nodecounter=nodes->MaximumId();
-	else iomodel->nodecounter=0;
-
-	if(loads)iomodel->loadcounter=loads->NumberOfLoads();
-	else iomodel->loadcounter=0;
-
-	if(constraints)iomodel->constraintcounter=constraints->NumberOfConstraints();
-	else iomodel->constraintcounter=0;
+	iomodel->nodecounter       = nodes->MaximumId();
+	iomodel->loadcounter       = loads->NumberOfLoads();
+	iomodel->constraintcounter = constraints->NumberOfConstraints();
 
 }
