Index: src/sas/sasgui/perspectives/fitting/basepage.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/basepage.py	(revision 08959b8e12a0d4507d8caf4d0c2fa16895cc176b)
+++ src/sas/sasgui/perspectives/fitting/basepage.py	(revision cb4ef58d8aabd8393aae14823d3fa98d1ba0c1a2)
@@ -1896,5 +1896,5 @@
                 for model in self.model_list_box[mod_cat]:
                     if 'sasmodels.sasview_model.' in str(model):
-                        str_m = model._model_info['id']
+                        str_m = model.id
                     else:
                         str_m = str(model).split(".")[0]
@@ -1945,9 +1945,6 @@
         mlist = []
         for models in list:
-            model = models()
-            name = model.__class__.__name__
-            if models.__name__ != "NoStructure":
-                name = model.name
-                mlist.append((name, models))
+            if models.name != "NoStructure":
+                mlist.append((models.name, models))
 
         # Sort the models
@@ -2099,13 +2096,12 @@
         if form_factor != None:
             # set multifactor for Mutifunctional models
-            if form_factor().__class__ in \
-                                        self.model_list_box["Multi-Functions"]:
+            if form_factor.is_multiplicity_model:
                 m_id = self.multifactorbox.GetCurrentSelection()
-                multiplicity = form_factor().multiplicity_info[0]
+                multiplicity = form_factor.multiplicity_info[0]
                 self.multifactorbox.Clear()
                 self._set_multfactor_combobox(multiplicity)
                 self._show_multfactor_combobox()
                 #ToDo:  this info should be called directly from the model
-                text = form_factor().multiplicity_info[1]  # 'No. of Shells: '
+                text = form_factor.multiplicity_info[1]  # 'No. of Shells: '
 
                 self.mutifactor_text.SetLabel(text)
@@ -2117,5 +2113,4 @@
                 if self.multi_factor == None:
                     self.multi_factor = 0
-                form_factor = form_factor(int(self.multi_factor))
                 self.multifactorbox.SetSelection(m_id)
                 # Check len of the text1 and max_multiplicity
@@ -2131,9 +2126,7 @@
                 else:
                     self.sld_axes = ""
-
             else:
                 self._hide_multfactor_combobox()
                 self.show_sld_button.Hide()
-                form_factor = form_factor()
                 self.multi_factor = None
         else:
@@ -2147,14 +2140,15 @@
         if  struct_factor != None:
             from sas.sascalc.fit.MultiplicationModel import MultiplicationModel
-            self.model = MultiplicationModel(form_factor, struct_factor())
+            self.model = MultiplicationModel(form_factor(self.multi_factor),
+                                             struct_factor())
             # multifunctional form factor
             if len(form_factor.non_fittable) > 0:
                 self.temp_multi_functional = True
+        elif form_factor != None:
+            self.model = form_factor(self.multi_factor)
         else:
-            if form_factor != None:
-                self.model = form_factor
-            else:
-                self.model = None
-                return self.model
+            self.model = None
+            return
+
         # check if model has magnetic parameters
         if len(self.model.magnetic_params) > 0:
@@ -2286,5 +2280,5 @@
                 parameter's error of fit,
                 parameter's minimum value,
-                parrameter's maximum value ,
+                parameter's maximum value ,
                 parameter's units]
         """
Index: src/sas/sasgui/perspectives/fitting/fitpage.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/fitpage.py	(revision f27dd1ed757e8dc111d10a240924069ada18311f)
+++ src/sas/sasgui/perspectives/fitting/fitpage.py	(revision cb4ef58d8aabd8393aae14823d3fa98d1ba0c1a2)
@@ -10,4 +10,7 @@
 import math
 import time
+
+from sasmodels.weights import MODELS as POLYDISPERSITY_MODELS
+
 from sas.sasgui.guiframe.events import StatusEvent
 from sas.sasgui.guiframe.events import NewPlotEvent
@@ -621,8 +624,4 @@
         model_disp = wx.StaticText(self, wx.ID_ANY, 'Function')
         CHECK_STATE = self.cb1.GetValue()
-        #import sas.models.dispersion_models
-        #self.polydisp = sas.models.dispersion_models.models
-        import sasmodels.weights
-        self.polydisp =  sasmodels.weights.models
 
         ix = 0
@@ -784,5 +783,5 @@
                 disp_box = wx.ComboBox(self, wx.ID_ANY, size=(65, -1),
                                        style=wx.CB_READONLY, name='%s' % name1)
-                for key, value in self.polydisp.iteritems():
+                for key, value in POLYDISPERSITY_MODELS.iteritems():
                     name_disp = str(key)
                     disp_box.Append(name_disp, value)
@@ -948,5 +947,5 @@
                 disp_box = wx.ComboBox(self, wx.ID_ANY, size=(65, -1),
                                 style=wx.CB_READONLY, name='%s' % name1)
-                for key, value in self.polydisp.iteritems():
+                for key, value in POLYDISPERSITY_MODELS.iteritems():
                     name_disp = str(key)
                     disp_box.Append(name_disp, value)
Index: src/sas/sasgui/perspectives/fitting/models.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/models.py	(revision dcdca68c0f77f5a29020315700f362c344b3f207)
+++ src/sas/sasgui/perspectives/fitting/models.py	(revision cb4ef58d8aabd8393aae14823d3fa98d1ba0c1a2)
@@ -296,13 +296,13 @@
         #Build list automagically from sasmodels package
         for model in load_standard_models():
-            self.model_dictionary[model._model_info['name']] = model
-            if model._model_info['structure_factor'] == True:
+            self.model_dictionary[model.name] = model
+            if model.is_structure_factor:
                 self.struct_list.append(model)
-            if model._model_info['variant_info'] is not None:
+            if model.is_form_factor:
+                self.multiplication_factor.append(model)
+            if model.is_multiplicity_model:
                 self.multi_func_list.append(model)
             else:
-                self.model_name_list.append(model._model_info['name'])
-            if model._model_info['ER'] is not None:
-                self.multiplication_factor.append(model)
+                self.model_name_list.append(model.name)
 
         #Looking for plugins
@@ -387,12 +387,6 @@
         Get the multifunctional models
         """
-        for item in self.plugins:
-            try:
-                # check the multiplicity if any
-                if item.multiplicity_info[0] > 1:
-                    self.multi_func_list.append(item)
-            except:
-                # pass to other items
-                pass
+        items = [item for item in self.plugins if item.is_multiplicity_model]
+        self.multi_func_list = items
 
     def get_model_list(self):
