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 dcabba7be660ff2e140942eb331ca846d1f2a399)
@@ -161,5 +161,4 @@
         Create a new 1D data instance based on fitting results
         """
-
         return self._create1DPlot(tab_id, return_data['x'], return_data['y'],
                                   return_data['model'], return_data['data'])
@@ -212,18 +211,10 @@
         (pq_plot, sq_plot). If either are unavailable, the corresponding plot is None.
         """
-
-        pq_plot = None
-        sq_plot = None
-
-        if return_data.get('pq_values', None) is not None:
-            pq_plot = self._create1DPlot(tab_id, return_data['x'],
-                    return_data['pq_values'], return_data['model'],
-                    return_data['data'], component="P(Q)")
-        if return_data.get('sq_values', None) is not None:
-            sq_plot = self._create1DPlot(tab_id, return_data['x'],
-                    return_data['sq_values'], return_data['model'],
-                    return_data['data'], component="S(Q)")
-
-        return pq_plot, sq_plot
+        plots = []
+        for name, result in return_data['intermediate_results'].items():
+            plots.append(self._create1DPlot(tab_id, return_data['x'], result,
+                         return_data['model'], return_data['data'],
+                         component=name))
+        return plots
 
     def computeDataRange(self):
Index: src/sas/qtgui/Perspectives/Fitting/FittingWidget.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/FittingWidget.py	(revision 5fb714bc8d76b96b914937e72cffc3f835224dd1)
+++ src/sas/qtgui/Perspectives/Fitting/FittingWidget.py	(revision 5fb714bc8d76b96b914937e72cffc3f835224dd1)
@@ -2394,15 +2394,9 @@
 
         # Create plots for intermediate product data
-        pq_data, sq_data = self.logic.new1DProductPlots(return_data, self.tab_id)
-        if pq_data is not None:
-            pq_data.symbol = "Line"
-            self.createNewIndex(pq_data)
-            # self.communicate.plotUpdateSignal.emit([pq_data])
-            new_plots.append(pq_data)
-        if sq_data is not None:
-            sq_data.symbol = "Line"
-            self.createNewIndex(sq_data)
-            # self.communicate.plotUpdateSignal.emit([sq_data])
-            new_plots.append(sq_data)
+        plots = self.logic.new1DProductPlots(return_data, self.tab_id)
+        for plot in plots:
+            plot.symbol = "Line"
+            self.createNewIndex(plot)
+            new_plots.append(plot)
 
         for plot in new_plots:
Index: src/sas/qtgui/Perspectives/Fitting/ModelThread.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/ModelThread.py	(revision dcabba7be660ff2e140942eb331ca846d1f2a399)
+++ src/sas/qtgui/Perspectives/Fitting/ModelThread.py	(revision dcabba7be660ff2e140942eb331ca846d1f2a399)
@@ -195,22 +195,35 @@
             output[index] = self.model.evalDistribution(self.data.x[index])
 
-        sq_values = None
-        pq_values = None
-        s_model = None
-        p_model = None
-        if isinstance(self.model, MultiplicationModel):
-            s_model = self.model.s_model
-            p_model = self.model.p_model
-        elif hasattr(self.model, "calc_composition_models"):
-            results = self.model.calc_composition_models(self.data.x[index])
-            if results is not None:
-                pq_values, sq_values = results
-
-        if pq_values is None or sq_values is None:
-            if p_model is not None and s_model is not None:
-                sq_values = numpy.zeros((len(self.data.x)))
-                pq_values = numpy.zeros((len(self.data.x)))
-                sq_values[index] = s_model.evalDistribution(self.data.x[index])
-                pq_values[index] = p_model.evalDistribution(self.data.x[index])
+        results_eval = {}
+        intermediate_results = getattr(self.model, "_intermediate_results", None)
+        if callable(intermediate_results):
+            # support for future sasmodels (beta approx support) - it returns a dict of intermediate results, keyed by
+            # name
+            results_eval = intermediate_results()
+        else:
+            sq_values = None
+            pq_values = None
+            s_model = None
+            p_model = None
+            if isinstance(self.model, MultiplicationModel):
+                s_model = self.model.s_model
+                p_model = self.model.p_model
+            elif hasattr(self.model, "calc_composition_models"):
+                results = self.model.calc_composition_models(self.data.x[index])
+                if results is not None:
+                    pq_values, sq_values = results
+
+            if pq_values is None or sq_values is None:
+                if p_model is not None and s_model is not None:
+                    sq_values = numpy.zeros((len(self.data.x)))
+                    pq_values = numpy.zeros((len(self.data.x)))
+                    sq_values[index] = s_model.evalDistribution(self.data.x[index])
+                    pq_values[index] = p_model.evalDistribution(self.data.x[index])
+
+            if pq_values is not None and sq_values is not None:
+                results_eval = {
+                    "P(Q)": pq_values,
+                    "S(Q)": sq_values
+                }
 
         elapsed = time.time() - self.starttime
@@ -223,5 +236,5 @@
             source = self.source, unsmeared_output = unsmeared_output,
             unsmeared_data = unsmeared_data, unsmeared_error = unsmeared_error,
-            pq_values = pq_values, sq_values = sq_values)
+            intermediate_results = results_eval)
 
         if LocalConfig.USING_TWISTED:
Index: src/sas/qtgui/Perspectives/Fitting/UnitTesting/FittingLogicTest.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/UnitTesting/FittingLogicTest.py	(revision e752ab8241051d2dfff8481f44214d3ad205adac)
+++ src/sas/qtgui/Perspectives/Fitting/UnitTesting/FittingLogicTest.py	(revision d6c4987dec5b0b7b43b1026a2d4edc82b55c360a)
@@ -103,5 +103,5 @@
                        data, False, None,
                        None, None, None,
-                       None, None)
+                       None)
 
         new_plot = self.logic.new1DPlot(return_data=return_data, tab_id=0)
