Index: /issm/trunk/src/c/Bamgx/objects/Triangles.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/Triangles.cpp	(revision 3310)
+++ /issm/trunk/src/c/Bamgx/objects/Triangles.cpp	(revision 3311)
@@ -706,6 +706,5 @@
 		if(verbose>5) printf("      writing Segments\n");
 		bamgmesh->NumSegments=NumSegments;
-		bamgmesh->Segments=(double*)xmalloc(3*NumSegments*sizeof(double));
-		bamgmesh->SegmentsMarkers=(double*)xmalloc(1*NumSegments*sizeof(double));
+		bamgmesh->Segments=(double*)xmalloc(4*NumSegments*sizeof(double));
 		num=0;
 		for (i=0;i<nbe;i++){
@@ -719,8 +718,8 @@
 						if (Number(triangles[(int)j/3][k])==i1){
 							if (Number(triangles[(int)j/3][(int)((k+1)%3)])==i2){
-								bamgmesh->Segments[num*3+0]=Number(edges[i][0])+1; //back to M indexing
-								bamgmesh->Segments[num*3+1]=Number(edges[i][1])+1; //back to M indexing
-								bamgmesh->Segments[num*3+2]=(int)j/3+1;            //back to M indexing
-								bamgmesh->SegmentsMarkers[num]=edges[i].ref;
+								bamgmesh->Segments[num*4+0]=Number(edges[i][0])+1; //back to M indexing
+								bamgmesh->Segments[num*4+1]=Number(edges[i][1])+1; //back to M indexing
+								bamgmesh->Segments[num*4+2]=(int)j/3+1;            //back to M indexing
+								bamgmesh->Segments[num*4+3]=edges[i].ref;
 								num+=1;
 								stop=true;
@@ -728,8 +727,8 @@
 							}
 							if (Number(triangles[(int)j/3][(int)((k+2)%3)])==i2){
-								bamgmesh->Segments[num*3+0]=Number(edges[i][1])+1; //back to M indexing
-								bamgmesh->Segments[num*3+1]=Number(edges[i][0])+1; //back to M indexing
-								bamgmesh->Segments[num*3+2]=(int)j/3+1;            //back to M indexing
-								bamgmesh->SegmentsMarkers[num]=edges[i].ref;
+								bamgmesh->Segments[num*4+0]=Number(edges[i][1])+1; //back to M indexing
+								bamgmesh->Segments[num*4+1]=Number(edges[i][0])+1; //back to M indexing
+								bamgmesh->Segments[num*4+2]=(int)j/3+1;            //back to M indexing
+								bamgmesh->Segments[num*4+3]=edges[i].ref;
 								num+=1;
 								stop=true;
Index: /issm/trunk/src/c/objects/BamgGeom.cpp
===================================================================
--- /issm/trunk/src/c/objects/BamgGeom.cpp	(revision 3310)
+++ /issm/trunk/src/c/objects/BamgGeom.cpp	(revision 3311)
@@ -36,27 +36,18 @@
 	mxArray*    pfield=NULL;
 	mxArray*    pfield2=NULL;
-	int         numfields=14;
+	int         numfields=7;
 	const char* fnames[numfields];
 	mwSize      ndim=2;
 	mwSize      dimensions[2]={1,1};
 
-	fnames[0] = "NumVertices";
-	fnames[1] = "Vertices";
-	fnames[2] = "NumEdges";
-	fnames[3] = "Edges";
-	fnames[4] = "NumTangentAtEdges";
-	fnames[5] = "TangentAtEdges";
-	fnames[6] = "NumRequiredVertices";
-	fnames[7] = "RequiredVertices";
-	fnames[8] = "NumRequiredEdges";
-	fnames[9] = "RequiredEdges";
-	fnames[10]= "NumCrackedEdges";
-	fnames[11]= "CrackedEdges";
-	fnames[12]= "NumSubDomains";
-	fnames[13]= "SubDomains";
+	fnames[0] = "Vertices";
+	fnames[1] = "Edges";
+	fnames[2] = "TangentAtEdges";
+	fnames[3] = "RequiredVertices";
+	fnames[4] = "RequiredEdges";
+	fnames[5] = "CrackedEdges";
+	fnames[6] = "SubDomains";
 
 	bamggeom_mat=mxCreateStructArray(ndim,dimensions,numfields,fnames);
-
-	mxSetField(bamggeom_mat,0,"NumVertices",mxCreateDoubleScalar(bamggeom->NumVertices)); 
 
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
@@ -67,6 +58,4 @@
 	mxSetField(bamggeom_mat,0,"Vertices",pfield2);
 
-	mxSetField(bamggeom_mat,0,"NumEdges",mxCreateDoubleScalar(bamggeom->NumEdges)); 
-
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
 	mxSetM(pfield,3);
@@ -75,6 +64,4 @@
 	mexCallMATLAB(1,&pfield2,1,&pfield,"transpose");//transpose
 	mxSetField(bamggeom_mat,0,"Edges",pfield2);
-
-	mxSetField(bamggeom_mat,0,"NumTangentAtEdges",mxCreateDoubleScalar(bamggeom->NumTangentAtEdges)); 
 
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
@@ -85,6 +72,4 @@
 	mxSetField(bamggeom_mat,0,"TangentAtEdges",pfield2);
 
-	mxSetField(bamggeom_mat,0,"NumRequiredVertices",mxCreateDoubleScalar(bamggeom->NumRequiredVertices)); 
-
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
 	mxSetM(pfield,1);
@@ -93,6 +78,4 @@
 	mexCallMATLAB(1,&pfield2,1,&pfield,"transpose");//transpose
 	mxSetField(bamggeom_mat,0,"RequiredVertices",pfield2);
-
-	mxSetField(bamggeom_mat,0,"NumRequiredEdges",mxCreateDoubleScalar(bamggeom->NumRequiredEdges)); 
 
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
@@ -103,6 +86,4 @@
 	mxSetField(bamggeom_mat,0,"RequiredEdges",pfield2);
 
-	mxSetField(bamggeom_mat,0,"NumCrackedEdges",mxCreateDoubleScalar(bamggeom->NumCrackedEdges)); 
-
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
 	mxSetM(pfield,2);
@@ -111,6 +92,4 @@
 	mexCallMATLAB(1,&pfield2,1,&pfield,"transpose");//transpose
 	mxSetField(bamggeom_mat,0,"CrackedEdges",pfield2);
-
-	mxSetField(bamggeom_mat,0,"NumSubDomains",mxCreateDoubleScalar(bamggeom->NumSubDomains)); 
 
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
Index: /issm/trunk/src/c/objects/BamgMesh.cpp
===================================================================
--- /issm/trunk/src/c/objects/BamgMesh.cpp	(revision 3310)
+++ /issm/trunk/src/c/objects/BamgMesh.cpp	(revision 3311)
@@ -49,40 +49,24 @@
 	mxArray*    pfield=NULL;
 	mxArray*    pfield2=NULL;
-	int         numfields=31;
+	int         numfields=15;
 	const char* fnames[numfields];
 	mwSize      ndim=2;
 	mwSize      dimensions[2]={1,1};
 
-	fnames[0]  = "NumTriangles";
-	fnames[1]  = "Triangles";
-	fnames[2]  = "NumVertices";
-	fnames[3]  = "Vertices";
-	fnames[4]  = "NumEdges";
-	fnames[5]  = "Edges";
-	fnames[6]  = "NumSegments";
-	fnames[7]  = "Segments";
-	fnames[8]  = "NumAllEdges";
-	fnames[9]  = "AllEdges";
-	fnames[10] = "SegmentsMarkers";
-	fnames[11] = "NumCrackedEdges";
-	fnames[12] = "CrackedEdges";
-	fnames[13] = "NumQuadrilaterals";
-	fnames[14] = "Quadrilaterals";
-	fnames[15] = "NumVerticesOnGeometricVertex";
-	fnames[16] = "VerticesOnGeometricVertex";
-	fnames[17] = "NumVerticesOnGeometricEdge";
-	fnames[18] = "VerticesOnGeometricEdge";
-	fnames[19] = "NumEdgesOnGeometricEdge";
-	fnames[20] = "EdgesOnGeometricEdge";
-	fnames[21] = "NumSubDomains";
-	fnames[22] = "SubDomains";
-	fnames[23] = "NumSubDomainsFromGeom";
-	fnames[24] = "SubDomainsFromGeom";
-	fnames[25] = "NumElementConnectivity";
-	fnames[26] = "ElementConnectivity";
-	fnames[27] = "NumNodalConnectivity";
-	fnames[28] = "NodalConnectivity";
-	fnames[29] = "NumNodalElementConnectivity";
-	fnames[30] = "NodalElementConnectivity";
+	fnames[0]  = "Triangles";
+	fnames[1]  = "Vertices";
+	fnames[2]  = "Edges";
+	fnames[3]  = "Segments";
+	fnames[4]  = "AllEdges";
+	fnames[5] = "CrackedEdges";
+	fnames[6] = "Quadrilaterals";
+	fnames[7] = "VerticesOnGeometricVertex";
+	fnames[8] = "VerticesOnGeometricEdge";
+	fnames[9] = "EdgesOnGeometricEdge";
+	fnames[10]= "SubDomains";
+	fnames[11]= "SubDomainsFromGeom";
+	fnames[12]= "ElementConnectivity";
+	fnames[13]= "NodalConnectivity";
+	fnames[14]= "NodalElementConnectivity";
 
 	bamgmesh_mat=mxCreateStructArray(ndim,dimensions,numfields,fnames);
@@ -97,6 +81,4 @@
 	mxSetField(bamgmesh_mat,0,"Triangles",pfield2);
 
-	mxSetField(bamgmesh_mat,0,"NumVertices",mxCreateDoubleScalar(bamgmesh->NumVertices)); 
-
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
 	mxSetM(pfield,3);
@@ -105,6 +87,4 @@
 	mexCallMATLAB(1,&pfield2,1,&pfield,"transpose");//transpose
 	mxSetField(bamgmesh_mat,0,"Vertices",pfield2);
-
-	mxSetField(bamgmesh_mat,0,"NumEdges",mxCreateDoubleScalar(bamgmesh->NumEdges)); 
 
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
@@ -115,14 +95,10 @@
 	mxSetField(bamgmesh_mat,0,"Edges",pfield2);
 
-	mxSetField(bamgmesh_mat,0,"NumSegments",mxCreateDoubleScalar(bamgmesh->NumSegments)); 
-
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
-	mxSetM(pfield,3);
+	mxSetM(pfield,4);
 	mxSetN(pfield,bamgmesh->NumSegments);
 	mxSetPr(pfield,bamgmesh->Segments);
 	mexCallMATLAB(1,&pfield2,1,&pfield,"transpose");//transpose
 	mxSetField(bamgmesh_mat,0,"Segments",pfield2);
-
-	mxSetField(bamgmesh_mat,0,"NumAllEdges",mxCreateDoubleScalar(bamgmesh->NumAllEdges)); 
 
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
@@ -134,13 +110,4 @@
 
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
-	mxSetM(pfield,1);
-	mxSetN(pfield,bamgmesh->NumSegments);
-	mxSetPr(pfield,bamgmesh->SegmentsMarkers);
-	mexCallMATLAB(1,&pfield2,1,&pfield,"transpose");//transpose
-	mxSetField(bamgmesh_mat,0,"SegmentsMarkers",pfield2);
-
-	mxSetField(bamgmesh_mat,0,"NumCrackedEdges",mxCreateDoubleScalar(bamgmesh->NumCrackedEdges)); 
-
-	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
 	mxSetM(pfield,2);
 	mxSetN(pfield,bamgmesh->NumCrackedEdges);
@@ -148,6 +115,4 @@
 	mexCallMATLAB(1,&pfield2,1,&pfield,"transpose");//transpose
 	mxSetField(bamgmesh_mat,0,"CrackedEdges",pfield2);
-
-	mxSetField(bamgmesh_mat,0,"NumQuadrilaterals",mxCreateDoubleScalar(bamgmesh->NumQuadrilaterals)); 
 
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
@@ -158,6 +123,4 @@
 	mxSetField(bamgmesh_mat,0,"Quadrilaterals",pfield2);
 
-	mxSetField(bamgmesh_mat,0,"NumVerticesOnGeometricVertex",mxCreateDoubleScalar(bamgmesh->NumVerticesOnGeometricVertex)); 
-
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
 	mxSetM(pfield,2);
@@ -166,6 +129,4 @@
 	mexCallMATLAB(1,&pfield2,1,&pfield,"transpose");//transpose
 	mxSetField(bamgmesh_mat,0,"VerticesOnGeometricVertex",pfield2);
-
-	mxSetField(bamgmesh_mat,0,"NumVerticesOnGeometricEdge",mxCreateDoubleScalar(bamgmesh->NumVerticesOnGeometricEdge)); 
 
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
@@ -176,6 +137,4 @@
 	mxSetField(bamgmesh_mat,0,"VerticesOnGeometricEdge",pfield2);
 
-	mxSetField(bamgmesh_mat,0,"NumEdgesOnGeometricEdge",mxCreateDoubleScalar(bamgmesh->NumEdgesOnGeometricEdge)); 
-
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
 	mxSetM(pfield,2);
@@ -184,6 +143,4 @@
 	mexCallMATLAB(1,&pfield2,1,&pfield,"transpose");//transpose
 	mxSetField(bamgmesh_mat,0,"EdgesOnGeometricEdge",pfield2);
-
-	mxSetField(bamgmesh_mat,0,"NumSubDomains",mxCreateDoubleScalar(bamgmesh->NumSubDomains)); 
 
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
@@ -194,6 +151,4 @@
 	mxSetField(bamgmesh_mat,0,"SubDomains",pfield2);
 
-	mxSetField(bamgmesh_mat,0,"NumSubDomainsFromGeom",mxCreateDoubleScalar(bamgmesh->NumSubDomainsFromGeom)); 
-
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
 	mxSetM(pfield,4);
@@ -202,6 +157,4 @@
 	mexCallMATLAB(1,&pfield2,1,&pfield,"transpose");//transpose
 	mxSetField(bamgmesh_mat,0,"SubDomainsFromGeom",pfield2);
-
-	mxSetField(bamgmesh_mat,0,"NumElementConnectivity",mxCreateDoubleScalar(bamgmesh->NumElementConnectivity)); 
 
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
@@ -212,6 +165,4 @@
 	mxSetField(bamgmesh_mat,0,"ElementConnectivity",pfield2);
 
-	mxSetField(bamgmesh_mat,0,"NumNodalConnectivity",mxCreateDoubleScalar(bamgmesh->NumNodalConnectivity)); 
-
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
 	mxSetM(pfield,2);
@@ -220,6 +171,4 @@
 	mexCallMATLAB(1,&pfield2,1,&pfield,"transpose");//transpose
 	mxSetField(bamgmesh_mat,0,"NodalConnectivity",pfield2);
-
-	mxSetField(bamgmesh_mat,0,"NumNodalElementConnectivity",mxCreateDoubleScalar(bamgmesh->NumNodalElementConnectivity)); 
 
 	pfield=mxCreateDoubleMatrix(0,0,mxREAL);
Index: /issm/trunk/src/m/classes/@bamggeom/bamggeom.m
===================================================================
--- /issm/trunk/src/m/classes/@bamggeom/bamggeom.m	(revision 3310)
+++ /issm/trunk/src/m/classes/@bamggeom/bamggeom.m	(revision 3311)
@@ -8,31 +8,15 @@
 case 0
 	% if no input arguments, create a default object
-	bg.NumVertices=0;
 	bg.Vertices=[];
-
-	bg.NumEdges=0;
-	bg.Edges=zeros(0,3);
-
-	bg.NumTangentAtEdges=0;
+	bg.Edges=[];
 	bg.TangentAtEdges=[];
-
-	bg.NumCorners=0;
 	bg.Corners=[];
-
-	bg.NumRequiredVertices=0;
 	bg.RequiredVertices=[];
-
-	bg.NumRequiredEdges=0;
 	bg.RequiredEdges=[];
-
-	bg.NumCrackedEdges=0;
-	bg.CrackedEdges=zeros(0,3);
-
+	bg.CrackedEdges=[];
 	bg.hVertices=[];
-	bg.MetricVertices=zeros(0,3);
+	bg.MetricVertices=[];
 	bg.h1h2VpVertices=[];
-
-	bg.NumSubDomains=0;
-	bg.SubDomains=zeros(0,4);
+	bg.SubDomains=[];
 
 	bg=class(bg,'bamggeom');
Index: /issm/trunk/src/m/classes/@bamgmesh/bamgmesh.m
===================================================================
--- /issm/trunk/src/m/classes/@bamgmesh/bamgmesh.m	(revision 3310)
+++ /issm/trunk/src/m/classes/@bamgmesh/bamgmesh.m	(revision 3311)
@@ -8,50 +8,19 @@
 case 0
 	% if no input arguments, create a default object
-	bm.NumVertices=0;
 	bm.Vertices=[];
-
-	bm.NumEdges=0;
-	bm.Edges=zeros(0,3);
-
-	bm.NumTriangles=0;
+	bm.Edges=[];
 	bm.Triangles=[];
-
-	bm.NumQuadrilaterals=0;
 	bm.Quadrilaterals=[];
-
-	bm.NumAllEdges=0;
-	bm.AllEdges=zeros(0,2);
-
-	bm.NumSegments=0;
-	bm.Segments=zeros(0,3);
-	bm.SegmentsMarkers=[];
-
-	bm.NumVerticesOnGeometricVertex=0;
-	bm.VerticesOnGeometricVertex=zeros(0,2);
-
-	bm.NumVerticesOnGeometricEdge=0;
-	bm.VerticesOnGeometricEdge=zeros(0,2);
-
-	bm.NumEdgesOnGeometricEdge=0;
-	bm.EdgesOnGeometricEdge=zeros(0,2);
-
-	bm.NumCrackedEdges=0;
-	bm.CrackedEdges=zeros(0,2);
-
-	bm.NumSubDomains=0;
-	bm.SubDomains=zeros(0,4);
-
-	bm.NumSubDomainsFromGeom=0;
-	bm.SubDomainsFromGeom=zeros(0,4);
-
-	bm.NumElementConnectivity=0;
-	bm.ElementConnectivity=zeros(0,3);
-
-	bm.NumNodalConnectivity=0;
-	bm.NodalConnectivity=zeros(0,2);
-
-	bm.NumNodalElementConnectivity=0;
+	bm.AllEdges=[];
+	bm.Segments=[];
+	bm.VerticesOnGeometricVertex=[];
+	bm.VerticesOnGeometricEdge=[];
+	bm.EdgesOnGeometricEdge=[];
+	bm.CrackedEdges=[];
+	bm.SubDomains=[];
+	bm.SubDomainsFromGeom=[];
+	bm.ElementConnectivity=[];
+	bm.NodalConnectivity=[];
 	bm.NodalElementConnectivity=[];
-
 	bm.hVertices=[];
 
Index: /issm/trunk/src/m/classes/public/bamg.m
===================================================================
--- /issm/trunk/src/m/classes/public/bamg.m	(revision 3310)
+++ /issm/trunk/src/m/classes/public/bamg.m	(revision 3311)
@@ -216,9 +216,4 @@
 
 end
-
-%update other fields of bamg_geometry
-bamg_geometry.NumVertices=size(bamg_geometry.Vertices,1);
-bamg_geometry.NumEdges=size(bamg_geometry.Edges,1);
-bamg_geometry.NumSubDomains=size(bamg_geometry.SubDomains,1);
 %}}}
 
@@ -229,7 +224,5 @@
 		bamg_mesh=bamgmesh(md.bamg.mesh);
 	else
-		bamg_mesh.NumVertices=md.numberofgrids;
 		bamg_mesh.Vertices=[md.x md.y ones(md.numberofgrids,1)];
-		bamg_mesh.NumTriangles=md.numberofelements;
 		bamg_mesh.Triangles=[md.elements ones(md.numberofelements,1)];
 	end
@@ -286,6 +279,6 @@
 md.y=bamgmesh_out.Vertices(:,2);
 md.elements=bamgmesh_out.Triangles(:,1:3);
-md.segments=bamgmesh_out.Segments;
-md.segmentmarkers=bamgmesh_out.SegmentsMarkers;
+md.segments=bamgmesh_out.Segments(:,1:3);
+md.segmentmarkers=bamgmesh_out.Segments(:,4);
 
 %Fill in rest of fields:
Index: /issm/trunk/src/mex/Bamg/Bamg.cpp
===================================================================
--- /issm/trunk/src/mex/Bamg/Bamg.cpp	(revision 3310)
+++ /issm/trunk/src/mex/Bamg/Bamg.cpp	(revision 3311)
@@ -26,41 +26,25 @@
 	/*create bamg geometry input*/
 	BamgGeomInit(&bamggeom_in);
-	FetchData(&bamggeom_in.NumVertices,mxGetField(BAMGGEOMETRY,0,"NumVertices"));
-	FetchData(&bamggeom_in.Vertices,NULL,NULL,mxGetField(BAMGGEOMETRY,0,"Vertices"));
-	FetchData(&bamggeom_in.NumEdges,mxGetField(BAMGGEOMETRY,0,"NumEdges"));
-	FetchData(&bamggeom_in.Edges,NULL,NULL,mxGetField(BAMGGEOMETRY,0,"Edges"));
-	FetchData(&bamggeom_in.NumCorners,mxGetField(BAMGGEOMETRY,0,"NumCorners"));
-	FetchData(&bamggeom_in.Corners,NULL,NULL,mxGetField(BAMGGEOMETRY,0,"Corners"));
-	FetchData(&bamggeom_in.NumRequiredVertices,mxGetField(BAMGGEOMETRY,0,"NumRequiredVertices"));
-	FetchData(&bamggeom_in.RequiredVertices,NULL,NULL,mxGetField(BAMGGEOMETRY,0,"RequiredVertices"));
-	FetchData(&bamggeom_in.NumRequiredEdges,mxGetField(BAMGGEOMETRY,0,"NumRequiredEdges"));
-	FetchData(&bamggeom_in.RequiredEdges,NULL,NULL,mxGetField(BAMGGEOMETRY,0,"RequiredEdges"));
+	FetchData(&bamggeom_in.Vertices,&bamggeom_in.NumVertices,NULL,mxGetField(BAMGGEOMETRY,0,"Vertices"));
+	FetchData(&bamggeom_in.Edges,&bamggeom_in.NumEdges,NULL,mxGetField(BAMGGEOMETRY,0,"Edges"));
+	FetchData(&bamggeom_in.Corners,&bamggeom_in.NumCorners,NULL,mxGetField(BAMGGEOMETRY,0,"Corners"));
+	FetchData(&bamggeom_in.RequiredVertices,&bamggeom_in.NumRequiredVertices,NULL,mxGetField(BAMGGEOMETRY,0,"RequiredVertices"));
+	FetchData(&bamggeom_in.RequiredEdges,&bamggeom_in.NumRequiredEdges,NULL,mxGetField(BAMGGEOMETRY,0,"RequiredEdges"));
 	FetchData(&bamggeom_in.hVertices,&lines,&cols,mxGetField(BAMGGEOMETRY,0,"hVertices"));
-	FetchData(&bamggeom_in.NumCrackedEdges,mxGetField(BAMGGEOMETRY,0,"NumCrackedEdges"));
-	FetchData(&bamggeom_in.CrackedEdges,NULL,NULL,mxGetField(BAMGGEOMETRY,0,"CrackedEdges"));
-	FetchData(&bamggeom_in.NumSubDomains,mxGetField(BAMGGEOMETRY,0,"NumSubDomains"));
-	FetchData(&bamggeom_in.SubDomains,NULL,NULL,mxGetField(BAMGGEOMETRY,0,"SubDomains"));
+	FetchData(&bamggeom_in.CrackedEdges,&bamggeom_in.NumCrackedEdges,NULL,mxGetField(BAMGGEOMETRY,0,"CrackedEdges"));
+	FetchData(&bamggeom_in.SubDomains,&bamggeom_in.NumSubDomains,NULL,mxGetField(BAMGGEOMETRY,0,"SubDomains"));
 	if (bamggeom_in.hVertices && (cols!=1 || lines!=bamggeom_in.NumVertices)){throw ErrorException(__FUNCT__,exprintf("the size of 'hVertices' should be [%i %i]",bamggeom_in.NumVertices,1));}
 
 	/*create bamg mesh input*/
 	BamgMeshInit(&bamgmesh_in);
-	FetchData(&bamgmesh_in.NumVertices,mxGetField(BAMGMESH,0,"NumVertices"));
-	FetchData(&bamgmesh_in.Vertices,NULL,NULL,mxGetField(BAMGMESH,0,"Vertices"));
-	FetchData(&bamgmesh_in.NumTriangles,mxGetField(BAMGMESH,0,"NumTriangles"));
-	FetchData(&bamgmesh_in.Triangles,NULL,NULL,mxGetField(BAMGMESH,0,"Triangles"));
+	FetchData(&bamgmesh_in.Vertices,&bamgmesh_in.NumVertices,NULL,mxGetField(BAMGMESH,0,"Vertices"));
+	FetchData(&bamgmesh_in.Triangles,&bamgmesh_in.NumTriangles,NULL,mxGetField(BAMGMESH,0,"Triangles"));
 	FetchData(&bamgmesh_in.hVertices,&lines,&cols,mxGetField(BAMGMESH,0,"hVertices"));
-	FetchData(&bamgmesh_in.NumSegments,mxGetField(BAMGMESH,0,"NumSegments"));
-	FetchData(&bamgmesh_in.Segments,NULL,NULL,mxGetField(BAMGMESH,0,"Segments"));
-	FetchData(&bamgmesh_in.SegmentsMarkers,NULL,NULL,mxGetField(BAMGMESH,0,"SegmentsMarkers"));
-	FetchData(&bamgmesh_in.NumCrackedEdges,mxGetField(BAMGMESH,0,"NumCrackedEdges"));
-	FetchData(&bamgmesh_in.CrackedEdges,NULL,NULL,mxGetField(BAMGMESH,0,"CrackedEdges"));
-	FetchData(&bamgmesh_in.NumEdges,mxGetField(BAMGMESH,0,"NumEdges"));
-	FetchData(&bamgmesh_in.Edges,NULL,NULL,mxGetField(BAMGMESH,0,"Edges"));
-	FetchData(&bamgmesh_in.NumEdgesOnGeometricEdge,mxGetField(BAMGMESH,0,"NumEdgesOnGeometricEdge"));
-	FetchData(&bamgmesh_in.EdgesOnGeometricEdge,NULL,NULL,mxGetField(BAMGMESH,0,"EdgesOnGeometricEdge"));
-	FetchData(&bamgmesh_in.NumVerticesOnGeometricEdge,mxGetField(BAMGMESH,0,"NumVerticesOnGeometricEdge"));
-	FetchData(&bamgmesh_in.VerticesOnGeometricEdge,NULL,NULL,mxGetField(BAMGMESH,0,"VerticesOnGeometricEdge"));
-	FetchData(&bamgmesh_in.NumVerticesOnGeometricVertex,mxGetField(BAMGMESH,0,"NumVerticesOnGeometricVertex"));
-	FetchData(&bamgmesh_in.VerticesOnGeometricVertex,NULL,NULL,mxGetField(BAMGMESH,0,"VerticesOnGeometricVertex"));
+	FetchData(&bamgmesh_in.Segments,&bamgmesh_in.NumSegments,NULL,mxGetField(BAMGMESH,0,"Segments"));
+	FetchData(&bamgmesh_in.CrackedEdges,&bamgmesh_in.NumCrackedEdges,NULL,mxGetField(BAMGMESH,0,"CrackedEdges"));
+	FetchData(&bamgmesh_in.Edges,&bamgmesh_in.NumEdges,NULL,mxGetField(BAMGMESH,0,"Edges"));
+	FetchData(&bamgmesh_in.EdgesOnGeometricEdge,&bamgmesh_in.NumEdgesOnGeometricEdge,NULL,mxGetField(BAMGMESH,0,"EdgesOnGeometricEdge"));
+	FetchData(&bamgmesh_in.VerticesOnGeometricEdge,&bamgmesh_in.NumVerticesOnGeometricEdge,NULL,mxGetField(BAMGMESH,0,"VerticesOnGeometricEdge"));
+	FetchData(&bamgmesh_in.VerticesOnGeometricVertex,&bamgmesh_in.NumVerticesOnGeometricVertex,NULL,mxGetField(BAMGMESH,0,"VerticesOnGeometricVertex"));
 	if (bamgmesh_in.hVertices && (cols!=1 || lines!=bamgmesh_in.NumVertices)){throw ErrorException(__FUNCT__,exprintf("the size of 'hVertices' should be [%i %i]",bamgmesh_in.NumVertices,1));}
 
