Index: sansmodels/src/sans/models/c_extensions/triaxial_ellipsoid.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/triaxial_ellipsoid.h	(revision 13eb1c4b175eb150bd941382067266672545173d)
+++ sansmodels/src/sans/models/c_extensions/triaxial_ellipsoid.h	(revision 186c4eb32ef74e10a62b97c2a26bcda04640ac7f)
@@ -3,5 +3,5 @@
 /** Structure definition for cylinder parameters
  * [PYTHONCLASS] = TriaxialEllipsoidModel
- * [DISP_PARAMS] = axis_theta, axis_phi, axis_psi
+ * [DISP_PARAMS] = semi_axisA, semi_axisB, semi_axisC,axis_theta, axis_phi, axis_psi
 	[DESCRIPTION] = <text>Note: During fitting ensure that the inequality A<B<C is not
 	violated. Otherwise the calculation will
Index: sansmodels/src/sans/models/c_models/CTriaxialEllipsoidModel.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/CTriaxialEllipsoidModel.cpp	(revision 13eb1c4b175eb150bd941382067266672545173d)
+++ sansmodels/src/sans/models/c_models/CTriaxialEllipsoidModel.cpp	(revision 186c4eb32ef74e10a62b97c2a26bcda04640ac7f)
@@ -103,4 +103,13 @@
         DispersionVisitor* visitor = new DispersionVisitor();
         PyObject * disp_dict;
+        disp_dict = PyDict_New();
+        self->model->semi_axisA.dispersion->accept_as_source(visitor, self->model->semi_axisA.dispersion, disp_dict);
+        PyDict_SetItemString(self->dispersion, "semi_axisA", disp_dict);
+        disp_dict = PyDict_New();
+        self->model->semi_axisB.dispersion->accept_as_source(visitor, self->model->semi_axisB.dispersion, disp_dict);
+        PyDict_SetItemString(self->dispersion, "semi_axisB", disp_dict);
+        disp_dict = PyDict_New();
+        self->model->semi_axisC.dispersion->accept_as_source(visitor, self->model->semi_axisC.dispersion, disp_dict);
+        PyDict_SetItemString(self->dispersion, "semi_axisC", disp_dict);
         disp_dict = PyDict_New();
         self->model->axis_theta.dispersion->accept_as_source(visitor, self->model->axis_theta.dispersion, disp_dict);
@@ -254,4 +263,10 @@
     PyObject* disp_dict;
     DispersionVisitor* visitor = new DispersionVisitor();
+    disp_dict = PyDict_GetItemString(self->dispersion, "semi_axisA");
+    self->model->semi_axisA.dispersion->accept_as_destination(visitor, self->model->semi_axisA.dispersion, disp_dict);
+    disp_dict = PyDict_GetItemString(self->dispersion, "semi_axisB");
+    self->model->semi_axisB.dispersion->accept_as_destination(visitor, self->model->semi_axisB.dispersion, disp_dict);
+    disp_dict = PyDict_GetItemString(self->dispersion, "semi_axisC");
+    self->model->semi_axisC.dispersion->accept_as_destination(visitor, self->model->semi_axisC.dispersion, disp_dict);
     disp_dict = PyDict_GetItemString(self->dispersion, "axis_theta");
     self->model->axis_theta.dispersion->accept_as_destination(visitor, self->model->axis_theta.dispersion, disp_dict);
@@ -335,4 +350,10 @@
     PyObject* disp_dict;
     DispersionVisitor* visitor = new DispersionVisitor();
+    disp_dict = PyDict_GetItemString(self->dispersion, "semi_axisA");
+    self->model->semi_axisA.dispersion->accept_as_destination(visitor, self->model->semi_axisA.dispersion, disp_dict);
+    disp_dict = PyDict_GetItemString(self->dispersion, "semi_axisB");
+    self->model->semi_axisB.dispersion->accept_as_destination(visitor, self->model->semi_axisB.dispersion, disp_dict);
+    disp_dict = PyDict_GetItemString(self->dispersion, "semi_axisC");
+    self->model->semi_axisC.dispersion->accept_as_destination(visitor, self->model->semi_axisC.dispersion, disp_dict);
     disp_dict = PyDict_GetItemString(self->dispersion, "axis_theta");
     self->model->axis_theta.dispersion->accept_as_destination(visitor, self->model->axis_theta.dispersion, disp_dict);
@@ -403,4 +424,10 @@
     PyObject* disp_dict;
     DispersionVisitor* visitor = new DispersionVisitor();
+    disp_dict = PyDict_GetItemString(self->dispersion, "semi_axisA");
+    self->model->semi_axisA.dispersion->accept_as_destination(visitor, self->model->semi_axisA.dispersion, disp_dict);
+    disp_dict = PyDict_GetItemString(self->dispersion, "semi_axisB");
+    self->model->semi_axisB.dispersion->accept_as_destination(visitor, self->model->semi_axisB.dispersion, disp_dict);
+    disp_dict = PyDict_GetItemString(self->dispersion, "semi_axisC");
+    self->model->semi_axisC.dispersion->accept_as_destination(visitor, self->model->semi_axisC.dispersion, disp_dict);
     disp_dict = PyDict_GetItemString(self->dispersion, "axis_theta");
     self->model->axis_theta.dispersion->accept_as_destination(visitor, self->model->axis_theta.dispersion, disp_dict);
@@ -440,4 +467,10 @@
     PyObject* disp_dict;
     DispersionVisitor* visitor = new DispersionVisitor();
+    disp_dict = PyDict_GetItemString(self->dispersion, "semi_axisA");
+    self->model->semi_axisA.dispersion->accept_as_destination(visitor, self->model->semi_axisA.dispersion, disp_dict);
+    disp_dict = PyDict_GetItemString(self->dispersion, "semi_axisB");
+    self->model->semi_axisB.dispersion->accept_as_destination(visitor, self->model->semi_axisB.dispersion, disp_dict);
+    disp_dict = PyDict_GetItemString(self->dispersion, "semi_axisC");
+    self->model->semi_axisC.dispersion->accept_as_destination(visitor, self->model->semi_axisC.dispersion, disp_dict);
     disp_dict = PyDict_GetItemString(self->dispersion, "axis_theta");
     self->model->axis_theta.dispersion->accept_as_destination(visitor, self->model->axis_theta.dispersion, disp_dict);
@@ -501,5 +534,11 @@
 	// Ugliness necessary to go from python to C
 	    // TODO: refactor this
-    if (!strcmp(par_name, "axis_theta")) {
+    if (!strcmp(par_name, "semi_axisA")) {
+        self->model->semi_axisA.dispersion = dispersion;
+    } else    if (!strcmp(par_name, "semi_axisB")) {
+        self->model->semi_axisB.dispersion = dispersion;
+    } else    if (!strcmp(par_name, "semi_axisC")) {
+        self->model->semi_axisC.dispersion = dispersion;
+    } else    if (!strcmp(par_name, "axis_theta")) {
         self->model->axis_theta.dispersion = dispersion;
     } else    if (!strcmp(par_name, "axis_phi")) {
