Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 4155)
+++ /issm/trunk/src/c/Makefile.am	(revision 4156)
@@ -511,6 +511,4 @@
 					./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp\
 					./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h\
-					./modules/ProcessParamsx/ProcessParamsx.cpp\
-					./modules/ProcessParamsx/ProcessParamsx.h\
 					./modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.cpp\
 					./modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.h\
@@ -1031,6 +1029,4 @@
 					./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp\
 					./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h\
-					./modules/ProcessParamsx/ProcessParamsx.cpp\
-					./modules/ProcessParamsx/ProcessParamsx.h\
 					./modules/Qmux/Qmux.h\
 					./modules/Qmux/Qmux.cpp\
Index: /issm/trunk/src/c/modules/ComputePressurex/ComputePressurex.cpp
===================================================================
--- /issm/trunk/src/c/modules/ComputePressurex/ComputePressurex.cpp	(revision 4155)
+++ /issm/trunk/src/c/modules/ComputePressurex/ComputePressurex.cpp	(revision 4156)
@@ -21,5 +21,5 @@
 
 	/*Recover numberofnodes: */
-	parameters->FindParam(&numberofnodes,NumberOfNodesEnum);
+	nodes->NumberOfNodes(&numberofnodes);
 
 	/*Allocate p_g on numberofnodes (only 1 dof): */
Index: /issm/trunk/src/c/modules/FieldAverageOntoVerticesx/FieldAverageOntoVerticesx.cpp
===================================================================
--- /issm/trunk/src/c/modules/FieldAverageOntoVerticesx/FieldAverageOntoVerticesx.cpp	(revision 4155)
+++ /issm/trunk/src/c/modules/FieldAverageOntoVerticesx/FieldAverageOntoVerticesx.cpp	(revision 4156)
@@ -24,5 +24,5 @@
 
 	/*Initialize intermediary*/
-	found=parameters->FindParam(&numberofvertices,NumberOfVerticesEnum);
+	vertices->NumberOfVertices(&numberofvertices);
 	connectivity=NewVec(numberofvertices);
 	fieldsum    =NewVec(numberofvertices);
Index: /issm/trunk/src/c/modules/Gradjx/Gradjx.cpp
===================================================================
--- /issm/trunk/src/c/modules/Gradjx/Gradjx.cpp	(revision 4155)
+++ /issm/trunk/src/c/modules/Gradjx/Gradjx.cpp	(revision 4156)
@@ -24,5 +24,5 @@
 	/*retrieve some parameters: */
 	parameters->FindParam(&dim,DimEnum);
-	parameters->FindParam(&numberofvertices,NumberOfVerticesEnum);
+	vertices->NumberOfVertices(&numberofvertices);
 
 	/*Compute gradients: */
Index: /issm/trunk/src/c/modules/NodesDofx/NodesDofx.cpp
===================================================================
--- /issm/trunk/src/c/modules/NodesDofx/NodesDofx.cpp	(revision 4155)
+++ /issm/trunk/src/c/modules/NodesDofx/NodesDofx.cpp	(revision 4156)
@@ -13,6 +13,6 @@
 
 	int noerr=1;
+	int found=0;
 	int i;
-	int  found=0;
 	
 	/*intermediary: */
@@ -21,6 +21,5 @@
 
 	/*First, recover number of vertices and nodes from parameters: */
-	found=parameters->FindParam(&numberofnodes,NumberOfNodesEnum);
-	if(!found)ISSMERROR(" could not find numberofnodes in parameters");
+	nodes->NumberOfNodes(&numberofnodes);
 
 	/*Recover number of dofs per node: */
Index: /issm/trunk/src/c/modules/UpdateGeometryx/UpdateGeometryx.cpp
===================================================================
--- /issm/trunk/src/c/modules/UpdateGeometryx/UpdateGeometryx.cpp	(revision 4155)
+++ /issm/trunk/src/c/modules/UpdateGeometryx/UpdateGeometryx.cpp	(revision 4156)
@@ -12,110 +12,20 @@
 void UpdateGeometryx( DataSet* elements, DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials, Parameters* parameters){
 
+	/*Intermediary*/
 	int i;
-	int dof;
-
-	ISSMERROR(" not support yet! needs to be redone at the element level!");
-
-	/*vectorized inputs: */
-	Vec     vec_newthickness=NULL;
-	Vec     vec_bed=NULL;
-	Vec     vec_surface=NULL;
-	double* newthickness=NULL;
-	double* bed=NULL;
-	double* surface=NULL;
-
-	/*objects: */
-	Node* node=NULL;
-	Object* object=NULL;
-	Matpar* matpar=NULL;
-
-	/*parameters: */
-	double h,b,s;
-	double rho_ice,rho_water;
+	Element* element=NULL;
 
 	/*First, get elements and loads configured: */
-	elements->Configure(elements,loads, nodes,vertices, materials,parameters);
-	nodes->Configure(elements,loads, nodes,vertices, materials,parameters);
-	materials->Configure(elements, loads, nodes,vertices, materials,parameters);
-	loads->Configure(elements, loads, nodes,vertices, materials,parameters);
+	elements->  Configure(elements,loads, nodes,vertices, materials,parameters);
+	loads->     Configure(elements,loads, nodes,vertices, materials,parameters);
+	nodes->     Configure(elements,loads, nodes,vertices, materials,parameters);
 	parameters->Configure(elements,loads, nodes,vertices, materials,parameters);
 
-	/*retrieve inputs: */
-	GetVectorFromInputsx( &vec_newthickness, elements, nodes,  vertices,  loads,  materials,  parameters, ThicknessEnum,VertexEnum);
-	GetVectorFromInputsx( &vec_bed, elements, nodes,  vertices,  loads,  materials,  parameters, ThicknessEnum,VertexEnum);
-	GetVectorFromInputsx( &vec_surface, elements, nodes,  vertices,  loads,  materials,  parameters, ThicknessEnum,VertexEnum);
-
-	VecToMPISerial(&newthickness,vec_newthickness);
-	VecToMPISerial(&bed,vec_bed);
-	VecToMPISerial(&surface,vec_surface);
-
-	/*First, find the matpar object in materials: */
-	for(i=0;i<materials->Size();i++){
-		Object* object=materials->GetObjectByOffset(i);
-		if  (object->Enum()==MatparEnum){
-			matpar=(Matpar*)object;
-			break;
-		}
+	/*Elements drive the update: */
+	for (i=0;i<elements->Size();i++){
+		element=(Element*)elements->GetObjectByOffset(i);
+		//element->UpdateGeometry();
+		ISSMERROR("not implemented yet");
 	}
-
-	/*recover material parameters: */
-	rho_ice=matpar->GetRhoIce();
-	rho_water=matpar->GetRhoWater();
-
-	/*Go through nodes and for each node, update the thickness, bed and surface, using the 
-	 * new thickness computed in the prognostic_core part of the transient solution sequence: */
-
-	for(i=0;i<nodes->Size();i++){
-
-		/*get i'th node: */
-		node=(Node*)vertices->GetObjectByOffset(i);
-
-		/*first, recover thickness, surface and bed for this node: */
-		h=newthickness[dof];
-		s=surface[dof];
-		b=bed[dof];
-
-		//First, check that thickness is >0
-		if(h<0)h=10; 
-
-		//For grids on ice sheet, the new bed remains the same, the new surface becomes bed+new_thickness. 
-		if (node->IsOnSheet()){
-			s=b+h;
-		}
-
-		//For grids on ice shelt, we have hydrostatic equilibrium (for now)
-		if (node->IsOnShelf()){
-			b=-rho_ice/rho_water*h;
-			s=(1-rho_ice/rho_water)*h;
-		}
-
-		/*Ok, plug values of thickness, surafce and bed into our outputs: */
-		VecSetValues(vec_newthickness,1,&dof,&h,INSERT_VALUES);
-		VecSetValues(vec_bed,1,&dof,&b,INSERT_VALUES);
-		VecSetValues(vec_surface,1,&dof,&s,INSERT_VALUES);
-	}
-
-	/*Assemble vectors: */
-	VecAssemblyBegin(vec_newthickness);
-	VecAssemblyEnd(vec_newthickness);
-
-	VecAssemblyBegin(vec_bed);
-	VecAssemblyEnd(vec_bed);
-
-	VecAssemblyBegin(vec_surface);
-	VecAssemblyEnd(vec_surface);
-
-	/*Put back into inputs:*/
-	InputUpdateFromVectorx( elements,nodes, vertices,loads, materials,  parameters,vec_newthickness,ThicknessEnum,VertexEnum); //clobber existing thickness input with new one
-	InputUpdateFromVectorx( elements,nodes, vertices,loads, materials,  parameters,vec_bed,BedEnum,VertexEnum); 
-	InputUpdateFromVectorx( elements,nodes, vertices,loads, materials,  parameters,vec_surface,SurfaceEnum,VertexEnum); 
-
-	/*Free ressources:*/
-	VecFree(&vec_newthickness);
-	VecFree(&vec_bed);
-	VecFree(&vec_surface);
-	xfree((void**)&newthickness);
-	xfree((void**)&bed);
-	xfree((void**)&surface);
 	
 }
Index: /issm/trunk/src/c/modules/modules.h
===================================================================
--- /issm/trunk/src/c/modules/modules.h	(revision 4155)
+++ /issm/trunk/src/c/modules/modules.h	(revision 4156)
@@ -40,5 +40,4 @@
 #include "./Mergesolutionfromftogx/Mergesolutionfromftogx.h"
 #include "./PenaltyConstraintsx/PenaltyConstraintsx.h"
-#include "./ProcessParamsx/ProcessParamsx.h"
 #include "./PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.h"
 #include "./Gradjx/Gradjx.h"
Index: /issm/trunk/src/c/solvers/solver_diagnostic_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/solvers/solver_diagnostic_nonlinear.cpp	(revision 4155)
+++ /issm/trunk/src/c/solvers/solver_diagnostic_nonlinear.cpp	(revision 4156)
@@ -42,5 +42,5 @@
 	/*Recover parameters: */
 	kflag=1; pflag=1;
-	femmodel->parameters->FindParam(&numberofnodes,NumberOfNodesEnum);
+	femmodel->nodes->NumberOfNodes(&numberofnodes);
 	femmodel->parameters->FindParam(&solver_string,SolverStringEnum);
 	femmodel->parameters->FindParam(&dim,DimEnum);
Index: /issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp	(revision 4155)
+++ /issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp	(revision 4156)
@@ -42,5 +42,5 @@
 	kflag=1; pflag=1;
 
-	fem->parameters->FindParam(&numberofnodes,NumberOfNodesEnum);
+	fem->nodes->NumberOfNodes(&numberofnodes);
 	fem->parameters->FindParam(&solver_string,SolverStringEnum);
 	fem->parameters->FindParam(&verbose,VerboseEnum);
