Index: fittingview/src/sans/perspectives/fitting/basepage.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/basepage.py	(revision 55bb249cfad78559bfe82310564af7e4a22b6b1a)
+++ fittingview/src/sans/perspectives/fitting/basepage.py	(revision f7ef31311236fcfd239ee375aec92c5318a0275c)
@@ -1785,5 +1785,8 @@
                 if not self.disable_smearer.GetValue():
                     temp_smear= self.current_smearer
-            weight = self.get_weight()
+            # compute weight for the current data
+            from .utils import get_weight
+            flag = self.get_weight_flag()
+            weight = get_weight(data=self.data, is2d=self._is_2D(), flag=flag)
             toggle_mode_on = self.model_view.IsEnabled()
             self._manager.draw_model(self.model, 
Index: fittingview/src/sans/perspectives/fitting/fitpage.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/fitpage.py	(revision a0106acf4caae7bc1dd740bb8aa0a2d17d70bae5)
+++ fittingview/src/sans/perspectives/fitting/fitpage.py	(revision f7ef31311236fcfd239ee375aec92c5318a0275c)
@@ -1109,5 +1109,5 @@
         self._manager.schedule_for_fit(uid=self.uid,value=1) 
         self._manager.set_fit_weight(uid=self.uid, 
-                                     weight=self.get_weight(),
+                                     flag=self.get_weight_flag(),
                                      is2d = self._is_2D())
         self._manager.set_fit_range(uid=self.uid,qmin=self.qmin_x, 
@@ -1118,7 +1118,7 @@
         self.bind_fit_button()
            
-    def get_weight(self):
-        """
-        Get weighting dI data
+    def get_weight_flag(self):
+        """
+        Get flag corresponding to a given weighting dI data.
         """
         button_list = [self.dI_noweight,
@@ -1126,23 +1126,17 @@
                        self.dI_sqrdata,
                        self.dI_idata]
-        if self._is_2D():
-            dy_data = self.data.err_data 
-            data = self.data.data
-        else:
-            dy_data = self.data.dy
-            data = self.data.y
-        dy = dy_data
+        flag = 1
         for item in button_list:
             if item.GetValue():
                 if button_list.index(item) == 0:
-                    dy = numpy.ones_like(dy_data)
+                    flag = 0 #dy = numpy.ones_like(dy_data)
                 elif button_list.index(item) == 1:
-                    dy = dy_data
+                    flag = 1 #dy = dy_data
                 elif button_list.index(item) == 2:
-                    dy = numpy.sqrt(numpy.abs(data))
+                    flag = 2 #dy = numpy.sqrt(numpy.abs(data))
                 elif button_list.index(item) == 3:
-                    dy = numpy.abs(data)
+                    flag = 3 # dy = numpy.abs(data)
                 break
-        return dy
+        return flag
                 
     def bind_fit_button(self):
Index: fittingview/src/sans/perspectives/fitting/fitproblem.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/fitproblem.py	(revision 55bb249cfad78559bfe82310564af7e4a22b6b1a)
+++ fittingview/src/sans/perspectives/fitting/fitproblem.py	(revision f7ef31311236fcfd239ee375aec92c5318a0275c)
@@ -88,5 +88,5 @@
         :return: fitting range
         """
-    def set_weight(self, weight=None):
+    def set_weight(self, flag=None):
         """
         set fitting range 
@@ -330,5 +330,5 @@
             return self[fid].get_range()
         
-    def set_weight(self, weight, is2d, fid=None):
+    def set_weight(self,  is2d, flag=None, fid=None):
         """
         fit weight
@@ -336,8 +336,8 @@
         if fid is None:
             for value in self.itervalues():
-                value.set_weight(weight, is2d)
-        else:
-            if fid in self.iterkeys():
-                self[fid].value.set_weight(weight, is2d)
+                value.set_weight(flag=flag, is2d=is2d)
+        else:
+            if fid in self.iterkeys():
+                self[fid].set_weight(flag=flag, is2d=is2d)
                 
     def get_weight(self, fid=None):
@@ -487,5 +487,5 @@
         """
         self.fit_data = copy.deepcopy(data)
-            
+        
     def get_fit_data(self):
         """
@@ -494,9 +494,12 @@
         return self.fit_data
     
-    def set_weight(self, weight, is2d):
-        """
-        Set weight array
-        """
-        self.weight = weight
+    def set_weight(self, is2d, flag=None):
+        """
+        Received flag and compute error on data.
+        :param flag: flag to transform error of data.
+        :param is2d: flag to distinguish 1D to 2D Data
+        """
+        from .utils import get_weight
+        self.weight = get_weight(data=self.fit_data, is2d=is2d, flag=flag)
         if is2d:
             self.fit_data.err_data = self.weight
Index: fittingview/src/sans/perspectives/fitting/fitting.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/fitting.py	(revision 55bb249cfad78559bfe82310564af7e4a22b6b1a)
+++ fittingview/src/sans/perspectives/fitting/fitting.py	(revision f7ef31311236fcfd239ee375aec92c5318a0275c)
@@ -432,5 +432,5 @@
         self.state_reader.write(filename=filepath, fitstate=fitstate)
 
-    def set_fit_weight(self, uid, weight, is2d=False, fid=None):
+    def set_fit_weight(self, uid, flag, is2d=False, fid=None):
         """
         Set the fit weights of a given page for all
@@ -442,5 +442,5 @@
         """
         if uid in self.page_finder.keys():
-            self.page_finder[uid].set_weight(weight=weight, is2d=is2d)
+            self.page_finder[uid].set_weight(flag=flag, is2d=is2d)
                     
     def set_fit_range(self, uid, qmin, qmax, fid=None):
@@ -698,8 +698,8 @@
                         name = str(element[1])
                         pars.append(name)
-
                     for fitproblem in  value.get_fit_problem():
                         if sim_fitter is None:
                             fitter = Fit(self._fit_engine)  
+                            print "onfit id ", id(fitproblem)
                             self._fit_helper(fitproblem, pars, fitter, fit_id)
                             fitter_list.append(fitter) 
@@ -793,8 +793,9 @@
         if data_list is None:
             data_list = []
+        
         self.page_finder[uid].set_fit_data(data=data_list)
         if caption is not None:
             self.page_finder[uid].set_fit_tab_caption(caption=caption)
-        
+            
     def on_add_new_page(self, event=None):
         """
@@ -848,5 +849,4 @@
                     self.parent.update_data(prev_data=theory_data,
                                              new_data=data)   
-              
         self.store_data(uid=page.uid, data_list=page.get_data_list(), 
                         caption=page.window_caption)
Index: fittingview/src/sans/perspectives/fitting/utils.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/utils.py	(revision f7ef31311236fcfd239ee375aec92c5318a0275c)
+++ fittingview/src/sans/perspectives/fitting/utils.py	(revision f7ef31311236fcfd239ee375aec92c5318a0275c)
@@ -0,0 +1,27 @@
+"""
+Module contains functions frequently used in this package
+"""
+import numpy
+
+def get_weight(data, is2d, flag=None):
+    """
+    Received flag and compute error on data.
+    :param flag: flag to transform error of data.
+    :param is2d: flag to distinguish 1D to 2D Data
+    """
+    weight = None
+    if is2d:
+        dy_data = data.err_data 
+        data = data.data
+    else:
+        dy_data = data.dy
+        data = data.y
+    if flag == 0:
+        weight = numpy.ones_like(dy_data)
+    elif flag == 1:
+        weight = dy_data
+    elif flag == 2:
+        self.weight = numpy.sqrt(numpy.abs(data))
+    elif flag == 3:
+        weight = numpy.abs(data)
+    return weight
