Index: sansmodels/src/sans/models/c_models/CLamellarPSModel.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/CLamellarPSModel.cpp	(revision 9bd69098b443a3cbda08a1efa070cd1e2ead30ce)
+++ sansmodels/src/sans/models/c_models/CLamellarPSModel.cpp	(revision c1c29b67c42e22e8ebe38ed7aacd5a53ec4f66bb)
@@ -92,9 +92,11 @@
         PyDict_SetItemString(self->params,"background",Py_BuildValue("d",0.000000));
         PyDict_SetItemString(self->params,"delta",Py_BuildValue("d",30.000000));
-        PyDict_SetItemString(self->params,"sigma",Py_BuildValue("d",0.150000));
         PyDict_SetItemString(self->params,"contrast",Py_BuildValue("d",0.000005));
         // Initialize dispersion / averaging parameter dict
         DispersionVisitor* visitor = new DispersionVisitor();
         PyObject * disp_dict;
+        disp_dict = PyDict_New();
+        self->model->delta.dispersion->accept_as_source(visitor, self->model->delta.dispersion, disp_dict);
+        PyDict_SetItemString(self->dispersion, "delta", disp_dict);
         disp_dict = PyDict_New();
         self->model->spacing.dispersion->accept_as_source(visitor, self->model->spacing.dispersion, disp_dict);
@@ -167,41 +169,5 @@
     return PyArray_Return(result); 
  }
-/**
- * Function to call to evaluate model
- * @param args: input numpy array  [q[],phi[]]
- * @return: numpy array object 
- */
-static PyObject * evaluateTwoDim( LamellarPSModel* model, 
-                              PyArrayObject *q, PyArrayObject *phi)
- {
-    PyArrayObject *result;
-    //check validity of input vectors
-    if (q->nd != 1 || q->descr->type_num != PyArray_DOUBLE
-        || phi->nd != 1 || phi->descr->type_num != PyArray_DOUBLE
-        || phi->dimensions[0] != q->dimensions[0]){
-     
-        //const char * message= "Invalid array: q->nd=%d,type_num=%d\n",q->nd,q->descr->type_num;
-        PyErr_SetString(PyExc_ValueError ,"wrong input"); 
-        return NULL;
-    }
-	result= (PyArrayObject *)PyArray_FromDims(q->nd,(int*)(q->dimensions), PyArray_DOUBLE);
-
-	if (result == NULL){
-	    const char * message= "Could not create result ";
-        PyErr_SetString(PyExc_RuntimeError , message);
-	    return NULL;
-	}
-	
-    for (int i = 0; i < q->dimensions[0]; i++) {
-      double q_value = *(double *)(q->data + i*q->strides[0]);
-      double phi_value = *(double *)(phi->data + i*phi->strides[0]);
-      double *result_value = (double *)(result->data + i*result->strides[0]);
-      if (q_value == 0)
-          *result_value = 0.0;
-      else
-          *result_value = model->evaluate_rphi(q_value, phi_value);
-    }
-    return PyArray_Return(result); 
- }
+
  /**
  * Function to call to evaluate model
@@ -272,9 +238,10 @@
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->delta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "delta") );
-    self->model->sigma = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sigma") );
     self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
     DispersionVisitor* visitor = new DispersionVisitor();
+    disp_dict = PyDict_GetItemString(self->dispersion, "delta");
+    self->model->delta.dispersion->accept_as_destination(visitor, self->model->delta.dispersion, disp_dict);
     disp_dict = PyDict_GetItemString(self->dispersion, "spacing");
     self->model->spacing.dispersion->accept_as_destination(visitor, self->model->spacing.dispersion, disp_dict);
@@ -347,9 +314,10 @@
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->delta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "delta") );
-    self->model->sigma = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sigma") );
     self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
     DispersionVisitor* visitor = new DispersionVisitor();
+    disp_dict = PyDict_GetItemString(self->dispersion, "delta");
+    self->model->delta.dispersion->accept_as_destination(visitor, self->model->delta.dispersion, disp_dict);
     disp_dict = PyDict_GetItemString(self->dispersion, "spacing");
     self->model->spacing.dispersion->accept_as_destination(visitor, self->model->spacing.dispersion, disp_dict);
@@ -411,9 +379,10 @@
     self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
     self->model->delta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "delta") );
-    self->model->sigma = PyFloat_AsDouble( PyDict_GetItemString(self->params, "sigma") );
     self->model->contrast = PyFloat_AsDouble( PyDict_GetItemString(self->params, "contrast") );
     // Read in dispersion parameters
     PyObject* disp_dict;
     DispersionVisitor* visitor = new DispersionVisitor();
+    disp_dict = PyDict_GetItemString(self->dispersion, "delta");
+    self->model->delta.dispersion->accept_as_destination(visitor, self->model->delta.dispersion, disp_dict);
     disp_dict = PyDict_GetItemString(self->dispersion, "spacing");
     self->model->spacing.dispersion->accept_as_destination(visitor, self->model->spacing.dispersion, disp_dict);
@@ -473,5 +442,7 @@
 	// Ugliness necessary to go from python to C
 	    // TODO: refactor this
-    if (!strcmp(par_name, "spacing")) {
+    if (!strcmp(par_name, "delta")) {
+        self->model->delta.dispersion = dispersion;
+    } else    if (!strcmp(par_name, "spacing")) {
         self->model->spacing.dispersion = dispersion;
     } else {
Index: sansmodels/src/sans/models/c_models/lamellar.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/lamellar.cpp	(revision 975ec8e8211549489759b5a5ffe3b60607de065b)
+++ sansmodels/src/sans/models/c_models/lamellar.cpp	(revision c1c29b67c42e22e8ebe38ed7aacd5a53ec4f66bb)
@@ -28,5 +28,5 @@
 
 extern "C" {
-	#include "libCylinder.h"
+//	#include "libCylinder.h"
 	#include "lamellar.h"
 }
Index: sansmodels/src/sans/models/c_models/lamellarPS.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/lamellarPS.cpp	(revision b4679dee5e210d6a4a960aa3eada337f6dbac554)
+++ sansmodels/src/sans/models/c_models/lamellarPS.cpp	(revision c1c29b67c42e22e8ebe38ed7aacd5a53ec4f66bb)
@@ -39,6 +39,4 @@
 	delta     = Parameter(30.0);
 	delta.set_min(0.0);
-	sigma    = Parameter(0.15);
-	sigma.set_min(0.0);
 	contrast   = Parameter(5.3e-6);
 	n_plates     = Parameter(20.0);
@@ -55,5 +53,5 @@
  */
 double LamellarPSModel :: operator()(double q) {
-	double dp[8];
+	double dp[7];
 
 	// Fill parameter array for IGOR library
@@ -62,14 +60,15 @@
 	dp[1] = spacing();
 	dp[2] = delta();
-	dp[3] = sigma();
-	dp[4] = contrast();
-	dp[5] = n_plates();
-	dp[6] = caille();
-	dp[7] = 0.0;
+	dp[3] = contrast();
+	dp[4] = n_plates();
+	dp[5] = caille();
+	dp[6] = 0.0;
 
 
-	// Get the dispersion points for (delta) thickness
+	// Get the dispersion points for spacing and delta (thickness)
 	vector<WeightPoint> weights_spacing;
 	spacing.get_weights(weights_spacing);
+	vector<WeightPoint> weights_delta;
+	delta.get_weights(weights_delta);
 
 	// Perform the computation, with all weight points
@@ -80,8 +79,10 @@
 	for(int i=0; i< (int)weights_spacing.size(); i++) {
 		dp[1] = weights_spacing[i].value;
+		for(int j=0; j< (int)weights_spacing.size(); j++) {
+			dp[2] = weights_delta[i].value;
 
-		sum += weights_spacing[i].weight * LamellarPS(dp, q);
-		norm += weights_spacing[i].weight;
-
+			sum += weights_spacing[i].weight * weights_delta[j].weight * LamellarPS_kernel(dp, q);
+			norm += weights_spacing[i].weight * weights_delta[j].weight;
+		}
 	}
 	return sum/norm + background();
@@ -108,2 +109,3 @@
 	return (*this).operator()(q);
 }
+
Index: sansmodels/src/sans/models/c_models/models.hh
===================================================================
--- sansmodels/src/sans/models/c_models/models.hh	(revision 8e36cddc31aee946bb051c6a6d4eade849ca2ed4)
+++ sansmodels/src/sans/models/c_models/models.hh	(revision c1c29b67c42e22e8ebe38ed7aacd5a53ec4f66bb)
@@ -20,4 +20,6 @@
 	#include "cylinder.h"
 	#include "parallelepiped.h"
+	#include "lamellarPS.h"
+	#include "lamellar.h"
 }
 
@@ -383,5 +385,4 @@
 	Parameter spacing;
 	Parameter delta;
-	Parameter sigma;
 	Parameter contrast;
 	Parameter n_plates;
