Index: sansmodels/src/sans/models/c_models/CCoreShellEllipsoidModel.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/CCoreShellEllipsoidModel.cpp	(revision 308052778784baf067479c9e63914a0293dc7ebd)
+++ sansmodels/src/sans/models/c_models/CCoreShellEllipsoidModel.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -91,4 +91,5 @@
         // Initialize parameter dictionary
         PyDict_SetItemString(self->params,"scale",Py_BuildValue("d",1.000000));
+        PyDict_SetItemString(self->params,"sld_core",Py_BuildValue("d",0.000002));
         PyDict_SetItemString(self->params,"axis_theta",Py_BuildValue("d",0.000000));
         PyDict_SetItemString(self->params,"polar_shell",Py_BuildValue("d",30.000000));
@@ -99,5 +100,5 @@
         PyDict_SetItemString(self->params,"equat_core",Py_BuildValue("d",200.000000));
         PyDict_SetItemString(self->params,"polar_core",Py_BuildValue("d",20.000000));
-        PyDict_SetItemString(self->params,"contrast",Py_BuildValue("d",0.000001));
+        PyDict_SetItemString(self->params,"sld_shell",Py_BuildValue("d",0.000001));
         // Initialize dispersion / averaging parameter dict
         DispersionVisitor* visitor = new DispersionVisitor();
@@ -251,4 +252,5 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sld_core = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sld_core") );
     self->model->axis_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_theta") );
     self->model->polar_shell = PyFloat_AsDouble( PyDict_GetItemString(self->params, "polar_shell") );
@@ -259,5 +261,5 @@
     self->model->equat_core = PyFloat_AsDouble( PyDict_GetItemString(self->params, "equat_core") );
     self->model->polar_core = PyFloat_AsDouble( PyDict_GetItemString(self->params, "polar_core") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
+    self->model->sld_shell = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sld_shell") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -338,4 +340,5 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sld_core = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sld_core") );
     self->model->axis_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_theta") );
     self->model->polar_shell = PyFloat_AsDouble( PyDict_GetItemString(self->params, "polar_shell") );
@@ -346,5 +349,5 @@
     self->model->equat_core = PyFloat_AsDouble( PyDict_GetItemString(self->params, "equat_core") );
     self->model->polar_core = PyFloat_AsDouble( PyDict_GetItemString(self->params, "polar_core") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
+    self->model->sld_shell = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sld_shell") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -412,4 +415,5 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sld_core = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sld_core") );
     self->model->axis_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_theta") );
     self->model->polar_shell = PyFloat_AsDouble( PyDict_GetItemString(self->params, "polar_shell") );
@@ -420,5 +424,5 @@
     self->model->equat_core = PyFloat_AsDouble( PyDict_GetItemString(self->params, "equat_core") );
     self->model->polar_core = PyFloat_AsDouble( PyDict_GetItemString(self->params, "polar_core") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
+    self->model->sld_shell = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sld_shell") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -455,4 +459,5 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sld_core = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sld_core") );
     self->model->axis_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_theta") );
     self->model->polar_shell = PyFloat_AsDouble( PyDict_GetItemString(self->params, "polar_shell") );
@@ -463,5 +468,5 @@
     self->model->equat_core = PyFloat_AsDouble( PyDict_GetItemString(self->params, "equat_core") );
     self->model->polar_core = PyFloat_AsDouble( PyDict_GetItemString(self->params, "polar_core") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
+    self->model->sld_shell = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sld_shell") );
     // Read in dispersion parameters
     PyObject* disp_dict;
Index: sansmodels/src/sans/models/c_models/CCylinderModel.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/CCylinderModel.cpp	(revision 308052778784baf067479c9e63914a0293dc7ebd)
+++ sansmodels/src/sans/models/c_models/CCylinderModel.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -91,9 +91,10 @@
         // Initialize parameter dictionary
         PyDict_SetItemString(self->params,"scale",Py_BuildValue("d",1.000000));
+        PyDict_SetItemString(self->params,"sldCyl",Py_BuildValue("d",0.000004));
+        PyDict_SetItemString(self->params,"cyl_theta",Py_BuildValue("d",1.000000));
         PyDict_SetItemString(self->params,"length",Py_BuildValue("d",400.000000));
-        PyDict_SetItemString(self->params,"cyl_theta",Py_BuildValue("d",1.000000));
+        PyDict_SetItemString(self->params,"sldSolv",Py_BuildValue("d",0.000001));
         PyDict_SetItemString(self->params,"background",Py_BuildValue("d",0.000000));
         PyDict_SetItemString(self->params,"radius",Py_BuildValue("d",20.000000));
-        PyDict_SetItemString(self->params,"contrast",Py_BuildValue("d",0.000003));
         PyDict_SetItemString(self->params,"cyl_phi",Py_BuildValue("d",1.000000));
         // Initialize dispersion / averaging parameter dict
@@ -242,9 +243,10 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sldCyl = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldCyl") );
+    self->model->cyl_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_theta") );
     self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
-    self->model->cyl_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_theta") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     self->model->cyl_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_phi") );
     // Read in dispersion parameters
@@ -322,9 +324,10 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sldCyl = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldCyl") );
+    self->model->cyl_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_theta") );
     self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
-    self->model->cyl_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_theta") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     self->model->cyl_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_phi") );
     // Read in dispersion parameters
@@ -389,9 +392,10 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sldCyl = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldCyl") );
+    self->model->cyl_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_theta") );
     self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
-    self->model->cyl_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_theta") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     self->model->cyl_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_phi") );
     // Read in dispersion parameters
@@ -425,9 +429,10 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sldCyl = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldCyl") );
+    self->model->cyl_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_theta") );
     self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
-    self->model->cyl_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_theta") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     self->model->cyl_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_phi") );
     // Read in dispersion parameters
Index: sansmodels/src/sans/models/c_models/CEllipsoidModel.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/CEllipsoidModel.cpp	(revision 308052778784baf067479c9e63914a0293dc7ebd)
+++ sansmodels/src/sans/models/c_models/CEllipsoidModel.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -95,6 +95,7 @@
         PyDict_SetItemString(self->params,"radius_a",Py_BuildValue("d",20.000000));
         PyDict_SetItemString(self->params,"axis_phi",Py_BuildValue("d",0.000000));
+        PyDict_SetItemString(self->params,"sldSolv",Py_BuildValue("d",0.000001));
         PyDict_SetItemString(self->params,"background",Py_BuildValue("d",0.000000));
-        PyDict_SetItemString(self->params,"contrast",Py_BuildValue("d",0.000003));
+        PyDict_SetItemString(self->params,"sldEll",Py_BuildValue("d",0.000004));
         // Initialize dispersion / averaging parameter dict
         DispersionVisitor* visitor = new DispersionVisitor();
@@ -246,6 +247,7 @@
     self->model->radius_a = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius_a") );
     self->model->axis_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_phi") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
+    self->model->sldEll = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldEll") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -326,6 +328,7 @@
     self->model->radius_a = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius_a") );
     self->model->axis_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_phi") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
+    self->model->sldEll = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldEll") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -393,6 +396,7 @@
     self->model->radius_a = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius_a") );
     self->model->axis_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_phi") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
+    self->model->sldEll = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldEll") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -429,6 +433,7 @@
     self->model->radius_a = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius_a") );
     self->model->axis_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_phi") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
+    self->model->sldEll = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldEll") );
     // Read in dispersion parameters
     PyObject* disp_dict;
Index: sansmodels/src/sans/models/c_models/CEllipticalCylinderModel.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/CEllipticalCylinderModel.cpp	(revision 308052778784baf067479c9e63914a0293dc7ebd)
+++ sansmodels/src/sans/models/c_models/CEllipticalCylinderModel.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -91,11 +91,12 @@
         // Initialize parameter dictionary
         PyDict_SetItemString(self->params,"scale",Py_BuildValue("d",1.000000));
+        PyDict_SetItemString(self->params,"sldCyl",Py_BuildValue("d",0.000004));
         PyDict_SetItemString(self->params,"cyl_psi",Py_BuildValue("d",0.000000));
         PyDict_SetItemString(self->params,"length",Py_BuildValue("d",400.000000));
         PyDict_SetItemString(self->params,"r_minor",Py_BuildValue("d",20.000000));
+        PyDict_SetItemString(self->params,"sldSolv",Py_BuildValue("d",0.000001));
+        PyDict_SetItemString(self->params,"background",Py_BuildValue("d",0.000000));
         PyDict_SetItemString(self->params,"cyl_theta",Py_BuildValue("d",1.570000));
-        PyDict_SetItemString(self->params,"background",Py_BuildValue("d",0.000000));
         PyDict_SetItemString(self->params,"r_ratio",Py_BuildValue("d",1.500000));
-        PyDict_SetItemString(self->params,"contrast",Py_BuildValue("d",0.000003));
         PyDict_SetItemString(self->params,"cyl_phi",Py_BuildValue("d",0.000000));
         // Initialize dispersion / averaging parameter dict
@@ -250,11 +251,12 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sldCyl = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldCyl") );
     self->model->cyl_psi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_psi") );
     self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
     self->model->r_minor = PyFloat_AsDouble( PyDict_GetItemString(self->params, "r_minor") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
+    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->cyl_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_theta") );
-    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->r_ratio = PyFloat_AsDouble( PyDict_GetItemString(self->params, "r_ratio") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     self->model->cyl_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_phi") );
     // Read in dispersion parameters
@@ -336,11 +338,12 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sldCyl = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldCyl") );
     self->model->cyl_psi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_psi") );
     self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
     self->model->r_minor = PyFloat_AsDouble( PyDict_GetItemString(self->params, "r_minor") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
+    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->cyl_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_theta") );
-    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->r_ratio = PyFloat_AsDouble( PyDict_GetItemString(self->params, "r_ratio") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     self->model->cyl_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_phi") );
     // Read in dispersion parameters
@@ -409,11 +412,12 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sldCyl = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldCyl") );
     self->model->cyl_psi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_psi") );
     self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
     self->model->r_minor = PyFloat_AsDouble( PyDict_GetItemString(self->params, "r_minor") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
+    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->cyl_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_theta") );
-    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->r_ratio = PyFloat_AsDouble( PyDict_GetItemString(self->params, "r_ratio") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     self->model->cyl_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_phi") );
     // Read in dispersion parameters
@@ -451,11 +455,12 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sldCyl = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldCyl") );
     self->model->cyl_psi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_psi") );
     self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
     self->model->r_minor = PyFloat_AsDouble( PyDict_GetItemString(self->params, "r_minor") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
+    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->cyl_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_theta") );
-    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->r_ratio = PyFloat_AsDouble( PyDict_GetItemString(self->params, "r_ratio") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     self->model->cyl_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "cyl_phi") );
     // Read in dispersion parameters
Index: sansmodels/src/sans/models/c_models/CFlexibleCylinderModel.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/CFlexibleCylinderModel.cpp	(revision 308052778784baf067479c9e63914a0293dc7ebd)
+++ sansmodels/src/sans/models/c_models/CFlexibleCylinderModel.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -91,9 +91,10 @@
         // Initialize parameter dictionary
         PyDict_SetItemString(self->params,"scale",Py_BuildValue("d",1.000000));
+        PyDict_SetItemString(self->params,"sldCyl",Py_BuildValue("d",0.000006));
         PyDict_SetItemString(self->params,"length",Py_BuildValue("d",1000.000000));
+        PyDict_SetItemString(self->params,"sldSolv",Py_BuildValue("d",0.000001));
+        PyDict_SetItemString(self->params,"background",Py_BuildValue("d",0.000100));
         PyDict_SetItemString(self->params,"radius",Py_BuildValue("d",20.000000));
-        PyDict_SetItemString(self->params,"background",Py_BuildValue("d",0.000100));
         PyDict_SetItemString(self->params,"kuhn_length",Py_BuildValue("d",100.000000));
-        PyDict_SetItemString(self->params,"contrast",Py_BuildValue("d",0.000005));
         // Initialize dispersion / averaging parameter dict
         DispersionVisitor* visitor = new DispersionVisitor();
@@ -238,9 +239,10 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sldCyl = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldCyl") );
     self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
+    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
-    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->kuhn_length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "kuhn_length") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -315,9 +317,10 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sldCyl = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldCyl") );
     self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
+    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
-    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->kuhn_length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "kuhn_length") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -379,9 +382,10 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sldCyl = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldCyl") );
     self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
+    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
-    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->kuhn_length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "kuhn_length") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -412,9 +416,10 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sldCyl = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldCyl") );
     self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
+    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
-    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->kuhn_length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "kuhn_length") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
Index: sansmodels/src/sans/models/c_models/CHollowCylinderModel.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/CHollowCylinderModel.cpp	(revision 308052778784baf067479c9e63914a0293dc7ebd)
+++ sansmodels/src/sans/models/c_models/CHollowCylinderModel.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -91,11 +91,12 @@
         // Initialize parameter dictionary
         PyDict_SetItemString(self->params,"scale",Py_BuildValue("d",1.000000));
+        PyDict_SetItemString(self->params,"sldCyl",Py_BuildValue("d",0.000006));
         PyDict_SetItemString(self->params,"core_radius",Py_BuildValue("d",20.000000));
         PyDict_SetItemString(self->params,"axis_theta",Py_BuildValue("d",1.570000));
         PyDict_SetItemString(self->params,"length",Py_BuildValue("d",400.000000));
         PyDict_SetItemString(self->params,"axis_phi",Py_BuildValue("d",0.000000));
+        PyDict_SetItemString(self->params,"sldSolv",Py_BuildValue("d",0.000001));
+        PyDict_SetItemString(self->params,"background",Py_BuildValue("d",0.010000));
         PyDict_SetItemString(self->params,"radius",Py_BuildValue("d",30.000000));
-        PyDict_SetItemString(self->params,"background",Py_BuildValue("d",0.010000));
-        PyDict_SetItemString(self->params,"contrast",Py_BuildValue("d",0.000005));
         // Initialize dispersion / averaging parameter dict
         DispersionVisitor* visitor = new DispersionVisitor();
@@ -246,11 +247,12 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sldCyl = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldCyl") );
     self->model->core_radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "core_radius") );
     self->model->axis_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_theta") );
     self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
     self->model->axis_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_phi") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
+    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
-    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -329,11 +331,12 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sldCyl = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldCyl") );
     self->model->core_radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "core_radius") );
     self->model->axis_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_theta") );
     self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
     self->model->axis_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_phi") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
+    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
-    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -399,11 +402,12 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sldCyl = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldCyl") );
     self->model->core_radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "core_radius") );
     self->model->axis_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_theta") );
     self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
     self->model->axis_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_phi") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
+    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
-    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -438,11 +442,12 @@
 	    // Reader parameter dictionary
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sldCyl = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldCyl") );
     self->model->core_radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "core_radius") );
     self->model->axis_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_theta") );
     self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
     self->model->axis_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_phi") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
+    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
-    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
Index: sansmodels/src/sans/models/c_models/CLamellarPSModel.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/CLamellarPSModel.cpp	(revision 308052778784baf067479c9e63914a0293dc7ebd)
+++ sansmodels/src/sans/models/c_models/CLamellarPSModel.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -92,9 +92,10 @@
         PyDict_SetItemString(self->params,"n_plates",Py_BuildValue("d",20.000000));
         PyDict_SetItemString(self->params,"scale",Py_BuildValue("d",1.000000));
+        PyDict_SetItemString(self->params,"sld_sol",Py_BuildValue("d",0.000001));
+        PyDict_SetItemString(self->params,"delta",Py_BuildValue("d",30.000000));
         PyDict_SetItemString(self->params,"spacing",Py_BuildValue("d",400.000000));
         PyDict_SetItemString(self->params,"caille",Py_BuildValue("d",0.100000));
         PyDict_SetItemString(self->params,"background",Py_BuildValue("d",0.000000));
-        PyDict_SetItemString(self->params,"delta",Py_BuildValue("d",30.000000));
-        PyDict_SetItemString(self->params,"contrast",Py_BuildValue("d",0.000005));
+        PyDict_SetItemString(self->params,"sld_bi",Py_BuildValue("d",0.000006));
         // Initialize dispersion / averaging parameter dict
         DispersionVisitor* visitor = new DispersionVisitor();
@@ -237,9 +238,10 @@
     self->model->n_plates = PyFloat_AsDouble( PyDict_GetItemString(self->params, "n_plates") );
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sld_sol = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sld_sol") );
+    self->model->delta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "delta") );
     self->model->spacing = PyFloat_AsDouble( PyDict_GetItemString(self->params, "spacing") );
     self->model->caille = PyFloat_AsDouble( PyDict_GetItemString(self->params, "caille") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->delta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "delta") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
+    self->model->sld_bi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sld_bi") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -313,9 +315,10 @@
     self->model->n_plates = PyFloat_AsDouble( PyDict_GetItemString(self->params, "n_plates") );
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sld_sol = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sld_sol") );
+    self->model->delta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "delta") );
     self->model->spacing = PyFloat_AsDouble( PyDict_GetItemString(self->params, "spacing") );
     self->model->caille = PyFloat_AsDouble( PyDict_GetItemString(self->params, "caille") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->delta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "delta") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
+    self->model->sld_bi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sld_bi") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -376,9 +379,10 @@
     self->model->n_plates = PyFloat_AsDouble( PyDict_GetItemString(self->params, "n_plates") );
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sld_sol = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sld_sol") );
+    self->model->delta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "delta") );
     self->model->spacing = PyFloat_AsDouble( PyDict_GetItemString(self->params, "spacing") );
     self->model->caille = PyFloat_AsDouble( PyDict_GetItemString(self->params, "caille") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->delta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "delta") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
+    self->model->sld_bi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sld_bi") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -408,9 +412,10 @@
     self->model->n_plates = PyFloat_AsDouble( PyDict_GetItemString(self->params, "n_plates") );
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
+    self->model->sld_sol = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sld_sol") );
+    self->model->delta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "delta") );
     self->model->spacing = PyFloat_AsDouble( PyDict_GetItemString(self->params, "spacing") );
     self->model->caille = PyFloat_AsDouble( PyDict_GetItemString(self->params, "caille") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->delta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "delta") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
+    self->model->sld_bi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sld_bi") );
     // Read in dispersion parameters
     PyObject* disp_dict;
Index: sansmodels/src/sans/models/c_models/CParallelepipedModel.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/CParallelepipedModel.cpp	(revision 308052778784baf067479c9e63914a0293dc7ebd)
+++ sansmodels/src/sans/models/c_models/CParallelepipedModel.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -94,9 +94,10 @@
         PyDict_SetItemString(self->params,"scale",Py_BuildValue("d",1.000000));
         PyDict_SetItemString(self->params,"long_c",Py_BuildValue("d",400.000000));
+        PyDict_SetItemString(self->params,"sldPipe",Py_BuildValue("d",0.000006));
         PyDict_SetItemString(self->params,"parallel_psi",Py_BuildValue("d",0.000000));
         PyDict_SetItemString(self->params,"parallel_phi",Py_BuildValue("d",0.000000));
         PyDict_SetItemString(self->params,"parallel_theta",Py_BuildValue("d",0.000000));
+        PyDict_SetItemString(self->params,"sldSolv",Py_BuildValue("d",0.000001));
         PyDict_SetItemString(self->params,"background",Py_BuildValue("d",0.000000));
-        PyDict_SetItemString(self->params,"contrast",Py_BuildValue("d",0.000005));
         // Initialize dispersion / averaging parameter dict
         DispersionVisitor* visitor = new DispersionVisitor();
@@ -253,9 +254,10 @@
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
     self->model->long_c = PyFloat_AsDouble( PyDict_GetItemString(self->params, "long_c") );
+    self->model->sldPipe = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldPipe") );
     self->model->parallel_psi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_psi") );
     self->model->parallel_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_phi") );
     self->model->parallel_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_theta") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -339,9 +341,10 @@
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
     self->model->long_c = PyFloat_AsDouble( PyDict_GetItemString(self->params, "long_c") );
+    self->model->sldPipe = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldPipe") );
     self->model->parallel_psi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_psi") );
     self->model->parallel_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_phi") );
     self->model->parallel_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_theta") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -412,9 +415,10 @@
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
     self->model->long_c = PyFloat_AsDouble( PyDict_GetItemString(self->params, "long_c") );
+    self->model->sldPipe = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldPipe") );
     self->model->parallel_psi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_psi") );
     self->model->parallel_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_phi") );
     self->model->parallel_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_theta") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -454,9 +458,10 @@
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
     self->model->long_c = PyFloat_AsDouble( PyDict_GetItemString(self->params, "long_c") );
+    self->model->sldPipe = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldPipe") );
     self->model->parallel_psi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_psi") );
     self->model->parallel_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_phi") );
     self->model->parallel_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "parallel_theta") );
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
Index: sansmodels/src/sans/models/c_models/CSphereModel.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/CSphereModel.cpp	(revision 308052778784baf067479c9e63914a0293dc7ebd)
+++ sansmodels/src/sans/models/c_models/CSphereModel.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -90,8 +90,9 @@
         
         // Initialize parameter dictionary
+        PyDict_SetItemString(self->params,"sldSolv",Py_BuildValue("d",0.000001));
+        PyDict_SetItemString(self->params,"sldSph",Py_BuildValue("d",0.000002));
         PyDict_SetItemString(self->params,"scale",Py_BuildValue("d",1.000000));
         PyDict_SetItemString(self->params,"radius",Py_BuildValue("d",60.000000));
         PyDict_SetItemString(self->params,"background",Py_BuildValue("d",0.000000));
-        PyDict_SetItemString(self->params,"contrast",Py_BuildValue("d",0.000001));
         // Initialize dispersion / averaging parameter dict
         DispersionVisitor* visitor = new DispersionVisitor();
@@ -229,8 +230,9 @@
 	
 	    // Reader parameter dictionary
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
+    self->model->sldSph = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSph") );
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -300,8 +302,9 @@
 	
 	    // Reader parameter dictionary
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
+    self->model->sldSph = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSph") );
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -358,8 +361,9 @@
 	
 	    // Reader parameter dictionary
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
+    self->model->sldSph = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSph") );
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
@@ -385,8 +389,9 @@
 	
 	    // Reader parameter dictionary
+    self->model->sldSolv = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSolv") );
+    self->model->sldSph = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sldSph") );
     self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
     self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
Index: sansmodels/src/sans/models/c_models/cylinder.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/cylinder.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
+++ sansmodels/src/sans/models/c_models/cylinder.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -39,5 +39,6 @@
 	length     = Parameter(400.0, true);
 	length.set_min(0.0);
-	contrast   = Parameter(3.e-6);
+	sldCyl   = Parameter(4.e-6);
+	sldSolv   = Parameter(1.e-6);
 	background = Parameter(0.0);
 	cyl_theta  = Parameter(0.0, true);
@@ -52,5 +53,5 @@
  */
 double CylinderModel :: operator()(double q) {
-	double dp[5];
+	double dp[6];
 
 	// Fill parameter array for IGOR library
@@ -59,6 +60,7 @@
 	dp[1] = radius();
 	dp[2] = length();
-	dp[3] = contrast();
-	dp[4] = 0.0;
+	dp[3] = sldCyl();
+	dp[4] = sldSolv();
+	dp[5] = 0.0;
 
 	// Get the dispersion points for the radius
@@ -113,5 +115,6 @@
 	dp.radius     = radius();
 	dp.length     = length();
-	dp.contrast   = contrast();
+	dp.sldCyl   = sldCyl();
+	dp.sldSolv   = sldSolv();
 	dp.background = 0.0;
 	dp.cyl_theta  = cyl_theta();
Index: sansmodels/src/sans/models/c_models/ellipsoid.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/ellipsoid.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
+++ sansmodels/src/sans/models/c_models/ellipsoid.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -39,5 +39,6 @@
 	radius_b   = Parameter(400.0, true);
 	radius_b.set_min(0.0);
-	contrast   = Parameter(3.e-6);
+	sldEll   = Parameter(4.e-6);
+	sldSolv   = Parameter(1.e-6);
 	background = Parameter(0.0);
 	axis_theta  = Parameter(1.57, true);
@@ -52,5 +53,5 @@
  */
 double EllipsoidModel :: operator()(double q) {
-	double dp[5];
+	double dp[6];
 
 	// Fill parameter array for IGOR library
@@ -59,6 +60,7 @@
 	dp[1] = radius_a();
 	dp[2] = radius_b();
-	dp[3] = contrast();
-	dp[4] = 0.0;
+	dp[3] = sldEll();
+	dp[4] = sldSolv();
+	dp[5] = 0.0;
 
 	// Get the dispersion points for the radius_a
@@ -116,5 +118,6 @@
 	dp.radius_a   = radius_a();
 	dp.radius_b   = radius_b();
-	dp.contrast   = contrast();
+	dp.sldEll   = sldEll();
+	dp.sldSolv   = sldSolv();
 	dp.background = 0.0;
 	dp.axis_theta = axis_theta();
Index: sansmodels/src/sans/models/c_models/ellipticalcylinder.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/ellipticalcylinder.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
+++ sansmodels/src/sans/models/c_models/ellipticalcylinder.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -41,5 +41,6 @@
 	length     = Parameter(400.0, true);
 	length.set_min(0.0);
-	contrast   = Parameter(3.e-6);
+	sldCyl   = Parameter(4.e-6);
+	sldSolv   = Parameter(1.e-6);
 	background = Parameter(0.0);
 	cyl_theta  = Parameter(1.57, true);
@@ -55,5 +56,5 @@
  */
 double EllipticalCylinderModel :: operator()(double q) {
-	double dp[6];
+	double dp[7];
 
 	dp[0] = scale();
@@ -61,6 +62,7 @@
 	dp[2] = r_ratio();
 	dp[3] = length();
-	dp[4] = contrast();
-	dp[5] = 0.0;
+	dp[4] = sldCyl();
+	dp[5] = sldSolv();
+	dp[6] = 0.0;
 
 	// Get the dispersion points for the r_minor
@@ -132,5 +134,6 @@
 	dp.r_ratio    = r_ratio();
 	dp.length     = length();
-	dp.contrast   = contrast();
+	dp.sldCyl   = sldCyl();
+	dp.sldSolv   = sldSolv();
 	dp.background = 0.0;
 	dp.cyl_theta  = cyl_theta();
Index: sansmodels/src/sans/models/c_models/flexiblecylinder.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/flexiblecylinder.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
+++ sansmodels/src/sans/models/c_models/flexiblecylinder.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -42,5 +42,6 @@
 	radius  = Parameter(20.0, true);
 	radius.set_min(0.0);
-	contrast   = Parameter(5.3e-6);
+	sldCyl   = Parameter(6.3e-6);
+	sldSolv   = Parameter(1.0e-6);
 	background = Parameter(0.0001);
 }
@@ -53,5 +54,5 @@
  */
 double FlexibleCylinderModel :: operator()(double q) {
-	double dp[6];
+	double dp[7];
 
 	// Fill parameter array for IGOR library
@@ -61,6 +62,7 @@
 	dp[2] = kuhn_length();
 	dp[3] = radius();
-	dp[4] = contrast();
-	dp[5] = 0.0;
+	dp[4] = sldCyl();
+	dp[5] = sldSolv();
+	dp[6] = 0.0;
 
 	// Get the dispersion points for the length
Index: sansmodels/src/sans/models/c_models/hollowcylinder.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/hollowcylinder.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
+++ sansmodels/src/sans/models/c_models/hollowcylinder.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -41,5 +41,6 @@
 	length     = Parameter(400.0, true);
 	length.set_min(0.0);
-	contrast  = Parameter(5.3e-6);
+	sldCyl  = Parameter(6.3e-6);
+	sldSolv  = Parameter(1.0e-6);
 	background = Parameter(0.0);
 	axis_theta = Parameter(0.0, true);
@@ -54,5 +55,5 @@
  */
 double HollowCylinderModel :: operator()(double q) {
-	double dp[6];
+	double dp[7];
 
 	dp[0] = scale();
@@ -60,6 +61,7 @@
 	dp[2] = radius();
 	dp[3] = length();
-	dp[4] = contrast();
-	dp[5] = 0.0;
+	dp[4] = sldCyl();
+	dp[5] = sldSolv();
+	dp[6] = 0.0;
 
 	// Get the dispersion points for the core radius
@@ -113,5 +115,5 @@
 	if (vol != 0.0 && norm != 0.0) {
 		//Re-normalize by avg volume
-		sum = sum/(vol/norm);}
+		sum = sum*(vol/norm);}
 
 	return sum/norm + background();
@@ -131,5 +133,6 @@
 	dp.radius  = radius();
 	dp.length     = length();
-	dp.contrast   = contrast();
+	dp.sldCyl   = sldCyl();
+	dp.sldSolv  = sldSolv();
 	dp.background = 0.0;
 	dp.axis_theta = axis_theta();
@@ -223,5 +226,5 @@
 	if (vol != 0.0 && norm_vol != 0.0) {
 		//Re-normalize by avg volume
-		sum = sum/(vol/norm_vol);}
+		sum = sum*(vol/norm_vol);}
 	return sum/norm + background();
 }
Index: sansmodels/src/sans/models/c_models/lamellarPS.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/lamellarPS.cpp	(revision f9bf66165686c721c2f0b3a197f7dda1822721ad)
+++ sansmodels/src/sans/models/c_models/lamellarPS.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -39,5 +39,6 @@
 	delta     = Parameter(30.0);
 	delta.set_min(0.0);
-	contrast   = Parameter(5.3e-6);
+	sld_bi   = Parameter(6.3e-6);
+	sld_sol   = Parameter(1.0e-6);
 	n_plates     = Parameter(20.0);
 	caille = Parameter(0.1);
@@ -53,5 +54,5 @@
  */
 double LamellarPSModel :: operator()(double q) {
-	double dp[7];
+	double dp[8];
 
 	// Fill parameter array for IGOR library
@@ -60,8 +61,9 @@
 	dp[1] = spacing();
 	dp[2] = delta();
-	dp[3] = contrast();
-	dp[4] = n_plates();
-	dp[5] = caille();
-	dp[6] = 0.0;
+	dp[3] = sld_bi();
+	dp[4] = sld_sol();
+	dp[5] = n_plates();
+	dp[6] = caille();
+	dp[7] = 0.0;
 
 
Index: sansmodels/src/sans/models/c_models/models.hh
===================================================================
--- sansmodels/src/sans/models/c_models/models.hh	(revision 5eb91544a3ee42b368ccec3ebcf8e95f75b020a2)
+++ sansmodels/src/sans/models/c_models/models.hh	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -32,5 +32,6 @@
 	Parameter scale;
 	Parameter length;
-	Parameter contrast;
+	Parameter sldCyl;
+	Parameter sldSolv;
 	Parameter background;
 	Parameter cyl_theta;
@@ -55,5 +56,6 @@
 	Parameter short_b;
 	Parameter long_c;
-	Parameter contrast;
+	Parameter sldPipe;
+	Parameter sldSolv;
 	Parameter background;
 	Parameter parallel_theta;
@@ -77,5 +79,6 @@
 	Parameter radius;
 	Parameter scale;
-	Parameter contrast;
+	Parameter sldSph;
+	Parameter sldSolv;
 	Parameter background;
 
@@ -245,5 +248,6 @@
 	Parameter scale;
 	Parameter radius_b;
-	Parameter contrast;
+	Parameter sldEll;
+	Parameter sldSolv;
 	Parameter background;
 	Parameter axis_theta;
@@ -267,5 +271,6 @@
 	Parameter r_ratio;
 	Parameter length;
-	Parameter contrast;
+	Parameter sldCyl;
+	Parameter sldSolv;
 	Parameter background;
 	Parameter cyl_theta;
@@ -312,5 +317,6 @@
 	Parameter kuhn_length;
 	Parameter radius;
-	Parameter contrast;
+	Parameter sldCyl;
+	Parameter sldSolv;
 	Parameter background;
 	Parameter axis_theta;
@@ -403,5 +409,6 @@
 	Parameter spacing;
 	Parameter delta;
-	Parameter contrast;
+	Parameter sld_bi;
+	Parameter sld_sol;
 	Parameter n_plates;
 	Parameter caille;
@@ -450,5 +457,6 @@
 	Parameter equat_shell;
 	Parameter polar_shell;
-	Parameter contrast;
+	Parameter sld_core;
+	Parameter sld_shell;
 	Parameter sld_solvent;
 	Parameter background;
@@ -473,5 +481,6 @@
 	Parameter radius;
 	Parameter length;
-	Parameter contrast;
+	Parameter sldCyl;
+	Parameter sldSolv;
 	Parameter background;
 	Parameter axis_theta;
Index: sansmodels/src/sans/models/c_models/parallelepiped.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/parallelepiped.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
+++ sansmodels/src/sans/models/c_models/parallelepiped.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -42,5 +42,6 @@
 	long_c     = Parameter(400.0, true);
 	long_c.set_min(1.0);
-	contrast   = Parameter(53.e-7);
+	sldPipe   = Parameter(6.3e-6);
+	sldSolv   = Parameter(1.0e-6);
 	background = Parameter(0.0);
 	parallel_theta  = Parameter(0.0, true);
@@ -56,5 +57,5 @@
  */
 double ParallelepipedModel :: operator()(double q) {
-	double dp[6];
+	double dp[7];
 
 	// Fill parameter array for IGOR library
@@ -64,6 +65,7 @@
 	dp[2] = short_b();
 	dp[3] = long_c();
-	dp[4] = contrast();
-	dp[5] = 0.0;
+	dp[4] = sldPipe();
+	dp[5] = sldSolv();
+	dp[6] = 0.0;
 
 	// Get the dispersion points for the short_edgeA
@@ -132,5 +134,6 @@
 	dp.short_b   = short_b();
 	dp.long_c  = long_c();
-	dp.contrast   = contrast();
+	dp.sldPipe   = sldPipe();
+	dp.sldSolv   = sldSolv();
 	dp.background = 0.0;
 	//dp.background = background();
Index: sansmodels/src/sans/models/c_models/sphere.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/sphere.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
+++ sansmodels/src/sans/models/c_models/sphere.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -35,5 +35,6 @@
 	radius     = Parameter(20.0, true);
 	radius.set_min(0.0);
-	contrast   = Parameter(3.e-6);
+	sldSph   = Parameter(4.0e-6);
+	sldSolv   = Parameter(1.0e-6);
 	background = Parameter(0.0);
 }
@@ -46,5 +47,5 @@
  */
 double SphereModel :: operator()(double q) {
-	double dp[4];
+	double dp[5];
 
 	// Fill parameter array for IGOR library
@@ -52,6 +53,7 @@
 	dp[0] = scale();
 	dp[1] = radius();
-	dp[2] = contrast();
-	dp[3] = 0.0;
+	dp[2] = sldSph();
+	dp[3] = sldSolv();
+	dp[4] = 0.0;
 
 	// Get the dispersion points for the radius
@@ -114,5 +116,6 @@
 	dp.scale = scale();
 	dp.radius = radius();
-	dp.contrast = contrast();
+	dp.sldSph = sldSph();
+	dp.sldSolv = sldSolv();
 	dp.background = background();
 	double rad_out = 0.0;
Index: sansmodels/src/sans/models/c_models/spheroid.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/spheroid.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
+++ sansmodels/src/sans/models/c_models/spheroid.cpp	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -43,5 +43,6 @@
 	polar_shell    = Parameter(30.0, true);
 	polar_shell.set_min(0.0);
-	contrast   = Parameter(1e-6);
+	sld_core   = Parameter(2e-6);
+	sld_shell  = Parameter(1e-6);
 	sld_solvent = Parameter(6.3e-6);
 	background = Parameter(0.0);
@@ -58,5 +59,5 @@
  */
 double CoreShellEllipsoidModel :: operator()(double q) {
-	double dp[8];
+	double dp[9];
 
 	// Fill parameter array for IGOR library
@@ -67,7 +68,8 @@
 	dp[3] = equat_shell();
 	dp[4] = polar_shell();
-	dp[5] = contrast();
-	dp[6] = sld_solvent();
-	dp[7] = 0.0;
+	dp[5] = sld_core();
+	dp[6] = sld_shell();
+	dp[7] = sld_solvent();
+	dp[8] = 0.0;
 
 	// Get the dispersion points for the major core
@@ -110,5 +112,5 @@
 					//Un-normalize  by volume
 					sum += weights_equat_core[i].weight* weights_polar_core[j].weight * weights_equat_shell[k].weight
-						* weights_polar_shell[l].weight * ProlateForm(dp, q)
+						* weights_polar_shell[l].weight * OblateForm(dp, q)
 						* pow(weights_equat_shell[k].value,2)*weights_polar_shell[l].value;
 					//Find average volume
@@ -170,5 +172,6 @@
 	dp.equat_shell = equat_shell();
 	dp.polar_shell = polar_shell();
-	dp.contrast = contrast();
+	dp.sld_core = sld_core();
+	dp.sld_shell = sld_shell();
 	dp.sld_solvent = sld_solvent();
 	dp.background = 0.0;
