Index: sansmodels/src/sans/models/CoreShellEllipsoidModel.py
===================================================================
--- sansmodels/src/sans/models/CoreShellEllipsoidModel.py	(revision f9a12798ed21a99d4e6b3cc5e5b729ece46cd0bf)
+++ sansmodels/src/sans/models/CoreShellEllipsoidModel.py	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -37,5 +37,6 @@
          equat_shell     = 250.0 [A]
          polar_shell     = 30.0 [A]
-         contrast        = 1e-006 [1/A^(2)]
+         sld_core        = 2e-006 [1/A^(2)]
+         sld_shell       = 1e-006 [1/A^(2)]
          sld_solvent     = 6.3e-006 [1/A^(2)]
          background      = 0.001 [1/cm]
@@ -66,5 +67,6 @@
 		equat_shell = equatorial radius of shell,
 		polar_shell = polar radius (revolution axis) of shell,
-		contrast = SLD_core - SLD_shell
+		sld_core = SLD_core
+		sld_shell = SLD_shell
 		sld_solvent = SLD_solvent
 		background = Incoherent bkg
@@ -82,5 +84,6 @@
         self.details['equat_shell'] = ['[A]', None, None]
         self.details['polar_shell'] = ['[A]', None, None]
-        self.details['contrast'] = ['[1/A^(2)]', None, None]
+        self.details['sld_core'] = ['[1/A^(2)]', None, None]
+        self.details['sld_shell'] = ['[1/A^(2)]', None, None]
         self.details['sld_solvent'] = ['[1/A^(2)]', None, None]
         self.details['background'] = ['[1/cm]', None, None]
Index: sansmodels/src/sans/models/CylinderModel.py
===================================================================
--- sansmodels/src/sans/models/CylinderModel.py	(revision f9a12798ed21a99d4e6b3cc5e5b729ece46cd0bf)
+++ sansmodels/src/sans/models/CylinderModel.py	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -35,5 +35,6 @@
          radius          = 20.0 [A]
          length          = 400.0 [A]
-         contrast        = 3e-006 [1/A^(2)]
+         sldCyl          = 4e-006 [1/A^(2)]
+         sldSolv         = 1e-006 [1/A^(2)]
          background      = 0.0 [1/cm]
          cyl_theta       = 1.0 [rad]
@@ -52,5 +53,5 @@
         self.name = "CylinderModel"
         ## Model description
-        self.description =""" f(q)= 2*(scatter_sld - solvent_sld)*V*sin(qLcos(alpha/2))
+        self.description =""" f(q)= 2*(sldCyl - sldSolv)*V*sin(qLcos(alpha/2))
 		/[qLcos(alpha/2)]*J1(qRsin(alpha/2))/[qRsin(alpha)]
 		
@@ -71,5 +72,6 @@
         self.details['radius'] = ['[A]', None, None]
         self.details['length'] = ['[A]', None, None]
-        self.details['contrast'] = ['[1/A^(2)]', None, None]
+        self.details['sldCyl'] = ['[1/A^(2)]', None, None]
+        self.details['sldSolv'] = ['[1/A^(2)]', None, None]
         self.details['background'] = ['[1/cm]', None, None]
         self.details['cyl_theta'] = ['[rad]', None, None]
Index: sansmodels/src/sans/models/EllipsoidModel.py
===================================================================
--- sansmodels/src/sans/models/EllipsoidModel.py	(revision f9a12798ed21a99d4e6b3cc5e5b729ece46cd0bf)
+++ sansmodels/src/sans/models/EllipsoidModel.py	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -35,5 +35,6 @@
          radius_a        = 20.0 [A]
          radius_b        = 400.0 [A]
-         contrast        = 3e-006 [1/A^(2)]
+         sldEll          = 4e-006 [1/A^(2)]
+         sldSolv         = 1e-006 [1/A^(2)]
          background      = 0.0 [1/cm]
          axis_theta      = 1.57 [rad]
@@ -52,6 +53,6 @@
         self.name = "EllipsoidModel"
         ## Model description
-        self.description =""""P(q.alpha)= scale*f(q)^(2)+ bkg, where f(q)= 3*(scatter_sld
-		- scatter_solvent)*V*[sin(q*r(Ra,Rb,alpha))
+        self.description =""""P(q.alpha)= scale*f(q)^(2)+ bkg, where f(q)= 3*(sld_ell
+		- sld_solvent)*V*[sin(q*r(Ra,Rb,alpha))
 		-q*r*cos(qr(Ra,Rb,alpha))]
 		/[qr(Ra,Rb,alpha)]^(3)"
@@ -62,6 +63,6 @@
 		scatter_sld: SLD of the scatter
 		solvent_sld: SLD of the solvent
-		contrast: SLD difference between scatter
-		and solvent
+		sldEll: SLD of ellipsoid
+		sldSolv: SLD of solvent
 		V: volune of the Eliipsoid
 		Ra: radius along the rotation axis
@@ -75,5 +76,6 @@
         self.details['radius_a'] = ['[A]', None, None]
         self.details['radius_b'] = ['[A]', None, None]
-        self.details['contrast'] = ['[1/A^(2)]', None, None]
+        self.details['sldEll'] = ['[1/A^(2)]', None, None]
+        self.details['sldSolv'] = ['[1/A^(2)]', None, None]
         self.details['background'] = ['[1/cm]', None, None]
         self.details['axis_theta'] = ['[rad]', None, None]
Index: sansmodels/src/sans/models/EllipticalCylinderModel.py
===================================================================
--- sansmodels/src/sans/models/EllipticalCylinderModel.py	(revision f9a12798ed21a99d4e6b3cc5e5b729ece46cd0bf)
+++ sansmodels/src/sans/models/EllipticalCylinderModel.py	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -36,5 +36,6 @@
          r_ratio         = 1.5 
          length          = 400.0 [A]
-         contrast        = 3e-006 [1/A^(2)]
+         sldCyl          = 4e-006 [1/A^(2)]
+         sldSolv         = 1e-006 [1/A^(2)]
          background      = 0.0 [1/cm]
          cyl_theta       = 1.57 [rad]
@@ -57,5 +58,6 @@
 		r_ratio = the ratio of (r_major /r_minor >= 1)
 		length = the length of the cylinder
-		contrast = SLD of solvent - SLD of the cylinder
+		sldCyl = SLD of the cylinder
+		sldSolv = SLD of solvent -
 		background = incoherent background"""
        
@@ -66,5 +68,6 @@
         self.details['r_ratio'] = ['', None, None]
         self.details['length'] = ['[A]', None, None]
-        self.details['contrast'] = ['[1/A^(2)]', None, None]
+        self.details['sldCyl'] = ['[1/A^(2)]', None, None]
+        self.details['sldSolv'] = ['[1/A^(2)]', None, None]
         self.details['background'] = ['[1/cm]', None, None]
         self.details['cyl_theta'] = ['[rad]', None, None]
Index: sansmodels/src/sans/models/FlexibleCylinderModel.py
===================================================================
--- sansmodels/src/sans/models/FlexibleCylinderModel.py	(revision f9a12798ed21a99d4e6b3cc5e5b729ece46cd0bf)
+++ sansmodels/src/sans/models/FlexibleCylinderModel.py	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -36,5 +36,6 @@
          kuhn_length     = 100.0 [A]
          radius          = 20.0 [A]
-         contrast        = 5.3e-006 [1/A^(2)]
+         sldCyl          = 6.3e-006 [1/A^(2)]
+         sldSolv         = 1e-006 [1/A^(2)]
          background      = 0.0001 [1/cm]
 
@@ -62,5 +63,6 @@
         self.details['kuhn_length'] = ['[A]', None, None]
         self.details['radius'] = ['[A]', None, None]
-        self.details['contrast'] = ['[1/A^(2)]', None, None]
+        self.details['sldCyl'] = ['[1/A^(2)]', None, None]
+        self.details['sldSolv'] = ['[1/A^(2)]', None, None]
         self.details['background'] = ['[1/cm]', None, None]
 
Index: sansmodels/src/sans/models/HollowCylinderModel.py
===================================================================
--- sansmodels/src/sans/models/HollowCylinderModel.py	(revision f9a12798ed21a99d4e6b3cc5e5b729ece46cd0bf)
+++ sansmodels/src/sans/models/HollowCylinderModel.py	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -36,5 +36,6 @@
          radius          = 30.0 [A]
          length          = 400.0 [A]
-         contrast        = 5.3e-006 [1/A^(2)]
+         sldCyl          = 6.3e-006 [1/A^(2)]
+         sldSolv         = 1e-006 [1/A^(2)]
          background      = 0.01 [1/cm]
          axis_theta      = 1.57 [rad]
@@ -57,5 +58,6 @@
 		radius = the radius of shell
 		length = the total length of the cylinder
-		contrast = SLD of solvent - SLD of shell
+		sldCyl = SLD of the shell
+		sldSolv = SLD of the solvent
 		background = incoherent background"""
        
@@ -66,5 +68,6 @@
         self.details['radius'] = ['[A]', None, None]
         self.details['length'] = ['[A]', None, None]
-        self.details['contrast'] = ['[1/A^(2)]', None, None]
+        self.details['sldCyl'] = ['[1/A^(2)]', None, None]
+        self.details['sldSolv'] = ['[1/A^(2)]', None, None]
         self.details['background'] = ['[1/cm]', None, None]
         self.details['axis_theta'] = ['[rad]', None, None]
Index: sansmodels/src/sans/models/LamellarPSModel.py
===================================================================
--- sansmodels/src/sans/models/LamellarPSModel.py	(revision f9a12798ed21a99d4e6b3cc5e5b729ece46cd0bf)
+++ sansmodels/src/sans/models/LamellarPSModel.py	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -35,5 +35,6 @@
          spacing         = 400.0 [A]
          delta           = 30.0 [A]
-         contrast        = 5.3e-006 [1/A^(2)]
+         sld_bi          = 6.3e-006 [1/A^(2)]
+         sld_sol         = 1e-006 [1/A^(2)]
          n_plates        = 20.0 
          caille          = 0.1 
@@ -65,5 +66,6 @@
 		*Parameters: spacing = repeat spacing,
 		delta = bilayer thickness,
-		contrast = SLD_solvent - SLD_bilayer
+		sld_bi = SLD_bilayer
+		sld_sol = SLD_solvent
 		n_plate = # of Lamellar plates
 		caille = Caille parameter (<0.8 or <1)
@@ -76,5 +78,6 @@
         self.details['spacing'] = ['[A]', None, None]
         self.details['delta'] = ['[A]', None, None]
-        self.details['contrast'] = ['[1/A^(2)]', None, None]
+        self.details['sld_bi'] = ['[1/A^(2)]', None, None]
+        self.details['sld_sol'] = ['[1/A^(2)]', None, None]
         self.details['n_plates'] = ['', None, None]
         self.details['caille'] = ['', None, None]
Index: sansmodels/src/sans/models/ParallelepipedModel.py
===================================================================
--- sansmodels/src/sans/models/ParallelepipedModel.py	(revision f9a12798ed21a99d4e6b3cc5e5b729ece46cd0bf)
+++ sansmodels/src/sans/models/ParallelepipedModel.py	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -36,5 +36,6 @@
          short_b         = 75.0 [A]
          long_c          = 400.0 [A]
-         contrast        = 5.3e-006 [1/A^(2)]
+         sldPipe         = 6.3e-006 [1/A^(2)]
+         sldSolv         = 1e-006 [1/A^(2)]
          background      = 0.0 [1/cm]
          parallel_theta  = 0.0 [rad]
@@ -60,5 +61,6 @@
 		short_b: length of another short edge [A]
 		long_c: length of long edge  of the parallelepiped [A]
-		contrast: particle_sld - solvent_sld
+		sldPipe: Pipe_sld
+		sldSolv: solvent_sld
 		background:Incoherent Background [1/cm]"""
        
@@ -69,5 +71,6 @@
         self.details['short_b'] = ['[A]', None, None]
         self.details['long_c'] = ['[A]', None, None]
-        self.details['contrast'] = ['[1/A^(2)]', None, None]
+        self.details['sldPipe'] = ['[1/A^(2)]', None, None]
+        self.details['sldSolv'] = ['[1/A^(2)]', None, None]
         self.details['background'] = ['[1/cm]', None, None]
         self.details['parallel_theta'] = ['[rad]', None, None]
Index: sansmodels/src/sans/models/SphereModel.py
===================================================================
--- sansmodels/src/sans/models/SphereModel.py	(revision f9a12798ed21a99d4e6b3cc5e5b729ece46cd0bf)
+++ sansmodels/src/sans/models/SphereModel.py	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -34,5 +34,6 @@
          scale           = 1.0 
          radius          = 60.0 [A]
-         contrast        = 1e-006 [1/A^(2)]
+         sldSph          = 2e-006 [1/A^(2)]
+         sldSolv         = 1e-006 [1/A^(2)]
          background      = 0.0 [1/cm]
 
@@ -49,13 +50,11 @@
         self.name = "SphereModel"
         ## Model description
-        self.description ="""P(q)=(scale/V)*[3V(scatter_sld-solvent_sld)*(sin(qR)-qRcos(qR))
+        self.description ="""P(q)=(scale/V)*[3V(sldSph-sldSolv)*(sin(qR)-qRcos(qR))
 		/(qR)^3]^(2)+bkg
 		
 		bkg:background, R: radius of sphere
 		V:The volume of the scatter
-		contrast:SLD difference between
-		scatter and solvent
-		scatter_sld: the SLD of the scatter
-		solvent_sld: the SLD of the solvent
+		sldSph: the SLD of the sphere
+		sldSolv: the SLD of the solvent
 		"""
        
@@ -64,5 +63,6 @@
         self.details['scale'] = ['', None, None]
         self.details['radius'] = ['[A]', None, None]
-        self.details['contrast'] = ['[1/A^(2)]', None, None]
+        self.details['sldSph'] = ['[1/A^(2)]', None, None]
+        self.details['sldSolv'] = ['[1/A^(2)]', None, None]
         self.details['background'] = ['[1/cm]', None, None]
 
Index: sansmodels/src/sans/models/c_extensions/cylinder.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/cylinder.c	(revision ae3ce4eaa593202ebf49122e196897c0d45a25b6)
+++ sansmodels/src/sans/models/c_extensions/cylinder.c	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -18,15 +18,16 @@
  */
 double cylinder_analytical_1D(CylinderParameters *pars, double q) {
-	double dp[5];
-	
+	double dp[6];
+
 	// Fill paramater array
 	dp[0] = pars->scale;
 	dp[1] = pars->radius;
 	dp[2] = pars->length;
-	dp[3] = pars->contrast;
-	dp[4] = pars->background;
-	
+	dp[3] = pars->sldCyl;
+	dp[4] = pars->sldSolv;
+	dp[5] = pars->background;
+
 	// Call library function to evaluate model
-	return CylinderForm(dp, q);	
+	return CylinderForm(dp, q);
 }
 
@@ -41,5 +42,5 @@
 	q = sqrt(qx*qx+qy*qy);
     return cylinder_analytical_2D_scaled(pars, q, qx/q, qy/q);
-} 
+}
 
 
@@ -53,6 +54,6 @@
 double cylinder_analytical_2D(CylinderParameters *pars, double q, double phi) {
     return cylinder_analytical_2D_scaled(pars, q, cos(phi), sin(phi));
-} 
-        
+}
+
 /**
  * Function to evaluate 2D scattering function
@@ -68,17 +69,17 @@
 	double alpha, vol, cos_val;
 	double answer;
-        
+
     // Cylinder orientation
     cyl_x = sin(pars->cyl_theta) * cos(pars->cyl_phi);
     cyl_y = sin(pars->cyl_theta) * sin(pars->cyl_phi);
     cyl_z = cos(pars->cyl_theta);
-     
+
     // q vector
     q_z = 0;
-        
+
     // Compute the angle btw vector q and the
     // axis of the cylinder
     cos_val = cyl_x*q_x + cyl_y*q_y + cyl_z*q_z;
-    
+
     // The following test should always pass
     if (fabs(cos_val)>1.0) {
@@ -86,30 +87,30 @@
      	return 0;
     }
-    
+
     // Note: cos(alpha) = 0 and 1 will get an
     // undefined value from CylKernel
 	alpha = acos( cos_val );
-	
+
 	// Call the IGOR library function to get the kernel
 	answer = CylKernel(q, pars->radius, pars->length/2.0, alpha) / sin(alpha);
-	
+
 	// Multiply by contrast^2
-	answer *= pars->contrast*pars->contrast;
-	
+	answer *= (pars->sldCyl - pars->sldSolv)*(pars->sldCyl - pars->sldSolv);
+
 	//normalize by cylinder volume
 	//NOTE that for this (Fournet) definition of the integral, one must MULTIPLY by Vcyl
     vol = acos(-1.0) * pars->radius * pars->radius * pars->length;
 	answer *= vol;
-	
+
 	//convert to [cm-1]
 	answer *= 1.0e8;
-	
+
 	//Scale
 	answer *= pars->scale;
-	
+
 	// add in the background
 	answer += pars->background;
-	
+
 	return answer;
 }
-    
+
Index: sansmodels/src/sans/models/c_extensions/cylinder.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/cylinder.h	(revision 27972c1dfdd57a50946a99914051e1713c997e78)
+++ sansmodels/src/sans/models/c_extensions/cylinder.h	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -4,5 +4,5 @@
  * [PYTHONCLASS] = CylinderModel
  * [DISP_PARAMS] = radius, length, cyl_theta, cyl_phi
-   [DESCRIPTION] = <text> f(q)= 2*(scatter_sld - solvent_sld)*V*sin(qLcos(alpha/2))
+   [DESCRIPTION] = <text> f(q)= 2*(sldCyl - sldSolv)*V*sin(qLcos(alpha/2))
 				/[qLcos(alpha/2)]*J1(qRsin(alpha/2))/[qRsin(alpha)]
 
@@ -34,6 +34,9 @@
     double length;
     /// Contrast [1/A^(2)]
-    //  [DEFAULT]=contrast=3.0e-6 [1/A^(2)]
-    double contrast;
+    //  [DEFAULT]=sldCyl=4.0e-6 [1/A^(2)]
+    double sldCyl;
+    /// sldCyl [1/A^(2)]
+    //  [DEFAULT]=sldSolv=1.0e-6 [1/A^(2)]
+    double sldSolv;
 	/// Incoherent Background [1/cm] 0.00
 	//  [DEFAULT]=background=0.0 [1/cm]
Index: sansmodels/src/sans/models/c_extensions/ellipsoid.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/ellipsoid.c	(revision df4702f8a05fd206b1fcf22671fd7d9316a316f3)
+++ sansmodels/src/sans/models/c_extensions/ellipsoid.c	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -44,11 +44,12 @@
  */
 double ellipsoid_analytical_1D(EllipsoidParameters *pars, double q) {
-	double dp[5];
+	double dp[6];
 
 	dp[0] = pars->scale;
 	dp[1] = pars->radius_a;
 	dp[2] = pars->radius_b;
-	dp[3] = pars->contrast;
-	dp[4] = pars->background;
+	dp[3] = pars->sldEll;
+	dp[4] = pars->sldSolv;
+	dp[5] = pars->background;
 
 	return EllipsoidForm(dp, q);
@@ -117,5 +118,5 @@
 
 	// Multiply by contrast^2
-	answer *= pars->contrast*pars->contrast;
+	answer *= (pars->sldEll - pars->sldSolv) * (pars->sldEll - pars->sldSolv);
 
 	//normalize by cylinder volume
Index: sansmodels/src/sans/models/c_extensions/ellipsoid.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/ellipsoid.h	(revision 27972c1dfdd57a50946a99914051e1713c997e78)
+++ sansmodels/src/sans/models/c_extensions/ellipsoid.h	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -9,6 +9,6 @@
  //[PYTHONCLASS] = EllipsoidModel
  //[DISP_PARAMS] = radius_a, radius_b, axis_theta, axis_phi
- //[DESCRIPTION] = <text>"P(q.alpha)= scale*f(q)^(2)+ bkg, where f(q)= 3*(scatter_sld
- //		- scatter_solvent)*V*[sin(q*r(Ra,Rb,alpha))
+ //[DESCRIPTION] = <text>"P(q.alpha)= scale*f(q)^(2)+ bkg, where f(q)= 3*(sld_ell
+ //		- sld_solvent)*V*[sin(q*r(Ra,Rb,alpha))
  //		-q*r*cos(qr(Ra,Rb,alpha))]
  //		/[qr(Ra,Rb,alpha)]^(3)"
@@ -19,6 +19,6 @@
  //		scatter_sld: SLD of the scatter
  //		solvent_sld: SLD of the solvent
- //     contrast: SLD difference between scatter
- //		and solvent
+ //     sldEll: SLD of ellipsoid
+ //		sldSolv: SLD of solvent
  //		V: volune of the Eliipsoid
  //		Ra: radius along the rotation axis
@@ -46,7 +46,11 @@
     double radius_b;
 
-    ///	Contrast [1/A^(2)]
-    //  [DEFAULT]=contrast=3.0e-6 [1/A^(2)]
-    double contrast;
+    ///	sldEll [1/A^(2)]
+    //  [DEFAULT]=sldEll=4.0e-6 [1/A^(2)]
+    double sldEll;
+
+    ///	sld of solvent [1/A^(2)]
+    //  [DEFAULT]=sldSolv=1.0e-6 [1/A^(2)]
+    double sldSolv;
 
 	/// Incoherent Background [1/cm]
Index: sansmodels/src/sans/models/c_extensions/elliptical_cylinder.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/elliptical_cylinder.c	(revision 975ec8e8211549489759b5a5ffe3b60607de065b)
+++ sansmodels/src/sans/models/c_extensions/elliptical_cylinder.c	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -17,5 +17,5 @@
  */
 double elliptical_cylinder_analytical_1D(EllipticalCylinderParameters *pars, double q) {
-	double dp[6];
+	double dp[7];
 
 	// Fill paramater array
@@ -24,6 +24,7 @@
 	dp[2] = pars->r_ratio;
 	dp[3] = pars->length;
-	dp[4] = pars->contrast;
-	dp[5] = pars->background;
+	dp[4] = pars->sldCyl;
+	dp[5] = pars->sldSolv;
+	dp[6] = pars->background;
 
 	// Call library function to evaluate model
@@ -145,5 +146,5 @@
 
 	// Multiply by contrast^2
-	answer *= pars->contrast*pars->contrast;
+	answer *= (pars->sldCyl - pars->sldSolv) * (pars->sldCyl - pars->sldSolv);
 
 	//normalize by cylinder volume
Index: sansmodels/src/sans/models/c_extensions/elliptical_cylinder.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/elliptical_cylinder.h	(revision 27972c1dfdd57a50946a99914051e1713c997e78)
+++ sansmodels/src/sans/models/c_extensions/elliptical_cylinder.h	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -8,5 +8,6 @@
 r_ratio = the ratio of (r_major /r_minor >= 1)
 length = the length of the cylinder
-contrast = SLD of solvent - SLD of the cylinder
+sldCyl = SLD of the cylinder
+sldSolv = SLD of solvent -
 background = incoherent background
   *</text>
@@ -31,7 +32,10 @@
     //  [DEFAULT]=length=400.0 [A]
     double length;
-    /// Contrast [1/A^(2)]
-    //  [DEFAULT]=contrast=3.0e-6 [1/A^(2)]
-    double contrast;
+    /// SLD of cylinder [1/A^(2)]
+    //  [DEFAULT]=sldCyl=4.0e-6 [1/A^(2)]
+    double sldCyl;
+    /// SLD of solvent [1/A^(2)]
+    //  [DEFAULT]=sldSolv=1.0e-6 [1/A^(2)]
+    double sldSolv;
 	/// Incoherent Background [1/cm] 0.000
 	//  [DEFAULT]=background=0 [1/cm]
Index: sansmodels/src/sans/models/c_extensions/flexible_cylinder.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/flexible_cylinder.c	(revision ea070754dad7f17087a33bfe6bf1a95174d93677)
+++ sansmodels/src/sans/models/c_extensions/flexible_cylinder.c	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -18,5 +18,5 @@
  */
 double flexible_cylinder_analytical_1D(FlexibleCylinderParameters *pars, double q) {
-	double dp[6];
+	double dp[7];
 
 	// Fill paramater array
@@ -25,6 +25,7 @@
 	dp[2] = pars->kuhn_length;
 	dp[3] = pars->radius;
-	dp[4] = pars->contrast;
-	dp[5] = pars->background;
+	dp[4] = pars->sldCyl;
+	dp[5] = pars->sldSolv;
+	dp[6] = pars->background;
 
 	// Call library function to evaluate model
Index: sansmodels/src/sans/models/c_extensions/flexible_cylinder.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/flexible_cylinder.h	(revision 27972c1dfdd57a50946a99914051e1713c997e78)
+++ sansmodels/src/sans/models/c_extensions/flexible_cylinder.h	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -31,7 +31,10 @@
     //  [DEFAULT]=radius=20.0 [A]
     double radius;
-    /// Contrast [1/A^(2)]
-    //  [DEFAULT]=contrast=5.3e-6 [1/A^(2)]
-    double contrast;
+    /// SLD of cylinder [1/A^(2)]
+    //  [DEFAULT]=sldCyl=6.3e-6 [1/A^(2)]
+    double sldCyl;
+    /// SLD of solvent [1/A^(2)]
+    //  [DEFAULT]=sldSolv=1.0e-6 [1/A^(2)]
+    double sldSolv;
 	/// Incoherent Background [1/cm]
 	//  [DEFAULT]=background=0.0001 [1/cm]
Index: sansmodels/src/sans/models/c_extensions/hollow_cylinder.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/hollow_cylinder.c	(revision e2afadff3f4263f27adf3503adb9ffba97b1e122)
+++ sansmodels/src/sans/models/c_extensions/hollow_cylinder.c	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -17,5 +17,5 @@
  */
 double hollow_cylinder_analytical_1D(HollowCylinderParameters *pars, double q) {
-	double dp[6];
+	double dp[7];
 
 	dp[0] = pars->scale;
@@ -23,6 +23,7 @@
 	dp[2] = pars->radius;
 	dp[3] = pars->length;
-	dp[4] = pars->contrast;
-	dp[5] = pars->background;
+	dp[4] = pars->sldCyl;
+	dp[5] = pars->sldSolv;
+	dp[6] = pars->background;
 
 	return HollowCylinder(dp, q);
@@ -89,8 +90,11 @@
 	answer = HolCylKernel(q, pars->core_radius, pars->radius, pars->length, cos_val);
 
+	// Multiply by contrast^2
+	answer *= (pars->sldCyl - pars->sldSolv)*(pars->sldCyl - pars->sldSolv);
+
 	//normalize by cylinder volume
-	vol=acos(-1.0)*((pars->core_radius *pars->core_radius)-(pars->radius*pars->radius))
+	vol=acos(-1.0)*((pars->radius*pars->radius)-(pars->core_radius *pars->core_radius))
 			*(pars->length);
-	answer /= vol;
+	answer *= vol;
 
 	//convert to [cm-1]
Index: sansmodels/src/sans/models/c_extensions/hollow_cylinder.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/hollow_cylinder.h	(revision 27972c1dfdd57a50946a99914051e1713c997e78)
+++ sansmodels/src/sans/models/c_extensions/hollow_cylinder.h	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -11,5 +11,6 @@
  //				radius = the radius of shell
  // 			length = the total length of the cylinder
- //				contrast = SLD of solvent - SLD of shell
+ //				sldCyl = SLD of the shell
+ //				sldSolv = SLD of the solvent
  //				background = incoherent background
  //	</text>
@@ -35,7 +36,11 @@
     double length;
 
-    /// Contrast  [1/A^(2)]
-    //  [DEFAULT]=contrast=5.3e-6 [1/A^(2)]
-    double contrast;
+    /// SLD_cylinder  [1/A^(2)]
+    //  [DEFAULT]=sldCyl=6.3e-6 [1/A^(2)]
+    double sldCyl;
+
+    /// SLD_solvent  [1/A^(2)]
+    //  [DEFAULT]=sldSolv=1.0e-6 [1/A^(2)]
+    double sldSolv;
 
 	/// Incoherent Background [1/cm]
Index: sansmodels/src/sans/models/c_extensions/lamellarPS.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/lamellarPS.c	(revision c1c29b67c42e22e8ebe38ed7aacd5a53ec4f66bb)
+++ sansmodels/src/sans/models/c_extensions/lamellarPS.c	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -19,10 +19,10 @@
 LamellarPS_kernel(double dp[], double q)
 {
-	double scale,dd,del,contr,NN,Cp,bkg;		//local variables of coefficient wave
+	double scale,dd,del,sld_bi,sld_sol,contr,NN,Cp,bkg;		//local variables of coefficient wave
 	double inten, qval,Pq,Sq,alpha,temp,t1,t2,t3,dQ;
 	double Pi,Euler,dQDefault,fii;
 	int ii,NNint;
 	Euler = 0.5772156649;		// Euler's constant
-	dQDefault = 0.0;//0.0025;		//[=] 1/A, q-resolution, default value
+	dQDefault = 0.0;		//[=] 1/A, q-resolution, default value
 	dQ = dQDefault;
 
@@ -33,8 +33,11 @@
 	dd = dp[1];
 	del = dp[2];
-	contr = dp[3];
-	NN = trunc(dp[4]);		//be sure that NN is an integer
-	Cp = dp[5];
-	bkg = dp[6];
+	sld_bi = dp[3];
+	sld_sol = dp[4];
+	NN = trunc(dp[5]);		//be sure that NN is an integer
+	Cp = dp[6];
+	bkg = dp[7];
+
+	contr = sld_bi - sld_sol;
 
 	Pq = 2.0*contr*contr/qval/qval*(1.0-cos(qval*del));
@@ -78,5 +81,5 @@
  */
 double lamellarPS_analytical_1D(LamellarPSParameters *pars, double q) {
-	double dp[7];
+	double dp[8];
 
 	// Fill paramater array
@@ -84,8 +87,9 @@
 	dp[1] = pars->spacing;
 	dp[2] = pars->delta;
-	dp[3] = pars->contrast;
-	dp[4] = pars->n_plates;
-	dp[5] = pars->caille;
-	dp[6] = pars->background;
+	dp[3] = pars->sld_bi;
+	dp[4] = pars->sld_sol;
+	dp[5] = pars->n_plates;
+	dp[6] = pars->caille;
+	dp[7] = pars->background;
 
 	// Call library function to evaluate model
Index: sansmodels/src/sans/models/c_extensions/lamellarPS.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/lamellarPS.h	(revision 27972c1dfdd57a50946a99914051e1713c997e78)
+++ sansmodels/src/sans/models/c_extensions/lamellarPS.h	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -21,5 +21,6 @@
 		*Parameters: spacing = repeat spacing,
 		delta = bilayer thickness,
-		contrast = SLD_solvent - SLD_bilayer
+		sld_bi = SLD_bilayer
+		sld_sol = SLD_solvent
 		n_plate = # of Lamellar plates
 		caille = Caille parameter (<0.8 or <1)
@@ -41,7 +42,10 @@
     //  [DEFAULT]=delta=30 [A]
     double delta;
-    /// Contrast [1/A^(2)]
-    //  [DEFAULT]=contrast=5.3e-6 [1/A^(2)]
-    double contrast;
+    /// SLD of bilayer [1/A^(2)]
+    //  [DEFAULT]=sld_bi=6.3e-6 [1/A^(2)]
+    double sld_bi;
+    /// SLD of solvent [1/A^(2)]
+    //  [DEFAULT]=sld_sol=1.0e-6 [1/A^(2)]
+    double sld_sol;
 	 /// Number of lamellar plates
     //  [DEFAULT]=n_plates=20
Index: sansmodels/src/sans/models/c_extensions/parallelepiped.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/parallelepiped.c	(revision 8e36cddc31aee946bb051c6a6d4eade849ca2ed4)
+++ sansmodels/src/sans/models/c_extensions/parallelepiped.c	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -18,5 +18,5 @@
  */
 double parallelepiped_analytical_1D(ParallelepipedParameters *pars, double q) {
-	double dp[6];
+	double dp[7];
 
 	// Fill paramater array
@@ -25,6 +25,7 @@
 	dp[2] = pars->short_b;
 	dp[3] = pars->long_c;
-	dp[4] = pars->contrast;
-	dp[5] = pars->background;
+	dp[4] = pars->sldPipe;
+	dp[5] = pars->sldSolv;
+	dp[6] = pars->background;
 
 	// Call library function to evaluate model
@@ -149,5 +150,5 @@
 
 	// Multiply by contrast^2
-	answer *= pars->contrast*pars->contrast;
+	answer *= (pars->sldPipe - pars->sldSolv) * (pars->sldPipe - pars->sldSolv);
 
 	//normalize by cylinder volume
Index: sansmodels/src/sans/models/c_extensions/parallelepiped.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/parallelepiped.h	(revision 27972c1dfdd57a50946a99914051e1713c997e78)
+++ sansmodels/src/sans/models/c_extensions/parallelepiped.h	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -14,5 +14,6 @@
 		short_b: length of another short edge [A]
 		long_c: length of long edge  of the parallelepiped [A]
-		contrast: particle_sld - solvent_sld
+		sldPipe: Pipe_sld
+		sldSolv: solvent_sld
 		background:Incoherent Background [1/cm]
 		</text>
@@ -35,7 +36,10 @@
     //  [DEFAULT]=long_c=400 [A]
     double long_c;
-    /// Contrast [1/A^(2)]
-    //  [DEFAULT]=contrast=53e-7 [1/A^(2)]
-    double contrast;
+    /// SLD_Pipe [1/A^(2)]
+    //  [DEFAULT]=sldPipe=6.3e-6 [1/A^(2)]
+    double sldPipe;
+    /// sldSolv [1/A^(2)]
+    //  [DEFAULT]=sldSolv=1.0e-6 [1/A^(2)]
+    double sldSolv;
 	/// Incoherent Background [1/cm]
 	//  [DEFAULT]=background=0.0 [1/cm]
Index: sansmodels/src/sans/models/c_extensions/sphere.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/sphere.c	(revision ae3ce4eaa593202ebf49122e196897c0d45a25b6)
+++ sansmodels/src/sans/models/c_extensions/sphere.c	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -17,13 +17,14 @@
 double sphere_analytical_1D(SphereParameters *pars, double q) {
 	double dp[5];
-	
+
 	dp[0] = pars->scale;
 	dp[1] = pars->radius;
-	dp[2] = pars->contrast;
-	dp[3] = pars->background;
-	
+	dp[2] = pars->sldSph;
+	dp[3] = pars->sldSolv;
+	dp[4] = pars->background;
+
 	return SphereForm(dp, q);
 }
-    
+
 /**
  * Function to evaluate 2D scattering function
@@ -37,4 +38,4 @@
 
 double sphere_analytical_2DXY(SphereParameters *pars, double qx, double qy){
-	return sphere_analytical_1D(pars,sqrt(qx*qx+qy*qy));	
+	return sphere_analytical_1D(pars,sqrt(qx*qx+qy*qy));
 }
Index: sansmodels/src/sans/models/c_extensions/sphere.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/sphere.h	(revision 27972c1dfdd57a50946a99914051e1713c997e78)
+++ sansmodels/src/sans/models/c_extensions/sphere.h	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -7,13 +7,11 @@
  //[PYTHONCLASS] = SphereModel
  //[DISP_PARAMS] = radius
- //[DESCRIPTION] =<text>P(q)=(scale/V)*[3V(scatter_sld-solvent_sld)*(sin(qR)-qRcos(qR))
+ //[DESCRIPTION] =<text>P(q)=(scale/V)*[3V(sldSph-sldSolv)*(sin(qR)-qRcos(qR))
  //						/(qR)^3]^(2)+bkg
  //
  //				bkg:background, R: radius of sphere
  //				V:The volume of the scatter
- //				contrast:SLD difference between
- //				scatter and solvent
- //				scatter_sld: the SLD of the scatter
- //				solvent_sld: the SLD of the solvent
+ //				sldSph: the SLD of the sphere
+ //				sldSolv: the SLD of the solvent
  //
  //		</text>
@@ -30,7 +28,11 @@
     double radius;
 
-    ///	Contrast [1/A^(2)]
-    //  [DEFAULT]=contrast= 1.0e-6 [1/A^(2)]
-    double contrast;
+    ///	sldSph [1/A^(2)]
+    //  [DEFAULT]=sldSph= 2.0e-6 [1/A^(2)]
+    double sldSph;
+
+    ///	sldSolv [1/A^(2)]
+    //  [DEFAULT]=sldSolv= 1.0e-6 [1/A^(2)]
+    double sldSolv;
 
 	/// Incoherent Background [1/cm]
Index: sansmodels/src/sans/models/c_extensions/spheroid.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/spheroid.c	(revision 975ec8e8211549489759b5a5ffe3b60607de065b)
+++ sansmodels/src/sans/models/c_extensions/spheroid.c	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -10,5 +10,4 @@
 #include <stdlib.h>
 
-
 /**
  * Function to evaluate 1D scattering function
@@ -18,5 +17,5 @@
  */
 double spheroid_analytical_1D(SpheroidParameters *pars, double q) {
-	double dp[8];
+	double dp[9];
 
 	// Fill paramater array
@@ -26,10 +25,11 @@
 	dp[3] = pars->equat_shell;
 	dp[4] = pars->polar_shell;
-	dp[5] = pars->contrast;
-	dp[6] = pars->sld_solvent;
-	dp[7] = pars->background;
+	dp[5] = pars->sld_core;
+	dp[6] = pars->sld_shell;
+	dp[7] = pars->sld_solvent;
+	dp[8] = pars->background;
 
 	// Call library function to evaluate model
-	return ProlateForm(dp, q);
+	return OblateForm(dp, q);
 }
 
@@ -73,4 +73,5 @@
 	double answer;
 	double Pi = 4.0*atan(1.0);
+	double sldcs,sldss;
 
     // ellipsoid orientation, the axis of the rotation is consistent with the ploar axis.
@@ -78,4 +79,7 @@
     cyl_y = sin(pars->axis_theta) * sin(pars->axis_phi);
     cyl_z = cos(pars->axis_theta);
+    //del sld
+    sldcs = pars->sld_core - pars->sld_shell;
+    sldss = pars->sld_shell- pars->sld_solvent;
 
     // q vector
@@ -96,11 +100,11 @@
 	alpha = acos( cos_val );
 
-	// Call the IGOR library function to get the kernel
-	answer = gfn4(cos_val,pars->equat_core,pars->polar_core,pars->equat_shell,pars->polar_shell,pars->contrast,pars->sld_solvent,q);
-
+	// Call the IGOR library function to get the kernel: MUST use gfn4 not gf2 because of the def of params.
+	answer = gfn4(cos_val,pars->equat_core,pars->polar_core,pars->equat_shell,pars->polar_shell,sldcs,sldss,q);
+	//It seems that it should be normalized somehow. How???
 
 	//normalize by cylinder volume
 	//NOTE that for this (Fournet) definition of the integral, one must MULTIPLY by Vcyl
-    vol = 4*Pi/3*pars->equat_shell*pars->equat_shell*pars->polar_shell;
+    vol = 4.0*Pi/3.0*pars->equat_shell*pars->equat_shell*pars->polar_shell;
 	answer /= vol;
 
Index: sansmodels/src/sans/models/c_extensions/spheroid.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/spheroid.h	(revision 27972c1dfdd57a50946a99914051e1713c997e78)
+++ sansmodels/src/sans/models/c_extensions/spheroid.h	(revision f10063e8f3c53d2be93abaea9c0d3d4f3061d444)
@@ -15,5 +15,6 @@
 			equat_shell = equatorial radius of shell,
 			polar_shell = polar radius (revolution axis) of shell,
-			contrast = SLD_core - SLD_shell
+			sld_core = SLD_core
+			sld_shell = SLD_shell
 			sld_solvent = SLD_solvent
 			background = Incoherent bkg
@@ -45,7 +46,10 @@
     //  [DEFAULT]=polar_shell=30.0 [A]
     double polar_shell;
-    ///  Scattering contrast [1/A^(2)]
-    //  [DEFAULT]=contrast=1.0e-6 [1/A^(2)]
-    double contrast;
+    ///  Core scattering length density [1/A^(2)]
+    //  [DEFAULT]=sld_core=2.0e-6 [1/A^(2)]
+    double sld_core;
+    ///  Shell scattering length density [1/A^(2)]
+    //  [DEFAULT]=sld_shell=1.0e-6 [1/A^(2)]
+    double sld_shell;
 	/// Solvent scattering length density  [1/A^(2)]
     //  [DEFAULT]=sld_solvent=6.3e-6 [1/A^(2)]
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;
