Index: /issm/trunk-jpl/src/m/classes/SMBcomponents.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBcomponents.py	(revision 27414)
+++ /issm/trunk-jpl/src/m/classes/SMBcomponents.py	(revision 27415)
@@ -24,5 +24,5 @@
         nargs = len(args)
         if nargs == 0:
-            pass
+            self.setdefaultparameters()
         else:
             raise Exception('constructor not supported')
@@ -100,2 +100,7 @@
 
     # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.requested_outputs = ['default']
+        return self
+    #}}}
Index: /issm/trunk-jpl/src/m/classes/SMBd18opdd.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBd18opdd.py	(revision 27414)
+++ /issm/trunk-jpl/src/m/classes/SMBd18opdd.py	(revision 27415)
@@ -38,8 +38,8 @@
         self.steps_per_step = 1
         self.averaging = 0
-
-    #set defaults
+        self.requested_outputs = []
+
+        # Set defaults
         self.setdefaultparameters()
-        self.requested_outputs = []
     #}}}
     def __repr__(self):  # {{{
@@ -108,5 +108,5 @@
     # }}}
     def setdefaultparameters(self):  # {{{
-        #pdd method not used in default mode
+        # pdd method not used in default mode
         self.ismungsm = 0
         self.isd18opd = 1
@@ -119,4 +119,5 @@
         self.f = 0.169
         self.issetpddfac = 0
+        self.requested_outputs = ['default']
         return self
     #}}}
@@ -197,5 +198,5 @@
             WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'pddfac_ice', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
 
-    #process requested outputs
+        # Process requested outputs
         outputs = self.requested_outputs
         indices = [i for i, x in enumerate(outputs) if x == 'default']
Index: /issm/trunk-jpl/src/m/classes/SMBgradients.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBgradients.py	(revision 27414)
+++ /issm/trunk-jpl/src/m/classes/SMBgradients.py	(revision 27415)
@@ -20,4 +20,7 @@
         self.averaging = 0
         self.requested_outputs = []
+
+        # Set defaults
+        self.setdefaultparameters()
     #}}}
 
@@ -47,4 +50,10 @@
     def defaultoutputs(self, md):  # {{{
         return ['SmbMassBalance']
+    #}}}
+
+    def setdefaultparameters(self):  # {{{
+        # Output default
+        self.requested_outputs = ['default']
+        return self
     #}}}
 
Index: /issm/trunk-jpl/src/m/classes/SMBgradientsela.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBgradientsela.py	(revision 27414)
+++ /issm/trunk-jpl/src/m/classes/SMBgradientsela.py	(revision 27415)
@@ -5,12 +5,11 @@
 
 class SMBgradientsela(object):
-    """
-    SMBgradientsela Class definition
+    """SMBGRADIENTSELA class definition
 
-       Usage:
-          SMBgradientsela = SMBgradientsela()
+    Usage:
+        SMBgradientsela = SMBgradientsela()
     """
 
-    def __init__(self):  # {{{
+    def __init__(self, *args):  # {{{
         self.ela = float('NaN')
         self.b_pos = float('NaN')
@@ -21,5 +20,9 @@
         self.averaging = 0
         self.requested_outputs = []
-        self.setdefaultparameters()
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            error('constructor not supported')
     #}}}
 
@@ -58,6 +61,7 @@
 
     def setdefaultparameters(self):  # {{{
-        self.b_max = 9999.
-        self.b_min = -9999.
+        self.b_max = 9999
+        self.b_min = -9999
+        self.requested_outputs = ['default']
         return self
     #}}}
Index: /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py	(revision 27414)
+++ /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py	(revision 27415)
@@ -8,5 +8,5 @@
 
 class SMBmeltcomponents(object):
-    """SMBMELTCOMPONENTS lass definition
+    """SMBMELTCOMPONENTS class definition
 
     Usage:
@@ -24,5 +24,5 @@
 
         if len(args) == 0:
-            pass
+            self.setdefaultparameters()
         else:
             error('constructor not supported')
@@ -114,2 +114,7 @@
         WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
     # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.requested_outputs = ['default']
+        return self
+    #}}}
Index: /issm/trunk-jpl/src/m/classes/SMBpdd.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBpdd.py	(revision 27414)
+++ /issm/trunk-jpl/src/m/classes/SMBpdd.py	(revision 27415)
@@ -38,8 +38,8 @@
         self.steps_per_step = 1
         self.averaging = 0
-
-    #set defaults
+        self.requested_outputs = []
+
+        # Set defaults
         self.setdefaultparameters()
-        self.requested_outputs = []
     #}}}
 
@@ -104,5 +104,5 @@
             self.precipitations_presentday = project3d(md, 'vector', self.precipitations_presentday, 'type', 'node')
             self.precipitations_lgm = project3d(md, 'vector', self.precipitations_lgm, 'type', 'node')
-       
+
         if self.issetpddfac:
             self.pddfac_snow = project3d(md, 'vector', self.pddfac_snow, 'type', 'node')
@@ -138,4 +138,5 @@
         self.rlapslgm = 6.5
         self.issetpddfac = 0
+        self.requested_outputs = ['default']
 
         return self
@@ -218,5 +219,5 @@
             WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Tdiff', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
             WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'sealev', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
-       
+
         if self.issetpddfac:
             WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'pddfac_snow', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
Index: /issm/trunk-jpl/src/m/classes/SMBpddSicopolis.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBpddSicopolis.py	(revision 27414)
+++ /issm/trunk-jpl/src/m/classes/SMBpddSicopolis.py	(revision 27415)
@@ -138,11 +138,10 @@
         WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
 
-        #process requested outputs
+        # Process requested outputs
         outputs = self.requested_outputs
-        pos = np.where('default' in outputs)
-        if not isempty(pos):
-            outputs[pos] = []  #remove 'default' from outputs
-            outputs = [outputs, defaultoutputs(self, md)]  #add defaults
-
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
         WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
     # }}}
