Index: /issm/trunk-jpl/src/m/classes/clusters/castor.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/clusters/castor.m	(revision 11866)
+++ /issm/trunk-jpl/src/m/classes/clusters/castor.m	(revision 11867)
@@ -21,14 +21,5 @@
 	 methods
 		 function cluster=castor(varargin) % {{{1
-			 options=pairoptions(varargin{:});
-			 for i=1:size(options.list,1),
-				 fieldname=options.list{i,1};
-				 fieldvalue=options.list{i,2};
-				 if ismember(fieldname,properties('castor')),
-					 cluster.(fieldname)=fieldvalue;
-				 else
-					 disp(['''' fieldname ''' is not a property of cluster castor']);
-				 end
-			 end
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
 		 end
 		 %}}}
Index: /issm/trunk-jpl/src/m/classes/clusters/cosmos.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/clusters/cosmos.m	(revision 11866)
+++ /issm/trunk-jpl/src/m/classes/clusters/cosmos.m	(revision 11867)
@@ -21,14 +21,5 @@
 	 methods
 		 function cluster=cosmos(varargin) % {{{1
-			 options=pairoptions(varargin{:});
-			 for i=1:size(options.list,1),
-				 fieldname=options.list{i,1};
-				 fieldvalue=options.list{i,2};
-				 if ismember(fieldname,properties('cosmos')),
-					 cluster.(fieldname)=fieldvalue;
-				 else
-					 disp(['''' fieldname ''' is not a property of cluster cosmos']);
-				 end
-			 end
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
 		 end
 		 %}}}
Index: /issm/trunk-jpl/src/m/classes/clusters/gemini.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/clusters/gemini.m	(revision 11866)
+++ /issm/trunk-jpl/src/m/classes/clusters/gemini.m	(revision 11867)
@@ -21,14 +21,5 @@
     methods
 		 function cluster=gemini(varargin) % {{{1
-			 options=pairoptions(varargin{:});
-			 for i=1:size(options.list,1),
-				 fieldname=options.list{i,1};
-				 fieldvalue=options.list{i,2};
-				 if ismember(fieldname,properties('gemini')),
-					 cluster.(fieldname)=fieldvalue;
-				 else
-					 disp(['''' fieldname ''' is not a property of cluster gemini']);
-				 end
-			 end
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
 		 end
 		 %}}}
Index: /issm/trunk-jpl/src/m/classes/clusters/generic.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/clusters/generic.m	(revision 11866)
+++ /issm/trunk-jpl/src/m/classes/clusters/generic.m	(revision 11867)
@@ -35,13 +35,5 @@
 
 			 %OK get other fields
-			 for i=1:size(options.list,1),
-				 fieldname=options.list{i,1};
-				 fieldvalue=options.list{i,2};
-				 if ismember(fieldname,properties('generic')),
-					 cluster.(fieldname)=fieldvalue;
-				 else
-					 disp(['''' fieldname ''' is not a property of cluster generic']);
-				 end
-			 end
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
 		 end
 		 %}}}
Index: /issm/trunk-jpl/src/m/classes/clusters/greenplanet.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/clusters/greenplanet.m	(revision 11866)
+++ /issm/trunk-jpl/src/m/classes/clusters/greenplanet.m	(revision 11867)
@@ -30,14 +30,5 @@
 
 			 %use provided options to change fields
-			 options=pairoptions(varargin{:});
-			 for i=1:size(options.list,1),
-				 fieldname=options.list{i,1};
-				 fieldvalue=options.list{i,2};
-				 if ismember(fieldname,properties('greenplanet')),
-					 cluster.(fieldname)=fieldvalue;
-				 else
-					 disp(['''' fieldname ''' is not a property of cluster greenplanet']);
-				 end
-			 end
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
 		 end
 		 %}}}
Index: /issm/trunk-jpl/src/m/classes/clusters/none.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/clusters/none.m	(revision 11866)
+++ /issm/trunk-jpl/src/m/classes/clusters/none.m	(revision 11867)
@@ -12,14 +12,5 @@
     methods
 		 function cluster=none(varargin) % {{{1
-			 options=pairoptions(varargin{:});
-			 for i=1:size(options.list,1),
-				 fieldname=options.list{i,1};
-				 fieldvalue=options.list{i,2};
-				 if ismember(fieldname,properties('none')),
-					 cluster.(fieldname)=fieldvalue;
-				 else
-					 disp(['''' fieldname ''' is not a property of cluster none']);
-				 end
-			 end
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
 		 end
 		 %}}}
Index: /issm/trunk-jpl/src/m/classes/clusters/pfe.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/clusters/pfe.m	(revision 11866)
+++ /issm/trunk-jpl/src/m/classes/clusters/pfe.m	(revision 11867)
@@ -35,14 +35,5 @@
 
 			 %use provided options to change fields
-			 options=pairoptions(varargin{:});
-			 for i=1:size(options.list,1),
-				 fieldname=options.list{i,1};
-				 fieldvalue=options.list{i,2};
-				 if ismember(fieldname,properties('pfe')),
-					 cluster.(fieldname)=fieldvalue;
-				 else
-					 disp(['''' fieldname ''' is not a property of cluster pfe']);
-				 end
-			 end
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
 		 end
 		 %}}}
Index: /issm/trunk-jpl/src/m/classes/clusters/pollux.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/clusters/pollux.m	(revision 11866)
+++ /issm/trunk-jpl/src/m/classes/clusters/pollux.m	(revision 11867)
@@ -21,14 +21,5 @@
 	 methods
 		 function cluster=pollux(varargin) % {{{1
-			 options=pairoptions(varargin{:});
-			 for i=1:size(options.list,1),
-				 fieldname=options.list{i,1};
-				 fieldvalue=options.list{i,2};
-				 if ismember(fieldname,properties('pollux')),
-					 cluster.(fieldname)=fieldvalue;
-				 else
-					 disp(['''' fieldname ''' is not a property of cluster pollux']);
-				 end
-			 end
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
 		 end
 		 %}}}
Index: /issm/trunk-jpl/src/m/classes/pairoptions.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/pairoptions.m	(revision 11866)
+++ /issm/trunk-jpl/src/m/classes/pairoptions.m	(revision 11867)
@@ -6,5 +6,5 @@
 
 classdef pairoptions
-	properties (SetAccess = private,GetAccess = private) 
+	properties (SetAccess = private)%,GetAccess = private) 
 		functionname = '';
 		list         = cell(0,2);
@@ -65,4 +65,17 @@
 					obj.list{end+1,1} = field;
 					obj.list{end,2}   = value;
+				end
+			end
+		end % }}}
+		function obj2 = AssignObjectFields(options,obj2) % {{{
+		%ASSIGNOBJECTFIELDS - assign object fields from options
+			listproperties=properties(obj2);
+			for i=1:size(options.list,1),
+				fieldname=options.list{i,1};
+				fieldvalue=options.list{i,2};
+				if ismember(fieldname,listproperties),
+					obj2.(fieldname)=fieldvalue;
+				else
+					disp(['WARNING: ''' fieldname ''' is not a property of ''' class(obj2) '''']);
 				end
 			end
Index: /issm/trunk-jpl/src/m/classes/verbose.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/verbose.m	(revision 11866)
+++ /issm/trunk-jpl/src/m/classes/verbose.m	(revision 11867)
@@ -37,34 +37,34 @@
 		function verbose=verbose(varargin) % {{{1
 
-			if nargin==1,
+			switch(nargin),
+				case 0,
+					%Don't do anything
+				case 1,
+					binary=varargin{1};
+					if ischar(binary),
+						if strcmpi(binary,'all'),
+							binary=2^11-1; %all ones
+							verbose=BinaryToVerbose(verbose,binary);
+							verbose.solver=false; %Do not use by default
+						else
+							binary=bin2dec(binary);
+							verbose=BinaryToVerbose(verbose,binary);
+						end
+					end 
+				otherwise,
+					%Use options to initialize object
+					verbose=AssignObjectFields(pairoptions(varargin{:}),verbose);
 
-				binary=varargin{1};
-				if ischar(binary),
-					if strcmpi(binary,'all'),
-						binary=2^11-1; %all ones
-						verbose=BinaryToVerbose(verbose,binary);
-						verbose.solver=false; %Do not use by default
-					else
-						binary=bin2dec(binary);
-						verbose=BinaryToVerbose(verbose,binary);
-					end
-				end 
-			else
-
-				options=pairoptions(varargin{:});
-				for i=1:size(options.list,1),
-					fieldname=options.list{i,1};
-					fieldvalue=options.list{i,2};
-					if ismember(fieldname,properties('verbose')),
-						if islogical(fieldvalue) | isnumeric(fieldvalue),
+					%Cast to logicals
+					listproperties=properties('verbose');
+					for i=1:numel(listproperties),
+						fieldname=listproperties{i};
+						fieldvalue=verbose.(fieldname);
+						if (islogical(fieldvalue) | isnumeric(fieldvalue)) & numel(fieldvalue)==1,
 							verbose.(fieldname)=logical(fieldvalue);
 						else
 							error('verbose supported field values are logicals only (true or false)');
 						end
-					else
-						disp(['''' fieldname ''' is not a property of verbose verbose']);
 					end
-				end
-
 			end
 		end
