Index: src/sas/qtgui/Perspectives/Fitting/FittingLogic.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/FittingLogic.py	(revision dcabba7be660ff2e140942eb331ca846d1f2a399)
+++ src/sas/qtgui/Perspectives/Fitting/FittingLogic.py	(revision 61f0c75f21788f08492f16b51fa253507d1e8423)
@@ -213,4 +213,6 @@
         plots = []
         for name, result in return_data['intermediate_results'].items():
+            if not isinstance(result, np.ndarray):
+                continue
             plots.append(self._create1DPlot(tab_id, return_data['x'], result,
                          return_data['model'], return_data['data'],
Index: src/sas/qtgui/Perspectives/Fitting/FittingWidget.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/FittingWidget.py	(revision d4ba5659c28772e9c307ab44a02664ec480d11a5)
+++ src/sas/qtgui/Perspectives/Fitting/FittingWidget.py	(revision bb477f548ae5ba590f954cce573627bdb5c105f3)
@@ -569,5 +569,5 @@
             menu.exec_(self.lstParams.viewport().mapToGlobal(position))
         except AttributeError as ex:
-            logging.error("Error generating context menu: %s" % ex)
+            logger.error("Error generating context menu: %s" % ex)
         return
 
@@ -1456,5 +1456,5 @@
             self.communicate.statusBarUpdateSignal.emit(msg)
             msg += results.mesg
-            logging.error(msg)
+            logger.error(msg)
             return
 
@@ -1499,5 +1499,5 @@
         if self.calc_fit._interrupting:
             msg = "Fitting cancelled by user after: %s s." % GuiUtils.formatNumber(elapsed)
-            logging.warning("\n"+msg+"\n")
+            logger.warning("\n"+msg+"\n")
         else:
             msg = "Fitting completed successfully in: %s s." % GuiUtils.formatNumber(elapsed)
@@ -1841,5 +1841,5 @@
         data_to_show = self.data if self.data_is_loaded else self.model_data
         if data_to_show is not None:
-            self.communicate.plotRequestedSignal.emit([data_to_show])
+            self.communicate.plotRequestedSignal.emit([data_to_show], self.tab_id)
 
     def onOptionsUpdate(self):
@@ -2052,5 +2052,5 @@
                 kernel_module = generate.load_kernel_module(name)
             except ModuleNotFoundError as ex:
-                logging.error("Can't find the model "+ str(ex))
+                logger.error("Can't find the model "+ str(ex))
                 return
 
@@ -2287,4 +2287,6 @@
             fitted_data.symbol = "Line"
             self.createTheoryIndex(fitted_data)
+            # Switch to the theory tab for user's glee
+            self.communicate.changeDataExplorerTabSignal.emit(1)
 
     def updateModelIndex(self, fitted_data):
@@ -2422,5 +2424,7 @@
 
         if self.data_is_loaded:
+            # delete any plots associated with the data that were not updated (e.g. to remove beta(Q), S_eff(Q))
             GuiUtils.deleteRedundantPlots(self.all_data[self.data_index], new_plots)
+            pass
         else:
             # delete theory items for the model, in order to get rid of any redundant items, e.g. beta(Q), S_eff(Q)
@@ -2511,5 +2515,5 @@
         """
         # TODO: remimplement thread cancellation
-        logging.error("".join(traceback.format_exception(etype, value, tb)))
+        logger.error("".join(traceback.format_exception(etype, value, tb)))
 
     def setTableProperties(self, table):
@@ -2693,5 +2697,5 @@
 
         if not datafile:
-            logging.info("No weight data chosen.")
+            logger.info("No weight data chosen.")
             raise IOError
 
@@ -2809,7 +2813,17 @@
         self._n_shells_row = shell_row - 1
 
-        # Set the index to the state-kept value
-        func.setCurrentIndex(self.current_shell_displayed
-                             if self.current_shell_displayed < func.count() else 0)
+        # Get the default number of shells for the model
+        kernel_pars = self.kernel_module._model_info.parameters.kernel_parameters
+        shell_par = None
+        for par in kernel_pars:
+            if par.name == param_name:
+                shell_par = par
+                break
+        if not shell_par:
+            logger.error("Could not find %s in kernel parameters.", param_name)
+        default_shell_count = shell_par.default
+
+        # Add default number of shells to the model
+        func.setCurrentIndex(default_shell_count)
 
     def modifyShellsInList(self, index):
@@ -3125,10 +3139,17 @@
             param_value = str(self._model_model.item(row, 1).text())
             param_error = None
+            param_min = None
+            param_max = None
             column_offset = 0
             if self.has_error_column:
                 param_error = str(self._model_model.item(row, 2).text())
                 column_offset = 1
-            param_min = str(self._model_model.item(row, 2+column_offset).text())
-            param_max = str(self._model_model.item(row, 3+column_offset).text())
+
+            try:
+                param_min = str(self._model_model.item(row, 2+column_offset).text())
+                param_max = str(self._model_model.item(row, 3+column_offset).text())
+            except:
+                pass
+
             param_list.append([param_name, param_checked, param_value, param_error, param_min, param_max])
 
@@ -3220,8 +3241,11 @@
 
                 # limits
-                limit_lo = item[3]
-                context[name].append(limit_lo)
-                limit_hi = item[4]
-                context[name].append(limit_hi)
+                try:
+                    limit_lo = item[3]
+                    context[name].append(limit_lo)
+                    limit_hi = item[4]
+                    context[name].append(limit_hi)
+                except:
+                    pass
 
                 # Polydisp
@@ -3282,9 +3306,14 @@
                 ioffset = 1
             # min/max
-            param_repr = GuiUtils.formatNumber(param_dict[param_name][2+ioffset], high=True)
-            self._model_model.item(row, 2+ioffset).setText(param_repr)
-            param_repr = GuiUtils.formatNumber(param_dict[param_name][3+ioffset], high=True)
-            self._model_model.item(row, 3+ioffset).setText(param_repr)
+            try:
+                param_repr = GuiUtils.formatNumber(param_dict[param_name][2+ioffset], high=True)
+                self._model_model.item(row, 2+ioffset).setText(param_repr)
+                param_repr = GuiUtils.formatNumber(param_dict[param_name][3+ioffset], high=True)
+                self._model_model.item(row, 3+ioffset).setText(param_repr)
+            except:
+                pass
+
             self.setFocus()
+
 
 
Index: src/sas/qtgui/Perspectives/Fitting/UnitTesting/FittingWidgetTest.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/UnitTesting/FittingWidgetTest.py	(revision 3fbd77b038f1503431a47e6e7b3a7ad275c0655c)
+++ src/sas/qtgui/Perspectives/Fitting/UnitTesting/FittingWidgetTest.py	(revision f712bf3025cf12e62b69938499d344d81714ebce)
@@ -613,10 +613,11 @@
 
         # Check that the number of rows increased
+        # (note that n == 1 by default in core_multi_shell so this increases index by 2)
         more_rows = self.widget._model_model.rowCount() - last_row
-        self.assertEqual(more_rows, 6) # 6 new rows: 2 params per index
-
-        # Back to 0
+        self.assertEqual(more_rows, 4) # 4 new rows: 2 params per index
+
+        # Set to 0
         self.widget.lstParams.indexWidget(func_index).setCurrentIndex(0)
-        self.assertEqual(self.widget._model_model.rowCount(), last_row)
+        self.assertEqual(self.widget._model_model.rowCount(), last_row - 2) # 2 fewer rows than default
 
     def testPlotTheory(self):
Index: src/sas/qtgui/Perspectives/Inversion/InversionPerspective.py
===================================================================
--- src/sas/qtgui/Perspectives/Inversion/InversionPerspective.py	(revision 4d959c85fedadc355256aadb2328506acdd78bd5)
+++ src/sas/qtgui/Perspectives/Inversion/InversionPerspective.py	(revision 4d959c85fedadc355256aadb2328506acdd78bd5)
@@ -562,9 +562,9 @@
             title = self.prPlot.name
             GuiUtils.updateModelItemWithPlot(self._data, self.prPlot, title)
-            self.communicate.plotRequestedSignal.emit([self.prPlot])
+            self.communicate.plotRequestedSignal.emit([self.prPlot], None)
         if self.dataPlot is not None:
             title = self.dataPlot.name
             GuiUtils.updateModelItemWithPlot(self._data, self.dataPlot, title)
-            self.communicate.plotRequestedSignal.emit([self.dataPlot])
+            self.communicate.plotRequestedSignal.emit([self.dataPlot], None)
         self.enableButtons()
 
