Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9727)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9728)
@@ -155,4 +155,7 @@
 	MeshNumberoflayersEnum,
 	MeshNumberofvertices2dEnum,
+	MeshElementconnectivityEnum,
+	MeshLowerelementsEnum,
+	MeshUpperelementsEnum,
 	/*}}}*/
 	/*Datasets {{{1*/
@@ -470,10 +473,7 @@
 	YEnum,
 	ZEnum,
-	UpperelementsEnum,
 	EdgesEnum,
 	Elements2dEnum,
 	XEnum,
-	ElementconnectivityEnum,
-	LowerelementsEnum,
 	OutputfilenameEnum,
 	WaterfractionEnum,
Index: /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9727)
+++ /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9728)
@@ -159,4 +159,7 @@
 		case MeshNumberoflayersEnum : return "MeshNumberoflayers";
 		case MeshNumberofvertices2dEnum : return "MeshNumberofvertices2d";
+		case MeshElementconnectivityEnum : return "MeshElementconnectivity";
+		case MeshLowerelementsEnum : return "MeshLowerelements";
+		case MeshUpperelementsEnum : return "MeshUpperelements";
 		case ConstraintsEnum : return "Constraints";
 		case ElementsEnum : return "Elements";
@@ -413,10 +416,7 @@
 		case YEnum : return "Y";
 		case ZEnum : return "Z";
-		case UpperelementsEnum : return "Upperelements";
 		case EdgesEnum : return "Edges";
 		case Elements2dEnum : return "Elements2d";
 		case XEnum : return "X";
-		case ElementconnectivityEnum : return "Elementconnectivity";
-		case LowerelementsEnum : return "Lowerelements";
 		case OutputfilenameEnum : return "Outputfilename";
 		case WaterfractionEnum : return "Waterfraction";
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 9727)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 9728)
@@ -45,6 +45,6 @@
 	
 	/*Fetch data needed: */
-	iomodel->FetchData(4,ElementsEnum,ElementconnectivityEnum,MaterialsRheologyBEnum,MaterialsRheologyNEnum);
-	if(dim==3)          iomodel->FetchData(2,UpperelementsEnum,LowerelementsEnum);
+	iomodel->FetchData(4,ElementsEnum,MeshElementconnectivityEnum,MaterialsRheologyBEnum,MaterialsRheologyNEnum);
+	if(dim==3)          iomodel->FetchData(2,MeshUpperelementsEnum,MeshLowerelementsEnum);
 	if(control_analysis)iomodel->FetchData(3,InversionControlParametersEnum,InversionMinParametersEnum,InversionMaxParametersEnum);
 	
@@ -63,5 +63,5 @@
 	
 	/*Free data: */
-	iomodel->DeleteData(9,ElementsEnum,ElementconnectivityEnum,UpperelementsEnum,LowerelementsEnum,
+	iomodel->DeleteData(9,ElementsEnum,MeshElementconnectivityEnum,MeshUpperelementsEnum,MeshLowerelementsEnum,
 				MaterialsRheologyBEnum,MaterialsRheologyNEnum,InversionControlParametersEnum,InversionMinParametersEnum,InversionMaxParametersEnum);
 
Index: /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9727)
+++ /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9728)
@@ -157,4 +157,7 @@
 	else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum;
 	else if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum;
+	else if (strcmp(name,"MeshElementconnectivity")==0) return MeshElementconnectivityEnum;
+	else if (strcmp(name,"MeshLowerelements")==0) return MeshLowerelementsEnum;
+	else if (strcmp(name,"MeshUpperelements")==0) return MeshUpperelementsEnum;
 	else if (strcmp(name,"Constraints")==0) return ConstraintsEnum;
 	else if (strcmp(name,"Elements")==0) return ElementsEnum;
@@ -411,10 +414,7 @@
 	else if (strcmp(name,"Y")==0) return YEnum;
 	else if (strcmp(name,"Z")==0) return ZEnum;
-	else if (strcmp(name,"Upperelements")==0) return UpperelementsEnum;
 	else if (strcmp(name,"Edges")==0) return EdgesEnum;
 	else if (strcmp(name,"Elements2d")==0) return Elements2dEnum;
 	else if (strcmp(name,"X")==0) return XEnum;
-	else if (strcmp(name,"Elementconnectivity")==0) return ElementconnectivityEnum;
-	else if (strcmp(name,"Lowerelements")==0) return LowerelementsEnum;
 	else if (strcmp(name,"Outputfilename")==0) return OutputfilenameEnum;
 	else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 9727)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 9728)
@@ -57,6 +57,6 @@
 	/*Checks in debugging mode*/
 	/*{{{2*/
-	_assert_(iomodel->Data(UpperelementsEnum));
-	_assert_(iomodel->Data(LowerelementsEnum));
+	_assert_(iomodel->Data(MeshUpperelementsEnum));
+	_assert_(iomodel->Data(MeshLowerelementsEnum));
 	/*}}}*/
 
@@ -66,13 +66,13 @@
 
 	/*Build neighbors list*/
-	if (isnan(iomodel->Data(UpperelementsEnum)[index])) penta_elements_ids[1]=this->id; //upper penta is the same penta
-	else                                    penta_elements_ids[1]=(int)(iomodel->Data(UpperelementsEnum)[index]);
-	if (isnan(iomodel->Data(LowerelementsEnum)[index])) penta_elements_ids[0]=this->id; //lower penta is the same penta
-	else                                    penta_elements_ids[0]=(int)(iomodel->Data(LowerelementsEnum)[index]);
+	if (isnan(iomodel->Data(MeshUpperelementsEnum)[index])) penta_elements_ids[1]=this->id; //upper penta is the same penta
+	else                                    penta_elements_ids[1]=(int)(iomodel->Data(MeshUpperelementsEnum)[index]);
+	if (isnan(iomodel->Data(MeshLowerelementsEnum)[index])) penta_elements_ids[0]=this->id; //lower penta is the same penta
+	else                                    penta_elements_ids[0]=(int)(iomodel->Data(MeshLowerelementsEnum)[index]);
 	this->InitHookNeighbors(penta_elements_ids);
 
 	/*Build horizontalneighborsids list: */
-	_assert_(iomodel->Data(ElementconnectivityEnum));
-	for(i=0;i<3;i++) this->horizontalneighborsids[i]=(int)iomodel->Data(ElementconnectivityEnum)[3*index+i]-1;
+	_assert_(iomodel->Data(MeshElementconnectivityEnum));
+	for(i=0;i<3;i++) this->horizontalneighborsids[i]=(int)iomodel->Data(MeshElementconnectivityEnum)[3*index+i]-1;
 
 	//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 9727)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 9728)
@@ -52,5 +52,5 @@
 
 		/*Build horizontalneighborsids list: */
-		_assert_(iomodel->Data(ElementconnectivityEnum));
+		_assert_(iomodel->Data(MeshElementconnectivityEnum));
 		//for (i=0;i<3;i++) this->horizontalneighborsids[i]=(int)iomodel->elementconnectivity[3*index+i]-1;
 
Index: /issm/trunk/src/m/classes/mesh.m
===================================================================
--- /issm/trunk/src/m/classes/mesh.m	(revision 9727)
+++ /issm/trunk/src/m/classes/mesh.m	(revision 9728)
@@ -22,4 +22,10 @@
 		numberofvertices2d    = modelfield('default',0,'marshall',true,'format','Integer');
 		numberofelements2d = modelfield('default',0,'marshall',true,'format','Integer');
+		nodeconnectivity    = modelfield('default',NaN,'marshall',false);
+		elementconnectivity = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);
+		uppernodes           = modelfield('default',NaN,'marshall',false);
+		upperelements        = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);
+		lowerelements        = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);
+		lowernodes           = modelfield('default',NaN,'marshall',false);
 	end
 	methods
Index: /issm/trunk/src/m/classes/model/model.m
===================================================================
--- /issm/trunk/src/m/classes/model/model.m	(revision 9727)
+++ /issm/trunk/src/m/classes/model/model.m	(revision 9728)
@@ -47,15 +47,8 @@
 		 y                   = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
 		 z                   = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
-		 nodeconnectivity    = modelfield('default',NaN,'marshall',false);
-		 elementconnectivity = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);
 		 edges               = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);
 		 elements2d         = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);
 		 x2d                = modelfield('default',NaN,'marshall',false);
 		 y2d                = modelfield('default',NaN,'marshall',false);
-
-		 uppernodes           = modelfield('default',NaN,'marshall',false);
-		 upperelements        = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);
-		 lowerelements        = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);
-		 lowernodes           = modelfield('default',NaN,'marshall',false);
 
 		 elementonbed      = modelfield('default',NaN,'marshall',true,'format','BooleanMat','mattype',2);
@@ -318,4 +311,10 @@
 			 if isfield(structmd,'numberofelements2d'), md.mesh.numberofelements2d=structmd.numberofelements2d; end
 			 if isfield(structmd,'numberofnodes2d'), md.mesh.numberofvertices2d=structmd.numberofnodes2d; end
+			 if isfield(structmd,'nodeconnectivity'), md.mesh.nodeconnectivityension=structmd.nodeconnectivity; end
+			 if isfield(structmd,'elementconnectivity'), md.mesh.elementconnectivityension=structmd.elementconnectivity; end
+			 if isfield(structmd,'uppernodes'), md.mesh.uppernodesension=structmd.uppernodes; end
+			 if isfield(structmd,'lowernodes'), md.mesh.lowernodesension=structmd.lowernodes; end
+			 if isfield(structmd,'upperelements'), md.mesh.upperelementsension=structmd.upperelements; end
+			 if isfield(structmd,'lowerelements'), md.mesh.lowerelementsension=structmd.lowerelements; end
 
 			 %Field changes
Index: sm/trunk/src/m/enum/ElementconnectivityEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ElementconnectivityEnum.m	(revision 9727)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=ElementconnectivityEnum()
-%ELEMENTCONNECTIVITYENUM - Enum of Elementconnectivity
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
-%            Please read src/c/EnumDefinitions/README for more information
-%
-%   Usage:
-%      macro=ElementconnectivityEnum()
-
-macro=StringToEnum('Elementconnectivity');
Index: sm/trunk/src/m/enum/LowerelementsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/LowerelementsEnum.m	(revision 9727)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=LowerelementsEnum()
-%LOWERELEMENTSENUM - Enum of Lowerelements
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
-%            Please read src/c/EnumDefinitions/README for more information
-%
-%   Usage:
-%      macro=LowerelementsEnum()
-
-macro=StringToEnum('Lowerelements');
Index: /issm/trunk/src/m/enum/MeshElementconnectivityEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MeshElementconnectivityEnum.m	(revision 9728)
+++ /issm/trunk/src/m/enum/MeshElementconnectivityEnum.m	(revision 9728)
@@ -0,0 +1,11 @@
+function macro=MeshElementconnectivityEnum()
+%MESHELEMENTCONNECTIVITYENUM - Enum of MeshElementconnectivity
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=MeshElementconnectivityEnum()
+
+macro=StringToEnum('MeshElementconnectivity');
Index: /issm/trunk/src/m/enum/MeshLowerelementsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MeshLowerelementsEnum.m	(revision 9728)
+++ /issm/trunk/src/m/enum/MeshLowerelementsEnum.m	(revision 9728)
@@ -0,0 +1,11 @@
+function macro=MeshLowerelementsEnum()
+%MESHLOWERELEMENTSENUM - Enum of MeshLowerelements
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=MeshLowerelementsEnum()
+
+macro=StringToEnum('MeshLowerelements');
Index: /issm/trunk/src/m/enum/MeshUpperelementsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MeshUpperelementsEnum.m	(revision 9728)
+++ /issm/trunk/src/m/enum/MeshUpperelementsEnum.m	(revision 9728)
@@ -0,0 +1,11 @@
+function macro=MeshUpperelementsEnum()
+%MESHUPPERELEMENTSENUM - Enum of MeshUpperelements
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=MeshUpperelementsEnum()
+
+macro=StringToEnum('MeshUpperelements');
Index: sm/trunk/src/m/enum/UpperelementsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/UpperelementsEnum.m	(revision 9727)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=UpperelementsEnum()
-%UPPERELEMENTSENUM - Enum of Upperelements
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
-%            Please read src/c/EnumDefinitions/README for more information
-%
-%   Usage:
-%      macro=UpperelementsEnum()
-
-macro=StringToEnum('Upperelements');
Index: /issm/trunk/src/m/model/PropagateFlagsUntilDistance.m
===================================================================
--- /issm/trunk/src/m/model/PropagateFlagsUntilDistance.m	(revision 9727)
+++ /issm/trunk/src/m/model/PropagateFlagsUntilDistance.m	(revision 9728)
@@ -20,5 +20,5 @@
 %find elements that are at the border of flags: 
 flag_elements=find(flags);
-conn=md.elementconnectivity(flag_elements,:);
+conn=md.mesh.elementconnectivity(flag_elements,:);
 pos=find(conn);conn(pos)=~flags(conn(pos));
 sum_conn=sum(conn,2);
@@ -38,5 +38,5 @@
 	pos=find(new_flags);
 
-	connected_elements=md.elementconnectivity(pos,:);
+	connected_elements=md.mesh.elementconnectivity(pos,:);
 	connected_elements=connected_elements(find(connected_elements));
 	new_flags(connected_elements)=1;
@@ -56,6 +56,6 @@
 			%none of the border elements are within distance, this element is outside out area of interest.
 			%ensure this element never gets found again in the connectivity.
-			pos=find(md.elementconnectivity==new_elements(i));
-			md.elementconnectivity(pos)=0;
+			pos=find(md.mesh.elementconnectivity==new_elements(i));
+			md.mesh.elementconnectivity(pos)=0;
 			%exclude this new element from the new_flags!
 			new_flags(new_elements(i))=0;
Index: /issm/trunk/src/m/model/bamg.m
===================================================================
--- /issm/trunk/src/m/model/bamg.m	(revision 9727)
+++ /issm/trunk/src/m/model/bamg.m	(revision 9728)
@@ -335,6 +335,6 @@
 md.elementonsurface=ones(md.mesh.numberofelements,1);
 md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
-md.elementconnectivity=md.private.bamg.mesh.ElementConnectivity;
-md.elementconnectivity(find(isnan(md.elementconnectivity)))=0;
+md.mesh.elementconnectivity=md.private.bamg.mesh.ElementConnectivity;
+md.mesh.elementconnectivity(find(isnan(md.mesh.elementconnectivity)))=0;
 
 %Check for orphan
Index: /issm/trunk/src/m/model/collapse.m
===================================================================
--- /issm/trunk/src/m/model/collapse.m	(revision 9727)
+++ /issm/trunk/src/m/model/collapse.m	(revision 9728)
@@ -98,6 +98,6 @@
 
 %Keep a trace of lower and upper nodes
-md.lowernodes=NaN;
-md.uppernodes=NaN;
+md.mesh.lowernodes=NaN;
+md.mesh.uppernodes=NaN;
 
 %Remove old mesh 
Index: /issm/trunk/src/m/model/contourenvelope.m
===================================================================
--- /issm/trunk/src/m/model/contourenvelope.m	(revision 9727)
+++ /issm/trunk/src/m/model/contourenvelope.m	(revision 9728)
@@ -35,13 +35,13 @@
 %Now, build the connectivity tables for this mesh.
 %Computing connectivity
-if size(md.nodeconnectivity,1)~=md.mesh.numberofvertices,
-	md.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
+if size(md.mesh.nodeconnectivity,1)~=md.mesh.numberofvertices,
+	md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
 end
-if size(md.elementconnectivity,1)~=md.mesh.numberofelements,
-	md.elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);
+if size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements,
+	md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity);
 end
 
 %get nodes inside profile
-elementconnectivity=md.elementconnectivity;
+mesh.elementconnectivity=md.mesh.elementconnectivity;
 if nargin==2,
 	if isfile,
@@ -51,6 +51,6 @@
 		%modify element connectivity
 		elemout=find(~elemin);
-		elementconnectivity(elemout,:)=0;
-		elementconnectivity(find(ismember(elementconnectivity,elemout)))=0;
+		mesh.elementconnectivity(elemout,:)=0;
+		mesh.elementconnectivity(find(ismember(mesh.elementconnectivity,elemout)))=0;
 	else
 		%get flag list of elements and nodes inside the contour
@@ -64,6 +64,6 @@
 		%modify element connectivity
 		elemout=find(~elemin);
-		elementconnectivity(elemout,:)=0;
-		elementconnectivity(find(ismember(elementconnectivity,elemout)))=0;
+		mesh.elementconnectivity(elemout,:)=0;
+		mesh.elementconnectivity(find(ismember(mesh.elementconnectivity,elemout)))=0;
 	end
 end
@@ -71,5 +71,5 @@
 %Find element on boundary
 %First: find elements on the boundary of the domain
-flag=elementconnectivity;
+flag=mesh.elementconnectivity;
 if nargin==2,
 	flag(find(flag))=elemin(flag(find(flag)));
@@ -85,5 +85,5 @@
 for i=1:num_segments,
 	el1=pos(i);
-	els2=elementconnectivity(el1,find(elementconnectivity(el1,:)));
+	els2=mesh.elementconnectivity(el1,find(mesh.elementconnectivity(el1,:)));
 	if length(els2)>1,
 		flag=intersect(md.elements(els2(1),:),md.elements(els2(2),:));
Index: /issm/trunk/src/m/model/extrude.m
===================================================================
--- /issm/trunk/src/m/model/extrude.m	(revision 9727)
+++ /issm/trunk/src/m/model/extrude.m	(revision 9728)
@@ -87,18 +87,18 @@
 
 %Keep a trace of lower and upper nodes
-lowernodes=NaN*ones(number_nodes3d,1);
-uppernodes=NaN*ones(number_nodes3d,1);
-lowernodes(md.mesh.numberofvertices+1:end)=1:(numlayers-1)*md.mesh.numberofvertices;
-uppernodes(1:(numlayers-1)*md.mesh.numberofvertices)=md.mesh.numberofvertices+1:number_nodes3d;
-md.lowernodes=lowernodes;
-md.uppernodes=uppernodes;
+mesh.lowernodes=NaN*ones(number_nodes3d,1);
+mesh.uppernodes=NaN*ones(number_nodes3d,1);
+mesh.lowernodes(md.mesh.numberofvertices+1:end)=1:(numlayers-1)*md.mesh.numberofvertices;
+mesh.uppernodes(1:(numlayers-1)*md.mesh.numberofvertices)=md.mesh.numberofvertices+1:number_nodes3d;
+md.mesh.lowernodes=mesh.lowernodes;
+md.mesh.uppernodes=mesh.uppernodes;
 
 %same for lower and upper elements
-lowerelements=NaN*ones(number_el3d,1);
-upperelements=NaN*ones(number_el3d,1);
-lowerelements(md.mesh.numberofelements+1:end)=1:(numlayers-2)*md.mesh.numberofelements;
-upperelements(1:(numlayers-2)*md.mesh.numberofelements)=md.mesh.numberofelements+1:(numlayers-1)*md.mesh.numberofelements;
-md.lowerelements=lowerelements;
-md.upperelements=upperelements;
+mesh.lowerelements=NaN*ones(number_el3d,1);
+mesh.upperelements=NaN*ones(number_el3d,1);
+mesh.lowerelements(md.mesh.numberofelements+1:end)=1:(numlayers-2)*md.mesh.numberofelements;
+mesh.upperelements(1:(numlayers-2)*md.mesh.numberofelements)=md.mesh.numberofelements+1:(numlayers-1)*md.mesh.numberofelements;
+md.mesh.lowerelements=mesh.lowerelements;
+md.mesh.upperelements=mesh.upperelements;
 
 %Save old mesh 
@@ -184,11 +184,11 @@
 
 %connectivity
-md.elementconnectivity=repmat(md.elementconnectivity,numlayers-1,1);
-md.elementconnectivity(find(md.elementconnectivity==0))=NaN;
+md.mesh.elementconnectivity=repmat(md.mesh.elementconnectivity,numlayers-1,1);
+md.mesh.elementconnectivity(find(md.mesh.elementconnectivity==0))=NaN;
 for i=2:numlayers-1,
-	md.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)...
-	=md.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)+md.mesh.numberofelements2d;
-end
-md.elementconnectivity(find(isnan(md.elementconnectivity)))=0;
+	md.mesh.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)...
+	=md.mesh.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)+md.mesh.numberofelements2d;
+end
+md.mesh.elementconnectivity(find(isnan(md.mesh.elementconnectivity)))=0;
 
 %materials
Index: /issm/trunk/src/m/model/mesh/findsegments.m
===================================================================
--- /issm/trunk/src/m/model/mesh/findsegments.m	(revision 9727)
+++ /issm/trunk/src/m/model/mesh/findsegments.m	(revision 9728)
@@ -3,5 +3,5 @@
 %
 %   Optional inputs:
-%      'elementconnectivity'
+%      'mesh.elementconnectivity'
 %
 %   Usage:
@@ -12,17 +12,17 @@
 
 %Get connectivity
-elementconnectivity=getfieldvalue(options,'elementconnectivity',md.elementconnectivity);
+mesh.elementconnectivity=getfieldvalue(options,'mesh.elementconnectivity',md.mesh.elementconnectivity);
 
 %Now, build the connectivity tables for this mesh if not correclty done
-if size(md.elementconnectivity,1)~=md.mesh.numberofelements,
-	if exist(options,'elementconnectivity'),
-		error(' ''elementconnectivity'' option does not have thge right size.');
+if size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements,
+	if exist(options,'mesh.elementconnectivity'),
+		error(' ''mesh.elementconnectivity'' option does not have thge right size.');
 	else
-		elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);
+		mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity);
 	end
 end
 
 %Recreate the segments
-elementonboundary=double(elementconnectivity(:,3)==0);
+elementonboundary=double(mesh.elementconnectivity(:,3)==0);
 pos=find(elementonboundary);
 num_segments=length(pos);
@@ -37,5 +37,5 @@
 
 	%get elements connected to el1
-	els2=elementconnectivity(el1,find(elementconnectivity(el1,:)));
+	els2=mesh.elementconnectivity(el1,find(mesh.elementconnectivity(el1,:)));
 
 	%el1 is connected to 2 other elements
Index: /issm/trunk/src/m/model/mesh/meshnodensity.m
===================================================================
--- /issm/trunk/src/m/model/mesh/meshnodensity.m	(revision 9727)
+++ /issm/trunk/src/m/model/mesh/meshnodensity.m	(revision 9728)
@@ -65,6 +65,6 @@
 
 %Now, build the connectivity tables for this mesh.
-md.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
-md.elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);
+md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
+md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity);
 
 %type of model
Index: /issm/trunk/src/m/model/mesh/meshrefine.m
===================================================================
--- /issm/trunk/src/m/model/mesh/meshrefine.m	(revision 9727)
+++ /issm/trunk/src/m/model/mesh/meshrefine.m	(revision 9728)
@@ -29,6 +29,6 @@
 
 %Now, build the connectivity tables for this mesh.
-md.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
-md.elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);
+md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
+md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity);
 
 %type of model
Index: /issm/trunk/src/m/model/mesh/meshyams.m
===================================================================
--- /issm/trunk/src/m/model/mesh/meshyams.m	(revision 9727)
+++ /issm/trunk/src/m/model/mesh/meshyams.m	(revision 9728)
@@ -95,6 +95,6 @@
 	%rifts, because the segments are used in YamsCall to freeze the rifts elements during refinement.
 	if md.rifts.numrifts, 
-		md.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
-		md.elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);
+		md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
+		md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity);
 		md.mesh.segments=findsegments(md);
 		md=meshyamsrecreateriftsegments(md);
@@ -106,6 +106,6 @@
 
 %Now, build the connectivity tables for this mesh.
-md.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
-md.elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);
+md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
+md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity);
 
 %recreate segments
Index: /issm/trunk/src/m/model/mesh/rifts/meshaddrifts.m
===================================================================
--- /issm/trunk/src/m/model/mesh/rifts/meshaddrifts.m	(revision 9727)
+++ /issm/trunk/src/m/model/mesh/rifts/meshaddrifts.m	(revision 9728)
@@ -87,6 +87,6 @@
 
 %Now, build the connectivity tables for this mesh.
-md.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
-md.elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);
+md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
+md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity);
 
 %type of model
Index: /issm/trunk/src/m/model/mesh/rifts/meshprocessrifts.m
===================================================================
--- /issm/trunk/src/m/model/mesh/rifts/meshprocessrifts.m	(revision 9727)
+++ /issm/trunk/src/m/model/mesh/rifts/meshprocessrifts.m	(revision 9728)
@@ -26,4 +26,6 @@
 %Call MEX file
 [md.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers,md.rifts.riftstruct]=TriMeshProcessRifts(md.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers);
+md.rifts
+md.rifts.riftstruct
 if ~isstruct(md.rifts.riftstruct),
 	error('TriMeshProcessRifts did not find any rift');
Index: /issm/trunk/src/m/model/mesh/setmesh.m
===================================================================
--- /issm/trunk/src/m/model/mesh/setmesh.m	(revision 9727)
+++ /issm/trunk/src/m/model/mesh/setmesh.m	(revision 9728)
@@ -79,6 +79,6 @@
 
 %Now, build the connectivity tables for this mesh.
-md.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
-md.elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);
+md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
+md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity);
 
 %type of model
Index: /issm/trunk/src/m/model/modelextract.m
===================================================================
--- /issm/trunk/src/m/model/modelextract.m	(revision 9727)
+++ /issm/trunk/src/m/model/modelextract.m	(revision 9728)
@@ -123,21 +123,21 @@
 	md2.elements=elements_2;
 
-	%uppernodes lowernodes
+	%mesh.uppernodes mesh.lowernodes
 	if md1.dim==3
-		md2.uppernodes=md1.uppernodes(pos_node);
-		pos=find(~isnan(md2.uppernodes));
-		md2.uppernodes(pos)=Pnode(md2.uppernodes(pos));
-
-		md2.lowernodes=md1.lowernodes(pos_node);
-		pos=find(~isnan(md2.lowernodes));
-		md2.lowernodes(pos)=Pnode(md2.lowernodes(pos));
-
-		md2.upperelements=md1.upperelements(pos_elem);
-		pos=find(~isnan(md2.upperelements));
-		md2.upperelements(pos)=Pelem(md2.upperelements(pos));
-
-		md2.lowerelements=md1.lowerelements(pos_elem);
-		pos=find(~isnan(md2.lowerelements));
-		md2.lowerelements(pos)=Pelem(md2.lowerelements(pos));
+		md2.mesh.uppernodes=md1.mesh.uppernodes(pos_node);
+		pos=find(~isnan(md2.mesh.uppernodes));
+		md2.mesh.uppernodes(pos)=Pnode(md2.mesh.uppernodes(pos));
+
+		md2.mesh.lowernodes=md1.mesh.lowernodes(pos_node);
+		pos=find(~isnan(md2.mesh.lowernodes));
+		md2.mesh.lowernodes(pos)=Pnode(md2.mesh.lowernodes(pos));
+
+		md2.mesh.upperelements=md1.mesh.upperelements(pos_elem);
+		pos=find(~isnan(md2.mesh.upperelements));
+		md2.mesh.upperelements(pos)=Pelem(md2.mesh.upperelements(pos));
+
+		md2.mesh.lowerelements=md1.mesh.lowerelements(pos_elem);
+		pos=find(~isnan(md2.mesh.lowerelements));
+		md2.mesh.lowerelements(pos)=Pelem(md2.mesh.lowerelements(pos));
 	end
 
@@ -203,6 +203,6 @@
 	%recreate segments
 	if md1.dim==2
-		md2.nodeconnectivity=NodeConnectivity(md2.elements,md2.numberofnodes);
-		md2.elementconnectivity=ElementConnectivity(md2.elements,md2.nodeconnectivity);
+		md2.mesh.nodeconnectivity=NodeConnectivity(md2.elements,md2.numberofnodes);
+		md2.mesh.elementconnectivity=ElementConnectivity(md2.elements,md2.mesh.nodeconnectivity);
 		md2.segments=contourenvelope(md2);
 		md2.mesh.vertexonboundary=zeros(numberofnodes2,1); md2.nodeonboundary(md2.segments(:,1:2))=1;
Index: /issm/trunk/src/m/model/modelsextract.m
===================================================================
--- /issm/trunk/src/m/model/modelsextract.m	(revision 9727)
+++ /issm/trunk/src/m/model/modelsextract.m	(revision 9728)
@@ -42,5 +42,5 @@
 		%ok, we are sure element i is part of a new pool.
 		pool=zeros(numberofelements,1);
-		pool=PropagateFlagsFromConnectivity(md.elementconnectivity,pool,i,flags);
+		pool=PropagateFlagsFromConnectivity(md.mesh.elementconnectivity,pool,i,flags);
 		flag_list{end+1,1}=pool;
 		
Index: /issm/trunk/src/m/model/partition/AreaAverageOntoPartition.m
===================================================================
--- /issm/trunk/src/m/model/partition/AreaAverageOntoPartition.m	(revision 9727)
+++ /issm/trunk/src/m/model/partition/AreaAverageOntoPartition.m	(revision 9728)
@@ -22,5 +22,5 @@
 	md.mesh.numberofelements=md.mesh.numberofelements2d;
 	md.vertex_weight=[];
-	md.nodeconnectivity=[];
+	md.mesh.nodeconnectivity=[];
 
 	%run connectivity routine
Index: /issm/trunk/src/m/model/partition/adjacency.m
===================================================================
--- /issm/trunk/src/m/model/partition/adjacency.m	(revision 9727)
+++ /issm/trunk/src/m/model/partition/adjacency.m	(revision 9728)
@@ -19,7 +19,7 @@
 
 %get node connectivity
-md.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
+md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
 
-connectivity=md.nodeconnectivity(:,1:end-1);
+connectivity=md.mesh.nodeconnectivity(:,1:end-1);
 pos=find(connectivity);
 connectivity(pos)=areas(connectivity(pos))/3;
Index: /issm/trunk/src/m/model/partition/partitioner.m
===================================================================
--- /issm/trunk/src/m/model/partition/partitioner.m	(revision 9727)
+++ /issm/trunk/src/m/model/partition/partitioner.m	(revision 9728)
@@ -40,5 +40,5 @@
 	md.mesh.numberofelements=md.mesh.numberofelements2d;
 	md.qmu.vertex_weight=[];
-	md.nodeconnectivity=[];
+	md.mesh.nodeconnectivity=[];
 end
 
Index: /issm/trunk/src/m/model/setmask2.m
===================================================================
--- /issm/trunk/src/m/model/setmask2.m	(revision 9727)
+++ /issm/trunk/src/m/model/setmask2.m	(revision 9728)
@@ -28,9 +28,9 @@
 
 %Now, build the connectivity tables for this mesh.
-if size(md.nodeconnectivity,1)~=md.mesh.numberofvertices,
-	md.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
+if size(md.mesh.nodeconnectivity,1)~=md.mesh.numberofvertices,
+	md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
 end
-if size(md.elementconnectivity,1)~=md.mesh.numberofelements,
-	md.elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);
+if size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements,
+	md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity);
 end
 
@@ -55,5 +55,5 @@
 %figure out which elements on land are actually in the middle of the ocean!
 pos1=find(elementonland); 
-connectedtoland=md.elementconnectivity(pos1,:);
+connectedtoland=md.mesh.elementconnectivity(pos1,:);
 pos=find(connectedtoland); connectedtoland(pos)=1-elementonland(connectedtoland(pos));
 connectedtolandsum=sum(connectedtoland,2);
@@ -63,5 +63,5 @@
 %figure out which elements on water  are actually in the middle of the land!
 pos1=find(~elementonland); 
-connectedtowater=md.elementconnectivity(pos1,:);
+connectedtowater=md.mesh.elementconnectivity(pos1,:);
 pos=find(connectedtowater); connectedtowater(pos)=elementonland(connectedtowater(pos));
 connectedtowatersum=sum(connectedtowater,2);
@@ -106,26 +106,26 @@
 
 %Get current connectivity
-elementconnectivity=md.elementconnectivity;
+mesh.elementconnectivity=md.mesh.elementconnectivity;
 
 %put 0 for elements on water
-pos=find(elementconnectivity);
-elementconnectivity(pos)=elementconnectivity(pos).*(~elementonwater(elementconnectivity(pos)));
+pos=find(mesh.elementconnectivity);
+mesh.elementconnectivity(pos)=mesh.elementconnectivity(pos).*(~elementonwater(mesh.elementconnectivity(pos)));
 
 %put line of ones for elements on water
 pos=find(elementonwater);
-elementconnectivity(pos,:)=1;% line of ones for elements on water so they won't be considered
+mesh.elementconnectivity(pos,:)=1;% line of ones for elements on water so they won't be considered
 
 %resort lines (zeros must be at the last column for findsegments)
-elementconnectivity=sort(elementconnectivity,2,'descend');
+mesh.elementconnectivity=sort(mesh.elementconnectivity,2,'descend');
 
 %call findsegments to build segment using THIS conectivity
-md.mesh.segments=findsegments(md,'elementconnectivity',elementconnectivity);
+md.mesh.segments=findsegments(md,'mesh.elementconnectivity',mesh.elementconnectivity);
 
 %some final checks: 
 %check that no node thinks it's on an ice shelf or ice sheet, and lies actually in the middle of the water.
 nodesgrounded=find(~vertexonwater);
-lengthconnectivity=size(md.nodeconnectivity,2);
-groundedcounters=md.nodeconnectivity(nodesgrounded,lengthconnectivity);
-groundedconnectivity=md.nodeconnectivity(nodesgrounded,1:lengthconnectivity-1);
+lengthconnectivity=size(md.mesh.nodeconnectivity,2);
+groundedcounters=md.mesh.nodeconnectivity(nodesgrounded,lengthconnectivity);
+groundedconnectivity=md.mesh.nodeconnectivity(nodesgrounded,1:lengthconnectivity-1);
 pos=find(groundedconnectivity);
 groundedconnectivity(pos)=elementonwater(groundedconnectivity(pos));
Index: /issm/trunk/src/m/utils/Mesh/ProfileProjectOntoMesh.m
===================================================================
--- /issm/trunk/src/m/utils/Mesh/ProfileProjectOntoMesh.m	(revision 9727)
+++ /issm/trunk/src/m/utils/Mesh/ProfileProjectOntoMesh.m	(revision 9728)
@@ -48,5 +48,5 @@
 
 %now, for each node, figure out which element it belongs to.
-node_in_element=NodeInElement(newx,newy,md.elements,md.x,md.y,md.nodeconnectivity);
+node_in_element=NodeInElement(newx,newy,md.elements,md.x,md.y,md.mesh.nodeconnectivity);
 
 % eliminate nodes that don't fall in any element
Index: /issm/trunk/src/m/utils/Mesh/squaremesh.m
===================================================================
--- /issm/trunk/src/m/utils/Mesh/squaremesh.m	(revision 9727)
+++ /issm/trunk/src/m/utils/Mesh/squaremesh.m	(revision 9728)
@@ -72,6 +72,6 @@
 
 %Now, build the connectivity tables for this mesh.
-md.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
-md.elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);
+md.mesh.nodeconnectivity=NodeConnectivity(md.elements,md.mesh.numberofvertices);
+md.mesh.elementconnectivity=ElementConnectivity(md.elements,md.mesh.nodeconnectivity);
 
 %plug other field
Index: /issm/trunk/template
===================================================================
--- /issm/trunk/template	(revision 9727)
+++ /issm/trunk/template	(revision 9728)
@@ -8,9 +8,4 @@
 	  edges
 
-	  uppernodes
-	  upperelements
-	  lowerelements
-	  lowernodes
-
 	  elements2d
 	  x2d
@@ -21,7 +16,4 @@
 	  nodeonbed
 	  nodeonsurface
-
-	  nodeconnectivity
-	  elementconnectivity
 }}}
 
