Index: example/sesansfit.sh
===================================================================
--- example/sesansfit.sh	(revision 5be92e8a5dcd07938111a0bdbb02d17228ee1482)
+++ example/sesansfit.sh	(revision 15bd6e727112c9ec7422c00fd163671d9d457c21)
@@ -8,3 +8,3 @@
 set -x
 
-python -m bumps.cli $*
+pythonw -m bumps.cli $*
Index: sasmodels/models/adsorbed_layer.py
===================================================================
--- sasmodels/models/adsorbed_layer.py	(revision 2f0c07deb2cb7a8c0c93476fbf1e0ffbe6c278cb)
+++ sasmodels/models/adsorbed_layer.py	(revision 54954e1e02af29c4322cdf2636663f22a45de3ed)
@@ -17,5 +17,5 @@
      I(q) = \text{scale} \cdot(\rho_\text{poly}-\rho_\text{solvent})^2    \left[\frac{6\pi\phi_\text{core}}{Q^2}\frac{\Gamma^2}{\delta_\text{poly}^2R_\text{core}} \exp(-Q^2\sigma^2)\right] + \text{background}
 
-where *scale* is a scale factor, |rho|\ :sub:`poly` is the sld of the polymer (or surfactant) layer, |rho|\ :sub:`solv` is the sld of the solvent/medium and cores, |phi|\ :sub:`core` is the volume fraction of the core paraticles, |delta|\ :sub:`poly` is the bulk density of the polymer, |biggamma| is the adsorbed amount, and |sigma| is the second moment of the thickness distribution.
+where *scale* is a scale factor, |rho|\ :sub:`poly` is the sld of the polymer (or surfactant) layer, |rho|\ :sub:`solv` is the sld of the solvent/medium and cores, |phi|\ :sub:`core` is the volume fraction of the core particles, |delta|\ :sub:`poly` is the bulk density of the polymer, |biggamma| is the adsorbed amount, and |sigma| is the second moment of the thickness distribution.
 
 Note that all parameters except the |sigma| are correlated so fitting more than one of these parameters will generally fail. Also note that unlike other shape models, no volume normalization is applied to this model (the calculation is exact).
@@ -46,5 +46,5 @@
               ["density_poly", "g/cm3", 0.7, [0.0, inf], "", "Polymer density"],
               ["radius", "Ang", 500.0, [0.0, inf], "", "Particle radius"],
-              ["vol_frac", "None", 0.14, [0.0, inf], "", "Particle vol fraction"],
+              ["volfraction", "None", 0.14, [0.0, inf], "", "Particle vol fraction"],
               ["polymer_sld", "1/Ang^2", 1.5e-06, [-inf, inf], "", "Polymer SLD"],
               ["solvent_sld", "1/Ang^2", 6.3e-06, [-inf, inf], "", "Solvent SLD"]]
@@ -52,8 +52,8 @@
 # NB: Scale and Background are implicit parameters on every model
 def Iq(q, second_moment, adsorbed_amount, density_poly, radius, 
-        vol_frac, polymer_sld, solvent_sld):
+        volfraction, polymer_sld, solvent_sld):
     # pylint: disable = missing-docstring
     deltarhosqrd =  (polymer_sld - solvent_sld) * (polymer_sld - solvent_sld)
-    numerator =  6.0 * pi * vol_frac * (adsorbed_amount * adsorbed_amount)
+    numerator =  6.0 * pi * volfraction * (adsorbed_amount * adsorbed_amount)
     denominator =  (q * q) * (density_poly * density_poly) * radius
     eterm =  exp(-1.0 * (q * q) * (second_moment * second_moment))
@@ -73,5 +73,5 @@
             density_poly = 0.7,
             radius = 500.0,
-            vol_frac = 0.14,
+            volfraction = 0.14,
             polymer_sld = 1.5e-06,
             solvent_sld = 6.3e-06,
@@ -84,5 +84,5 @@
                density_poly = 'density_poly',
                radius = 'radius_core',
-               vol_frac = 'volf_cores',
+               volfraction = 'volf_cores',
                polymer_sld = 'sld_poly',
                solvent_sld = 'sld_solv',
@@ -91,5 +91,5 @@
 tests =  [
     [{'scale': 1.0, 'second_moment': 23.0, 'adsorbed_amount': 1.9, 
-     'density_poly': 0.7, 'radius': 500.0, 'vol_frac': 0.14, 
+     'density_poly': 0.7, 'radius': 500.0, 'volfraction': 0.14, 
      'polymer_sld': 1.5e-06, 'solvent_sld': 6.3e-06, 'background': 0.0},
      [0.0106939, 0.469418], [73.741, 9.65391e-53]],
Index: sasmodels/models/hayter_msa.py
===================================================================
--- sasmodels/models/hayter_msa.py	(revision d529d93bd045e44913320de5e1c8db47f680e037)
+++ sasmodels/models/hayter_msa.py	(revision 54954e1e02af29c4322cdf2636663f22a45de3ed)
@@ -51,5 +51,5 @@
 #  dp[2] = volfraction();
 #  dp[3] = temperature();
-#  dp[4] = saltconc();
+#  dp[4] = salt_concentration();
 #  dp[5] = dielectconst();
 
@@ -76,5 +76,5 @@
     ["volfraction",   "None",     0.0192, [0, 0.74],   "", "volume fraction of spheres"],
     ["temperature",   "K",  318.16,   [0, inf],    "", "temperature, in Kelvin, for Debye length calculation"],
-    ["saltconc",      "M",    0.0,    [-inf, inf], "", "conc of salt, moles/litre, 1:1 electolyte, for Debye length"],
+    ["salt_concentration",      "M",    0.0,    [-inf, inf], "", "conc of salt, moles/litre, 1:1 electolyte, for Debye length"],
     ["dielectconst",  "None",    71.08,   [-inf, inf], "", "dielectric constant (relative permittivity) of solvent, default water, for Debye length"]
     ]
@@ -96,15 +96,15 @@
 oldname = 'HayterMSAStructure'
 #oldpars = dict(effect_radius="radius_effective",effect_radius_pd="radius_effective_pd",effect_radius_pd_n="radius_effective_pd_n")
-oldpars = dict(radius_effective="effect_radius",radius_effective_pd="effect_radius_pd",radius_effective_pd_n="effect_radius_pd_n")
+oldpars = dict(radius_effective="effect_radius",radius_effective_pd="effect_radius_pd",radius_effective_pd_n="effect_radius_pd_n",salt_concentration="saltconc")
 #oldpars = dict( )
 # default parameter set,  use  compare.sh -midQ -linear
 # note the calculation varies in different limiting cases so a wide range of
 # parameters will be required for a thorough test!
-# odd that the default st has saltconc zero
+# odd that the default st has salt_concentration zero
 demo = dict(radius_effective=20.75,
             charge=19.0,
             volfraction=0.0192,
             temperature=318.16,
-            saltconc=0.05,
+            salt_concentration=0.05,
             dielectconst=71.08,
             radius_effective_pd=0.1,
@@ -120,5 +120,5 @@
       'volfraction': 0.0192,
       'temperature': 298.0,
-      'saltconc': 0,
+      'salt_concentration': 0,
       'dielectconst': 78.0,
       'radius_effective_pd': 0},
@@ -130,5 +130,5 @@
       'volfraction': 0.0192,
       'temperature': 298.0,
-      'saltconc': 0.05,
+      'salt_concentration': 0.05,
       'dielectconst': 78.0,
       'radius_effective_pd': 0.1,
Index: sasmodels/models/mono_gauss_coil.py
===================================================================
--- sasmodels/models/mono_gauss_coil.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
+++ sasmodels/models/mono_gauss_coil.py	(revision 15bd6e727112c9ec7422c00fd163671d9d457c21)
@@ -14,5 +14,5 @@
 
      *I(q)* = *scale* |cdot| *I* \ :sub:`0` |cdot| *P(q)* + *background*
-	 
+
 where
 
@@ -20,11 +20,11 @@
 
      *P(q)* = 2 [exp(-Z) + Z - 1] / Z \ :sup:`2`
-	 
-	 *Z* = (*q R* \ :sub:`g`)\ :sup:`2`
+
+     *Z* = (*q R* \ :sub:`g`)\ :sup:`2`
 
 and
 
-	 *V* = *M* / (*N*\ :sub:`A` |delta|)
-	 
+     *V* = *M* / (*N*\ :sub:`A` |delta|)
+
 Here, |phi|\ :sub:`poly` is the volume fraction of polymer, *V* is the volume of a polymer coil, *M* is the molecular weight of the polymer, *N*\ :sub:`A` is Avogadro's Number, |delta| is the bulk density of the polymer, |rho|\ :sub:`poly` is the sld of the polymer, |rho|\ :sub:`solv` is the sld of the solvent, and *R*\ :sub:`g` is the radius of gyration of the polymer coil.
 
@@ -52,18 +52,18 @@
 description =  """
     Evaluates the scattering from 
-	monodisperse polymer chains.
+    monodisperse polymer chains.
     """
 category =  "shape-independent"
 
 #             ["name", "units", default, [lower, upper], "type", "description"],
-parameters =  [["i_zero", "1/cm", 1.0, [-inf, inf], "", "Intensity at q=0"],
-               ["radius_gyration", "Ang", 50.0, [0.0, inf], "", "Radius of gyration"]]
+parameters =  [["i_zero", "1/cm", 70.0, [0.0, inf], "", "Intensity at q=0"],
+               ["radius_gyration", "Ang", 75.0, [0.0, inf], "", "Radius of gyration"]]
 
 # NB: Scale and Background are implicit parameters on every model
 def Iq(q, i_zero, radius_gyration):
     # pylint: disable = missing-docstring
-    z = (q * radius_gyration) ** 2
-    if q == 0:
-       inten = 1.0
+    z = (q * radius_gyration) * (q * radius_gyration)
+    if (q == 0).any():
+       inten = i_zero
     else:
        inten = i_zero * 2.0 * (exp(-z) + z - 1.0 ) / (z * z)
@@ -77,6 +77,6 @@
 
 demo =  dict(scale = 1.0,
-            i_zero = 1.0,
-            radius_gyration = 50.0,
+            i_zero = 70.0,
+            radius_gyration = 75.0,
             background = 0.0)
 
@@ -87,5 +87,5 @@
 
 tests =  [
-    [{'scale': 1.0, 'radius_gyration': 50.0, 'background': 0.0},
-     [0.0106939, 0.469418], [0.911141, 0.00362394]],
+    [{'scale': 70.0, 'radius_gyration': 75.0, 'background': 0.0},
+     [0.0106939, 0.469418], [57.1241, 0.112859]],
     ]
Index: sasmodels/models/poly_gauss_coil.py
===================================================================
--- sasmodels/models/poly_gauss_coil.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
+++ sasmodels/models/poly_gauss_coil.py	(revision 15bd6e727112c9ec7422c00fd163671d9d457c21)
@@ -14,5 +14,5 @@
 
      *I(q)* = *scale* |cdot| *I* \ :sub:`0` |cdot| *P(q)* + *background*
-	 
+
 where
 
@@ -20,13 +20,13 @@
 
      *P(q)* = 2 [(1 + UZ)\ :sup:`-1/U` + Z - 1] / [(1 + U) Z\ :sup:`2`]
-	 
-	 *Z* = [(*q R*\ :sub:`g`)\ :sup:`2`] / (1 + 2U)
-	 
-	 *U* = (Mw / Mn) - 1 = (*polydispersity ratio*) - 1
+
+     *Z* = [(*q R*\ :sub:`g`)\ :sup:`2`] / (1 + 2U)
+
+     *U* = (Mw / Mn) - 1 = (*polydispersity ratio*) - 1
 
 and
 
-	 *V* = *M* / (*N*\ :sub:`A` |delta|)
-	 
+     *V* = *M* / (*N*\ :sub:`A` |delta|)
+
 Here, |phi|\ :sub:`poly`, is the volume fraction of polymer, *V* is the volume of a polymer coil, *M* is the molecular weight of the polymer, *N*\ :sub:`A` is Avogadro's Number, |delta| is the bulk density of the polymer, |rho|\ :sub:`poly` is the sld of the polymer, |rho|\ :sub:`solv` is the sld of the solvent, and *R*\ :sub:`g` is the radius of gyration of the polymer coil.
 
@@ -57,11 +57,11 @@
 description =  """
     Evaluates the scattering from 
-	polydisperse polymer chains.
+    polydisperse polymer chains.
     """
 category =  "shape-independent"
 
 #             ["name", "units", default, [lower, upper], "type", "description"],
-parameters =  [["i_zero", "1/cm", 1.0, [-inf, inf], "", "Intensity at q=0"],
-               ["radius_gyration", "Ang", 50.0, [0.0, inf], "", "Radius of gyration"],
+parameters =  [["i_zero", "1/cm", 70.0, [0.0, inf], "", "Intensity at q=0"],
+               ["radius_gyration", "Ang", 75.0, [0.0, inf], "", "Radius of gyration"],
                ["polydispersity", "None", 2.0, [1.0, inf], "", "Polymer Mw/Mn"]]
 
@@ -69,15 +69,17 @@
 def Iq(q, i_zero, radius_gyration, polydispersity):
     # pylint: disable = missing-docstring
+    # need to trap the case of the polydispersity being 1 (ie, monodispersity)
     u = polydispersity - 1.0
-    # TO DO
-    # should trap the case of polydispersity = 1 by switching to a taylor expansion
-    minusoneonu = -1.0 / u
-    z = (q * radius_gyration) ** 2 / (1.0 + 2.0 * u)
-    if q == 0:
-        inten = i_zero * 1.0
+    if polydispersity == 1:
+       minusoneonu = -1.0 / u
     else:
-        inten = i_zero * 2.0 * (power((1.0 + u * z),minusoneonu) + z - 1.0 ) / ((1.0 + u) * (z * z))
+       minusoneonu = -1.0 / u
+    z = ((q * radius_gyration) * (q * radius_gyration)) / (1.0 + 2.0 * u)
+    if (q == 0).any():
+       inten = i_zero
+    else:
+       inten = i_zero * 2.0 * (power((1.0 + u * z),minusoneonu) + z - 1.0 ) / ((1.0 + u) * (z * z))
     return inten
-#Iq.vectorized = True # Iq accepts an array of q values
+Iq.vectorized =  True  # Iq accepts an array of q values
 
 def Iqxy(qx, qy, *args):
@@ -87,6 +89,6 @@
 
 demo =  dict(scale = 1.0,
-            i_zero = 1.0,
-            radius_gyration = 50.0,
+            i_zero = 70.0,
+            radius_gyration = 75.0,
             polydispersity = 2.0,
             background = 0.0)
@@ -99,5 +101,5 @@
 
 tests =  [
-    [{'scale': 1.0, 'radius_gyration': 50.0, 'polydispersity': 2.0, 'background': 0.0},
-     [0.0106939, 0.469418], [0.912993, 0.0054163]],
+    [{'scale': 70.0, 'radius_gyration': 75.0, 'polydispersity': 2.0, 'background': 0.0},
+     [0.0106939, 0.469418], [57.6405, 0.169016]],
     ]
Index: sasmodels/models/stickyhardsphere.py
===================================================================
--- sasmodels/models/stickyhardsphere.py	(revision 0784c18939a01e611f50a2a290cae39e86083f33)
+++ sasmodels/models/stickyhardsphere.py	(revision 54954e1e02af29c4322cdf2636663f22a45de3ed)
@@ -88,5 +88,5 @@
     #   [ "name", "units", default, [lower, upper], "type",
     #     "description" ],
-    ["effect_radius", "Ang", 50.0, [0, inf], "volume",
+    ["radius_effective", "Ang", 50.0, [0, inf], "volume",
      "effective radius of hard sphere"],
     ["volfraction", "", 0.2, [0, 0.74], "",
@@ -113,5 +113,5 @@
     eta = volfraction/onemineps/onemineps/onemineps;
 
-    sig = 2.0 * effect_radius;
+    sig = 2.0 * radius_effective;
     aa = sig/onemineps;
     etam1 = 1.0 - eta;
@@ -179,11 +179,11 @@
 
 oldname = 'StickyHSStructure'
-oldpars = dict()
-demo = dict(effect_radius=200, volfraction=0.2, perturb=0.05,
-            stickiness=0.2, effect_radius_pd=0.1, effect_radius_pd_n=40)
+oldpars = dict(radius_effective="effect_radius",radius_effective_pd="effect_radius_pd",radius_effective_pd_n="effect_radius_pd_n")
+demo = dict(radius_effective=200, volfraction=0.2, perturb=0.05,
+            stickiness=0.2, radius_effective_pd=0.1, radius_effective_pd_n=40)
 #
 tests = [
-        [ {'scale': 1.0, 'background' : 0.0, 'effect_radius' : 50.0, 'perturb' : 0.05, 'stickiness' : 0.2, 'volfraction' : 0.1,
-           'effect_radius_pd' : 0}, [0.001, 0.003], [1.09718, 1.087830]]
+        [ {'scale': 1.0, 'background' : 0.0, 'radius_effective' : 50.0, 'perturb' : 0.05, 'stickiness' : 0.2, 'volfraction' : 0.1,
+           'radius_effective_pd' : 0}, [0.001, 0.003], [1.09718, 1.087830]]
         ]
 
