Index: /issm/trunk-jpl/src/c/classes/Params/DataSetParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DataSetParam.cpp	(revision 19216)
+++ /issm/trunk-jpl/src/c/classes/Params/DataSetParam.cpp	(revision 19217)
@@ -58,4 +58,14 @@
 }
 /*}}}*/
+void DataSetParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	if(marshall_direction==MARSHALLING_BACKWARD)value=new DataSet();
+	
+	MARSHALLING_ENUM(DataSetParamEnum);
+	MARSHALLING(enum_type);
+	value->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+}
+/*}}}*/
 
 /*DataSetParam virtual functions definitions: */
Index: /issm/trunk-jpl/src/c/classes/Params/DataSetParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DataSetParam.h	(revision 19216)
+++ /issm/trunk-jpl/src/c/classes/Params/DataSetParam.h	(revision 19217)
@@ -37,5 +37,5 @@
 		int   ObjectEnum();
 		Object* copy();
-		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param vritual function definitions: {{{*/
Index: /issm/trunk-jpl/src/c/classes/Params/DoubleMatParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DoubleMatParam.cpp	(revision 19216)
+++ /issm/trunk-jpl/src/c/classes/Params/DoubleMatParam.cpp	(revision 19217)
@@ -73,4 +73,14 @@
 }
 /*}}}*/
+void DoubleMatParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(DoubleMatParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(M);
+	MARSHALLING(N);
+	MARSHALLING_DYNAMIC(value,IssmDouble,M*N);
+}
+/*}}}*/
 
 /*DoubleMatParam virtual functions definitions: */
Index: /issm/trunk-jpl/src/c/classes/Params/DoubleMatParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DoubleMatParam.h	(revision 19216)
+++ /issm/trunk-jpl/src/c/classes/Params/DoubleMatParam.h	(revision 19217)
@@ -38,5 +38,5 @@
 		int   ObjectEnum();
 		Object* copy();
-		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param vritual function definitions: {{{*/
Index: /issm/trunk-jpl/src/c/classes/Params/DoubleVecParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DoubleVecParam.cpp	(revision 19216)
+++ /issm/trunk-jpl/src/c/classes/Params/DoubleVecParam.cpp	(revision 19217)
@@ -62,4 +62,14 @@
 }
 /*}}}*/
+void DoubleVecParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(DoubleVecParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(M);
+	MARSHALLING_DYNAMIC(values,IssmDouble,M);
+
+}
+/*}}}*/
 
 /*DoubleVecParam virtual functions definitions: */
Index: /issm/trunk-jpl/src/c/classes/Params/DoubleVecParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DoubleVecParam.h	(revision 19216)
+++ /issm/trunk-jpl/src/c/classes/Params/DoubleVecParam.h	(revision 19217)
@@ -37,5 +37,5 @@
 		int   ObjectEnum();
 		Object* copy();
-		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param virtual functions definitions: {{{*/
Index: /issm/trunk-jpl/src/c/classes/Params/StringArrayParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/StringArrayParam.cpp	(revision 19216)
+++ /issm/trunk-jpl/src/c/classes/Params/StringArrayParam.cpp	(revision 19217)
@@ -81,4 +81,28 @@
 }
 /*}}}*/
+void StringArrayParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	int* sizes=NULL;
+
+	if(marshall_direction==MARSHALLING_FORWARD || marshall_direction==MARSHALLING_SIZE){
+		if(numstrings)sizes=xNew<int>(numstrings);
+		for(int i=0;i<numstrings;i++)sizes[i]=strlen(value[i])+1;
+	}
+
+	MARSHALLING_ENUM(StringArrayParamEnum);
+	
+	MARSHALLING(enum_type);
+	MARSHALLING(numstrings);
+
+	if(numstrings){
+		MARSHALLING_DYNAMIC(sizes,int,numstrings);
+		
+		if(marshall_direction==MARSHALLING_BACKWARD) value=xNew<char*>(numstrings);
+		
+		for(int i=0;i<numstrings;i++)MARSHALLING_DYNAMIC(value[i],char,sizes[i]);
+	}
+
+}
+/*}}}*/
 
 /*StringArrayParam virtual functions definitions: */
Index: /issm/trunk-jpl/src/c/classes/Params/StringArrayParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/StringArrayParam.h	(revision 19216)
+++ /issm/trunk-jpl/src/c/classes/Params/StringArrayParam.h	(revision 19217)
@@ -21,5 +21,4 @@
 
 	private: 
-		/*just hold 3 values for 3 vertices: */
 		int      enum_type;
 		char**   value;
@@ -38,5 +37,5 @@
 		int   ObjectEnum();
 		Object* copy();
-		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param vritual function definitions: {{{*/
