Index: /issm/trunk/src/c/Container/Elements.cpp
===================================================================
--- /issm/trunk/src/c/Container/Elements.cpp	(revision 9621)
+++ /issm/trunk/src/c/Container/Elements.cpp	(revision 9622)
@@ -175,5 +175,5 @@
 
 	/*Recover parameters: */
-	parameters->FindParam(&io_gather,IoGatherEnum);
+	parameters->FindParam(&io_gather,SettingsIoGatherEnum);
 
 	/*create patch object out of all results in this dataset: */
Index: /issm/trunk/src/c/Container/Results.cpp
===================================================================
--- /issm/trunk/src/c/Container/Results.cpp	(revision 9621)
+++ /issm/trunk/src/c/Container/Results.cpp	(revision 9622)
@@ -162,5 +162,5 @@
 	/*Recover file descriptor: */
 	parameters->FindParam(&fid,OutputFilePointerEnum);
-	parameters->FindParam(&io_gather,IoGatherEnum);
+	parameters->FindParam(&io_gather,SettingsIoGatherEnum);
 
 	for(i=0;i<this->Size();i++){
Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9621)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9622)
@@ -32,4 +32,6 @@
 	HydrologyQEnum,
 	HydrologyCREnum,
+	SettingsLowmemEnum,
+	SettingsIoGatherEnum,
 	/*}}}*/
 	/*Datasets {{{1*/
@@ -289,7 +291,4 @@
 	WaterColumnOldEnum,
 	/*}}}*/
-	/*Io{{{1*/
-	IoGatherEnum,
-	/*}}}*/
 	/*Responses{{{1*/
 	MinVelEnum,
@@ -347,5 +346,4 @@
 	EpsRelEnum,
 	EpsResEnum,
-	LowmemEnum,
 	MaxNonlinearIterationsEnum,
 	MinMechanicalConstraintsEnum,
Index: /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9621)
+++ /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9622)
@@ -36,4 +36,6 @@
 		case HydrologyQEnum : return "HydrologyQ";
 		case HydrologyCREnum : return "HydrologyCR";
+		case SettingsLowmemEnum : return "SettingsLowmem";
+		case SettingsIoGatherEnum : return "SettingsIoGather";
 		case ConstraintsEnum : return "Constraints";
 		case ElementsEnum : return "Elements";
@@ -251,5 +253,4 @@
 		case OutputFrequencyEnum : return "OutputFrequency";
 		case WaterColumnOldEnum : return "WaterColumnOld";
-		case IoGatherEnum : return "IoGather";
 		case MinVelEnum : return "MinVel";
 		case MaxVelEnum : return "MaxVel";
@@ -296,5 +297,4 @@
 		case EpsRelEnum : return "EpsRel";
 		case EpsResEnum : return "EpsRes";
-		case LowmemEnum : return "Lowmem";
 		case MaxNonlinearIterationsEnum : return "MaxNonlinearIterations";
 		case MinMechanicalConstraintsEnum : return "MinMechanicalConstraints";
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 9621)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 9622)
@@ -42,5 +42,5 @@
 	parameters->AddObject(iomodel->CopyConstantObject(HydrostaticAdjustmentEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(PenaltyOffsetEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(LowmemEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(SettingsLowmemEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(ConnectivityEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(BetaEnum));
@@ -59,5 +59,5 @@
 	parameters->AddObject(iomodel->CopyConstantObject(WaitonlockEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(NumberOfElementsEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(IoGatherEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(SettingsIoGatherEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(GroundinglineMigrationEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(IsdiagnosticEnum));
Index: /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.cpp
===================================================================
--- /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 9621)
+++ /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 9622)
@@ -72,5 +72,5 @@
 
 		/*What strategy? : */
-		parameters->FindParam(&io_gather,IoGatherEnum);
+		parameters->FindParam(&io_gather,SettingsIoGatherEnum);
 
 		if(io_gather){
Index: /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9621)
+++ /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9622)
@@ -34,4 +34,6 @@
 	else if (strcmp(name,"HydrologyQ")==0) return HydrologyQEnum;
 	else if (strcmp(name,"HydrologyCR")==0) return HydrologyCREnum;
+	else if (strcmp(name,"SettingsLowmem")==0) return SettingsLowmemEnum;
+	else if (strcmp(name,"SettingsIoGather")==0) return SettingsIoGatherEnum;
 	else if (strcmp(name,"Constraints")==0) return ConstraintsEnum;
 	else if (strcmp(name,"Elements")==0) return ElementsEnum;
@@ -249,5 +251,4 @@
 	else if (strcmp(name,"OutputFrequency")==0) return OutputFrequencyEnum;
 	else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;
-	else if (strcmp(name,"IoGather")==0) return IoGatherEnum;
 	else if (strcmp(name,"MinVel")==0) return MinVelEnum;
 	else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
@@ -294,5 +295,4 @@
 	else if (strcmp(name,"EpsRel")==0) return EpsRelEnum;
 	else if (strcmp(name,"EpsRes")==0) return EpsResEnum;
-	else if (strcmp(name,"Lowmem")==0) return LowmemEnum;
 	else if (strcmp(name,"MaxNonlinearIterations")==0) return MaxNonlinearIterationsEnum;
 	else if (strcmp(name,"MinMechanicalConstraints")==0) return MinMechanicalConstraintsEnum;
Index: /issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp	(revision 9621)
+++ /issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp	(revision 9622)
@@ -38,5 +38,5 @@
 	/*Recover parameters: */
 	kflag=1; pflag=1;
-	femmodel->parameters->FindParam(&lowmem,LowmemEnum);
+	femmodel->parameters->FindParam(&lowmem,SettingsLowmemEnum);
 	femmodel->parameters->FindParam(&min_thermal_constraints,MinThermalConstraintsEnum);
 	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
Index: /issm/trunk/src/m/classes/clusters/generic.m
===================================================================
--- /issm/trunk/src/m/classes/clusters/generic.m	(revision 9621)
+++ /issm/trunk/src/m/classes/clusters/generic.m	(revision 9622)
@@ -100,5 +100,5 @@
 			 end
 
-			 if ~md.io_gather,
+			 if ~md.settings.io_gather,
 				 %concatenate the output files:
 				 fprintf(fid,'\ncat %s.outbin.* > %s.outbin',modelname,modelname);
Index: /issm/trunk/src/m/classes/clusters/pfe.m
===================================================================
--- /issm/trunk/src/m/classes/clusters/pfe.m	(revision 9621)
+++ /issm/trunk/src/m/classes/clusters/pfe.m	(revision 9622)
@@ -140,5 +140,5 @@
 			 fprintf(fid,'mpiexec -verbose -np %i %s/issm.exe %s $PBS_O_WORKDIR %s\n',cluster.np,cluster.codepath,EnumToString(solution_type),modelname);
 
-			 if ~md.io_gather,
+			 if ~md.settings.io_gather,
 				 %concatenate the output files:
 				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
@@ -157,5 +157,5 @@
 				 end
 
-				 if ~md.io_gather,
+				 if ~md.settings.io_gather,
 					 %concatenate the output files:
 					 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
Index: /issm/trunk/src/m/classes/model/model.m
===================================================================
--- /issm/trunk/src/m/classes/model/model.m	(revision 9621)
+++ /issm/trunk/src/m/classes/model/model.m	(revision 9622)
@@ -21,4 +21,5 @@
 		 rifts     = modelfield('default',0,'marshall',true);
 		 hydrology = modelfield('default',0,'marshall',true);
+		 settings  = modelfield('default',0,'marshall',true);
 		 radaroverlay = modelfield('default',0,'marshall',false);
 
@@ -43,7 +44,4 @@
 		 edges               = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);
 
-		 %I/O
-		 io_gather           = modelfield('default',0,'marshall',true,'format','Boolean');
-
 		 %Initial 2d mesh 
 		 numberofelements2d = modelfield('default',0,'marshall',true,'format','Integer');
@@ -162,5 +160,4 @@
 		 max_steadystate_iterations = modelfield('default',0,'marshall',true,'format','Integer');
 		 connectivity             = modelfield('default',0,'marshall',true,'format','Integer');
-		 lowmem                   = modelfield('default',0,'marshall',true,'format','Boolean');
 		 viscosity_overshoot      = modelfield('default',0,'marshall',true,'format','Double');
 
@@ -537,4 +534,5 @@
 			 md.rifts=rifts;
 			 md.hydrology=hydrology;
+			 md.settings=settings;
 			 md.radaroverlay=radaroverlay;
 
@@ -597,7 +595,4 @@
 			 md.connectivity=25;
 
-			 %lowmem??
-			 md.lowmem=0;
-
 			 %coefficient to update the viscosity between each iteration of
 			 %a diagnostic according to the following formula
@@ -719,6 +714,4 @@
 			 md.rheology_law='Paterson';
 
-			 %i/o:
-			 md.io_gather=1;
 		 end
 		 %}}}
Index: /issm/trunk/src/m/classes/settings.m
===================================================================
--- /issm/trunk/src/m/classes/settings.m	(revision 9622)
+++ /issm/trunk/src/m/classes/settings.m	(revision 9622)
@@ -0,0 +1,43 @@
+%SETTINGS class definition
+%
+%   Usage:
+%      settings=settings();
+
+classdef settings
+	properties (SetAccess=public) 
+		io_gather = modelfield('default',0,'marshall',true,'format','Boolean');
+		lowmem    = modelfield('default',0,'marshall',true,'format','Boolean');
+	end
+	methods
+		function obj = settings(varargin) % {{{
+			switch nargin
+				case 0
+					obj=setdefaultparameters(obj);
+				case 1
+					in=varargin{1};
+					if (isa(in,'numeric') & in==0),
+						% requesting templates do nothing
+					else
+						error('constructor not supported');
+					end 
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function obj = setdefaultparameters(obj) % {{{
+
+			%first, use the defaults provided by the properties definition above. 
+			fieldnames=fields(obj);
+			for i=1:length(fieldnames),
+				fieldname=fieldnames{i};
+				obj.(fieldname)=obj.(fieldname).default;
+			end
+
+			%lowmem??
+			obj.lowmem=0;
+
+			%i/o:
+			obj.io_gather=1;
+		end % }}}
+	end
+end
Index: sm/trunk/src/m/enum/IoGatherEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IoGatherEnum.m	(revision 9621)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=IoGatherEnum()
-%IOGATHERENUM - Enum of IoGather
-%
-%   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=IoGatherEnum()
-
-macro=StringToEnum('IoGather');
Index: sm/trunk/src/m/enum/LowmemEnum.m
===================================================================
--- /issm/trunk/src/m/enum/LowmemEnum.m	(revision 9621)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=LowmemEnum()
-%LOWMEMENUM - Enum of Lowmem
-%
-%   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=LowmemEnum()
-
-macro=StringToEnum('Lowmem');
Index: /issm/trunk/src/m/enum/SettingsIoGatherEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SettingsIoGatherEnum.m	(revision 9622)
+++ /issm/trunk/src/m/enum/SettingsIoGatherEnum.m	(revision 9622)
@@ -0,0 +1,11 @@
+function macro=SettingsIoGatherEnum()
+%SETTINGSIOGATHERENUM - Enum of SettingsIoGather
+%
+%   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=SettingsIoGatherEnum()
+
+macro=StringToEnum('SettingsIoGather');
Index: /issm/trunk/src/m/enum/SettingsLowmemEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SettingsLowmemEnum.m	(revision 9622)
+++ /issm/trunk/src/m/enum/SettingsLowmemEnum.m	(revision 9622)
@@ -0,0 +1,11 @@
+function macro=SettingsLowmemEnum()
+%SETTINGSLOWMEMENUM - Enum of SettingsLowmem
+%
+%   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=SettingsLowmemEnum()
+
+macro=StringToEnum('SettingsLowmem');
Index: /issm/trunk/src/m/model/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9621)
+++ /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9622)
@@ -83,5 +83,5 @@
 %NO NAN {{{1
 fields={'numberofelements','numberofnodes','x','y','z','friction.coefficient','friction.p','friction.q',...
-	'rho_ice','rho_water','rheology_B','elementoniceshelf','surface','thickness','bed','constants.g','lowmem','nsteps','maxiter',...
+	'rho_ice','rho_water','rheology_B','elementoniceshelf','surface','thickness','bed','constants.g','settings.lowmem','nsteps','maxiter',...
 	'eps_res','max_nonlinear_iterations','rheology_n','nodeonbed','nodeonsurface','elementonbed','elementonsurface','elementconnectivity'};
 checknan(md,fields);
@@ -90,5 +90,5 @@
 fields={'numberofelements','numberofnodes','elements','friction.coefficient','friction.p','friction.q',...
 	'rho_ice','rho_water','rheology_B','elementoniceshelf','thickness','constants.g','eps_res','max_nonlinear_iterations','eps_rel','eps_abs','nsteps','maxiter',...
-	'lowmem','rheology_n','nodeonbed','nodeonsurface','elementonbed','elementonsurface'};
+	'settings.lowmem','rheology_n','nodeonbed','nodeonsurface','elementonbed','elementonsurface'};
 checkgreater(md,fields,0);
 %}}}
@@ -169,6 +169,6 @@
 	message('model not consistent: prognostic_DG should be a scalar (1 or 0)');
 end
-if ~ismember(md.lowmem,[0 1]),
-	message(['model not consistent: model ' md.name ' lowmem field should be 0 or 1']);
+if ~ismember(md.settings.lowmem,[0 1]),
+	message(['model not consistent: model ' md.name ' settings.lowmem field should be 0 or 1']);
 end
 if ~ismember(md.time_adapt,[0 1]),
Index: /issm/trunk/src/m/model/loadresultsfromdisk.m
===================================================================
--- /issm/trunk/src/m/model/loadresultsfromdisk.m	(revision 9621)
+++ /issm/trunk/src/m/model/loadresultsfromdisk.m	(revision 9622)
@@ -19,5 +19,5 @@
 
 	%load results onto model
-	structure=parseresultsfromdisk(filename,~md.io_gather);
+	structure=parseresultsfromdisk(filename,~md.settings.io_gather);
 	md.results.(structure(1).SolutionType)=structure;
 
