Index: doc/genmodel.py
===================================================================
--- doc/genmodel.py	(revision 70bbb740071fe0e5f444dcd206020bb72862edec)
+++ doc/genmodel.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -25,5 +25,5 @@
         'xscale'    : 'log',
         'yscale'    : 'log' if not info['structure_factor'] else 'linear',
-        'qmin'      : 0.005,
+        'qmin'      : 0.001,
         'qmax'      : 1.0,
         'nq'        : 1000,
@@ -68,5 +68,5 @@
 fig = plt.figure()
 ax = fig.add_subplot(1,1,1)
-ax.plot(q, Iq1D, color='blue', lw=2, label=model_name)
+ax.plot(q, Iq1D, color='blue', lw=2, label=info['name'])
 ax.set_xlabel(r'$Q \/(\AA^{-1})$')
 ax.set_xscale(opts['xscale'])   
@@ -101,5 +101,7 @@
     docstr = docstr1 + captionstr + docstr2
 else:
+    print '------------------------------------------------------------------'
     print 'References NOT FOUND for model: ', model_name
+    print '------------------------------------------------------------------'
     docstr = docstr + captionstr
 
Index: example/fit_sesans.py
===================================================================
--- example/fit_sesans.py	(revision bdb653cc842ebbb2483def7e99946c8db6fb3346)
+++ example/fit_sesans.py	(revision bdb653cc842ebbb2483def7e99946c8db6fb3346)
@@ -0,0 +1,10 @@
+import shlex, subprocess, sys
+import platform
+args = shlex.split("sesansfit.sh blah --edit")
+args[1] = sys.argv[1]
+if platform.system() != "Windows":
+    args = ["sh"] + args
+    shellFlag = False
+else:
+    shellFlag = True
+subprocess.Popen(args, shell=shellFlag)
Index: example/sesans_parameters_css-hs.py
===================================================================
--- example/sesans_parameters_css-hs.py	(revision a98958b137d45599ef7358a57d334a32fb6bc06c)
+++ example/sesans_parameters_css-hs.py	(revision 84db7a50ae40a38a16b4f9c6430e31c26f8407f4)
@@ -8,4 +8,7 @@
 # Enter the model name to use
 model_name = "core_shell_sphere*hardsphere"
+
+# DO NOT MODIFY THIS LINE
+model = sesansfit.get_bumps_model(model_name)
 
 # Enter any custom parameters
@@ -19,11 +22,8 @@
 # Initial parameter values (if other than defaults)
 initial_vals = {
-    "scale" : 0.09,
     "core_sld" : 1.0592,
     "solvent_sld" : 2.88,
-    "shell_sld" : 2.88,
     "radius" : 890,
-    "thickness" : 130,
-    "volfraction" : 0.45
+    "thickness" : 130
 }
 
@@ -36,4 +36,12 @@
 }
 
+# Constraints
+# model.param_name = f(other params)
+# EXAMPLE: model.scale = model.radius*model.radius*(1 - phi) - where radius and scale are model functions and phi is
+# a custom parameter
+model.scale = phi*(1-phi)
+model.volfraction = phi
+model.shell_sld = pen*2.88
+
 # Send to the fitting engine
 problem = sesansfit.sesans_fit(sesans_file, model_name, initial_vals, custom_params, param_range)
Index: example/sesans_parameters_sphere.py
===================================================================
--- example/sesans_parameters_sphere.py	(revision a98958b137d45599ef7358a57d334a32fb6bc06c)
+++ example/sesans_parameters_sphere.py	(revision 84db7a50ae40a38a16b4f9c6430e31c26f8407f4)
@@ -9,20 +9,26 @@
 model_name = "sphere"
 
+# DO NOT MODIFY THIS LINE
+model = sesansfit.get_bumps_model(model_name)
+
 # Enter any custom parameters
+# name = Parameter(initial_value, name='name')
 phi = Parameter(0.10, name='phi')
+# Add the parameters to this list that should be displayed in the fitting window
 custom_params = {"phi" : phi}
 
-# SESANS data file
+# SESANS data file name
 sesans_file = "sphere.ses"
 
 # Initial parameter values (if other than defaults)
+# "model_parameter_name" : value
 initial_vals = {
-    "scale" : phi*(1 - phi),
     "sld" : 7.0,
+    "radius" : 1000,
     "solvent_sld" : 1.0,
-    "radius" : 1000,
 }
 
 # Ranges for parameters if other than default
+# "model_parameter_name" : [min, max]
 param_range = {
     "phi" : [0.001, 0.5],
@@ -30,4 +36,12 @@
 }
 
+# Constraints
+# model.param_name = f(other params)
+# EXAMPLE: model.scale = model.radius*model.radius*(1 - phi) - where radius and scale are model functions and phi is
+# a custom parameter
+model.scale = phi*(1-phi)
+
 # Send to the fitting engine
-problem = sesansfit.sesans_fit(sesans_file, model_name, initial_vals, custom_params, param_range)
+# DO NOT MODIFY THIS LINE
+problem = sesansfit.sesans_fit(sesans_file, model, initial_vals, custom_params, param_range)
+
Index: ample/sesans_script_css-hs.py
===================================================================
--- example/sesans_script_css-hs.py	(revision a98958b137d45599ef7358a57d334a32fb6bc06c)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import shlex, subprocess
-args = shlex.split("sesansfit.sh sesans_parameters_css-hs.py --edit")
-subprocess.Popen(args, shell="True")
Index: ample/sesans_script_sphere.py
===================================================================
--- example/sesans_script_sphere.py	(revision a98958b137d45599ef7358a57d334a32fb6bc06c)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import shlex, subprocess
-args = shlex.split("sesansfit.sh sesans_parameters_sphere.py --edit")
-subprocess.Popen(args, shell="True")
Index: example/sesansfit.py
===================================================================
--- example/sesansfit.py	(revision a98958b137d45599ef7358a57d334a32fb6bc06c)
+++ example/sesansfit.py	(revision 84db7a50ae40a38a16b4f9c6430e31c26f8407f4)
@@ -1,7 +1,4 @@
-#TODO: Convert units properly (nm -> A)
-#TODO: Implement constraints
-
 from bumps.names import *
-from sasmodels import core, bumps_model
+from sasmodels import core, bumps_model, sesans
 
 HAS_CONVERTER = True
@@ -11,12 +8,17 @@
     HAS_CONVERTER = False
 
-def sesans_fit(file, model_name, initial_vals={}, custom_params={}, param_range=[]):
+def get_bumps_model(model_name):
+    kernel = core.load_model(model_name)
+    model = bumps_model.Model(kernel)
+    return model
+
+def sesans_fit(file, model, initial_vals={}, custom_params={}, param_range=[]):
     """
-
     @param file: SESANS file location
-    @param model_name: model name string - can be model, model_1 * model_2, and/or model_1 + model_2
+    @param model: Bumps model object or model name - can be model, model_1 * model_2, and/or model_1 + model_2
     @param initial_vals: dictionary of {param_name : initial_value}
     @param custom_params: dictionary of {custom_parameter_name : Parameter() object}
     @param param_range: dictionary of {parameter_name : [minimum, maximum]}
+    @param constraints: dictionary of {parameter_name : constraint}
     @return: FitProblem for Bumps usage
     """
@@ -29,5 +31,9 @@
             default_unit = "A"
             data_conv_q = Converter(data._xunit)
+            for x in data.x:
+                print x
             data.x = data_conv_q(data.x, units=default_unit)
+            for x in data.x:
+                print x
             data._xunit = default_unit
 
@@ -51,11 +57,14 @@
         data = SESANSData1D()
 
-    radius = 1000
+    if "radius" in initial_vals:
+        radius = initial_vals.get("radius")
+    else:
+        radius = 1000
     data.Rmax = 3*radius # [A]
 
-    kernel = core.load_model(model_name)
-    model = bumps_model.Model(kernel)
+    if isinstance(model, basestring):
+        model = get_bumps_model(model)
 
-    # Load custom parameters, initial values and parameter constraints
+    # Load custom parameters, initial values and parameter ranges
     for k, v in custom_params.items():
         setattr(model, k, v)
@@ -69,5 +78,5 @@
             setattr(param.bounds, "limits", v)
 
-    if False: # have sans data
+    if False: # for future implementation
         M_sesans = bumps_model.Experiment(data=data, model=model)
         M_sans = bumps_model.Experiment(data=sans_data, model=model)
Index: sasmodels/compare.py
===================================================================
--- sasmodels/compare.py	(revision fcd7bbda85a603b85101ba7ec6495729497e6b3f)
+++ sasmodels/compare.py	(revision d6850fa54ddb36992be4aa7ae6cc337c1cba3d70)
@@ -301,25 +301,24 @@
             pars['Phi'+c] /= total
 
-def parlist(pars):
+def parlist(model_info, pars, is2d):
     """
     Format the parameter list for printing.
     """
-    active = None
-    fields = {}
+    if is2d:
+        exclude = lambda n: False
+    else:
+        partype = model_info['partype']
+        par1d = set(partype['fixed-1d']+partype['pd-1d'])
+        exclude = lambda n: n not in par1d
     lines = []
-    for k, v in sorted(pars.items()):
-        parts = k.split('_pd')
-        #print(k, active, parts)
-        if len(parts) == 1:
-            if active: lines.append(_format_par(active, **fields))
-            active = k
-            fields = {'value': v}
-        else:
-            assert parts[0] == active
-            if parts[1]:
-                fields[parts[1][1:]] = v
-            else:
-                fields['pd'] = v
-    if active: lines.append(_format_par(active, **fields))
+    for p in model_info['parameters']:
+        if exclude(p.name): continue
+        fields = dict(
+            value=pars.get(p.name, p.default),
+            pd=pars.get(p.name+"_pd", 0.),
+            n=int(pars.get(p.name+"_pd_n", 0)),
+            nsigma=pars.get(p.name+"_pd_nsgima", 3.),
+            type=pars.get(p.name+"_pd_type", 'gaussian'))
+        lines.append(_format_par(p.name, **fields))
     return "\n".join(lines)
 
@@ -837,5 +836,5 @@
     constrain_new_to_old(model_info, pars)
     if opts['show_pars']:
-        print(str(parlist(pars)))
+        print(str(parlist(model_info, pars, opts['is2d'])))
 
     # Create the computational engines
Index: sasmodels/convert.py
===================================================================
--- sasmodels/convert.py	(revision 228cbd30421da424d64c5690995d2800b3089389)
+++ sasmodels/convert.py	(revision 78d3341c5d095cf5c713ac48cb7e918807415d33)
@@ -72,5 +72,5 @@
     new model definition end with sld.
     """
-    return dict((p, (v*1e-6 if p.endswith('sld')
+    return dict((p, (v*1e-6 if p.startswith('sld') or p.endswith('sld')
                      else v*1e15 if 'ndensity' in p
                      else v))
Index: sasmodels/data.py
===================================================================
--- sasmodels/data.py	(revision 78242766ff138c39a869935c18f0396d8f9a3734)
+++ sasmodels/data.py	(revision 84db7a50ae40a38a16b4f9c6430e31c26f8407f4)
@@ -440,14 +440,26 @@
 
     if use_data or use_theory:
+        is_tof = np.any(data.lam!=data.lam[0])
         if num_plots > 1:
             plt.subplot(1, num_plots, 1)
         if use_data:
-            plt.errorbar(data.x, data.y, yerr=data.dy)
+            if is_tof:
+                plt.errorbar(data.x, np.log(data.y)/(data.lam*data.lam), yerr=data.dy/data.y/(data.lam*data.lam))
+            else:
+                plt.errorbar(data.x, data.y, yerr=data.dy)
         if theory is not None:
-            plt.plot(data.x, theory, '-', hold=True)
+            if is_tof:
+                plt.plot(data.x, np.log(theory)/(data.lam*data.lam), '-', hold=True)
+            else:
+                plt.plot(data.x, theory, '-', hold=True)
         if limits is not None:
             plt.ylim(*limits)
-        plt.xlabel('spin echo length (nm)')
-        plt.ylabel('polarization (P/P0)')
+
+        plt.xlabel('spin echo length ({})'.format(data._xunit))
+        if is_tof:
+            plt.ylabel('(Log (P/P$_0$))/$\lambda^2$')
+        else:
+            plt.ylabel('polarization (P/P0)')
+
 
     if resid is not None:
@@ -455,5 +467,5 @@
             plt.subplot(1, num_plots, (use_data or use_theory) + 1)
         plt.plot(data.x, resid, 'x')
-        plt.xlabel('spin echo length (nm)')
+        plt.xlabel('spin echo length ({})'.format(data._xunit))
         plt.ylabel('residuals (P/P0)')
 
Index: sasmodels/generate.py
===================================================================
--- sasmodels/generate.py	(revision fcd7bbda85a603b85101ba7ec6495729497e6b3f)
+++ sasmodels/generate.py	(revision 78d3341c5d095cf5c713ac48cb7e918807415d33)
@@ -91,5 +91,8 @@
     in *Iqxy* and *Imagnetic*.  "magnetic* parameters will be used in
     *Imagnetic* only.  If *type* is the empty string, the parameter will
-    be used in all of *Iq*, *Iqxy* and *Imagnetic*.
+    be used in all of *Iq*, *Iqxy* and *Imagnetic*.  "sld" parameters
+    can automatically be promoted to magnetic parameters, each of which
+    will have a magnitude and a direction, which may be different from
+    other sld parameters.
 
     *description* is a short description of the parameter.  This will
@@ -216,4 +219,5 @@
 import re
 import string
+import warnings
 from collections import namedtuple
 
@@ -604,5 +608,5 @@
     """
     partype = {
-        'volume': [], 'orientation': [], 'magnetic': [], '': [],
+        'volume': [], 'orientation': [], 'magnetic': [], 'sld': [], '': [],
         'fixed-1d': [], 'fixed-2d': [], 'pd-1d': [], 'pd-2d': [],
         'pd-rel': set(),
@@ -618,5 +622,5 @@
         elif p.type == 'orientation':
             partype['pd-2d'].append(p.name)
-        elif p.type == '':
+        elif p.type in ('', 'sld'):
             partype['fixed-1d'].append(p.name)
             partype['fixed-2d'].append(p.name)
@@ -632,4 +636,10 @@
     """
     # convert parameters into named tuples
+    for p in model_info['parameters']:
+        if p[4] == '' and (p[0].startswith('sld') or p[0].endswith('sld')):
+            p[4] = 'sld'
+            # TODO: make sure all models explicitly label their sld parameters
+            #raise ValueError("%s.%s needs to be explicitly set to type 'sld'" %(model_info['id'], p[0]))
+
     pars = [Parameter(*p) for p in model_info['parameters']]
     # Fill in the derived attributes
Index: sasmodels/models/adsorbed_layer.py
===================================================================
--- sasmodels/models/adsorbed_layer.py	(revision 2f0c07deb2cb7a8c0c93476fbf1e0ffbe6c278cb)
+++ sasmodels/models/adsorbed_layer.py	(revision f10bc52ab6508ac7b449d2990c9f805461b8996c)
@@ -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,12 +84,13 @@
                density_poly = 'density_poly',
                radius = 'radius_core',
-               vol_frac = 'volf_cores',
+               volfraction = 'volf_cores',
                polymer_sld = 'sld_poly',
                solvent_sld = 'sld_solv',
                background = 'background')
 
+# these unit test values taken from SasView 3.1.2
 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/core_shell_parallelepiped.py
===================================================================
--- sasmodels/models/core_shell_parallelepiped.py	(revision 6dd90c1d8aaff9b7299ee215555203db80eaa3a0)
+++ sasmodels/models/core_shell_parallelepiped.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -92,5 +92,6 @@
 by the NIST Center for Neutron Research (Kline, 2006).
 
-REFERENCE
+References
+----------
 
 P Mittelbach and G Porod, *Acta Physica Austriaca*, 14 (1961) 185-211
Index: sasmodels/models/core_shell_sphere.py
===================================================================
--- sasmodels/models/core_shell_sphere.py	(revision 7d4b2ae2af901813f3ff60e60aa0eae98f4dfd5e)
+++ sasmodels/models/core_shell_sphere.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -42,10 +42,4 @@
 our model and the output of the NIST software.
 
-.. figure:: img/core_shell_sphere_1d.jpg
-
-    Comparison of the SasView scattering intensity for a core-shell sphere with
-    the output of the NIST SANS analysis software. The parameters were set to:
-    *scale* = 1.0, *radius* = 60 , *contrast* = 1e-6 |Ang^-2|, and
-    *background* = 0.001 |cm^-1|.
 """
 
Index: sasmodels/models/correlation_length.py
===================================================================
--- sasmodels/models/correlation_length.py	(revision 6dd90c1d8aaff9b7299ee215555203db80eaa3a0)
+++ sasmodels/models/correlation_length.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -25,9 +25,7 @@
     q = \sqrt{q_x^2 + q_y^2}
 
-.. figure:: img/correlation_length_1d.jpg
+References
+----------
 
-    1D plot using the default values (w/500 data points).
-
-REFERENCE
 B Hammouda, D L Ho and S R Kline, Insight into Clustering in
 Poly(ethylene oxide) Solutions, Macromolecules, 37 (2004) 6932-6937
Index: sasmodels/models/cylinder.py
===================================================================
--- sasmodels/models/cylinder.py	(revision 6dd90c1d8aaff9b7299ee215555203db80eaa3a0)
+++ sasmodels/models/cylinder.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -60,21 +60,8 @@
 ----------
 
-Validation of our code was done by comparing the output of the 1D model
+Validation of the code was done by comparing the output of the 1D model
 to the output of the software provided by the NIST (Kline, 2006).
-:num:`Figure #cylinder-compare` shows a comparison of
-the 1D output of our model and the output of the NIST software.
-
-.. _cylinder-compare:
-
-.. figure:: img/cylinder_compare.jpg
-
-    Comparison of the SasView scattering intensity for a cylinder with the
-    output of the NIST SANS analysis software.
-    The parameters were set to: *scale* = 1.0, *radius* = 20 |Ang|,
-    *length* = 400 |Ang|, *contrast* = 3e-6 |Ang^-2|, and
-    *background* = 0.01 |cm^-1|.
-
-In general, averaging over a distribution of orientations is done by
-evaluating the following
+The implementation of the intensity for fully oriented cylinders was done
+by averaging over a uniform distribution of orientations using
 
 .. math::
@@ -86,20 +73,11 @@
 where $p(\theta,\phi)$ is the probability distribution for the orientation
 and $P_0(q,\alpha)$ is the scattering intensity for the fully oriented
-system. Since we have no other software to compare the implementation of
-the intensity for fully oriented cylinders, we can compare the result of
-averaging our 2D output using a uniform distribution $p(\theta, \phi) = 1.0$.
-:num:`Figure #cylinder-crosscheck` shows the result of
-such a cross-check.
+system, and then comparing to the 1D result.
 
-.. _cylinder-crosscheck:
+References
+----------
 
-.. figure:: img/cylinder_crosscheck.jpg
+None
 
-    Comparison of the intensity for uniformly distributed cylinders
-    calculated from our 2D model and the intensity from the NIST SANS
-    analysis software.
-    The parameters used were: *scale* = 1.0, *radius* = 20 |Ang|,
-    *length* = 400 |Ang|, *contrast* = 3e-6 |Ang^-2|, and
-    *background* = 0.0 |cm^-1|.
 """
 
Index: sasmodels/models/dab.py
===================================================================
--- sasmodels/models/dab.py	(revision 94bd8097c6283d5783d3cc4d94cabcc1a41bba78)
+++ sasmodels/models/dab.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -26,8 +26,4 @@
 
 .. math:: q = \sqrt{q_x^2 + q_y^2}
-
-.. figure:: img/dab_1d.jpg
-
-   1D plot using the default values (w/200 data point).
 
 
Index: sasmodels/models/ellipsoid.py
===================================================================
--- sasmodels/models/ellipsoid.py	(revision 2f0c07deb2cb7a8c0c93476fbf1e0ffbe6c278cb)
+++ sasmodels/models/ellipsoid.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -59,25 +59,11 @@
 ----------
 
-Validation of our code was done by comparing the output of the 1D model
+Validation of the code was done by comparing the output of the 1D model
 to the output of the software provided by the NIST (Kline, 2006).
-:num:`Figure ellipsoid-comparison-1d` below shows a comparison of
-the 1D output of our model and the output of the NIST software.
 
-.. _ellipsoid-comparison-1d:
+The implementation of the intensity for fully oriented ellipsoids was
+validated by averaging the 2D output using a uniform distribution
+$p(\theta,\phi) = 1.0$ and comparing with the output of the 1D calculation.
 
-.. figure:: img/ellipsoid_comparison_1d.jpg
-
-    Comparison of the SasView scattering intensity for an ellipsoid
-    with the output of the NIST SANS analysis software.  The parameters
-    were set to: *scale* = 1.0, *rpolar* = 20 |Ang|,
-    *requatorial* =400 |Ang|, *contrast* = 3e-6 |Ang^-2|,
-    and *background* = 0.01 |cm^-1|.
-
-Averaging over a distribution of orientation is done by evaluating the
-equation above. Since we have no other software to compare the
-implementation of the intensity for fully oriented ellipsoids, we can
-compare the result of averaging our 2D output using a uniform distribution
-$p(\theta,\phi) = 1.0$.  :num:`Figure #ellipsoid-comparison-2d`
-shows the result of such a cross-check.
 
 .. _ellipsoid-comparison-2d:
Index: sasmodels/models/elliptical_cylinder.py
===================================================================
--- sasmodels/models/elliptical_cylinder.py	(revision 5111921153c056b59ff03411e4b7b028d238ae26)
+++ sasmodels/models/elliptical_cylinder.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -64,15 +64,9 @@
 ----------
 
-Validation of our code was done by comparing the output of the 1D calculation to the angular average of the output of
-the 2D calculation over all possible angles. The figure below shows the comparison where the solid dot refers to
-averaged 2D values while the line represents the result of the 1D calculation (for the 2D averaging, values of 76, 180,
-and 76 degrees are taken for the angles of |theta|, |phi|, and |bigpsi| respectively).
+Validation of our code was done by comparing the output of the 1D calculation to the 
+angular average of the output of the 2D calculation over all possible angles. 
 
-.. figure:: img/elliptical_cylinder_validation_1d.png
-
-    Comparison between 1D and averaged 2D.
-
-In the 2D average, more binning in the angle |phi| is necessary to get the proper result. The following figure shows
-the results of the averaging by varying the number of angular bins.
+In the 2D average, more binning in the angle |phi| is necessary to get the proper result. 
+The following figure shows the results of the averaging by varying the number of angular bins.
 
 .. figure:: img/elliptical_cylinder_averaging.png
Index: sasmodels/models/flexible_cylinder.py
===================================================================
--- sasmodels/models/flexible_cylinder.py	(revision e7678b2f993854334aca4c45e1c7022b2fdbb509)
+++ sasmodels/models/flexible_cylinder.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -34,10 +34,4 @@
 In the parameters, the sldCyl and sldSolv represent the SLD of the chain/cylinder
 and solvent respectively.
-
-
-.. figure:: img/flexible_cylinder_1d.jpg
-
-    1D plot using the default values (w/1000 data point).
-
 
 Our model uses the form factor calculations implemented in a c-library provided
Index: sasmodels/models/flexible_cylinder_ex.py
===================================================================
--- sasmodels/models/flexible_cylinder_ex.py	(revision e7678b2f993854334aca4c45e1c7022b2fdbb509)
+++ sasmodels/models/flexible_cylinder_ex.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -70,8 +70,4 @@
 
 **No inter-cylinder interference effects are included in this calculation.**
-
-.. figure:: img/flexible_cylinder_ex_1d.jpg
-
-    1D plot using the default values (w/1000 data point).
 
 References
Index: sasmodels/models/fractal_core_shell.py
===================================================================
--- sasmodels/models/fractal_core_shell.py	(revision 7d4b2ae2af901813f3ff60e60aa0eae98f4dfd5e)
+++ sasmodels/models/fractal_core_shell.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -43,8 +43,4 @@
 
     q = \sqrt{q_x^2 + q_y^2}
-
-.. figure:: img/fractal_core_shell_1d.jpg
-
-    1D plot using the default values (w/500 data point).
 
 Reference
Index: sasmodels/models/fuzzy_sphere.py
===================================================================
--- sasmodels/models/fuzzy_sphere.py	(revision 8dca856265977fe3d9e69f78610587271bb2ed27)
+++ sasmodels/models/fuzzy_sphere.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -48,12 +48,4 @@
 
     q = \sqrt{{q_x}^2 + {q_y}^2}
-
-
-.. figure:: img/fuzzy_sphere.jpg
-
-     This example dataset is produced by running the FuzzySphereModel,
-     using 200 data points, *qmin* = 0.001 -1,
-     *qmax* = 0.7 |Ang^-1|, background = 0.001 |cm^-1| and the default values.
-
 
 
Index: sasmodels/models/gauss_lorentz_gel.py
===================================================================
--- sasmodels/models/gauss_lorentz_gel.py	(revision 6dd90c1d8aaff9b7299ee215555203db80eaa3a0)
+++ sasmodels/models/gauss_lorentz_gel.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -32,9 +32,4 @@
 
     q = \sqrt{q_x^2 + q_y^2}
-
-
-.. figure:: img/gauss_lorentz_gel_1d.jpg
-
-    1D plot using the default values (w/500 data point).
 
 
Index: sasmodels/models/gaussian_peak.py
===================================================================
--- sasmodels/models/gaussian_peak.py	(revision 13ed84c3c71257d2df9c2ed4b4e98c0bfa4d7d69)
+++ sasmodels/models/gaussian_peak.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -21,8 +21,4 @@
     q = \sqrt{q_x^2 + q_y^2}
 
-
-.. figure:: img/gaussian_peak_1d.jpg
-
-    1D plot using the default values (w/500 data points).
 
 References
Index: sasmodels/models/gel_fit.py
===================================================================
--- sasmodels/models/gel_fit.py	(revision 6dd90c1d8aaff9b7299ee215555203db80eaa3a0)
+++ sasmodels/models/gel_fit.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -32,8 +32,4 @@
 ~2.6 to 2.8.
 
-
-.. figure:: img/gel_fit_1d.png
-
-    1D plot using the default values (with 300 data points).
 
 Reference
Index: sasmodels/models/guinier_porod.py
===================================================================
--- sasmodels/models/guinier_porod.py	(revision fa8011eb0e6b527e15b594945876ee39b6a46dbd)
+++ sasmodels/models/guinier_porod.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -50,8 +50,4 @@
 .. math::
     q = \sqrt{q_x^2+q_y^2}
-
-.. figure:: img/guinier_porod_model.jpg
-
-    Guinier-Porod model for $R_g=100$ |Ang|, $s=1$, $m=3$, and $background=0.1$.
 
 
Index: sasmodels/models/hardsphere.py
===================================================================
--- sasmodels/models/hardsphere.py	(revision d529d93bd045e44913320de5e1c8db47f680e037)
+++ sasmodels/models/hardsphere.py	(revision 3bcd03d7e1d8d4938d30f17bf360b83417139376)
@@ -35,8 +35,4 @@
     q = \sqrt{q_x^2 + q_y^2}
 
-
-.. figure:: img/hardSphere_1d.jpg
-
-    1D plot using the default values (in linear scale).
 
 References
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/hollow_rectangular_prism.py
===================================================================
--- sasmodels/models/hollow_rectangular_prism.py	(revision 6dd90c1d8aaff9b7299ee215555203db80eaa3a0)
+++ sasmodels/models/hollow_rectangular_prism.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -75,5 +75,7 @@
 of the 1D model to the curves shown in (Nayuk, 2012).
 
-REFERENCES
+
+References
+----------
 
 R Nayuk and K Huber, *Z. Phys. Chem.*, 226 (2012) 837-854
Index: sasmodels/models/hollow_rectangular_prism_infinitely_thin_walls.py
===================================================================
--- sasmodels/models/hollow_rectangular_prism_infinitely_thin_walls.py	(revision 6dd90c1d8aaff9b7299ee215555203db80eaa3a0)
+++ sasmodels/models/hollow_rectangular_prism_infinitely_thin_walls.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -67,5 +67,7 @@
 of the 1D model to the curves shown in (Nayuk, 2012).
 
-REFERENCES
+
+References
+----------
 
 R Nayuk and K Huber, *Z. Phys. Chem.*, 226 (2012) 837-854
Index: sasmodels/models/lamellar.py
===================================================================
--- sasmodels/models/lamellar.py	(revision 348557ad6267dc6c27f1b0a9f23dc61b4aae3715)
+++ sasmodels/models/lamellar.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -27,9 +27,4 @@
 
     q = \sqrt{q_x^2 + q_y^2}
-
-
-.. figure:: img/lamellar_1d.jpg
-
-    1D plot using the default values (w/1000 data point).
 
 
Index: sasmodels/models/lamellarCaille.py
===================================================================
--- sasmodels/models/lamellarCaille.py	(revision ec2ca99b9e3d90e4b91919c523a94d9855ca9c3c)
+++ sasmodels/models/lamellarCaille.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -60,7 +60,4 @@
     q = \sqrt{q_x^2 + q_y^2}
 
-.. figure:: img/lamellarCaille_1d.jpg
-
-    1D plot using the default values (w/6000 data point).
 
 References
Index: sasmodels/models/lamellarCailleHG.py
===================================================================
--- sasmodels/models/lamellarCailleHG.py	(revision 652a78a9a04424b9e84f32b660bf775a67d37463)
+++ sasmodels/models/lamellarCailleHG.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -63,7 +63,4 @@
     q = \sqrt{q_x^2 + q_y^2}
 
-.. figure:: img/lamellarCailleHG_1d.jpg
-
-    1D plot using the default values (w/6000 data point).
 
 References
Index: sasmodels/models/lamellarFFHG.py
===================================================================
--- sasmodels/models/lamellarFFHG.py	(revision 3eb6b901aa1e301f7d79b984a69d3d37509b2eb0)
+++ sasmodels/models/lamellarFFHG.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -36,8 +36,4 @@
     q = \sqrt{q_x^2 + q_y^2}
 
-
-.. figure:: img/lamellarFFHG_1d.jpg
-
-    1D plot using the default values (w/1000 data point).
 
 References
Index: sasmodels/models/lamellarPC.py
===================================================================
--- sasmodels/models/lamellarPC.py	(revision 13ed84c3c71257d2df9c2ed4b4e98c0bfa4d7d69)
+++ sasmodels/models/lamellarPC.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -84,8 +84,4 @@
 
 
-.. figure:: img/lamellarPC_1d.jpg
-
-    1D plot using the default values above (w/20000 data point).
-
 Reference
 ---------
Index: sasmodels/models/lorentz.py
===================================================================
--- sasmodels/models/lorentz.py	(revision 6dd90c1d8aaff9b7299ee215555203db80eaa3a0)
+++ sasmodels/models/lorentz.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -16,7 +16,4 @@
 .. math:: q=\sqrt{q_x^2 + q_y^2}
 
-.. figure:: img/lorentz_1d.jpg
-
-    1D plot using the default values (w/200 data point).
 
 References
Index: sasmodels/models/mass_fractal.py
===================================================================
--- sasmodels/models/mass_fractal.py	(revision 684eff96e056ae7868da7127ca50dbfb8525b722)
+++ sasmodels/models/mass_fractal.py	(revision 684eff96e056ae7868da7127ca50dbfb8525b722)
@@ -45,7 +45,4 @@
     $q$ range (see the reference for details).
 
-.. figure:: img/mass_fractal_1d.jpg
-
-    1D plot using the default values.
 
 Reference
Index: sasmodels/models/mass_surface_fractal.py
===================================================================
--- sasmodels/models/mass_surface_fractal.py	(revision 6dd90c1d8aaff9b7299ee215555203db80eaa3a0)
+++ sasmodels/models/mass_surface_fractal.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -45,7 +45,4 @@
     $(surface_dim + mass_dim ) < 6$ .
 
-.. figure:: img/mass_surface_fractal_1d.jpg
-
-    1D plot using the default values.
 
 Reference
Index: sasmodels/models/mono_gauss_coil.py
===================================================================
--- sasmodels/models/mono_gauss_coil.py	(revision 246517d47d1dd00d2038b0bdb50205f635d0c46c)
+++ sasmodels/models/mono_gauss_coil.py	(revision f10bc52ab6508ac7b449d2990c9f805461b8996c)
@@ -86,6 +86,7 @@
                background = 'background')
 
+# these unit test values taken from SasView 3.1.2
 tests =  [
-    [{'scale': 70.0, 'radius_gyration': 75.0, 'background': 0.0},
+    [{'scale': 1.0, 'i_zero': 70.0, 'radius_gyration': 75.0, 'background': 0.0},
      [0.0106939, 0.469418], [57.1241, 0.112859]],
     ]
Index: sasmodels/models/parallelepiped.py
===================================================================
--- sasmodels/models/parallelepiped.py	(revision 6dd90c1d8aaff9b7299ee215555203db80eaa3a0)
+++ sasmodels/models/parallelepiped.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -143,17 +143,13 @@
 Validation of the code was done by comparing the output of the 1D calculation
 to the angular average of the output of a 2D calculation over all possible
-angles. The Figure below shows the comparison where the solid dot refers to
-averaged 2D while the line represents the result of the 1D calculation (for
-the averaging, 76, 180, 76 points are taken for the angles of $\theta$,
-$\phi$, and $\Psi$ respectively).
-
-.. _parallelepiped-compare:
-
-.. figure:: img/parallelepiped_compare.png
-
-   Comparison between 1D and averaged 2D.
+angles. 
 
 This model is based on form factor calculations implemented in a c-library
 provided by the NIST Center for Neutron Research (Kline, 2006).
+
+References
+----------
+
+None.
 """
 
Index: sasmodels/models/peak_lorentz.py
===================================================================
--- sasmodels/models/peak_lorentz.py	(revision 04b0b30a637f374651ae93ca42ae86785daeb735)
+++ sasmodels/models/peak_lorentz.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -21,8 +21,4 @@
     q = \sqrt{q_x^2 + q_y^2}
 
-
-.. figure:: img/peak_lorentz_1d.jpg
-
-    1D plot using the default values (w/200 data point).
 
 References
Index: sasmodels/models/polymer_excl_volume.py
===================================================================
--- sasmodels/models/polymer_excl_volume.py	(revision 6dd90c1d8aaff9b7299ee215555203db80eaa3a0)
+++ sasmodels/models/polymer_excl_volume.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -81,11 +81,4 @@
 
     q = \sqrt{q_x^2 + q_y^2}
-
-This example dataset is produced using 200 data points, $qmin=0.001Ang^{-1}$,
-$qmax=0.2Ang^{-1}$ and the default values
-
-.. figure:: img/polymer_excl_volume_1d.jpg
-
-    1D plot using the default values (w/500 data point).
 
 
Index: sasmodels/models/power_law.py
===================================================================
--- sasmodels/models/power_law.py	(revision b15849cd5f00f9f0529b67f50a329928aa0ad7a6)
+++ sasmodels/models/power_law.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -20,7 +20,4 @@
 combining this model with other models.
 
-.. figure:: img/power_law_1d.jpg
-
-    1D plot using the default values (w/200 data point).
 
 References
Index: sasmodels/models/rectangular_prism.py
===================================================================
--- sasmodels/models/rectangular_prism.py	(revision 6dd90c1d8aaff9b7299ee215555203db80eaa3a0)
+++ sasmodels/models/rectangular_prism.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -71,5 +71,7 @@
 to the output of the existing :ref:`parallelepiped` model.
 
-REFERENCES
+
+References
+----------
 
 P Mittelbach and G Porod, *Acta Physica Austriaca*, 14 (1961) 185-211
Index: sasmodels/models/rpa.py
===================================================================
--- sasmodels/models/rpa.py	(revision 5cfda00e2127f7bc13806a82cd24ec5eacbae59c)
+++ sasmodels/models/rpa.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -43,7 +43,4 @@
 component.
 
-.. figure:: img/rpa_1d.jpg
-
-    1D plot using the default values (w/500 data points).
 
 References
Index: sasmodels/models/sphere.py
===================================================================
--- sasmodels/models/sphere.py	(revision ad90df9f3ed42019113506f1366fe4b851b5f389)
+++ sasmodels/models/sphere.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -33,15 +33,4 @@
 Validation of our code was done by comparing the output of the 1D model
 to the output of the software provided by the NIST (Kline, 2006).
-Figure :num:`figure #sphere-comparison` shows a comparison of the output
-of our model and the output of the NIST software.
-
-.. _sphere-comparison:
-
-.. figure:: img/sphere_comparison.jpg
-
-    Comparison of the DANSE scattering intensity for a sphere with the
-    output of the NIST SANS analysis software. The parameters were set to:
-    *scale* = 1.0, *radius* = 60 |Ang|, *contrast* = 1e-6 |Ang^-2|, and
-    *background* = 0.01 |cm^-1|.
 
 
Index: sasmodels/models/spherepy.py
===================================================================
--- sasmodels/models/spherepy.py	(revision d2950f4360cecbd3a71cc4eb7a857316a173acf4)
+++ sasmodels/models/spherepy.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -33,15 +33,4 @@
 Validation of our code was done by comparing the output of the 1D model
 to the output of the software provided by the NIST (Kline, 2006).
-Figure :num:`figure #spherepy-comparison` shows a comparison of the output
-of our model and the output of the NIST software.
-
-.. _spherepy-comparison:
-
-.. figure:: img/sphere_comparison.jpg
-
-    Comparison of the DANSE scattering intensity for a sphere with the
-    output of the NIST SANS analysis software. The parameters were set to:
-    *scale* = 1.0, *radius* = 60 |Ang|, *contrast* = 1e-6 |Ang^-2|, and
-    *background* = 0.01 |cm^-1|.
 
 
Index: sasmodels/models/star_polymer.py
===================================================================
--- sasmodels/models/star_polymer.py	(revision 6dd90c1d8aaff9b7299ee215555203db80eaa3a0)
+++ sasmodels/models/star_polymer.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -26,8 +26,4 @@
 
 is the square of the ensemble average radius-of-gyration of an arm.
-
-.. figure:: img/star_polymer_1d.jpg
-
-    1D plot using the default values.
 
 
Index: sasmodels/models/stickyhardsphere.py
===================================================================
--- sasmodels/models/stickyhardsphere.py	(revision d529d93bd045e44913320de5e1c8db47f680e037)
+++ sasmodels/models/stickyhardsphere.py	(revision 54954e1e02af29c4322cdf2636663f22a45de3ed)
@@ -59,7 +59,4 @@
     q = \sqrt{q_x^2 + q_y^2}
 
-.. figure:: img/stickyhardsphere_1d.jpg
-
-    1D plot using the default values (in linear scale).
 
 References
@@ -91,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], "",
@@ -116,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;
@@ -182,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]]
         ]
 
Index: sasmodels/models/surface_fractal.py
===================================================================
--- sasmodels/models/surface_fractal.py	(revision 6dd90c1d8aaff9b7299ee215555203db80eaa3a0)
+++ sasmodels/models/surface_fractal.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -44,8 +44,4 @@
     details)
 
-
-.. figure:: img/surface_fractal_1d.jpg
-
-    1D plot using the default values.
 
 Reference
Index: sasmodels/models/teubner_strey.py
===================================================================
--- sasmodels/models/teubner_strey.py	(revision 6dd90c1d8aaff9b7299ee215555203db80eaa3a0)
+++ sasmodels/models/teubner_strey.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -35,8 +35,4 @@
     q = \sqrt{q_x^2 + q_y^2}
 
-
-.. figure:: img/teubner_strey_1d.jpg
-
-    1D plot using the default values (w/200 data point).
 
 References
Index: sasmodels/models/triaxial_ellipsoid.py
===================================================================
--- sasmodels/models/triaxial_ellipsoid.py	(revision 2f0c07deb2cb7a8c0c93476fbf1e0ffbe6c278cb)
+++ sasmodels/models/triaxial_ellipsoid.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -64,14 +64,5 @@
 1D calculation to the angular average of the output of 2D calculation
 over all possible angles.
-:num:`Figure #triaxial-ellipsoid-comparison` shows the comparison where
-the solid dot refers to averaged 2D while the line represents the
-result of 1D calculation (for 2D averaging, 76, 180, and 76 points
-are taken for the angles of $\theta$, $\phi$, and $\psi$ respectively).
 
-.. _triaxial-ellipsoid-comparison:
-
-.. figure:: img/triaxial_ellipsoid_comparison.png
-
-    Comparison between 1D and averaged 2D.
 
 References
Index: sasmodels/models/two_lorentzian.py
===================================================================
--- sasmodels/models/two_lorentzian.py	(revision 168052c5791506d7dfad00173f5636fc5701ad11)
+++ sasmodels/models/two_lorentzian.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -24,8 +24,4 @@
     q = \sqrt{q_x^2 + q_y^2}
 
-
-.. figure:: img/two_lorentzian.jpg
-
-    1D plot using the default values (w/500 data point).
 
 References
Index: sasmodels/models/two_power_law.py
===================================================================
--- sasmodels/models/two_power_law.py	(revision 7e1d090d6f1579784a2df1a534eda3abdc9c2d5a)
+++ sasmodels/models/two_power_law.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -36,8 +36,4 @@
     q = \sqrt{q_x^2 + q_y^2}
 
-
-.. figure:: img/two_power_law_1d.jpg
-
-    1D plot using the default values (with 500 data point).
 
 References
Index: sasmodels/models/vesicle.py
===================================================================
--- sasmodels/models/vesicle.py	(revision 6dd90c1d8aaff9b7299ee215555203db80eaa3a0)
+++ sasmodels/models/vesicle.py	(revision aa2edb2b2fb550caed0506dcf63bc7eac7e1779a)
@@ -50,11 +50,7 @@
 radius for *S(Q)* when *P(Q)* \* *S(Q)* is applied.
 
-.. figure:: img/vesicle_1d.jpg
 
-    1D plot using the default values given in the table (w/200 data point).
-    Polydispersity and instrumental resolution normally will smear out most
-    of the rapidly oscillating features.
-
-REFERENCE
+References
+----------
 
 A Guinier and G. Fournet, *Small-Angle Scattering of X-Rays*, John Wiley and
Index: sasmodels/product.py
===================================================================
--- sasmodels/product.py	(revision fcd7bbda85a603b85101ba7ec6495729497e6b3f)
+++ sasmodels/product.py	(revision 3bcd03d7e1d8d4938d30f17bf360b83417139376)
@@ -18,5 +18,5 @@
 SCALE=0
 BACKGROUND=1
-EFFECT_RADIUS=2
+RADIUS_EFFECTIVE=2
 VOLFRACTION=3
 
@@ -31,5 +31,5 @@
     assert s_pars[BACKGROUND].name == 'background'
     # We require structure factors to start with effect radius and volfraction
-    assert s_pars[EFFECT_RADIUS].name == 'effect_radius'
+    assert s_pars[RADIUS_EFFECTIVE].name == 'radius_effective'
     assert s_pars[VOLFRACTION].name == 'volfraction'
     # Combine the parameter sets.  We are skipping the first three
