Index: sansview/perspectives/fitting/basepage.py
===================================================================
--- sansview/perspectives/fitting/basepage.py	(revision 66ff25070134c0c0c680c52e02ee279ffccc378f)
+++ sansview/perspectives/fitting/basepage.py	(revision 9466f2d6a8ec770363ff314de3d4768470b1a6f6)
@@ -1818,5 +1818,4 @@
         Fill panel's combo box according to the type of model selected
         """
-        self.model_list_box = self.parent.update_model_list()
         if self.shape_rbutton.GetValue():
             ##fill the combobox with form factor list
Index: sansview/perspectives/fitting/fitpage.py
===================================================================
--- sansview/perspectives/fitting/fitpage.py	(revision 9a22655468a451f6cfac464409c66e62177ad33e)
+++ sansview/perspectives/fitting/fitpage.py	(revision 9466f2d6a8ec770363ff314de3d4768470b1a6f6)
@@ -50,5 +50,7 @@
         self._set_bookmark_flag(False)
         self._set_save_flag(False)
-
+    
+  
+        
     def _on_fit_complete(self):
         """
@@ -532,4 +534,5 @@
         self.initialize_combox()
         wx.EVT_COMBOBOX(self.formfactorbox, -1, self._on_select_model)
+
         wx.EVT_COMBOBOX(self.structurebox, -1, self._on_select_model)
         wx.EVT_COMBOBOX(self.multifactorbox, -1, self._on_select_model)
@@ -997,7 +1000,5 @@
         call back for model selection
         """  
-        if self.plugin_rbutton.GetValue():
-            self._show_combox_helper()
-            print "went here"
+        
             
         self._on_select_model_helper() 
@@ -1059,5 +1060,16 @@
             event = PageInfoEvent(page = self)
             wx.PostEvent(self.parent, event) 
+            #update list of plugins if new plugin is available
+            if self.plugin_rbutton.GetValue():
+                temp = self.parent.update_model_list()
+                if temp:
+                    self.model_list_box = temp
+                    current_val = self.formfactorbox.GetValue()
+                    pos = self.formfactorbox.GetSelection()
+                    self._show_combox_helper()
+                    self.formfactorbox.SetSelection(pos)
+                    self.formfactorbox.SetValue(current_val)
         self.SetupScrolling()
+    
       
     def _onparamEnter(self,event):
Index: sansview/perspectives/fitting/fitpanel.py
===================================================================
--- sansview/perspectives/fitting/fitpanel.py	(revision 66ff25070134c0c0c680c52e02ee279ffccc378f)
+++ sansview/perspectives/fitting/fitpanel.py	(revision 9466f2d6a8ec770363ff314de3d4768470b1a6f6)
@@ -78,6 +78,8 @@
         """
         """
-        self.model_list_box = self.menu_mng.update()
-        return self.model_list_box
+        temp = self.menu_mng.update()
+        if len(temp):
+            self.model_list_box = temp
+        return temp
         
         
Index: sansview/perspectives/fitting/fitting.py
===================================================================
--- sansview/perspectives/fitting/fitting.py	(revision 58e0c83b06bd83e2ec0b20ea6725239ec020d0fc)
+++ sansview/perspectives/fitting/fitting.py	(revision 9466f2d6a8ec770363ff314de3d4768470b1a6f6)
@@ -69,5 +69,5 @@
         self.calc_1D = None
         self.fit_thread_list = {}
-        
+        self.fit_panel = None
         # Start with a good default
         self.elapsed = 0.022
Index: sansview/perspectives/fitting/models.py
===================================================================
--- sansview/perspectives/fitting/models.py	(revision 9a22655468a451f6cfac464409c66e62177ad33e)
+++ sansview/perspectives/fitting/models.py	(revision 9466f2d6a8ec770363ff314de3d4768470b1a6f6)
@@ -3,17 +3,19 @@
 import wx.lib.newevent
 import imp
-import os,sys,math
+import os
+import sys
+import math
 import os.path
-
-(ModelEvent, EVT_MODEL) = wx.lib.newevent.NewEvent()
-from sans.guiframe.events import StatusEvent  
 # Time is needed by the log method
 import time
 
+from sans.guiframe.events import StatusEvent  
 # Explicitly import from the pluginmodel module so that py2exe
 # places it in the distribution. The Model1DPlugin class is used
 # as the base class of plug-in models.
 from sans.models.pluginmodel import Model1DPlugin
-    
+   
+PLUGIN_DIR = 'plugins' 
+
 def log(message):
     """
@@ -23,12 +25,5 @@
     out.close()
 
-def findModels():
-    """
-    """
-    log("looking for models in: %s/plugins" % os.getcwd())
-    if os.path.isdir('plugins'):
-        return _findModels('plugins')
-    return []
-    
+
 def _check_plugin(model, name):
     """
@@ -82,7 +77,4 @@
     try:
         list = os.listdir(dir)
-        #always recompile the folder plugin
-        import compileall
-        compileall.compile_dir(dir, force=1)
         for item in list:
             toks = os.path.splitext(os.path.basename(item))
@@ -166,4 +158,6 @@
     ## Event owner (guiframe)
     event_owner = None
+    last_time_dir_modified = 0
+    
     def __init__(self):
         """
@@ -172,4 +166,18 @@
         self._getModelList()
         
+    def findModels(self):
+        """
+        find  plugin model in directory of plugin .recompile all file
+        in the directory if file were modified
+        """
+        if self.is_changed():
+            #always recompile the folder plugin
+            import compileall
+            compileall.compile_dir(dir=PLUGIN_DIR, force=1)
+            log("looking for models in: %s/plugins" % os.getcwd())
+            return _findModels(PLUGIN_DIR)
+        return  {}
+       
+    
     def _getModelList(self):
         """
@@ -392,5 +400,5 @@
     
         #Looking for plugins
-        self.stored_plugins = findModels()
+        self.stored_plugins = self.findModels()
         self.plugins = self.stored_plugins.values()
         self.plugins.append(ReflectivityModel)
@@ -400,15 +408,32 @@
         return 0
 
+    def is_changed(self):
+        """
+        check the last time the plugin dir has changed and return true
+         is the directory was modified else return false
+        """
+        is_modified = False
+        if os.path.isdir(PLUGIN_DIR):
+            temp =  os.path.getmtime(PLUGIN_DIR)
+            if  self.last_time_dir_modified != temp:
+                is_modified = True
+                self.last_time_dir_modified = temp
+        return is_modified
     
     def update(self):
         """
-        """
-        new_plugins = findModels()
-        for name, plug in  new_plugins.iteritems():
-            if name not in self.stored_plugins.keys():
-                self.stored_plugins[name] = plug
-                self.plugins.append(plug)
-        self.model_combobox.set_list("Customized Models", self.plugins)
-        return self.model_combobox.get_list()
+        return a dictionary of model if 
+        new models were added else return empty dictionary
+        """
+        new_plugins = self.findModels()
+        if len(new_plugins) > 0:
+            for name, plug in  new_plugins.iteritems():
+                if name not in self.stored_plugins.keys():
+                    self.stored_plugins[name] = plug
+                    self.plugins.append(plug)
+            self.model_combobox.set_list("Customized Models", self.plugins)
+            return self.model_combobox.get_list()
+        else:
+            return {}
         
     def populate_menu(self, modelmenu, event_owner):
