Index: /issm/trunk-jpl/src/c/Makefile.am
===================================================================
--- /issm/trunk-jpl/src/c/Makefile.am	(revision 25464)
+++ /issm/trunk-jpl/src/c/Makefile.am	(revision 25465)
@@ -312,4 +312,5 @@
 	./cores/levelsetfunctionslope_core.cpp \
 	./cores/movingfront_core.cpp \
+	./cores/groundingline_core.cpp \
 	./modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp \
 	./classes/Loads/Riftfront.cpp \
Index: /issm/trunk-jpl/src/c/cores/cores.h
===================================================================
--- /issm/trunk-jpl/src/c/cores/cores.h	(revision 25464)
+++ /issm/trunk-jpl/src/c/cores/cores.h	(revision 25465)
@@ -26,4 +26,5 @@
 void levelsetfunctionslope_core(FemModel* femmodel);
 void movingfront_core(FemModel* femmodel);
+void groundingline_core(FemModel* femmodel);
 void bedslope_core(FemModel* femmodel);
 void meshdeformation_core(FemModel* femmodel);
Index: /issm/trunk-jpl/src/c/cores/esa_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/esa_core.cpp	(revision 25464)
+++ /issm/trunk-jpl/src/c/cores/esa_core.cpp	(revision 25465)
@@ -64,5 +64,5 @@
 
 	/*early return: */
-	if( !iscoupler & !isesa) return;  //we are not interested in being here :) 
+	if(!iscoupler & !isesa) return;  //we are not interested in being here :) 
 
 	/*In what follows we assume we are all running esa, either in coupled, or uncoupled mode:*/
Index: /issm/trunk-jpl/src/c/cores/groundingline_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/groundingline_core.cpp	(revision 25465)
+++ /issm/trunk-jpl/src/c/cores/groundingline_core.cpp	(revision 25465)
@@ -0,0 +1,42 @@
+/*!\file: groundingline_core.cpp
+ * \brief: core of the groundingline solution
+ */
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void groundingline_core(FemModel* femmodel){
+
+	/*Start profiler*/
+	femmodel->profiler->Start(GROUNDINGLINECORE);
+
+	/* intermediaries */
+	bool save_results;
+
+	/* recover parameters */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+
+	/*Move grounding line*/
+	GroundinglineMigrationx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+
+	/*Update geometry and mask accordingly*/
+	femmodel->parameters->SetParam(MaskOceanLevelsetEnum,InputToExtrudeEnum);
+	extrudefrombase_core(femmodel);
+	femmodel->parameters->SetParam(BaseEnum,InputToExtrudeEnum);
+	extrudefrombase_core(femmodel);
+	femmodel->parameters->SetParam(SurfaceEnum,InputToExtrudeEnum);
+	extrudefrombase_core(femmodel);
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving groundingline results\n");
+		int outputs[3] = {SurfaceEnum,BaseEnum,MaskOceanLevelsetEnum};
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3);
+	}
+
+	/*Stop profiler*/
+	femmodel->profiler->Stop(GROUNDINGLINECORE);
+}
Index: /issm/trunk-jpl/src/c/cores/sealevelchange_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/sealevelchange_core.cpp	(revision 25464)
+++ /issm/trunk-jpl/src/c/cores/sealevelchange_core.cpp	(revision 25465)
@@ -39,7 +39,4 @@
 	/*Should we be here?:*/
 	if(!isslr)return;
-
-	/*Verbose: */
-	if(VerboseSolution()) _printf0_("   computing sea level rise\n");
 
 	/*Run gia core: */
Index: /issm/trunk-jpl/src/c/cores/transient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 25464)
+++ /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 25465)
@@ -221,4 +221,5 @@
 		thermal_core(femmodel);
 	}
+
 	/* Using Hydrology dc  coupled we need to compute smb in the hydrology inner time loop*/
 	if(issmb) {
@@ -232,5 +233,5 @@
 		hydrology_core(femmodel);
 		femmodel->parameters->FindParam(&hydrology_model,HydrologyModelEnum);
-		if(hydrology_model!=HydrologydcEnum && issmb)smb_core(femmodel);
+		if(hydrology_model!=HydrologydcEnum && issmb) smb_core(femmodel);
 	}
 
@@ -260,25 +261,6 @@
 
 	if(isgroundingline){
-
-		/*Start profiler*/
-		femmodel->profiler->Start(GROUNDINGLINECORE);
-
 		if(VerboseSolution()) _printf0_("   computing new grounding line position\n");
-		GroundinglineMigrationx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
-
-		femmodel->parameters->SetParam(MaskOceanLevelsetEnum,InputToExtrudeEnum);
-		extrudefrombase_core(femmodel);
-		femmodel->parameters->SetParam(BaseEnum,InputToExtrudeEnum);
-		extrudefrombase_core(femmodel);
-		femmodel->parameters->SetParam(SurfaceEnum,InputToExtrudeEnum);
-		extrudefrombase_core(femmodel);
-
-		/*Stop profiler*/
-		femmodel->profiler->Stop(GROUNDINGLINECORE);
-
-		if(save_results){
-			int outputs[3] = {SurfaceEnum,BaseEnum,MaskOceanLevelsetEnum};
-			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3);
-		}
+		groundingline_core(femmodel);
 	}
 
@@ -296,5 +278,8 @@
 
 	/*Sea level rise: */
-	if(isslr) sealevelchange_core(femmodel);
+	if(isslr){
+		if(VerboseSolution()) _printf0_("   computing sea level rise\n");
+		sealevelchange_core(femmodel);
+	}
 
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp	(revision 25464)
+++ /issm/trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp	(revision 25465)
@@ -10,16 +10,13 @@
 void GroundinglineMigrationx(Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters){
 
-	int                 migration_style,analysis_type;
-	IssmDouble         *vertices_potentially_ungrounding = NULL;
-	IssmDouble         *phi_ungrounding                  = NULL;
-	Element            *element                          = NULL;
+   int         migration_style;
+	IssmDouble *vertices_potentially_ungrounding = NULL;
+	IssmDouble *phi_ungrounding                  = NULL;
 
 	/*retrieve parameters: */
 	parameters->FindParam(&migration_style,GroundinglineMigrationEnum);
-	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
-
 	if(migration_style==NoneEnum) return;
 
-	if(VerboseModule()) _printf0_("   Migrating grounding line\n");
+	if(VerboseModule()) _printf0_("   Migrating grounding line based on "<<EnumToStringx(migration_style)<<"\n");
 
 	/*Set toolkit to default*/
@@ -47,5 +44,5 @@
 	/*Migrate grounding line : */
 	for(int i=0;i<elements->Size();i++){
-		element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
 		element->MigrateGroundingLine(phi_ungrounding);
 	}
