Index: /issm/trunk-jpl/src/c/Container/Constraints.h
===================================================================
--- /issm/trunk-jpl/src/c/Container/Constraints.h	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/Constraints.h	(revision 13797)
@@ -20,11 +20,10 @@
 	public:
 
-		/*constructors, destructors: {{{*/
+		/*constructors, destructors*/
 		Constraints();
 		~Constraints();
-		/*}}}*/
-		/*numerics: {{{*/
+
+		/*numerics*/
 		int   NumberOfConstraints(void);
-		/*}}}*/
 
 };
Index: /issm/trunk-jpl/src/c/Container/DataSet.h
===================================================================
--- /issm/trunk-jpl/src/c/Container/DataSet.h	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/DataSet.h	(revision 13797)
@@ -38,27 +38,26 @@
 		int*            id_offsets;
 
-		/*constructors, destructors: {{{*/
+		/*constructors, destructors*/
 		DataSet();
 		DataSet(int enum_type);
 		~DataSet();
-		/*}}}*/
-		/*management: {{{*/
-		int   GetEnum();
-		int   GetEnum(int offset);
-		void  Echo();
-		void  DeepEcho();
-		int   AddObject(Object* object);
-		int   DeleteObject(int id);
-		int   Size();
-		void  clear();
-		Object* GetObjectByOffset(int offset);
-		Object* GetObjectById(int* poffset,int eid);
-		void  Presort();
-		void  SetSorting(int* in_sorted_ids,int* in_id_offsets);
-		void  Sort();
-		DataSet* Copy(void);
-		int   DeleteObject(Object* object);
-		Results* SpawnTriaResults(int* indices);
-		/*}}}*/
+
+		/*management*/
+		int      GetEnum();
+		int      GetEnum(int offset);
+		void     Echo();
+		void     DeepEcho();
+		int      AddObject(Object *object);
+		int      DeleteObject(int id);
+		int      Size();
+		void     clear();
+		Object  *GetObjectByOffset(int  offset);
+		Object  *GetObjectById(int *poffset,int eid);
+		void     Presort();
+		void     SetSorting(int *in_sorted_ids,int*in_id_offsets);
+		void     Sort();
+		DataSet *Copy(void);
+		int      DeleteObject(Object *object);
+		Results *SpawnTriaResults(int *indices);
 
 };
Index: /issm/trunk-jpl/src/c/Container/Elements.h
===================================================================
--- /issm/trunk-jpl/src/c/Container/Elements.h	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/Elements.h	(revision 13797)
@@ -20,18 +20,17 @@
 	public:
 
-		/*constructors, destructors: {{{*/
+		/*constructors, destructors*/
 		Elements();
 		~Elements();
-		/*}}}*/
-		/*numerics: {{{*/
-		void Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
-		void DeleteResults(void);
-		void ProcessResultsUnits(void);
-		void SetCurrentConfiguration(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
-		void ToResults(Results* results,Parameters* parameters);
+
+		/*numerics*/
+		void   Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
+		void   DeleteResults(void);
+		void   ProcessResultsUnits(void);
+		void   SetCurrentConfiguration(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
+		void   ToResults(Results* results,Parameters* parameters);
 		Patch* ResultsToPatch(void);
-		int   NumberOfElements(void);
-		void InputDuplicate(int input_enum,int output_enum);
-		/*}}}*/
+		int    NumberOfElements(void);
+		void   InputDuplicate(int input_enum,int output_enum);
 
 };
Index: /issm/trunk-jpl/src/c/Container/Inputs.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Inputs.cpp	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/Inputs.cpp	(revision 13797)
@@ -47,5 +47,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		input=(Input*)(*object); 
+		input=dynamic_cast<Input*>(*object);
 		if (input->InstanceEnum()==enum_type){
 			found=true;
@@ -75,5 +75,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		input=(Input*)(*object); 
+		input=dynamic_cast<Input*>(*object);
 		if (input->InstanceEnum()==enum_type){
 			found=true;
@@ -103,5 +103,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		input=(Input*)(*object); 
+		input=dynamic_cast<Input*>(*object); 
 		if (input->InstanceEnum()==enum_type){
 			found=true;
@@ -131,5 +131,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		input=(Input*)(*object); 
+		input=dynamic_cast<Input*>(*object);
 		if (input->InstanceEnum()==enum_type){
 			found=true;
@@ -163,5 +163,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		input=(Input*)(*object); 
+		input=dynamic_cast<Input*>(*object);
 
 		if (input->InstanceEnum()==in_input->InstanceEnum()){
@@ -185,5 +185,5 @@
 	/*Delete existing input of newenumtype if it exists*/
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
-		input=(Input*)(*object); 
+		input=dynamic_cast<Input*>(*object);
 
 		if (input->InstanceEnum()==newenumtype){
@@ -196,5 +196,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		input=(Input*)(*object); 
+		input=dynamic_cast<Input*>(*object);
 
 		if (input->InstanceEnum()==oldenumtype){
@@ -210,5 +210,5 @@
 	Input* constrain_input=NULL; 
 	/*Find x and y inputs: */
-	constrain_input=(Input*)this->GetInput(constrain_enum);
+	constrain_input=dynamic_cast<Input*>(this->GetInput(constrain_enum));
 
 	/*some checks: */
@@ -226,5 +226,5 @@
 
 	/*Get input*/
-	Input* input=(Input*)this->GetInput(enumtype);
+	Input* input=dynamic_cast<Input*>(this->GetInput(enumtype));
 
 	/*Apply ContrainMin: */
@@ -247,5 +247,5 @@
 
 	/*Get input*/
-	Input* input=(Input*)this->GetInput(enumtype);
+	Input* input=dynamic_cast<Input*>(this->GetInput(enumtype));
 
 	/*Apply ContrainMin: */
@@ -268,5 +268,5 @@
 
 	/*Get input*/
-	Input* input=(Input*)this->GetInput(enumtype);
+	Input* input=dynamic_cast<Input*>(this->GetInput(enumtype));
 
 	/*Apply ContrainMin: */
@@ -289,5 +289,5 @@
 
 	/*Get input*/
-	Input* input=(Input*)this->GetInput(enumtype);
+	Input* input=dynamic_cast<Input*>(this->GetInput(enumtype));
 
 	/*Apply ContrainMin: */
@@ -310,5 +310,5 @@
 
 	/*Get input*/
-	Input* input=(Input*)this->GetInput(enumtype);
+	Input* input=dynamic_cast<Input*>(this->GetInput(enumtype));
 
 	/*Apply ContrainMin: */
@@ -332,5 +332,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		input=(Input*)(*object); 
+		input=dynamic_cast<Input*>(*object);
 
 		if (input->InstanceEnum()==enum_name){
@@ -349,5 +349,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		input=(Input*)(*object); 
+		input=dynamic_cast<Input*>(*object);
 
 		if (input->InstanceEnum()==enum_type){
@@ -368,7 +368,7 @@
 
 	/*Make a copy of the original input: */
-	original=(Input*)this->GetInput(original_enum);
+	original=dynamic_cast<Input*>(this->GetInput(original_enum));
 	if(!original)_error_("could not find input with enum: " << EnumToStringx(original_enum)); 
-	copy=(Input*)original->copy();
+	copy=dynamic_cast<Input*>(original->copy());
 
 	/*Change copy enum to reinitialized_enum: */
@@ -376,5 +376,5 @@
 
 	/*Add copy into inputs, it will wipe off the one already there: */
-	this->AddInput((Input*)copy);
+	this->AddInput(dynamic_cast<Input*>(copy));
 }
 /*}}}*/
@@ -394,5 +394,5 @@
 
 		/*Create new input*/
-		inputin=(Input*)(*object); 
+		inputin=dynamic_cast<Input*>(*object);
 		inputout=inputin->SpawnTriaInput(indices);
 
@@ -412,6 +412,6 @@
 
 	/*Find x and y inputs: */
-	xinput=(Input*)this->GetInput(MeshXEnum);
-	yinput=(Input*)this->GetInput(MeshYEnum);
+	xinput=dynamic_cast<Input*>(this->GetInput(MeshXEnum));
+	yinput=dynamic_cast<Input*>(this->GetInput(MeshYEnum));
 
 	/*some checks: */
@@ -431,5 +431,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		input=(Input*)(*object);
+		input=dynamic_cast<Input*>(*object);
 		input->Configure(parameters);
 
Index: /issm/trunk-jpl/src/c/Container/Inputs.h
===================================================================
--- /issm/trunk-jpl/src/c/Container/Inputs.h	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/Inputs.h	(revision 13797)
@@ -23,18 +23,17 @@
 	public:
 
-		/*constructors, destructors: {{{*/
+		/*constructors, destructors*/
 		Inputs();
 		~Inputs();
 
-		/*}}}*/
-		/*numerics: {{{*/
-		int     AddInput(Input* in_input);
-		void    ChangeEnum(int enumtype,int new_enumtype);
-		void    ConstrainMin(int constrain_enum, IssmDouble minimum);
-		int     DeleteInput(int enum_type);
-		void    DuplicateInput(int original_enum,int new_enum);
-		Input*  GetInput(int enum_name);
-		Inputs* SpawnTriaInputs(int* indices);
-		void    AXPY(int MeshYEnum, IssmDouble scalar, int MeshXEnum);
+		/*numerics*/
+		int        AddInput(Input* in_input);
+		void       ChangeEnum(int enumtype,int new_enumtype);
+		void       ConstrainMin(int constrain_enum, IssmDouble minimum);
+		int        DeleteInput(int enum_type);
+		void       DuplicateInput(int original_enum,int new_enum);
+		Input*     GetInput(int enum_name);
+		Inputs*    SpawnTriaInputs(int* indices);
+		void       AXPY(int MeshYEnum, IssmDouble scalar, int MeshXEnum);
 		IssmDouble  InfinityNorm(int enumtype);
 		IssmDouble  Max(int enumtype);
@@ -42,12 +41,9 @@
 		IssmDouble  Min(int enumtype);
 		IssmDouble  MinAbs(int enumtype);
-
 		void GetInputAverage(IssmDouble* pvalue, int enum_type);
 		void GetInputValue(bool* pvalue,int enum_type);
 		void GetInputValue(int* pvalue,int enum_type);
 		void GetInputValue(IssmDouble* pvalue,int enum_type);
-
 		void Configure(Parameters* parameters);
-		/*}}}*/
 
 };
Index: /issm/trunk-jpl/src/c/Container/Loads.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Loads.cpp	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/Loads.cpp	(revision 13797)
@@ -46,5 +46,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		load=(Load*)(*object);
+		load=dynamic_cast<Load*>(*object);
 		load->Configure(elements,loads,nodes,vertices,materials,parameters);
 
@@ -81,5 +81,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		load=(Load*)(*object);
+		load=dynamic_cast<Load*>(*object);
 		load->SetCurrentConfiguration(elements,loads,nodes,vertices,materials,parameters);
 
Index: /issm/trunk-jpl/src/c/Container/Loads.h
===================================================================
--- /issm/trunk-jpl/src/c/Container/Loads.h	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/Loads.h	(revision 13797)
@@ -20,13 +20,12 @@
 	public:
 
-		/*constructors, destructors: {{{*/
+		/*constructors, destructors*/
 		Loads();
 		~Loads();
-		/*}}}*/
-		/*numerics: {{{*/
+
+		/*numerics*/
 		void  Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
 		int   NumberOfLoads(void);
 		void  SetCurrentConfiguration(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
-		/*}}}*/
 
 };
Index: /issm/trunk-jpl/src/c/Container/Materials.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Materials.cpp	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/Materials.cpp	(revision 13797)
@@ -46,5 +46,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		material=(Material*)(*object);
+		material=dynamic_cast<Material*>(*object);
 		material->Configure(elements);
 
Index: /issm/trunk-jpl/src/c/Container/Materials.h
===================================================================
--- /issm/trunk-jpl/src/c/Container/Materials.h	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/Materials.h	(revision 13797)
@@ -19,11 +19,10 @@
 	public:
 
-		/*constructors, destructors: {{{*/
+		/*constructors, destructors*/
 		Materials();
 		~Materials();
-		/*}}}*/
-		/*numerics: {{{*/
+
+		/*numerics*/
 		void  Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
-		/*}}}*/
 
 };
Index: /issm/trunk-jpl/src/c/Container/Nodes.h
===================================================================
--- /issm/trunk-jpl/src/c/Container/Nodes.h	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/Nodes.h	(revision 13797)
@@ -13,9 +13,9 @@
 	public:
 
-		/*constructors, destructors: {{{*/
+		/*constructors, destructors*/
 		Nodes();
 		~Nodes();
-		/*}}}*/
-		/*numerics: {{{*/
+
+		/*numerics*/
 		void  Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
 		void  DistributeDofs(int analysis_type,int SETENUM);
@@ -27,5 +27,4 @@
 		void  Ranks(int* ranks,int analysis_type);
 		void  SetCurrentConfiguration(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
-		/*}}}*/
 
 };
Index: /issm/trunk-jpl/src/c/Container/Observations.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Observations.cpp	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/Observations.cpp	(revision 13797)
@@ -88,5 +88,5 @@
 		this->quadtree->ClosestObs(&index,x[i],y[i]);
 		if(index>=0){
-			observation=(Observation*)this->GetObjectByOffset(index);
+			observation=dynamic_cast<Observation*>(this->GetObjectByOffset(index));
 			if(pow(observation->x-x[i],2)+pow(observation->y-y[i],2) < minspacing) continue;
 		}
@@ -135,5 +135,5 @@
 	this->quadtree->RangeSearch(&indices,&nobs,x_interp,y_interp,radius);
 	for (i=0;i<nobs;i++){
-		observation=(Observation*)this->GetObjectByOffset(indices[i]);
+		observation=dynamic_cast<Observation*>(this->GetObjectByOffset(indices[i]));
 		h2 = (observation->x-x_interp)*(observation->x-x_interp) + (observation->y-y_interp)*(observation->y-y_interp);
 
@@ -157,5 +157,5 @@
 	}
 	else{
-		observation=(Observation*)this->GetObjectByOffset(indices[index]);
+		observation=dynamic_cast<Observation*>(this->GetObjectByOffset(indices[index]));
 		*px=observation->x;
 		*py=observation->y;
@@ -194,5 +194,5 @@
 	nobs = 0;
 	for (i=0;i<tempnobs;i++){
-		observation=(Observation*)this->GetObjectByOffset(tempindices[i]);
+		observation=dynamic_cast<Observation*>(this->GetObjectByOffset(tempindices[i]));
 		h2 = (observation->x-x_interp)*(observation->x-x_interp) + (observation->y-y_interp)*(observation->y-y_interp);
 
@@ -236,5 +236,5 @@
 		/*Loop over all observations and fill in x, y and obs*/
 		for (i=0;i<nobs;i++){
-			observation=(Observation*)this->GetObjectByOffset(indices[i]);
+			observation=dynamic_cast<Observation*>(this->GetObjectByOffset(indices[i]));
 			observation->WriteXYObs(&x[i],&y[i],&obs[i]);
 		}
@@ -265,5 +265,5 @@
 		obs = xNew<IssmPDouble>(nobs);
 		for(int i=0;i<this->Size();i++){
-			observation=(Observation*)this->GetObjectByOffset(i);
+			observation=dynamic_cast<Observation*>(this->GetObjectByOffset(i));
 			observation->WriteXYObs(&x[i],&y[i],&obs[i]);
 		}
@@ -450,8 +450,8 @@
 
 	for(i=0;i<this->Size();i++){
-		observation1=(Observation*)this->GetObjectByOffset(i);
+		observation1=dynamic_cast<Observation*>(this->GetObjectByOffset(i));
 
 		for(j=i+1;j<this->Size();j++){
-			observation2=(Observation*)this->GetObjectByOffset(j);
+			observation2=dynamic_cast<Observation*>(this->GetObjectByOffset(j));
 
 			distance=sqrt(pow(observation1->x - observation2->x,2.) + pow(observation1->y - observation2->y,2.));
Index: /issm/trunk-jpl/src/c/Container/Options.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Options.cpp	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/Options.cpp	(revision 13797)
@@ -60,5 +60,5 @@
 	for(object=objects.begin();object<objects.end();object++){
 
-		option=(Option*)(*object); 
+		option=dynamic_cast<Option*>(*object);
 		if (!strcmp(option->Name(),name)){
 			_error_("Options \"" << name << "\" found multiple times");
@@ -82,5 +82,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		option=(Option*)(*object); 
+		option=dynamic_cast<Option*>(*object);
 		if (!strncmp(name,option->Name(),strlen(option->Name()))){
 
Index: /issm/trunk-jpl/src/c/Container/Options.h
===================================================================
--- /issm/trunk-jpl/src/c/Container/Options.h	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/Options.h	(revision 13797)
@@ -26,5 +26,5 @@
 
 			/*Get option*/
-			GenericOption<OptionType>* genericoption=(GenericOption<OptionType>*)GetOption(name);
+			GenericOption<OptionType>* genericoption=dynamic_cast<GenericOption<OptionType>*>(GetOption(name));
 
 			/*If the pointer is not NULL, the option has been found*/
@@ -41,5 +41,5 @@
 
 			/*Get option*/
-			GenericOption<OptionType>* genericoption=(GenericOption<OptionType>*)GetOption(name);
+			GenericOption<OptionType>* genericoption=dynamic_cast<GenericOption<OptionType>*>(GetOption(name));
 
 			/*If the pointer is not NULL, the option has been found*/
@@ -57,5 +57,5 @@
 
 			/*Get option*/
-			GenericOption<OptionType>* genericoption=(GenericOption<OptionType>*)GetOption(name);
+			GenericOption<OptionType>* genericoption=dynamic_cast<GenericOption<OptionType>*>(GetOption(name));
 
 			/*If the pointer is not NULL, the option has been found*/
@@ -71,5 +71,5 @@
 
 			/*Get option*/
-			GenericOption<OptionType>* genericoption=(GenericOption<OptionType>*)GetOption(name);
+			GenericOption<OptionType>* genericoption=dynamic_cast<GenericOption<OptionType>*>(GetOption(name));
 
 			/*If the pointer is not NULL, the option has been found*/
@@ -91,5 +91,5 @@
 
 	/*Get option*/
-	GenericOption<char*>* genericoption=(GenericOption<char*>*)GetOption(name);
+	GenericOption<char*>* genericoption=dynamic_cast<GenericOption<char*>*>(GetOption(name));
 
 	/*If the pointer is not NULL, the option has been found*/
Index: /issm/trunk-jpl/src/c/Container/Parameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Parameters.cpp	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/Parameters.cpp	(revision 13797)
@@ -45,5 +45,5 @@
 
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type) return true;
 	}
@@ -59,5 +59,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type){
 			param->GetParameterValue(pbool);
@@ -76,5 +76,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type){
 			param->GetParameterValue(pinteger);
@@ -93,5 +93,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type){
 			param->GetParameterValue(pscalar);
@@ -110,5 +110,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type){
 			param->GetParameterValue(pscalar,time);
@@ -127,5 +127,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type){
 			param->GetParameterValue(pstring);
@@ -145,5 +145,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type){
 			param->GetParameterValue(pstringarray,pM);
@@ -163,5 +163,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type){
 			param->GetParameterValue(pintarray,pM);
@@ -181,5 +181,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type){
 			param->GetParameterValue(pintarray,pM,pN);
@@ -199,5 +199,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type){
 			param->GetParameterValue(pIssmDoublearray,pM);
@@ -217,5 +217,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type){
 			param->GetParameterValue(pIssmDoublearray,pM,pN);
@@ -235,5 +235,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type){
 			param->GetParameterValue(parray,pM,pmdims_array,pndims_array);
@@ -252,5 +252,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type){
 			param->GetParameterValue(pvec);
@@ -270,5 +270,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type){
 			param->GetParameterValue(pmat);
@@ -288,5 +288,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type){
 			param->GetParameterValue(pfid);
@@ -306,5 +306,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type){
 			param->GetParameterValue(pdataset);
@@ -322,5 +322,5 @@
 
 	/*first, figure out if the param has already been created: */
-	param=(Param*)this->FindParamObject(enum_type);
+	param=dynamic_cast<Param*>(this->FindParamObject(enum_type));
 
 	if(param) param->SetValue(boolean); //already exists, just set it.
@@ -334,5 +334,5 @@
 
 	/*first, figure out if the param has already been created: */
-	param=(Param*)this->FindParamObject(enum_type);
+	param=dynamic_cast<Param*>(this->FindParamObject(enum_type));
 
 	if(param) param->SetValue(integer); //already exists, just set it.
@@ -346,5 +346,5 @@
 
 	/*first, figure out if the param has already been created: */
-	param=(Param*)this->FindParamObject(enum_type);
+	param=dynamic_cast<Param*>(this->FindParamObject(enum_type));
 
 	if(param) param->SetValue(scalar); //already exists, just set it.
@@ -358,5 +358,5 @@
 
 	/*first, figure out if the param has already been created: */
-	param=(Param*)this->FindParamObject(enum_type);
+	param=dynamic_cast<Param*>(this->FindParamObject(enum_type));
 
 	if(param) param->SetValue(string); //already exists, just set it.
@@ -370,5 +370,5 @@
 
 	/*first, figure out if the param has already been created: */
-	param=(Param*)this->FindParamObject(enum_type);
+	param=dynamic_cast<Param*>(this->FindParamObject(enum_type));
 
 	if(param) param->SetValue(stringarray,M); //already exists, just set it.
@@ -382,5 +382,5 @@
 
 	/*first, figure out if the param has already been created: */
-	param=(Param*)this->FindParamObject(enum_type);
+	param=dynamic_cast<Param*>(this->FindParamObject(enum_type));
 
 	if(param) param->SetValue(IssmDoublearray,M); //already exists, just set it.
@@ -394,5 +394,5 @@
 
 	/*first, figure out if the param has already been created: */
-	param=(Param*)this->FindParamObject(enum_type);
+	param=dynamic_cast<Param*>(this->FindParamObject(enum_type));
 
 	if(param) param->SetValue(IssmDoublearray,M,N); //already exists, just set it.
@@ -406,5 +406,5 @@
 
 	/*first, figure out if the param has already been created: */
-	param=(Param*)this->FindParamObject(enum_type);
+	param=dynamic_cast<Param*>(this->FindParamObject(enum_type));
 
 	if(param) param->SetValue(intarray,M); //already exists, just set it.
@@ -418,5 +418,5 @@
 
 	/*first, figure out if the param has already been created: */
-	param=(Param*)this->FindParamObject(enum_type);
+	param=dynamic_cast<Param*>(this->FindParamObject(enum_type));
 
 	if(param) param->SetValue(intarray,M,N); //already exists, just set it.
@@ -430,5 +430,5 @@
 
 	/*first, figure out if the param has already been created: */
-	param=(Param*)this->FindParamObject(enum_type);
+	param=dynamic_cast<Param*>(this->FindParamObject(enum_type));
 
 	if(param) param->SetValue(vector); //already exists, just set it.
@@ -442,5 +442,5 @@
 
 	/*first, figure out if the param has already been created: */
-	param=(Param*)this->FindParamObject(enum_type);
+	param=dynamic_cast<Param*>(this->FindParamObject(enum_type));
 
 	if(param) param->SetValue(matrix); //already exists, just set it.
@@ -454,5 +454,5 @@
 
 	/*first, figure out if the param has already been created: */
-	param=(Param*)this->FindParamObject(enum_type);
+	param=dynamic_cast<Param*>(this->FindParamObject(enum_type));
 
 	if(param) param->SetValue(fid); //already exists, just set it.
@@ -467,5 +467,5 @@
 
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		param->UnitConversion(direction_enum);
 	}
@@ -482,5 +482,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		param=(Param*)(*object);
+		param=dynamic_cast<Param*>(*object);
 		if(param->InstanceEnum()==enum_type){
 			return (*object);
Index: /issm/trunk-jpl/src/c/Container/Results.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Results.cpp	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/Results.cpp	(revision 13797)
@@ -76,5 +76,5 @@
 
 	for(i=0;i<this->Size();i++){
-		ExternalResult* result=(ExternalResult*)this->GetObjectByOffset(i);
+		ExternalResult* result=dynamic_cast<ExternalResult*>(this->GetObjectByOffset(i));
 
 		/*write result to disk: */
Index: /issm/trunk-jpl/src/c/Container/Results.h
===================================================================
--- /issm/trunk-jpl/src/c/Container/Results.h	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/Results.h	(revision 13797)
@@ -20,12 +20,11 @@
 	public:
 
-		/*constructors, destructors: {{{*/
+		/*constructors, destructors*/
 		Results();
 		~Results();
-		/*}}}*/
-		/*numerics: {{{*/
+
+		/*numerics*/
 		Results* SpawnTriaResults(int* indices);
-		void Write(Parameters* parameters);
-		/*}}}*/
+		void     Write(Parameters* parameters);
 };
 #endif //ifndef _RESULTS_H_
Index: /issm/trunk-jpl/src/c/Container/Vertices.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Vertices.cpp	(revision 13796)
+++ /issm/trunk-jpl/src/c/Container/Vertices.cpp	(revision 13797)
@@ -56,5 +56,5 @@
 	/*Go through objects, and distribute pids locally, from 0 to numberofpidsperobject*/
 	for (i=0;i<this->Size();i++){
-		Vertex* vertex=(Vertex*)this->GetObjectByOffset(i);
+		Vertex* vertex=dynamic_cast<Vertex*>(this->GetObjectByOffset(i));
 		vertex->DistributePids(&pidcount);
 	}
@@ -80,5 +80,5 @@
 	}
 	for (i=0;i<this->Size();i++){
-		Vertex* vertex=(Vertex*)this->GetObjectByOffset(i);
+		Vertex* vertex=dynamic_cast<Vertex*>(this->GetObjectByOffset(i));
 		vertex->OffsetPids(pidcount);
 	}
@@ -90,5 +90,5 @@
 	alltruepids=xNewZeroInit<int>(numberofobjects);
 	for (i=0;i<this->Size();i++){
-		Vertex* vertex=(Vertex*)this->GetObjectByOffset(i);
+		Vertex* vertex=dynamic_cast<Vertex*>(this->GetObjectByOffset(i));
 		vertex->ShowTruePids(truepids);
 	}
@@ -101,5 +101,5 @@
 	/* Now every cpu knows the true pids of everyone else that is not a clone*/
 	for(i=0;i<this->Size();i++){
-		Vertex* vertex=(Vertex*)this->GetObjectByOffset(i);
+		Vertex* vertex=dynamic_cast<Vertex*>(this->GetObjectByOffset(i));
 		vertex->UpdateClonePids(alltruepids);
 	}
@@ -145,5 +145,5 @@
 	for(i=0;i<this->Size();i++){
 		/*For this object, decide whether it is a clone: */
-		Vertex* vertex=(Vertex*)this->GetObjectByOffset(i);
+		Vertex* vertex=dynamic_cast<Vertex*>(this->GetObjectByOffset(i));
 		vertex->SetClone(minranks);
 	}
@@ -163,5 +163,5 @@
 
 	for(i=0;i<this->Size();i++){
-		Vertex* vertex=(Vertex*)this->GetObjectByOffset(i);
+		Vertex* vertex=dynamic_cast<Vertex*>(this->GetObjectByOffset(i));
 		sid=vertex->Sid();
 		if (sid>max_sid)max_sid=sid;
@@ -193,5 +193,5 @@
 	for(int i=0;i<this->Size();i++){
 		/*Plug rank into ranks, according to id: */
-		Vertex* vertex=(Vertex*)this->GetObjectByOffset(i);
+		Vertex* vertex=dynamic_cast<Vertex*>(this->GetObjectByOffset(i));
 		sid=vertex->Sid();
 		ranks[sid]=my_rank; 
Index: /issm/trunk-jpl/src/c/solutions/EnvironmentFinalize.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/EnvironmentFinalize.cpp	(revision 13796)
+++ /issm/trunk-jpl/src/c/solutions/EnvironmentFinalize.cpp	(revision 13797)
@@ -13,17 +13,17 @@
 void EnvironmentFinalize(void){
 
-	int my_rank=0;
 	#ifdef _HAVE_MPI_
-	/*Make sure we are all here!)*/
+
+	/*Make sure we are all here*/
 	MPI_Barrier(MPI_COMM_WORLD);
 	
-	/*Print closing statement: */
-	#ifdef _HAVE_MPI_
+	/*Print closing statement*/
+	int my_rank;
 	MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
-	#endif
 	if(!my_rank) printf("closing MPI\n");
 
 	/*Finalize: */
 	MPI_Finalize();
+
 	#endif
 }
