Index: fittingview/src/sans/perspectives/fitting/fitpage.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/fitpage.py	(revision a624e76cca925c06fb71618c83ad73e7927c2f47)
+++ fittingview/src/sans/perspectives/fitting/fitpage.py	(revision 62f851fb7213a06069ca007c15e29566808e052c)
@@ -1928,4 +1928,5 @@
         if flag:
             #set model view button
+            self.current_smearer = smear_selection(self.data, self.model)
             if self.data.__class__.__name__ == "Data2D":
                 self.enable2D = True
Index: fittingview/src/sans/perspectives/fitting/fitproblem.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/fitproblem.py	(revision 5e48acb9f6415c9846b820553b19927d5c703b33)
+++ fittingview/src/sans/perspectives/fitting/fitproblem.py	(revision 62f851fb7213a06069ca007c15e29566808e052c)
@@ -43,4 +43,14 @@
         :return: saved model
         """
+    def set_residuals(self, residuals):
+        """ 
+        save a copy of residual
+        :param data: data selected
+        """
+    def get_residuals(self):
+        """
+        :return: residuals
+        """
+        
     def set_theory_data(self, data):
         """ 
@@ -177,12 +187,7 @@
         return smear object
         """
-        result = []
-        if fid is None:
-            for value in self.itervalues():
-                result.append(value.get_smearer())
-        else:
-            if fid in self.iterkeys():
-                result.append(self[fid].get_smearer())
-        return result
+        if fid in self.iterkeys():
+            return self[fid].get_smearer()
+     
     
     def save_model_name(self, name, fid=None):
@@ -227,5 +232,5 @@
         """
         if fid in self.iterkeys():
-            self[fid].get_model()
+            return self[fid].get_model()
        
     def set_fit_tab_caption(self, caption):
@@ -241,4 +246,19 @@
         return self.fit_tab_caption
     
+    def set_residuals(self, residuals, fid):
+        """ 
+        save a copy of residual
+        :param data: data selected
+        """
+        if fid in self.iterkeys():
+            self[fid].set_residuals(residuals)
+            
+    def get_residuals(self, fid):
+        """
+        :return: residuals
+        """
+        if fid in self.iterkeys():
+            return self[fid].get_residuals()
+        
     def set_theory_data(self, fid, data=None):
         """ 
@@ -434,4 +454,5 @@
         self.fit_data = None
         self.theory_data = None
+        self.residuals = None
         # original data: should not be modified
         self.original_data = None
@@ -509,5 +530,18 @@
         """
         return self.model
-  
+   
+    def set_residuals(self, residuals):
+        """ 
+        save a copy of residual
+        :param data: data selected
+        """
+        self.residuals = residuals
+            
+    def get_residuals(self):
+        """
+        :return: residuals
+        """
+        return self.residuals
+        
     def set_theory_data(self, data):
         """ 
Index: fittingview/src/sans/perspectives/fitting/fitting.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/fitting.py	(revision 29a4024f3ae5b6655dc921d49078d5eb9b2ea4b9)
+++ fittingview/src/sans/perspectives/fitting/fitting.py	(revision 62f851fb7213a06069ca007c15e29566808e052c)
@@ -653,5 +653,5 @@
              
         """
-        self.weight = weight
+        #self.weight = weight
         if issubclass(data.__class__, Data1D) or not enable2D:    
             ## draw model 1D with no loaded data
@@ -663,4 +663,5 @@
                                qmin=qmin,
                                qmax=qmax, 
+                               weight=weight,
                                toggle_mode_on=toggle_mode_on,
                                state=state,
@@ -675,4 +676,5 @@
                                 qmin=qmin,
                                 qmax=qmax,
+                                weigth=weight,
                                 state=state,
                                 toggle_mode_on=toggle_mode_on,
@@ -1048,5 +1050,5 @@
                         batch_outputs[pars[index]].append(null_value)
                         item = null_value
-                        batch_outputs["error on %s" % pars[index]].append(item)
+                        batch_inputs["error on %s" % pars[index]].append(item)
                 else:
                     batch_outputs["Chi2"].append(res.fitness)
@@ -1054,14 +1056,43 @@
                         batch_outputs[pars[index]].append(res.pvec[index])
                         item = res.stderr[index]
-                        batch_outputs["error on %s" % pars[index]].append(item)
+                        batch_inputs["error on %s" % pars[index]].append(item)
             pid = page_id[0]
             self.page_finder[pid].set_result(result=batch_outputs)   
+           
+            """
+            draw_model(self, model, page_id, data=None, smearer=None,
+                   enable1D=True, enable2D=False,
+                   state=None,
+                   toggle_mode_on=False,
+                   qmin=None, qmax=None, 
+                   update_chisqr=True, weight=None):
+            """
+            for pid in page_id:
+                cpage = self.fit_panel.get_page_by_id(pid)
+                cpage._on_fit_complete()
+                for fid in self.page_finder[pid].keys():
+                    data = self.page_finder[pid].get_fit_data(fid)
+                    model = self.page_finder[pid].get_model(fid)
+                    smearer = self.page_finder[pid].get_smearer(fid)
+                    qmin, qmax = self.page_finder[pid].get_range(fid)
+                    weight = self.page_finder[pid].get_weight(fid)
+                    flag = issubclass(data.__class__, Data2D)
+                    self.draw_model(model=model,
+                                      page_id=pid, 
+                                      data=data, 
+                                      smearer=smearer,
+                                      enable1D=not flag, 
+                                      enable2D=flag,
+                                      state=None,
+                                      toggle_mode_on=False,
+                                      qmin=qmin, qmax=qmax, 
+                                      update_chisqr=False, 
+                                      weight=weight)
+                    
             self.parent.on_set_batch_result(data_outputs=batch_outputs, 
                                             data_inputs=batch_inputs,
                                             plugin_name=self.sub_menu)
-            for uid in page_id:
-                cpage = self.fit_panel.get_page_by_id(uid)
-                cpage._on_fit_complete()
-            
+             
+             
     def _single_fit_completed(self, result, pars, page_id, batch_outputs,
                           batch_inputs=None,  elapsed=None):
@@ -1331,4 +1362,5 @@
         
     def _complete1D(self, x, y, page_id, elapsed, index, model,
+                    weight=None,
                     toggle_mode_on=False, state=None, 
                     data=None, update_chisqr=True):
@@ -1378,8 +1410,10 @@
                                  Chi2UpdateEvent(output=self._cal_chisqr(
                                                                 data=data,
+                                                                weight=weight,
                                                             page_id=page_id,
                                                             index=index)))
                 else:
-                    self._plot_residuals(page_id, data, index)
+                    self._plot_residuals(page_id=page_id, data=data,
+                                          index=index, weight=weight)
 
             msg = "Computation  completed!"
@@ -1400,5 +1434,6 @@
   
     def _complete2D(self, image, data, model, page_id,  elapsed, index, qmin,
-                     qmax, toggle_mode_on=False, state=None, 
+                    
+                     qmax, weight=None, toggle_mode_on=False, state=None, 
                      update_chisqr=True):
         """
@@ -1450,8 +1485,10 @@
                 wx.PostEvent(current_pg,
                              Chi2UpdateEvent(output=self._cal_chisqr(data=data,
+                                                                    weight=weight,
                                                          page_id=page_id,
                                                          index=index)))
             else:
-                self._plot_residuals(page_id, data, index)
+                self._plot_residuals(page_id=page_id, data=data,
+                                      index=index, weight=weight)
         msg = "Computation  completed!"
         wx.PostEvent(self.parent, StatusEvent(status=msg, type="stop"))
@@ -1462,4 +1499,5 @@
                       description=None, enable2D=False,
                       state=None,
+                      weight=None,
                       toggle_mode_on=False,
                        update_chisqr=True):
@@ -1488,4 +1526,5 @@
                                     qmin=qmin,
                                     qmax=qmax,
+                                    weight=weight, 
                                     toggle_mode_on=toggle_mode_on,
                                     state=state,
@@ -1503,4 +1542,5 @@
                       qmin, qmax, smearer=None,
                 state=None,
+                weight=None,
                 toggle_mode_on=False, update_chisqr=True, 
                 enable1D=True):
@@ -1526,4 +1566,5 @@
                                   smearer=smearer,
                                   state=state,
+                                  weight=weight,
                                   toggle_mode_on=toggle_mode_on,
                                   completefn=self._complete1D,
@@ -1538,5 +1579,5 @@
   
     
-    def _cal_chisqr(self, page_id, data, index=None): 
+    def _cal_chisqr(self, page_id, data, weight, index=None): 
         """
         Get handy Chisqr using the output from draw1D and 2D, 
@@ -1555,6 +1596,6 @@
             if index == None: 
                 index = numpy.ones(len(data_copy.data),ntype=bool)
-            if self.weight != None:
-                data_copy.err_data = self.weight
+            if weight != None:
+                data_copy.err_data = weight
             # get rid of zero error points
             index = index & (data_copy.err_data != 0)  
@@ -1570,6 +1611,6 @@
             if index == None: 
                 index = numpy.ones(len(data_copy.y), ntype=bool)
-            if self.weight != None:
-                data_copy.dy = self.weight
+            if weight != None:
+                data_copy.dy = weight
             if data_copy.dy == None or data_copy.dy == []:
                 dy = numpy.ones(len(data_copy.y))
@@ -1591,9 +1632,10 @@
         # get chisqr only w/finite
         chisqr = numpy.average(residuals * residuals)
-        self._plot_residuals(page_id, data_copy, index)
+        self._plot_residuals(page_id=page_id, data=data_copy, 
+                             weight=weight, index=index)
         
         return chisqr
     
-    def _plot_residuals(self, page_id, data=None, index=None): 
+    def _plot_residuals(self, page_id, weight, data=None, index=None): 
         """
         Plot the residuals
@@ -1615,5 +1657,5 @@
             theory_data = self.page_finder[page_id].get_theory_data(fid=data_copy.id)
             gn = theory_data.data#[index]
-            en = self.weight#data_copy.err_data#[index]
+            en = weight#data_copy.err_data#[index]
             residuals.data = (fn - gn) / en 
             residuals.qx_data = data_copy.qx_data#[index]
@@ -1636,10 +1678,10 @@
                 dy = numpy.ones(len(data_copy.y))
             else:
-                if self.weight == None:
+                if weight == None:
                     dy = numpy.ones(len(data_copy.y))
                 ## Set consitently w/AbstractFitengine: 
                 ## But this should be corrected later.
                 else:
-                    dy = self.weight#deepcopy(data_copy.dy)
+                    dy = weight#deepcopy(data_copy.dy)
                 dy[dy==0] = 1  
             fn = data_copy.y[index] 
@@ -1673,8 +1715,9 @@
         ##post data to plot
         title = new_plot.name 
+        self.page_finder[page_id].set_residuals(residuals=new_plot, fid=data.id)
         # plot data
         wx.PostEvent(self.parent, NewPlotEvent(plot=new_plot, title=title)) 
         #reset weight  
-        self.weight = None
+        #self.weight = None
 #def profile(fn, *args, **kw):
 #    import cProfile, pstats, os
Index: fittingview/src/sans/perspectives/fitting/model_thread.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/model_thread.py	(revision 7e7e806d47f3dbc7bcfbd81a9b77a10dcf58eccb)
+++ fittingview/src/sans/perspectives/fitting/model_thread.py	(revision 62f851fb7213a06069ca007c15e29566808e052c)
@@ -17,4 +17,5 @@
     def __init__(self, data, model, smearer, qmin, qmax,  page_id,
                  state=None,
+                 weight=None,
                  toggle_mode_on=False,
                  completefn=None,
@@ -30,4 +31,5 @@
         self.qmin = qmin
         self.qmax = qmax
+        self.weight = weight
         #self.qstep = qstep
         self.toggle_mode_on = toggle_mode_on
@@ -104,4 +106,5 @@
                        qmin=self.qmin,
                        qmax=self.qmax,
+                       weight=self.weight,
                        #qstep=self.qstep,
                        update_chisqr = self.update_chisqr)
@@ -117,4 +120,5 @@
                  qmin=None,
                  qmax=None,
+                 weight=None,
                  smearer=None,
                  toggle_mode_on=False,
@@ -136,4 +140,5 @@
         self.qmax = qmax
         self.model = model
+        self.weight = weight
         self.toggle_mode_on = toggle_mode_on
         self.state = state
@@ -166,4 +171,5 @@
                       page_id=self.page_id,
                       state=self.state,
+                      weight=self.weight,
                       toggle_mode_on=self.toggle_mode_on,
                       elapsed=elapsed,index=index, model=self.model,
