Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 4982)
+++ /issm/trunk/src/c/Makefile.am	(revision 4983)
@@ -542,6 +542,4 @@
 					./modules/Qmux/SpawnCore.cpp\
 					./modules/Qmux/SpawnCoreSerial.cpp\
-					./modules/VecExtrudex/VecExtrudex.cpp\
-					./modules/VecExtrudex/VecExtrudex.h\
 					./modules/InputToResultx/InputToResultx.cpp\
 					./modules/InputToResultx/InputToResultx.h\
@@ -561,6 +559,4 @@
 libISSM_a_CXXFLAGS += -DMX_COMPAT_32 -m32
 endif
-
-
 
 #Parallel compilation
@@ -1077,6 +1073,4 @@
 					./modules/Qmux/SpawnCore.cpp\
 					./modules/Qmux/SpawnCoreParallel.cpp\
-					./modules/VecExtrudex/VecExtrudex.cpp\
-					./modules/VecExtrudex/VecExtrudex.h\
 					./modules/InputToResultx/InputToResultx.cpp\
 					./modules/InputToResultx/InputToResultx.h\
Index: /issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness/CreateNodesBalancedthickness.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness/CreateNodesBalancedthickness.cpp	(revision 4982)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness/CreateNodesBalancedthickness.cpp	(revision 4983)
@@ -41,5 +41,4 @@
 	if (iomodel->dim==3){
 		IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids");
-		IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");
 	}
 	IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements");
@@ -91,5 +90,4 @@
 	xfree((void**)&iomodel->gridonbed);
 	xfree((void**)&iomodel->gridonsurface);
-	xfree((void**)&iomodel->uppernodes);
 	xfree((void**)&iomodel->gridonicesheet);
 	xfree((void**)&iomodel->gridoniceshelf);
Index: /issm/trunk/src/c/modules/ModelProcessorx/Balancedvelocities/CreateNodesBalancedvelocities.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancedvelocities/CreateNodesBalancedvelocities.cpp	(revision 4982)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancedvelocities/CreateNodesBalancedvelocities.cpp	(revision 4983)
@@ -34,5 +34,4 @@
 	if (iomodel->dim==3){
 		IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids");
-		IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");
 	}
 	IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed");
@@ -55,5 +54,4 @@
 	xfree((void**)&iomodel->gridonbed);
 	xfree((void**)&iomodel->gridonsurface);
-	xfree((void**)&iomodel->uppernodes);
 	xfree((void**)&iomodel->gridonicesheet);
 	xfree((void**)&iomodel->gridoniceshelf);
Index: /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/CreateNodesBedSlope.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/CreateNodesBedSlope.cpp	(revision 4982)
+++ /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/CreateNodesBedSlope.cpp	(revision 4983)
@@ -34,5 +34,4 @@
 	if (iomodel->dim==3){
 		IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids");
-		IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");
 	}
 	IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed");
@@ -55,5 +54,4 @@
 	xfree((void**)&iomodel->gridonbed);
 	xfree((void**)&iomodel->gridonsurface);
-	xfree((void**)&iomodel->uppernodes);
 	xfree((void**)&iomodel->gridonicesheet);
 	xfree((void**)&iomodel->gridoniceshelf);
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp	(revision 4982)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp	(revision 4983)
@@ -42,5 +42,4 @@
 	if (iomodel->dim==3){
 		IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids");
-		IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");
 	}
 	
@@ -61,5 +60,4 @@
 	xfree((void**)&iomodel->gridoniceshelf);
 	xfree((void**)&iomodel->deadgrids);
-	xfree((void**)&iomodel->uppernodes);
 
 	cleanup_and_return:
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp	(revision 4982)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp	(revision 4983)
@@ -37,5 +37,4 @@
 	if (iomodel->dim==3){
 		IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids");
-		IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");
 	}
 	IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed");
@@ -62,5 +61,4 @@
 	xfree((void**)&iomodel->gridonsurface);
 	xfree((void**)&iomodel->gridonhutter);
-	xfree((void**)&iomodel->uppernodes);
 	xfree((void**)&iomodel->gridonicesheet);
 	xfree((void**)&iomodel->gridoniceshelf);
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/CreateNodesDiagnosticStokes.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/CreateNodesDiagnosticStokes.cpp	(revision 4982)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/CreateNodesDiagnosticStokes.cpp	(revision 4983)
@@ -37,5 +37,4 @@
 	/*First fetch data: */
 	IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids");
-	IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");
 	IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed");
 	IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface");
@@ -59,5 +58,4 @@
 	xfree((void**)&iomodel->gridonbed);
 	xfree((void**)&iomodel->gridonsurface);
-	xfree((void**)&iomodel->uppernodes);
 	xfree((void**)&iomodel->gridonstokes);
 	xfree((void**)&iomodel->borderstokes);
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp	(revision 4982)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp	(revision 4983)
@@ -36,5 +36,4 @@
 	/*First fetch data: */
 	IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids");
-	IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");
 	IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed");
 	IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface");
@@ -56,5 +55,4 @@
 	xfree((void**)&iomodel->gridonbed);
 	xfree((void**)&iomodel->gridonsurface);
-	xfree((void**)&iomodel->uppernodes);
 	xfree((void**)&iomodel->gridonicesheet);
 	xfree((void**)&iomodel->gridoniceshelf);
Index: /issm/trunk/src/c/modules/ModelProcessorx/Melting/CreateNodesMelting.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Melting/CreateNodesMelting.cpp	(revision 4982)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Melting/CreateNodesMelting.cpp	(revision 4983)
@@ -34,5 +34,4 @@
 	if (iomodel->dim==3){
 		IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids");
-		IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");
 	}
 	IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed");
@@ -55,5 +54,4 @@
 	xfree((void**)&iomodel->gridonbed);
 	xfree((void**)&iomodel->gridonsurface);
-	xfree((void**)&iomodel->uppernodes);
 	xfree((void**)&iomodel->gridonicesheet);
 	xfree((void**)&iomodel->gridoniceshelf);
Index: /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp	(revision 4982)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp	(revision 4983)
@@ -41,5 +41,4 @@
 	if (iomodel->dim==3){
 		IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids");
-		IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");
 	}
 	IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements");
@@ -90,5 +89,4 @@
 	xfree((void**)&iomodel->gridonbed);
 	xfree((void**)&iomodel->gridonsurface);
-	xfree((void**)&iomodel->uppernodes);
 	xfree((void**)&iomodel->gridonicesheet);
 	xfree((void**)&iomodel->gridoniceshelf);
Index: /issm/trunk/src/c/modules/ModelProcessorx/SurfaceSlope/CreateNodesSurfaceSlope.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/SurfaceSlope/CreateNodesSurfaceSlope.cpp	(revision 4982)
+++ /issm/trunk/src/c/modules/ModelProcessorx/SurfaceSlope/CreateNodesSurfaceSlope.cpp	(revision 4983)
@@ -34,5 +34,4 @@
 	if (iomodel->dim==3){
 		IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids");
-		IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");
 	}
 	IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed");
@@ -55,5 +54,4 @@
 	xfree((void**)&iomodel->gridonbed);
 	xfree((void**)&iomodel->gridonsurface);
-	xfree((void**)&iomodel->uppernodes);
 	xfree((void**)&iomodel->gridonicesheet);
 	xfree((void**)&iomodel->gridoniceshelf);
Index: /issm/trunk/src/c/modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp	(revision 4982)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp	(revision 4983)
@@ -34,5 +34,4 @@
 	if (iomodel->dim==3){
 		IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids");
-		IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");
 	}
 	IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed");
@@ -55,5 +54,4 @@
 	xfree((void**)&iomodel->gridonbed);
 	xfree((void**)&iomodel->gridonsurface);
-	xfree((void**)&iomodel->uppernodes);
 	xfree((void**)&iomodel->gridonicesheet);
 	xfree((void**)&iomodel->gridoniceshelf);
Index: /issm/trunk/src/c/modules/modules.h
===================================================================
--- /issm/trunk/src/c/modules/modules.h	(revision 4982)
+++ /issm/trunk/src/c/modules/modules.h	(revision 4983)
@@ -78,5 +78,4 @@
 #include "./UpdateGeometryx/UpdateGeometryx.h"
 #include "./UpdateVertexPositionsx/UpdateVertexPositionsx.h"
-#include "./VecExtrudex/VecExtrudex.h"
 #include "./VerticesDofx/VerticesDofx.h"
 
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4982)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4983)
@@ -5632,66 +5632,2 @@
 }
 /*}}}*/
-/*FUNCTION Penta::VecExtrude {{{1*/
-void  Penta::VecExtrude(Vec vector,double* vector_serial,int iscollapsed){
-
-	/* node data: */
-	int   i;
-	Node* node=NULL;
-	int   extrude=0;
-
-	/*inputs: */
-	bool collapse;
-	bool onbed;
-
-	/*retrieve inputs :*/
-	inputs->GetParameterValue(&collapse,CollapseEnum);
-	inputs->GetParameterValue(&onbed,ElementOnBedEnum);
-
-	/*Figure out if we should extrude for this element: */
-	if (iscollapsed){
-		/*From higher level, we are told to extrude only elements that have the collapse flag on: */
-		if (collapse)extrude=1;
-		else extrude=0;
-	}
-	else{
-		/*From higher level, we are told to extrude all elements: */
-		extrude=1;
-	}
-
-	/*Now, extrusion starts from the bed on, so double check this element is on 
-	 * the bedrock: */
-	if(onbed==0)extrude=0;
-
-	/*Go on and extrude vector: */
-	if (extrude){
-
-		/* node data: */
-		int          dof1;
-		double       vectorel;
-
-		/*this penta is a collapsed macayeal. For each node on the base of this penta, 
-		 * we grab the vector. Once we know the vector, we follow the upper nodes, 
-		 * inserting the same vector value into vector, until we reach the surface: */
-		for(i=0;i<3;i++){
-
-			node=nodes[i]; //base nodes
-			dof1=node->GetDofList1();
-
-			/*get vector for this base node: */
-			vectorel=vector_serial[dof1];
-
-			//go throvectorn all nodes which sit on top of this node, until we reach the surface, 
-			//and plvector  vector in vector
-			for(;;){
-
-				dof1=node->GetDofList1();
-				VecSetValues(vector,1,&dof1,&vectorel,INSERT_VALUES);
-
-				if (node->IsOnSurface())break;
-				/*get next node: */
-				node=node->GetUpperNode();
-			}
-		}
-	} 
-}
-/*}}}*/
Index: /issm/trunk/src/c/objects/Elements/Penta.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.h	(revision 4982)
+++ /issm/trunk/src/c/objects/Elements/Penta.h	(revision 4983)
@@ -175,5 +175,4 @@
 		Tria*	  SpawnTria(int g0, int g1, int g2);
 		void	  SurfaceNormal(double* surface_normal, double xyz_list[3][3]);
-		void	  VecExtrude(Vec vector,double* vector_serial,int iscollapsed);
 		/*}}}*/
 };
Index: /issm/trunk/src/c/objects/IoModel.cpp
===================================================================
--- /issm/trunk/src/c/objects/IoModel.cpp	(revision 4982)
+++ /issm/trunk/src/c/objects/IoModel.cpp	(revision 4983)
@@ -44,5 +44,4 @@
 		xfree((void**)&this->elements2d);
 		xfree((void**)&this->deadgrids);
-		xfree((void**)&this->uppernodes);
 		xfree((void**)&this->upperelements);
 		xfree((void**)&this->lowerelements);
@@ -243,5 +242,4 @@
 	this->deadgrids=NULL;
 	this->numlayers=0;
-	this->uppernodes=NULL;
 	this->upperelements=NULL;
 	this->lowerelements=NULL;
Index: /issm/trunk/src/c/objects/IoModel.h
===================================================================
--- /issm/trunk/src/c/objects/IoModel.h	(revision 4982)
+++ /issm/trunk/src/c/objects/IoModel.h	(revision 4983)
@@ -39,5 +39,4 @@
 		double* deadgrids;
 		int     numlayers;
-		double* uppernodes;
 		double* upperelements;
 		double* lowerelements;
Index: /issm/trunk/src/c/objects/Node.cpp
===================================================================
--- /issm/trunk/src/c/objects/Node.cpp	(revision 4982)
+++ /issm/trunk/src/c/objects/Node.cpp	(revision 4983)
@@ -24,10 +24,9 @@
 	this->inputs=NULL;
 	this->hvertex=NULL;
-	this->hupper_node=NULL;
 	return;
 }
 /*}}}*/
-/*FUNCTION Node::Node(int id, int vertex_id, int uppernode_id, int numdofs, NodeProperties*) {{{1*/
-Node::Node(int node_id,int node_sid, int node_vertex_id, int node_upper_node_id, int node_numdofs):
+/*FUNCTION Node::Node(int id, int vertex_id, int numdofs, NodeProperties*) {{{1*/
+Node::Node(int node_id,int node_sid, int node_vertex_id, int node_numdofs):
 	indexing(node_numdofs){
 
@@ -35,27 +34,25 @@
 	this->sid=node_sid;
 	this->inputs=new Inputs();
-	
 	this->hvertex=new Hook(&node_vertex_id,1);
-    this->hupper_node=new Hook(&node_upper_node_id,1);
-
-}
-/*}}}*/
-/*FUNCTION Node::Node(int id, DofIndexing* indexing, Hook* vertex, Hook* uppernode,Inputs* inputs,int analysis_type){{{1*/
-Node::Node(int node_id,int node_sid, DofIndexing* node_indexing, Hook* node_vertex, Hook* node_upper_node,Inputs* node_inputs,int analysis_type):
+
+}
+/*}}}*/
+/*FUNCTION Node::Node(int id, DofIndexing* indexing, Hook* vertex, Inputs* inputs,int analysis_type){{{1*/
+Node::Node(int node_id,int node_sid, DofIndexing* node_indexing, Hook* node_vertex,Inputs* node_inputs,int analysis_type):
 	    indexing(node_indexing),
-		hvertex(node_vertex),
-		hupper_node(node_upper_node) {
-
-	    /*all the initialization has been done by the initializer, just fill in the id: */
-	    this->id=node_id;
-	    this->sid=node_sid;
-		this->analysis_type=analysis_type;
-
-		if(node_inputs){
-			this->inputs=(Inputs*)node_inputs->Copy();
-		}
-		else{
-			this->inputs=new Inputs();
-		}
+		hvertex(node_vertex)
+{
+
+	/*all the initialization has been done by the initializer, just fill in the id: */
+	this->id=node_id;
+	this->sid=node_sid;
+	this->analysis_type=analysis_type;
+
+	if(node_inputs){
+		this->inputs=(Inputs*)node_inputs->Copy();
+	}
+	else{
+		this->inputs=new Inputs();
+	}
 }
 /*}}}*/
@@ -66,5 +63,4 @@
 	int k;
 	int numdofs;
-	int upper_node_id;
 
 	/*id: */
@@ -77,20 +73,6 @@
 	this->indexing.Init(numdofs);
 
-	/*hooks: */
-	if (iomodel->dim==3){
-		if (isnan(iomodel->uppernodes[io_index])){
-			upper_node_id=this->id; //nodes on surface do not have upper nodes, only themselves.
-		}
-		else{
-			upper_node_id=(int)iomodel->uppernodes[io_index];
-		}
-	}
-	else{
-		/*If we are running 2d, upper_node does not mean much. Just point towards itself!:*/
-		upper_node_id=this->id;
-	}
-
+	/*Hooks*/
 	this->hvertex=new Hook(&vertex_id,1); //node id is the same as the vertex id, continuous galerkin!
-	this->hupper_node=new Hook(&upper_node_id,1);
 
 	//intialize inputs, and add as many inputs per element as requested: 
@@ -178,5 +160,4 @@
 	delete inputs;
 	delete hvertex;
-	delete hupper_node;
 	return;
 }
@@ -193,5 +174,4 @@
 	indexing.Echo();
 	printf("   hvertex:     not displayed\n");
-	printf("   hupper_node: not displayed\n");
 	printf("   inputs:      %p\n",inputs);
 
@@ -209,7 +189,4 @@
 	printf("Vertex:\n");
 	hvertex->DeepEcho();
-	printf("Upper node:\n");
-	//Do not Deepecho the upper_node otherwise DeepEcho will go crazy!
-	hupper_node->Echo();
 	printf("   inputs\n");
 	inputs->DeepEcho();
@@ -252,5 +229,4 @@
 	indexing.Marshall(&marshalled_dataset);
 	hvertex->Marshall(&marshalled_dataset);
-	hupper_node->Marshall(&marshalled_dataset);
 
 	/*Marshall inputs: */
@@ -274,5 +250,4 @@
 		indexing.MarshallSize()+
 		hvertex->MarshallSize()+
-		hupper_node->MarshallSize()+
 		inputs->MarshallSize()+
 		sizeof(analysis_type)+
@@ -298,5 +273,4 @@
 	indexing.Demarshall(&marshalled_dataset);
 	hvertex=new Hook(); hvertex->Demarshall(&marshalled_dataset);
-	hupper_node=new Hook(); hupper_node->Demarshall(&marshalled_dataset);
 
 	/*demarshall inputs: */
@@ -318,5 +292,5 @@
 Object* Node::copy() {
 		
-	return new Node(this->id,this->sid,&this->indexing, this->hvertex,this->hupper_node,this->inputs,this->analysis_type);
+	return new Node(this->id,this->sid,&this->indexing, this->hvertex,this->inputs,this->analysis_type);
 
 }
@@ -333,5 +307,4 @@
 	 * datasets, using internal ids and offsets hidden in hooks: */
 	hvertex->configure(verticesin);
-	hupper_node->configure(nodesin);
 
 }
@@ -344,5 +317,4 @@
 	 * datasets, using internal ids and offsets hidden in hooks: */
 	hvertex->configure(verticesin);
-	hupper_node->configure(nodesin);
 
 }
@@ -502,45 +474,4 @@
 }
 /*}}}*/
-/*FUNCTION Node::VecExtrude {{{1*/
-void  Node::VecExtrude(Vec vector,double* vector_serial){
-		
-	/* node data: */
-	int   numberofdofspernode;
-	Node* node=NULL;
-	int   i;
-
-	bool onbed;
-
-	/*recover parameters: */
-	inputs->GetParameterValue(&onbed,NodeOnBedEnum);
-
-	/*Is this node on bed? :*/
-	if (onbed){
-
-		/* node data: */
-		int          dof1;
-		double       vectorel;
-
-		//initilaize node and get dof1
-		node=this;
-		dof1=node->GetVertexDof();
-
-		/*get vector for this base node: */
-		vectorel=vector_serial[dof1];
-
-		//go throvectorn all nodes which sit on top of this node, until we reach the surface, 
-		//and plvector  vector in vector
-		for(;;){
-
-			dof1=node->GetVertexDof();
-			VecSetValues(vector,1,&dof1,&vectorel,INSERT_VALUES);
-
-			if (node->IsOnSurface())break;
-			/*get next node: */
-			node=node->GetUpperNode();
-		}
-	} 
-}
-/*}}}*/
 /*FUNCTION Node::FreezeDof{{{1*/
 void  Node::FreezeDof(int dof){
@@ -573,11 +504,4 @@
 	vertex=(Vertex*)hvertex->delivers();
 	return vertex->sigma;
-}
-/*}}}*/
-/*FUNCTION Node::GetUpperNode {{{1*/
-Node* Node::GetUpperNode(){
-	Node* upper_node=NULL;
-	upper_node=(Node*)hupper_node->delivers();
-	return upper_node;
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Node.h
===================================================================
--- /issm/trunk/src/c/objects/Node.h	(revision 4982)
+++ /issm/trunk/src/c/objects/Node.h	(revision 4983)
@@ -28,5 +28,4 @@
 		DofIndexing    indexing;
 		Hook*          hvertex;
-		Hook*          hupper_node;
 		Inputs*        inputs; //properties of this node
 		int            analysis_type;
@@ -36,6 +35,6 @@
 		/*Node constructors, destructors {{{1*/
 		Node();
-		Node(int id,int sid, int vertex_id, int upper_node_id, int numberofdofs);
-		Node(int id,int sid, DofIndexing* indexing, Hook* vertex, Hook* upper_node, Inputs* inputs,int analysis_type);
+		Node(int id,int sid, int vertex_id,int numberofdofs);
+		Node(int id,int sid, DofIndexing* indexing, Hook* vertex, Inputs* inputs,int analysis_type);
 		Node(int node_id,int node_sid, int vertex_id,int io_index, IoModel* iomodel,int analysis_type);
 		~Node();
@@ -84,5 +83,4 @@
 		double GetZ();
 		double GetSigma();
-		Node* GetUpperNode();
 		int   IsOnBed();
 		int   IsOnSurface();
@@ -90,5 +88,4 @@
 		int   IsOnShelf();
 		int   IsOnSheet();
-		void  VecExtrude(Vec vector,double* vector_serial);
 		/*}}}*/
 		/*Dof Object routines {{{1*/
Index: /issm/trunk/src/m/classes/public/marshall.m
===================================================================
--- /issm/trunk/src/m/classes/public/marshall.m	(revision 4982)
+++ /issm/trunk/src/m/classes/public/marshall.m	(revision 4983)
@@ -43,5 +43,4 @@
 	WriteData(fid,md.gridonpattyn,'Mat','gridonpattyn');
 end
-WriteData(fid,md.uppergrids,'Mat','uppergrids');
 WriteData(fid,md.upperelements,'Mat','upperelements');
 WriteData(fid,md.lowerelements,'Mat','lowerelements');
