Index: docs/sphinx-docs/build_sphinx.py
===================================================================
--- docs/sphinx-docs/build_sphinx.py	(revision c2ee2b18535ece303393580afde15b6413469048)
+++ docs/sphinx-docs/build_sphinx.py	(revision 9bf64f65441fe276eb820729b6f98aa17921310c)
@@ -1,2 +1,3 @@
+#!/usr/bin/env python
 """
 Functions for building sphinx docs.
@@ -148,3 +149,3 @@
 
 if __name__ == "__main__":
-    main()
+    rebuild()
Index: sasmodels/setup.py
===================================================================
--- sasmodels/setup.py	(revision 3a39c2e89f90377b2d15fa13b9ba9cf3b4144070)
+++ sasmodels/setup.py	(revision 038ccfe6ad2eb536e4120eb8a5bcd1c584ed0260)
@@ -111,7 +111,7 @@
     version = VERSION,
     description = "Python module for SAS scattering models",
-    author = "SAS/DANSE",
-    author_email = "sansdanse@gmail.gov",
-    url = "http://sansviewproject.svn.sourceforge.net",
+    author = "SasView Team",
+    author_email = "developers@sasview.org",
+    url = "https://github.com/SasView/sasview.git",
     
     # Place this module under the sas package
Index: sasview/README.txt
===================================================================
--- sasview/README.txt	(revision 794922220f2fb3b23dd08c648aabf87b4850596c)
+++ sasview/README.txt	(revision 74d5dbf509677829a210bfc064d4a7857c1b30f8)
@@ -2,22 +2,71 @@
 =============
 
-SasView 3.0.0
-
-    - The GUI look and feel has been refactored to be more familiar for Windows
-      users by using MDI frames. Graph windows are also now free-floating
-    - Five new models have been added: PringlesModel, CoreShellEllipsoidXTModel,
-      RectangularPrismModel, RectangularHollowPrismModel and 
-      RectangularHollowPrismInfThinWallsModel
-    - The data loader now supports ILL DAT data files and reads the full meta 
-      information from canSAS file formats
-    - Redefined convention for specifying angular parameters for anisotropic models
-    - A number of minor features have been added such as permitting a log 
-      distribution of points when using a model to simulate data, and the 
-      addition of a Kratky plot option to the linear plots
-    - A number of bugs have also been fixed
-    - Save Project and Save Analysis now work more reliably
-    - BETA: Magnetic contrast supporting full polarization analysis has been 
-            implemented for some spherical and cylindrical models
-    - BETA: Two new tools have been added:
+SasView 3.1.0
+    -The documentation/help has had a complete overhaul including
+      - A completely new interface.
+      - The text has had a clean-up and been brought up to date with the latest
+        features.
+      - A Help (or sometimes ?) button has been added to every panel, and some
+        sub panels if appropriate, linking to the appropriate section in the
+        documentation.
+      - The model help has been split so that the details button now brings up
+        a very short pop-up giving the equation being used while HELP goes to 
+        the section in the full documentation describing the model.
+      - Extensive help has also been added for the new optimizer engine (see 
+        below) including rules of thumb on how and when to choose a given
+        optimizer and what the parameter do.
+    - The optimizer package has been completely replaced.  The new optimizer
+      still defaults to the standard Levenberg-Marquardt algorithm.  However 4
+      other optimizers are now available. Each starts with a set of default
+      parameters which can be tuned.  The DREAM optimizer takes the longest but
+      is the most powerful and yields rich information including full parameter
+      correlation and uncertainty plots.  A results panel has been added to
+      accommodate this.  The five optimizers are:
+      - A Levenberg-Marquardt optimizer
+      - A Quasi-Newton BFGS optimizer
+      - A Nelder-Mead Simplex optimizer
+      - A Differential Evolution optimizer
+      - A Monte Carlo optimizer DREAM optimizer 
+    - Several new models added (what are they)
+    - Infrastructure to allow SESANS data to bit fit with models in a future
+      release was added and can currently be used from command line with some
+      caveats.
+    - A number of bugs were fixed including a thread crashing issue and a
+      incorrect resolution slit smearing.
+    - Implemented much more robust error logging to better enable much easier
+      debugging in general and particularly debugging an issue reported by
+      SasView user.
+    - A number of infrastructure tasks under the hood to enhance maintainability
+      - Upgrade from Wx 2.9 to 3.0.2 which allows several new features but
+        required significant other rework as well.
+      - Fully implemented Sphinx to the build process to produce both better
+        user documentation and developer documentation.
+      - Restructuring of code base to more unified nomenclature and structure
+        so that source installation tree more closely matches the installer
+        version tree.
+      - Code cleanup (an ongoing task) 
+      - Migration of repository to github simplifying contributions from
+        non-project personnel through pull requests
+
+
+    - New in Version 3.0.0
+      - The GUI look and feel has been refactored to be more familiar for
+        Windows users by using MDI frames. Graph windows are also now free-
+        floating.
+      - Five new models have been added: PringlesModel, CoreShellEllipsoidXTModel,
+        RectangularPrismModel, RectangularHollowPrismModel and 
+        RectangularHollowPrismInfThinWallsModel.
+      - The data loader now supports ILL DAT data files and reads the full meta 
+        information from canSAS file formats.
+      - Redefined convention for specifying angular parameters for anisotropic
+        models.
+      - A number of minor features have been added such as permitting a log 
+        distribution of points when using a model to simulate data, and the 
+        addition of a Kratky plot option to the linear plots.
+      - A number of bugs have also been fixed.
+      - Save Project and Save Analysis now work more reliably.
+      - BETA: Magnetic contrast supporting full polarization analysis has been 
+            implemented for some spherical and cylindrical models.
+      - BETA: Two new tools have been added:
             * A generic scattering calculator which takes an atomic, magnetic or 
               SLD distribution in space and generates the appropriate 2D 
@@ -28,5 +77,5 @@
             * An image viewer/converter for data in image format; this reads in 
               an image file and will attempt to convert the image pixels to 
-              data. Supported formats include: TIFF, TIF, PNG, BMP, JPG
+              data. Supported formats include: TIFF, TIF, PNG, BMP, JPG.
 
     - New in Version 2.2.1
@@ -180,44 +229,44 @@
     2.1- System Requirements:
         - Python version >= 2.5 and < 3.0 should be running on the system
-        - We currently use Python 2.6
+        - We currently use Python 2.7
 
     2.2- Installing from source:
-        - Get the code from sourceforge at https://svn.code.sf.net/p/sasview/code/
-          for trunk end with code/trunk for a this release version end in 
-          code/releases/sasview-3.0.0
+        - Get the code from sourceforge at https://github.com/SasView/sasview.git
+          for this release version use: https://github.com/SasView/sasview/releases
             - run 'python setup.py install' under the 'sasview-x.x.x' folder
             - run 'python sasview.py' under the 'sasview' folder.
-        - The following modules are required (version numbers are what are used in the release build):
-            - wxPython 2.8.12.1 (NOTE: do NOT use version 2.9)
-            - matplotlib 1.1.0
-            - SciPy 0.10.1 (NOTE: Mac build uses 0.10.0)
-            - pisa 3.0.27 (DO NOT USE ver 3.0.33 on windows: it will not work!)
-            - setuptools 0.6c11
-
-            (The following three are easily installed using easy_install)
-            - lxml 2.3.0.0 (NOTE: Mac build uses 3.1.0.0)
-            - numpy 1.6.1 (NOTE: Mac build uses version 1.6.2)
-            - periodictable 1.3.0
+        - The following modules are required (version numbers are what are used
+          in the windows release build):
+        - Common Packages
+          - reportlab 3.1.44
+          - lxml 3.4.4.0 (MAC 3.4.2.0)
+          - PIL 1.1.7
+          - xhtml2pdf 3.0.33 (MAC = not installed on build server)
+          - unittest-xml-reporting 1.12.0 (MAC 1.10.0)
+          - matplotlib Version Installed: 1.4.3 (MAC 1.1.1)
+          - bumps Version Installed: 0.7.5.6
+          - scipy Version Installed: 0.16.0b2 (MAC 0.11.0)
+          - periodictable Version Installed: 1.4.1
+          - setuptools Version Installed: 7.0 (MAC 12.0.5)
+          - sphinx Version Installed: 1.3.1 (MAC 1.3b2)
+          - pyparsing Version Installed: 2.0.3
+          - numpy Version Installed: 1.9.2 (MAC 1.6.2)
+          - html5lib Version Installed: 0.99999
+          - wx Version Installed: 3.0.2.0
+          
+
+        - Windows Specific Packages:
+          - pywin 219
+          - py2exe 0.6.9
+          - comtypes 1.1.1
+          - MinGW w/ gcc version 4.6.1 (WIN)
+          - vcredist_x86.exe (version 9.0.21022.8  -microsoft visual C 2008 
+              re-distributable)
+          - Innosetup (WIN - isetup 5.4.2-unicode) - used to create distributalbe
             
-            (The following are additional dependencies for Mac)
-            - py2app 0.7.1
-            
-            (The following are additional dependencies for Windows)
-            - comtypes 0.6.2 (for PDF support on windows systems)
-            - pywin32 build 217 (to read ms office)
-            - html5lib 0.95-dev
-            - reportlab 2.5 (NOTE: Mab build uses 2.6 though should not be needed)
-            - pyparsing 1.5.5 (required for periodictable and bundling
-              NOTE: is ALSO present on Mac Build)
-            - PIL 1.1.7 (Python Image Library - NOTE: is also present on Mac build)
-            - py2exe 0.6.9 (WIN)
-            - vcredist_x86.exe (version 9.0.21022.8  -microsoft visual C 2008 
-              re-distributable)
-            - subversion -1.6.0 (<1.6.1)
-            - MinGW w/ gcc version 4.6.1 (WIN)
-            - Innosetup (WIN - isetup 5.4.2-unicode).
-            
-            (On Windows, the following site has all the dependencies nicely packaged)
-            http://www.lfd.uci.edu/~gohlke/pythonlibs/
+        - MAC Specifci Packages:
+          - py2app 0.7.1
+        - Windows build dependencies can be set up using anaconda. Instructions
+          can be found at http://trac.sasview.org/wiki/AnacondaSetup
 
 
@@ -225,11 +274,19 @@
 
     3.1- All systems:
-        - very old computers may not be able to run
-        - polydispersity on multiple parameters included in a simultaneous/
+        - Tutorial has not yet been updated and is somewhat out of date
+        - Very old computers may not be able to run
+        - Polydispersity on multiple parameters included in a simultaneous/
           constrained fit will likely not be correct
+        - Constrained/simultaneous fit page does not have a stop button
+        - Constrained/simultaneous fit do not accept min/max limits
         - Save project does not store the state of all the windows
         - Loading projects can be very slow
         - Save Project only works once a data set has been associated with
           a model.  Error is reported on status bar.
+        - There is a numerical precision problem with the multishell model when
+          the iner radius gets large enough (ticket #288)
+        - The angular distribution angles are not clearly defined and may in
+          some cases lead to incorrect calculations(ticket #332)
+          
 
     3.2- Windows:
@@ -244,5 +301,5 @@
 		
     3.4- Linux:
-        - None
+        - Not well tested
 
 4- SasView website
Index: sasview/local_config.py
===================================================================
--- sasview/local_config.py	(revision 0ea31caa7c7dff8f23817dfa04e8be1d9dd3f8d8)
+++ sasview/local_config.py	(revision c8d22ec00ac8fa409845988c552db80f8f87b95c)
@@ -12,7 +12,6 @@
 __version__ = sas.sasview.__version__
 __build__ = sas.sasview.__build__
-__download_page__ = 'http://sourceforge.net/projects/sasview/files/'
-__update_URL__ = ['svn.code.sf.net', 
-                  '/p/sasview/code/trunk/sasview.latestversion']
+__download_page__ = 'https://github.com/SasView/sasview/releases'
+__update_URL__ = ['https://github.com/SasView/sasview.git']
 
 
@@ -24,5 +23,5 @@
 
 # Debug message should be written to a file?
-__EVT_DEBUG_2_FILE__   = False
+__EVT_DEBUG_2_FILE__ = False
 __EVT_DEBUG_FILENAME__ = "debug.log"
 
@@ -39,12 +38,14 @@
 '''Reference the following website: http://www.sasview.org'''
 _acknowledgement_preamble_bullet3 =\
-'''Send us your reference for our records: sansdanse@gmail.com'''
+'''Reference the model you used if appropriate (see documentation for refs)'''
+_acknowledgement_preamble_bullet4 =\
+'''Send us your reference for our records: developers@sasview.org'''
 _acknowledgement_publications = \
-'''This work benefited from the use of the SasView application, originally 
+'''This work benefited from the use of the SasView application, originally
 developed under NSF award DMR-0520547.
 '''
 _acknowledgement =  \
 '''This work originally developed as part of the DANSE project funded by the NSF
-under grant DMR-0520547, and currently maintained by NIST, UMD, ORNL, ISIS, ESS 
+under grant DMR-0520547, and currently maintained by NIST, UMD, ORNL, ISIS, ESS
 and ILL.
 
@@ -60,5 +61,5 @@
 logging.info("icon path: %s" % icon_path)
 media_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "media"))
-test_path =  os.path.abspath(os.path.join(os.path.dirname(__file__), "test"))
+test_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "test"))
 
 _nist_logo = os.path.join(icon_path, "nist_logo.png")
@@ -92,12 +93,12 @@
 PLUGIN_STATE_EXTENSIONS = ['.fitv', '.inv', '.prv']
 PLUGINS_WLIST = ['Fitting files (*.fitv)|*.fitv',
-                  'Invariant files (*.inv)|*.inv',
-                  'P(r) files (*.prv)|*.prv']
+                 'Invariant files (*.inv)|*.inv',
+                 'P(r) files (*.prv)|*.prv']
 PLOPANEL_WIDTH = 415
 PLOPANEL_HEIGTH = 370
 DATAPANEL_WIDTH = 235
 DATAPANEL_HEIGHT = 700
-SPLASH_SCREEN_PATH = os.path.join(icon_path,"SVwelcome_mini.png")
-TUTORIAL_PATH = os.path.join(media_path,"Tutorial.pdf")
+SPLASH_SCREEN_PATH = os.path.join(icon_path, "SVwelcome_mini.png")
+TUTORIAL_PATH = os.path.join(media_path, "Tutorial.pdf")
 DEFAULT_STYLE = GUIFRAME.MULTIPLE_APPLICATIONS|GUIFRAME.MANAGER_ON\
                     |GUIFRAME.CALCULATOR_ON|GUIFRAME.TOOLBAR_ON
@@ -105,5 +106,5 @@
 SPLASH_SCREEN_HEIGHT = 366
 SS_MAX_DISPLAY_TIME = 2000
-WELCOME_PANEL_ON  = True
+WELCOME_PANEL_ON = True
 WELCOME_PANEL_SHOW = False
 CLEANUP_PLOT = False
@@ -131,9 +132,11 @@
 def printEVT(message):
     if __EVT_DEBUG__:
+        """
+        :TODO - Need method doc string
+        """
         print "%g:  %s" % (time.clock(), message)
-        
+
         if __EVT_DEBUG_2_FILE__:
             out = open(__EVT_DEBUG_FILENAME__, 'a')
             out.write("%10g:  %s\n" % (time.clock(), message))
             out.close()
-            
Index: setup.py
===================================================================
--- setup.py	(revision c2ee2b18535ece303393580afde15b6413469048)
+++ setup.py	(revision 038ccfe6ad2eb536e4120eb8a5bcd1c584ed0260)
@@ -375,10 +375,10 @@
     version = VERSION,
     description = "SasView application",
-    author = "University of Tennessee",
-    author_email = "sansdanse@gmail.com",
+    author = "SasView Team",
+    author_email = "developers@sasview.org",
     url = "http://sasview.org",
     license = "PSF",
     keywords = "small-angle x-ray and neutron scattering analysis",
-    download_url = "https://sourceforge.net/projects/sansviewproject/files/",
+    download_url = "https://github.com/SasView/sasview.git",
     package_dir = package_dir,
     packages = packages,
Index: src/sas/guiframe/acknowledgebox.py
===================================================================
--- src/sas/guiframe/acknowledgebox.py	(revision 0ea31caa7c7dff8f23817dfa04e8be1d9dd3f8d8)
+++ src/sas/guiframe/acknowledgebox.py	(revision c8d22ec00ac8fa409845988c552db80f8f87b95c)
@@ -21,43 +21,46 @@
       (os.path.isfile("%s/%s.pyc" % (path, 'local_config'))):
         fObj, path, descr = imp.find_module('local_config', [path])
-        config = imp.load_module('local_config', fObj, path, descr)  
+        config = imp.load_module('local_config', fObj, path, descr)
     else:
         # Try simply importing local_config
         import local_config as config
 except:
-    # Didn't find local config, load the default 
+    # Didn't find local config, load the default
     import config
-    
+
 
 class DialogAcknowledge(wx.Dialog):
     """
     "Acknowledgement" Dialog Box
-    
+
     Shows the current method for acknowledging SasView in
     scholarly publications.
-    
+
     """
-    
+
     def __init__(self, *args, **kwds):
-        
+
         kwds["style"] = wx.DEFAULT_DIALOG_STYLE
         wx.Dialog.__init__(self, *args, **kwds)
-        
+
         self.ack = wx.TextCtrl(self, style=wx.TE_LEFT|wx.TE_MULTILINE|wx.TE_BESTWRAP|wx.TE_READONLY|wx.TE_NO_VSCROLL)
         self.ack.SetValue(config._acknowledgement_publications)
-        self.ack.SetMinSize((-1,55))
+        self.ack.SetMinSize((-1, 55))
         self.preamble = wx.StaticText(self, -1, config._acknowledgement_preamble)
         items = [config._acknowledgement_preamble_bullet1,
                  config._acknowledgement_preamble_bullet2,
-                 config._acknowledgement_preamble_bullet3]
+                 config._acknowledgement_preamble_bullet3,
+                 config._acknowledgement_preamble_bullet4]
         self.list1 = wx.StaticText(self, -1, "\t(1) " + items[0])
         self.list2 = wx.StaticText(self, -1, "\t(2) " + items[1])
         self.list3 = wx.StaticText(self, -1, "\t(3) " + items[2])
+        self.list4 = wx.StaticText(self, -1, "\t(4) " + items[3])
         self.static_line = wx.StaticLine(self, 0)
         self.__set_properties()
         self.__do_layout()
-        
+
     def __set_properties(self):
         """
+        :TODO - add method documentation
         """
         # begin wxGlade: DialogAbout.__set_properties
@@ -70,4 +73,5 @@
     def __do_layout(self):
         """
+        :TODO - add method documentation
         """
         # begin wxGlade: DialogAbout.__do_layout
@@ -78,4 +82,5 @@
         sizer_titles.Add(self.list2, 0, wx.ALL|wx.EXPAND, 5)
         sizer_titles.Add(self.list3, 0, wx.ALL|wx.EXPAND, 5)
+        sizer_titles.Add(self.list4, 0, wx.ALL|wx.EXPAND, 5)
         sizer_titles.Add(self.static_line, 0, wx.ALL|wx.EXPAND, 0)
         sizer_titles.Add(self.ack, 0, wx.ALL|wx.EXPAND, 5)
@@ -86,12 +91,14 @@
         self.Centre()
         # end wxGlade
-        
+
 
 ##### testing code ############################################################
 class MyApp(wx.App):
     """
+    Class for running module as stand alone for testing
     """
     def OnInit(self):
         """
+        Defines an init when running as standalone
         """
         wx.InitAllImageHandlers()
Index: src/sas/guiframe/config.py
===================================================================
--- src/sas/guiframe/config.py	(revision 0ea31caa7c7dff8f23817dfa04e8be1d9dd3f8d8)
+++ src/sas/guiframe/config.py	(revision c8d22ec00ac8fa409845988c552db80f8f87b95c)
@@ -9,7 +9,6 @@
 __version__ = '0.0.0'
 __build__ = '1'
-__download_page__ = 'http://sourceforge.net/projects/sasview/files/'
-__update_URL__ = ['svn.code.sf.net', 
-                  '/p/sasview/code/trunk/sasview.latestversion']
+__download_page__ = 'https://github.com/SasView/sasview/releases'
+__update_URL__ = ['https://github.com/SasView/sasview.git']
 
 
@@ -21,5 +20,5 @@
 
 # Debug message should be written to a file?
-__EVT_DEBUG_2_FILE__   = False
+__EVT_DEBUG_2_FILE__ = False
 __EVT_DEBUG_FILENAME__ = "debug.log"
 
@@ -36,12 +35,14 @@
 '''Reference the following website: http://www.sasview.org'''
 _acknowledgement_preamble_bullet3 =\
-'''Send us your reference for our records: sansdanse@gmail.com'''
+'''Reference the model you used if appropriate (see documentation for refs)'''
+_acknowledgement_preamble_bullet4 =\
+'''Send us your reference for our records: developers@sasview.org'''
 _acknowledgement_publications = \
-'''This work benefited from the use of the SasView application, originally 
+'''This work benefited from the use of the SasView application, originally
 developed under NSF award DMR-0520547.
 '''
 _acknowledgement =  \
 '''This work originally developed as part of the DANSE project funded by the NSF
-under grant DMR-0520547, and currently maintained by NIST, UMD, ORNL, ISIS, ESS 
+under grant DMR-0520547, and currently maintained by NIST, UMD, ORNL, ISIS, ESS
 and ILL.
 
@@ -85,9 +86,9 @@
 PLUGINS_WLIST = []
 PLUGIN_STATE_EXTENSIONS = []
-SPLASH_SCREEN_PATH = "images/danse_logo.png"     
+SPLASH_SCREEN_PATH = "images/danse_logo.png"
 DEFAULT_STYLE = GUIFRAME.SINGLE_APPLICATION
 SPLASH_SCREEN_WIDTH = 500
 SPLASH_SCREEN_HEIGHT = 300
-WELCOME_PANEL_ON  = False
+WELCOME_PANEL_ON = False
 TUTORIAL_PATH = None
 SS_MAX_DISPLAY_TIME = 1500
@@ -125,7 +126,10 @@
 
 def printEVT(message):
+    """
+    :TODO - need method documentation
+    """
     if __EVT_DEBUG__:
         print "%g:  %s" % (time.clock(), message)
-        
+    
         if __EVT_DEBUG_2_FILE__:
             out = open(__EVT_DEBUG_FILENAME__, 'a')
Index: src/sas/guiframe/data_processor.py
===================================================================
--- src/sas/guiframe/data_processor.py	(revision c85b0ae0ed862eeffd68ad25ce24f39467d52033)
+++ src/sas/guiframe/data_processor.py	(revision e54dbc3e09fa34ae993dfe14522c13c8bb50e315)
@@ -141,5 +141,5 @@
         self.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.OnLeftClick)
         self.Bind(wx.grid.EVT_GRID_CELL_RIGHT_CLICK, self.OnRightClick)
-        self.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK, self.OnLeftDoubleClick)
+        #self.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK, self.OnLeftDoubleClick)
         self.Bind(wx.grid.EVT_GRID_RANGE_SELECT, self.OnRangeSelect)
         self.Bind(wx.grid.EVT_GRID_ROW_SIZE, self.OnRowSize)
@@ -187,10 +187,14 @@
         if self.GetNumberCols() > 0:
             self.default_col_width = self.GetColSize(0)
-        self.Bind(wx.grid.EVT_GRID_LABEL_LEFT_CLICK, self.on_left_click)
-        self.Bind(wx.grid.EVT_GRID_LABEL_RIGHT_CLICK, self.on_right_click)
-        self.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.on_selected_cell)
-        self.Bind(wx.grid.EVT_GRID_CMD_CELL_CHANGE, self.on_edit_cell)
-        self.Bind(wx.grid.EVT_GRID_CELL_RIGHT_CLICK, self.onContextMenu)
-
+        #self.Bind(wx.grid.EVT_GRID_LABEL_LEFT_CLICK, self.on_left_click)
+        #self.Bind(wx.grid.EVT_GRID_LABEL_RIGHT_CLICK, self.on_right_click)
+        #self.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.on_selected_cell)
+        #self.Bind(wx.grid.EVT_GRID_CMD_CELL_CHANGE, self.on_edit_cell)
+        #self.Bind(wx.grid.EVT_GRID_CELL_RIGHT_CLICK, self.onContextMenu)
+
+    def OnLeftClick(self, event):
+        sheet.CSheet.OnLeftClick(self, event)
+        self.on_selected_cell(event)
+        
     def on_edit_cell(self, event):
         """
@@ -211,5 +215,4 @@
         row, col = event.GetRow(), event.GetCol()
         cell = (row, col)
-        event.Skip()
         if not flag and not flag_shift:
             self.selected_cols = []
@@ -273,4 +276,5 @@
             if cell_row > 0 and cell_row < self.max_row_touse:
                 self.axis_value.append(self.GetCellValue(cell_row, cell_col))
+        event.Skip()
 
     def on_left_click(self, event):
@@ -278,5 +282,4 @@
         Catch the left click on label mouse event
         """
-        event.Skip()
         flag = event.CmdDown() or event.ControlDown()
 
@@ -317,4 +320,5 @@
             if not self.axis_label:
                 self.axis_label = " "
+        event.Skip()
 
     def on_right_click(self, event):
@@ -1385,4 +1389,11 @@
         wx.EVT_MENU(self, self.save_menu.GetId(), self.on_save_page)
 
+        # To add the edit menu, call add_edit_menu() here.
+        self.edit = None
+        self.Bind(wx.EVT_MENU_OPEN, self.on_menu_open)
+        
+        self.Bind(wx.EVT_CLOSE, self.on_close)
+
+    def add_edit_menu(self, menubar):
         self.edit = wx.Menu()
 
@@ -1414,8 +1425,5 @@
         self.remove_menu = self.edit.Append(-1, 'Remove Column', hint)
         wx.EVT_MENU(self, self.remove_menu.GetId(), self.on_remove_column)
-
-        self.Bind(wx.EVT_MENU_OPEN, self.on_menu_open)
         menubar.Append(self.edit, "&Edit")
-        self.Bind(wx.EVT_CLOSE, self.on_close)
 
     def on_copy(self, event):
Index: src/sas/guiframe/documentation_window.py
===================================================================
--- src/sas/guiframe/documentation_window.py	(revision f202138a6e2c8473eaa18931ba791130fca4f5c6)
+++ src/sas/guiframe/documentation_window.py	(revision c8d22ec00ac8fa409845988c552db80f8f87b95c)
@@ -1,2 +1,17 @@
+"""
+documentation module provides a simple means to add help throughout the
+application. It checks for the existence of html2 package needed to support
+fully html panel which supports css.  The class defined here takes a title for
+the particular help panel, a pointer to the html documentation file of interest
+within the documentation tree along with a 'command' string such as a page
+anchor or a query string etc.  The path to the doc directory is retrieved
+automatically by the class itself.  Thus with these three pieces of information
+the class generates a panel with the appropriate title bar and help file
+formatted according the style sheets called in the html file.  Finally, if an
+old version of Python is running and the html2 package is not available the
+class brings up the default browser and passes the file:/// string to it.  In
+this case however the instruction portion is usually not passed for security
+reasons.
+"""
 import os
 import logging
@@ -5,9 +20,11 @@
 import urllib
 
-wx_supports_html2 = True
+SPHINX_DOC_ENV = "SASVIEW_DOC_PATH"
+WX_SUPPORTS_HTML2 = True
 try:
     import wx.html2 as html
 except:
-    wx_supports_html2 = False
+    WX_SUPPORTS_HTML2 = False
+
 
 from gui_manager import get_app_dir
@@ -15,8 +32,22 @@
 
 class DocumentationWindow(wx.Frame):
-    def __init__(self, parent, id, path, url_instruction, title, size=(850, 540)):
-        wx.Frame.__init__(self, parent, id, title, size=size)
+    """
+    DocumentationWindow inherits from wx.Frame and provides a centralized
+    coherent framework for all help documentation.  Help files must be html
+    files stored in an properly organized tree below the top 'doc' folder.  In
+    order to display the appropriate help file from anywhere in the gui, the
+    code simply needs to know the location below the top level where the
+    help file resides along with the name of the help file.
+    called
+    (self, parent, dummy_id, path, url_instruction, title, size=(850, 540))
 
-        SPHINX_DOC_ENV = "SASVIEW_DOC_PATH"
+    :param path: path to html file beginning AFTER /doc/ and ending in the
+    file.html
+    :param url_instructions: anchor string or other query e.g. '#MyAnchor
+    :param title - text to place in the title bar of the help panel
+    """
+    def __init__(self, parent, dummy_id, path, url_instruction, title, size=(850, 540)):
+        wx.Frame.__init__(self, parent, dummy_id, title, size=size)
+
         if SPHINX_DOC_ENV in os.environ:
             docs_path = os.path.join(os.environ[SPHINX_DOC_ENV])
@@ -27,24 +58,35 @@
             docs_path = os.path.join(get_app_dir(), "doc")
 
+        #note that filepath for mac OS, at least in bundle starts with a
+        #forward slash as /Application, while the PC string begins C:\
+        #It seems that mac OS is happy with four slashes as in file:////App...
+        #Two slashes is not sufficient to indicate path from root.  Thus for now
+        #we use "file:///" +... If the mac behavior changes may need to make the
+        #file:/// be another constant at the beginning that yields // for Mac
+        #and /// for PC.
+        #Note added June 21, 2015     PDB
         file_path = os.path.join(docs_path, path)
-        url = "file:///" + urllib.quote(file_path,'\:')+ url_instruction
+        url = "file:///" + urllib.quote(file_path, r'/\:')+ url_instruction
 
         if not os.path.exists(file_path):
             logging.error("Could not find Sphinx documentation at %s \
             -- has it been built?", file_path)
-        elif wx_supports_html2:
+        elif WX_SUPPORTS_HTML2:
             # Complete HTML/CSS support!
             self.view = html.WebView.New(self)
             self.view.LoadURL(url)
             self.Show()
-        else: 
+        else:
             logging.error("No html2 support, popping up a web browser")
             #For cases that do not build against current version dependency
-            # Wx 3.0 we provide a webbrowser call - this is particularly for 
+            # Wx 3.0 we provide a webbrowser call - this is particularly for
             #Red hat used at SNS for which Wx 3.0 is not available.  This
-            #does not deal with issue of math in docs of course. 
+            #does not deal with issue of math in docs of course.
             webbrowser.open_new_tab(url)
 
 def main():
+    """
+    main loop function if running alone for testing.
+    """
     app = wx.App()
     DocumentationWindow(None, -1, "index.html", "", "Documentation",)
Index: src/sas/guiframe/gui_manager.py
===================================================================
--- src/sas/guiframe/gui_manager.py	(revision 7801df83258dc0f0d45838a3596f5e58f88bbcd3)
+++ src/sas/guiframe/gui_manager.py	(revision 3c2011e4bb9ae08a2681733b8be8899712e0f842)
@@ -1296,15 +1296,18 @@
         #replace or add a new menu for the current plugin
         pos = self._menubar.FindMenu(str(self._applications_menu_name))
+        if pos == -1 and self._applications_menu_pos > 0:
+            pos = self._applications_menu_pos
         if pos != -1:
             menu_list = self._current_perspective.populate_menu(self)
             if menu_list:
                 for (menu, name) in menu_list:
+                    print "[%s]" % name
                     self._menubar.Replace(pos, menu, name)
                     self._applications_menu_name = name
+                self._applications_menu_pos = pos
             else:
                 self._menubar.Remove(pos)
                 self._applications_menu_name = None
-            #get the position of the menu when it first added
-            self._applications_menu_pos = pos
+                self._applications_menu_pos = -1
         else:
             menu_list = self._current_perspective.populate_menu(self)
@@ -1316,6 +1319,8 @@
                         if help_pos == -1:
                             self._menubar.Append(menu, name)
+                            self._applications_menu_pos = -1
                         else:
                             self._menubar.Insert(help_pos-1, menu, name)
+                            self._applications_menu_pos = help_pos - 1
                     else:
                         self._menubar.Insert(self._applications_menu_pos, menu, name)
Index: src/sas/perspectives/fitting/media/fitting.rst
===================================================================
--- src/sas/perspectives/fitting/media/fitting.rst	(revision b404a3decbabc5235d7b5fdffbfb0ffc19c10150)
+++ src/sas/perspectives/fitting/media/fitting.rst	(revision d896039755eb74d6be50a0af2352aed06507b178)
@@ -17,6 +17,4 @@
    Polarisation/Magnetic Scattering <mag_help>
 
-   Information on the SasView Optimisers - Local <optimizer.rst>
-
-   Information on the SasView Optimisers - Web <https://github.com/bumps/bumps/blob/master/doc/guide/optimizer.rst>
+   Information on the SasView Optimisers <optimizer.rst>
    
