Index: sansmodels/src/sans/models/CoreShellCylinderModel.py
===================================================================
--- sansmodels/src/sans/models/CoreShellCylinderModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/CoreShellCylinderModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -105,8 +105,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/CoreShellEllipsoidModel.py
===================================================================
--- sansmodels/src/sans/models/CoreShellEllipsoidModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/CoreShellEllipsoidModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -100,8 +100,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/CoreShellModel.py
===================================================================
--- sansmodels/src/sans/models/CoreShellModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/CoreShellModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -85,8 +85,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/CylinderModel.py
===================================================================
--- sansmodels/src/sans/models/CylinderModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/CylinderModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -88,8 +88,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/DiamCylFunc.py
===================================================================
--- sansmodels/src/sans/models/DiamCylFunc.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/DiamCylFunc.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -69,8 +69,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/DiamEllipFunc.py
===================================================================
--- sansmodels/src/sans/models/DiamEllipFunc.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/DiamEllipFunc.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -73,8 +73,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/EllipsoidModel.py
===================================================================
--- sansmodels/src/sans/models/EllipsoidModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/EllipsoidModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -92,8 +92,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/EllipticalCylinderModel.py
===================================================================
--- sansmodels/src/sans/models/EllipticalCylinderModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/EllipticalCylinderModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -84,8 +84,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/FlexibleCylinderModel.py
===================================================================
--- sansmodels/src/sans/models/FlexibleCylinderModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/FlexibleCylinderModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -77,8 +77,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/Gaussian.py
===================================================================
--- sansmodels/src/sans/models/Gaussian.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/Gaussian.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -68,8 +68,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/HardsphereStructure.py
===================================================================
--- sansmodels/src/sans/models/HardsphereStructure.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/HardsphereStructure.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -77,8 +77,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/HayterMSAStructure.py
===================================================================
--- sansmodels/src/sans/models/HayterMSAStructure.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/HayterMSAStructure.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -87,8 +87,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/HollowCylinderModel.py
===================================================================
--- sansmodels/src/sans/models/HollowCylinderModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/HollowCylinderModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -83,8 +83,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/LamellarFFHGModel.py
===================================================================
--- sansmodels/src/sans/models/LamellarFFHGModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/LamellarFFHGModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -83,8 +83,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/LamellarModel.py
===================================================================
--- sansmodels/src/sans/models/LamellarModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/LamellarModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -80,8 +80,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/LamellarPSHGModel.py
===================================================================
--- sansmodels/src/sans/models/LamellarPSHGModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/LamellarPSHGModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -100,8 +100,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/LamellarPSModel.py
===================================================================
--- sansmodels/src/sans/models/LamellarPSModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/LamellarPSModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -93,8 +93,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/LogNormal.py
===================================================================
--- sansmodels/src/sans/models/LogNormal.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/LogNormal.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -68,8 +68,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/Lorentzian.py
===================================================================
--- sansmodels/src/sans/models/Lorentzian.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/Lorentzian.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -68,8 +68,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/MultiShellModel.py
===================================================================
--- sansmodels/src/sans/models/MultiShellModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/MultiShellModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -86,8 +86,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/OblateModel.py
===================================================================
--- sansmodels/src/sans/models/OblateModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/OblateModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -98,8 +98,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/ParallelepipedModel.py
===================================================================
--- sansmodels/src/sans/models/ParallelepipedModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/ParallelepipedModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -87,8 +87,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/ProlateModel.py
===================================================================
--- sansmodels/src/sans/models/ProlateModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/ProlateModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -94,8 +94,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/Schulz.py
===================================================================
--- sansmodels/src/sans/models/Schulz.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/Schulz.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -70,8 +70,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/SphereModel.py
===================================================================
--- sansmodels/src/sans/models/SphereModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/SphereModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -79,8 +79,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/SquareWellStructure.py
===================================================================
--- sansmodels/src/sans/models/SquareWellStructure.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/SquareWellStructure.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -85,8 +85,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/StackedDisksModel.py
===================================================================
--- sansmodels/src/sans/models/StackedDisksModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/StackedDisksModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -94,8 +94,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/StickyHSStructure.py
===================================================================
--- sansmodels/src/sans/models/StickyHSStructure.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/StickyHSStructure.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -85,8 +85,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/TriaxialEllipsoidModel.py
===================================================================
--- sansmodels/src/sans/models/TriaxialEllipsoidModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/TriaxialEllipsoidModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -82,8 +82,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/VesicleModel.py
===================================================================
--- sansmodels/src/sans/models/VesicleModel.py	(revision fe9c19b40dbe89e6d4c6ac8339eb8e3b843f7ab5)
+++ sansmodels/src/sans/models/VesicleModel.py	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -79,8 +79,4 @@
     def __getstate__(self):
         """ return object state for pickling and copying """
-        print "__dict__",self.__dict__
-        #self.__dict__['params'] = self.params
-        #self.__dict__['dispersion'] = self.dispersion
-        #self.__dict__['log'] = self.log
         model_state = {'params': self.params, 'dispersion': self.dispersion, 'log': self.log}
         
Index: sansmodels/src/sans/models/c_models/coreshellcylinder.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/coreshellcylinder.cpp	(revision 15f52f88737738eb57d2a9d36d0679320ba36530)
+++ sansmodels/src/sans/models/c_models/coreshellcylinder.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -82,4 +82,5 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double vol = 0.0;
 
 	// Loop over radius weight points
@@ -94,9 +95,17 @@
 			for(int k=0; k<weights_thick.size(); k++) {
 				dp[2] = weights_thick[k].value;
-
+				//Un-normalize by volume
 				sum += weights_rad[i].weight
 					* weights_len[j].weight
 					* weights_thick[k].weight
-					* CoreShellCylinder(dp, q);
+					* CoreShellCylinder(dp, q)
+					* pow(weights_rad[i].value+weights_thick[k].value,2)
+					*(weights_len[j].value+2.0*weights_thick[k].value);
+				//Find average volume
+				vol += weights_rad[i].weight
+					* weights_len[j].weight
+					* weights_thick[k].weight
+					* pow(weights_rad[i].value+weights_thick[k].value,2)
+					*(weights_len[j].value+2.0*weights_thick[k].value);
 				norm += weights_rad[i].weight
 				* weights_len[j].weight
@@ -105,4 +114,9 @@
 		}
 	}
+
+	if (vol != 0.0 && norm != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm);}
+
 	return sum/norm + background();
 }
@@ -151,4 +165,6 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double norm_vol = 0.0;
+	double vol = 0.0;
 
 	// Loop over radius weight points
@@ -172,5 +188,5 @@
 				for(int l=0; l<weights_phi.size(); l++) {
 					dp.axis_phi = weights_phi[l].value;
-
+					//Un-normalize by volume
 					double _ptvalue = weights_rad[i].weight
 						* weights_len[j].weight
@@ -178,9 +194,23 @@
 						* weights_theta[k].weight
 						* weights_phi[l].weight
-						* core_shell_cylinder_analytical_2DXY(&dp, qx, qy);
+						* core_shell_cylinder_analytical_2DXY(&dp, qx, qy)
+						* pow(weights_rad[i].value+weights_thick[m].value,2)
+						*(weights_len[j].value+2.0*weights_thick[m].value);
+
 					if (weights_theta.size()>1) {
 						_ptvalue *= sin(weights_theta[k].value);
 					}
 					sum += _ptvalue;
+
+					//Find average volume
+					vol += weights_rad[i].weight
+							* weights_len[j].weight
+							* weights_thick[m].weight
+							* pow(weights_rad[i].value+weights_thick[m].value,2)
+							*(weights_len[j].value+2.0*weights_thick[m].value);
+					//Find norm for volume
+					norm_vol += weights_rad[i].weight
+								* weights_len[j].weight
+								* weights_thick[m].weight;
 
 					norm += weights_rad[i].weight
@@ -199,4 +229,9 @@
 	// integration (see documentation).
 	if (weights_theta.size()>1) norm = norm / asin(1.0);
+
+	if (vol != 0.0 && norm_vol != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm_vol);}
+
 	return sum/norm + background();
 }
Index: sansmodels/src/sans/models/c_models/coreshellsphere.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/coreshellsphere.cpp	(revision f9bf66165686c721c2f0b3a197f7dda1822721ad)
+++ sansmodels/src/sans/models/c_models/coreshellsphere.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -75,4 +75,5 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double vol = 0.0;
 
 	// Loop over radius weight points
@@ -83,11 +84,20 @@
 		for(int j=0; j<weights_thick.size(); j++) {
 			dp[2] = weights_thick[j].value;
+			//Un-normalize SphereForm by volume
+			sum += weights_rad[i].weight
+				* weights_thick[j].weight * CoreShellForm(dp, q)* pow(weights_rad[i].value+weights_thick[j].value,3);
 
-			sum += weights_rad[i].weight
-				* weights_thick[j].weight * CoreShellForm(dp, q);
+			//Find average volume
+			vol += weights_rad[i].weight * weights_thick[j].weight
+				* pow(weights_rad[i].value+weights_thick[j].value,3);
 			norm += weights_rad[i].weight
 				* weights_thick[j].weight;
 		}
 	}
+
+	if (vol != 0.0 && norm != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm);}
+
 	return sum/norm + background();
 }
Index: sansmodels/src/sans/models/c_models/cylinder.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/cylinder.cpp	(revision f9bf66165686c721c2f0b3a197f7dda1822721ad)
+++ sansmodels/src/sans/models/c_models/cylinder.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -73,4 +73,5 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double vol = 0.0;
 
 	// Loop over radius weight points
@@ -81,11 +82,20 @@
 		for(int j=0; j<weights_len.size(); j++) {
 			dp[2] = weights_len[j].value;
-
+			//Un-normalize by volume
 			sum += weights_rad[i].weight
-				* weights_len[j].weight * CylinderForm(dp, q);
+				* weights_len[j].weight * CylinderForm(dp, q)
+				*pow(weights_rad[i].value,2)*weights_len[j].value;
+
+			//Find average volume
+			vol += weights_rad[i].weight
+				* weights_len[j].weight *pow(weights_rad[i].value,2)*weights_len[j].value;
 			norm += weights_rad[i].weight
 				* weights_len[j].weight;
 		}
 	}
+	if (vol != 0.0 && norm != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm);}
+
 	return sum/norm + background();
 }
@@ -127,4 +137,6 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double norm_vol = 0.0;
+	double vol = 0.0;
 
 	// Loop over radius weight points
@@ -144,14 +156,22 @@
 				for(int l=0; l<weights_phi.size(); l++) {
 					dp.cyl_phi = weights_phi[l].value;
-
+					//Un-normalize by volume
 					double _ptvalue = weights_rad[i].weight
 						* weights_len[j].weight
 						* weights_theta[k].weight
 						* weights_phi[l].weight
-						* cylinder_analytical_2DXY(&dp, qx, qy);
+						* cylinder_analytical_2DXY(&dp, qx, qy)
+						*pow(weights_rad[i].value,2)*weights_len[j].value;
 					if (weights_theta.size()>1) {
 						_ptvalue *= sin(weights_theta[k].value);
 					}
 					sum += _ptvalue;
+					//Find average volume
+					vol += weights_rad[i].weight
+							* weights_len[j].weight
+							* pow(weights_rad[i].value,2)*weights_len[j].value;
+					//Find norm for volume
+					norm_vol += weights_rad[i].weight
+							* weights_len[j].weight;
 
 					norm += weights_rad[i].weight
@@ -168,4 +188,8 @@
 	// integration (see documentation).
 	if (weights_theta.size()>1) norm = norm / asin(1.0);
+	if (vol != 0.0 && norm_vol != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm_vol);}
+
 	return sum/norm + background();
 }
Index: sansmodels/src/sans/models/c_models/ellipsoid.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/ellipsoid.cpp	(revision f9bf66165686c721c2f0b3a197f7dda1822721ad)
+++ sansmodels/src/sans/models/c_models/ellipsoid.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -73,4 +73,5 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double vol = 0.0;
 
 	// Loop over radius_a weight points
@@ -81,11 +82,23 @@
 		for(int j=0; j<weights_rad_b.size(); j++) {
 			dp[2] = weights_rad_b[j].value;
-
+			//Un-normalize  by volume
 			sum += weights_rad_a[i].weight
-				* weights_rad_b[j].weight * EllipsoidForm(dp, q);
+				* weights_rad_b[j].weight * EllipsoidForm(dp, q)
+				* pow(weights_rad_b[j].value,2) * weights_rad_a[i].value;
+
+			//Find average volume
+			vol += weights_rad_a[i].weight
+				* weights_rad_b[j].weight
+				* pow(weights_rad_b[j].value,2)
+				* weights_rad_a[i].value;
 			norm += weights_rad_a[i].weight
 				* weights_rad_b[j].weight;
 		}
 	}
+
+	if (vol != 0.0 && norm != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm);}
+
 	return sum/norm + background();
 }
@@ -127,4 +140,6 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double norm_vol = 0.0;
+	double vol = 0.0;
 
 	// Loop over radius weight points
@@ -144,14 +159,22 @@
 				for(int l=0; l<weights_phi.size(); l++) {
 					dp.axis_phi = weights_phi[l].value;
-
+					//Un-normalize by volume
 					double _ptvalue = weights_rad_a[i].weight
 						* weights_rad_b[j].weight
 						* weights_theta[k].weight
 						* weights_phi[l].weight
-						* ellipsoid_analytical_2DXY(&dp, qx, qy);
+						* ellipsoid_analytical_2DXY(&dp, qx, qy)
+						* pow(weights_rad_b[j].value,2) * weights_rad_a[i].value;
 					if (weights_theta.size()>1) {
 						_ptvalue *= sin(weights_theta[k].value);
 					}
 					sum += _ptvalue;
+					//Find average volume
+					vol += weights_rad_a[i].weight
+						* weights_rad_b[j].weight
+						* pow(weights_rad_b[j].value,2) * weights_rad_a[i].value;
+					//Find norm for volume
+					norm_vol += weights_rad_a[i].weight
+						* weights_rad_b[j].weight;
 
 					norm += weights_rad_a[i].weight
@@ -168,4 +191,9 @@
 	// integration (see documentation).
 	if (weights_theta.size()>1) norm = norm / asin(1.0);
+
+	if (vol != 0.0 && norm_vol != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm_vol);}
+
 	return sum/norm + background();
 }
Index: sansmodels/src/sans/models/c_models/ellipticalcylinder.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/ellipticalcylinder.cpp	(revision f9bf66165686c721c2f0b3a197f7dda1822721ad)
+++ sansmodels/src/sans/models/c_models/ellipticalcylinder.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -79,4 +79,5 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double vol = 0.0;
 
 	// Loop over r_minor weight points
@@ -91,15 +92,28 @@
 			for(int k=0; k<weights_len.size(); k++) {
 				dp[3] = weights_len[k].value;
-
+				//Un-normalize  by volume
 				sum += weights_rad[i].weight
 					* weights_len[k].weight
 					* weights_rat[j].weight
-					* EllipCyl20(dp, q);
+					* EllipCyl20(dp, q)
+					* pow(weights_rad[i].value,2) * weights_rat[j].value
+					* weights_len[k].value;
+				//Find average volume
+				vol += weights_rad[i].weight
+					* weights_len[k].weight
+					* weights_rat[j].weight
+					* pow(weights_rad[i].value,2) * weights_rat[j].value
+					* weights_len[k].value;
 				norm += weights_rad[i].weight
-				* weights_len[k].weight
-				* weights_rat[j].weight;
+					* weights_len[k].weight
+					* weights_rat[j].weight;
 			}
 		}
 	}
+
+	if (vol != 0.0 && norm != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm);}
+
 	return sum/norm + background();
 }
@@ -151,4 +165,6 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double norm_vol = 0.0;
+	double vol = 0.0;
 
 	// Loop over minor radius weight points
@@ -176,5 +192,5 @@
 				for(int o=0; o<weights_psi.size(); o++) {
 					dp.cyl_psi = weights_psi[o].value;
-
+					//Un-normalize by volume
 					double _ptvalue = weights_rad[i].weight
 						* weights_len[j].weight
@@ -183,9 +199,23 @@
 						* weights_phi[l].weight
 						* weights_psi[o].weight
-						* elliptical_cylinder_analytical_2DXY(&dp, qx, qy);
+						* elliptical_cylinder_analytical_2DXY(&dp, qx, qy)
+						* pow(weights_rad[i].value,2)
+						* weights_len[j].value
+						* weights_rat[m].value;
 					if (weights_theta.size()>1) {
 						_ptvalue *= sin(weights_theta[k].value);
 					}
 					sum += _ptvalue;
+					//Find average volume
+					vol += weights_rad[i].weight
+						* weights_len[j].weight
+						* weights_rat[m].weight
+						* pow(weights_rad[i].value,2)
+						* weights_len[j].value
+						* weights_rat[m].value;
+					//Find norm for volume
+					norm_vol += weights_rad[i].weight
+						* weights_len[j].weight
+						* weights_rat[m].weight;
 
 					norm += weights_rad[i].weight
@@ -206,5 +236,11 @@
 	// integration (see documentation).
 	if (weights_theta.size()>1) norm = norm / asin(1.0);
+
+	if (vol != 0.0 && norm_vol != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm_vol);}
+
 	return sum/norm + background();
+
 }
 
Index: sansmodels/src/sans/models/c_models/flexiblecylinder.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/flexiblecylinder.cpp	(revision f9bf66165686c721c2f0b3a197f7dda1822721ad)
+++ sansmodels/src/sans/models/c_models/flexiblecylinder.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -79,4 +79,5 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double vol = 0.0;
 
 	// Loop over semi axis A weight points
@@ -91,7 +92,13 @@
 			for(int k=0; k< (int)weights_rad.size(); k++) {
 				dp[3] = weights_rad[k].value;
-
+				//Un-normalize by volume
 				sum += weights_len[i].weight
-					* weights_kuhn[j].weight*weights_rad[k].weight * FlexExclVolCyl(dp, q);
+					* weights_kuhn[j].weight*weights_rad[k].weight * FlexExclVolCyl(dp, q)
+					* pow(weights_rad[k].value,2)*weights_len[i].value;
+				//Find average volume
+				vol += weights_rad[k].weight
+					* weights_len[i].weight
+					* weights_kuhn[j].weight
+					*pow(weights_rad[k].value,2)*weights_len[i].value;
 				norm += weights_len[i].weight
 					* weights_kuhn[j].weight*weights_rad[k].weight;
@@ -99,4 +106,8 @@
 		}
 	}
+	if (vol != 0.0 && norm != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm);}
+
 	return sum/norm + background();
 }
Index: sansmodels/src/sans/models/c_models/hollowcylinder.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/hollowcylinder.cpp	(revision f9bf66165686c721c2f0b3a197f7dda1822721ad)
+++ sansmodels/src/sans/models/c_models/hollowcylinder.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -78,4 +78,5 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double vol = 0.0;
 
 	// Loop over core radius weight points
@@ -90,15 +91,28 @@
 			for(int k=0; k< (int)weights_radius.size(); k++) {
 				dp[2] = weights_radius[k].value;
-
+				//Un-normalize  by volume
 				sum += weights_core_radius[i].weight
 					* weights_length[j].weight
 					* weights_radius[k].weight
-					* HollowCylinder(dp, q);
+					* HollowCylinder(dp, q)
+					* (pow(weights_radius[k].value,2)-pow(weights_core_radius[i].value,2))
+					* weights_length[j].value;
+				//Find average volume
+				vol += weights_core_radius[i].weight
+					* weights_length[j].weight
+					* weights_radius[k].weight
+					* (pow(weights_radius[k].value,2)-pow(weights_core_radius[i].value,2))
+					* weights_length[j].value;
+
 				norm += weights_core_radius[i].weight
-				* weights_length[j].weight
-				* weights_radius[k].weight;
+					* weights_length[j].weight
+					* weights_radius[k].weight;
 			}
 		}
 	}
+	if (vol != 0.0 && norm != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm);}
+
 	return sum/norm + background();
 }
@@ -145,4 +159,6 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double norm_vol = 0.0;
+	double vol = 0.0;
 
 	// Loop over core radius weight points
@@ -166,5 +182,5 @@
 				for(int l=0; l< (int)weights_phi.size(); l++) {
 					dp.axis_phi = weights_phi[l].value;
-
+					//Un-normalize by volume
 					double _ptvalue = weights_core_radius[i].weight
 						* weights_length[j].weight
@@ -172,9 +188,21 @@
 						* weights_theta[k].weight
 						* weights_phi[l].weight
-						* hollow_cylinder_analytical_2DXY(&dp, qx, qy);
+						* hollow_cylinder_analytical_2DXY(&dp, qx, qy)
+						* (pow(weights_radius[m].value,2)-pow(weights_core_radius[i].value,2))
+						* weights_length[j].value;
 					if (weights_theta.size()>1) {
 						_ptvalue *= sin(weights_theta[k].value);
 					}
 					sum += _ptvalue;
+					//Find average volume
+					vol += weights_core_radius[i].weight
+						* weights_length[j].weight
+						* weights_radius[k].weight
+						* (pow(weights_radius[m].value,2)-pow(weights_core_radius[i].value,2))
+						* weights_length[j].value;
+					//Find norm for volume
+					norm_vol += weights_core_radius[i].weight
+						* weights_length[j].weight
+						* weights_radius[m].weight;
 
 					norm += weights_core_radius[i].weight
@@ -193,4 +221,7 @@
 	// integration (see documentation).
 	if (weights_theta.size()>1) norm = norm / asin(1.0);
+	if (vol != 0.0 && norm_vol != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm_vol);}
 	return sum/norm + background();
 }
Index: sansmodels/src/sans/models/c_models/multishell.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/multishell.cpp	(revision f9bf66165686c721c2f0b3a197f7dda1822721ad)
+++ sansmodels/src/sans/models/c_models/multishell.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -80,4 +80,5 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double vol = 0.0;
 
 	// Loop over radius weight points
@@ -88,7 +89,12 @@
 			for(int k=0; k< (int)weights_w_thickness.size(); k++){
 				dp[3] = weights_w_thickness[k].value;
-
+				//Un-normalize SphereForm by volume
 				sum += weights_core_radius[i].weight*weights_s_thickness[j].weight
-					*weights_w_thickness[k].weight* MultiShell(dp, q);
+					*weights_w_thickness[k].weight* MultiShell(dp, q)
+					*pow(weights_core_radius[i].value+dp[6]*weights_s_thickness[j].value+(dp[6]-1)*weights_w_thickness[k].value,3);
+				//Find average volume
+				vol += weights_core_radius[i].weight*weights_s_thickness[j].weight
+					*weights_w_thickness[k].weight
+					*pow(weights_core_radius[i].value+dp[6]*weights_s_thickness[j].value+(dp[6]-1)*weights_w_thickness[k].value,3);
 				norm += weights_core_radius[i].weight*weights_s_thickness[j].weight
 					*weights_w_thickness[k].weight;
@@ -96,4 +102,7 @@
 		}
 	}
+	if (vol != 0.0 && norm != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm);}
 	return sum/norm + background();
 }
Index: sansmodels/src/sans/models/c_models/parallelepiped.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/parallelepiped.cpp	(revision f9bf66165686c721c2f0b3a197f7dda1822721ad)
+++ sansmodels/src/sans/models/c_models/parallelepiped.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -84,4 +84,5 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double vol = 0.0;
 
 	// Loop over short_edgeA weight points
@@ -96,6 +97,14 @@
 			for(int k=0; k< (int)weights_long_c.size(); k++) {
 				dp[3] = weights_long_c[k].value;
+				//Un-normalize  by volume
 				sum += weights_short_a[i].weight * weights_short_b[j].weight
-					* weights_long_c[k].weight * Parallelepiped(dp, q);
+					* weights_long_c[k].weight * Parallelepiped(dp, q)
+					* weights_short_a[i].value*weights_short_b[j].value
+					* weights_long_c[k].value;
+				//Find average volume
+				vol += weights_short_a[i].weight * weights_short_b[j].weight
+					* weights_long_c[k].weight
+					* weights_short_a[i].value * weights_short_b[j].value
+					* weights_long_c[k].value;
 
 				norm += weights_short_a[i].weight
@@ -104,4 +113,7 @@
 		}
 	}
+	if (vol != 0.0 && norm != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm);}
 
 	return sum/norm + background();
@@ -155,4 +167,6 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double norm_vol = 0.0;
+	double vol = 0.0;
 
 	// Loop over radius weight points
@@ -179,5 +193,5 @@
 						for(int n=0; n< (int)weights_parallel_psi.size(); n++) {
 							dp.parallel_psi = weights_parallel_psi[n].value;
-
+							//Un-normalize by volume
 							double _ptvalue = weights_short_a[i].weight
 								* weights_short_b[j].weight
@@ -186,9 +200,22 @@
 								* weights_parallel_phi[m].weight
 								* weights_parallel_psi[n].weight
-								* parallelepiped_analytical_2DXY(&dp, qx, qy);
+								* parallelepiped_analytical_2DXY(&dp, qx, qy)
+								* weights_short_a[i].value*weights_short_b[j].value
+								* weights_long_c[k].value;
+
 							if (weights_parallel_theta.size()>1) {
 								_ptvalue *= sin(weights_parallel_theta[l].value);
 							}
 							sum += _ptvalue;
+							//Find average volume
+							vol += weights_short_a[i].weight
+								* weights_short_b[j].weight
+								* weights_long_c[k].weight
+								* weights_short_a[i].value*weights_short_b[j].value
+								* weights_long_c[k].value;
+							//Find norm for volume
+							norm_vol += weights_short_a[i].weight
+								* weights_short_b[j].weight
+								* weights_long_c[k].weight;
 
 							norm += weights_short_a[i].weight
@@ -209,4 +236,9 @@
 	// integration (see documentation).
 	if (weights_parallel_theta.size()>1) norm = norm / asin(1.0);
+
+	if (vol != 0.0 && norm_vol != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm_vol);}
+
 	return sum/norm + background();
 }
Index: sansmodels/src/sans/models/c_models/sphere.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/sphere.cpp	(revision f9bf66165686c721c2f0b3a197f7dda1822721ad)
+++ sansmodels/src/sans/models/c_models/sphere.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -62,4 +62,5 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double vol = 0.0;
 
 	// Loop over radius weight points
@@ -67,8 +68,17 @@
 		dp[1] = weights_rad[i].value;
 
+		//Un-normalize SphereForm by volume
 		sum += weights_rad[i].weight
-			* SphereForm(dp, q);
+			* SphereForm(dp, q) * pow(weights_rad[i].value,3);
+		//Find average volume
+		vol += weights_rad[i].weight
+			* pow(weights_rad[i].value,3);
+
 		norm += weights_rad[i].weight;
 	}
+
+	if (vol != 0.0 && norm != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm);}
 	return sum/norm + background();
 }
Index: sansmodels/src/sans/models/c_models/spheroid.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/spheroid.cpp	(revision f9bf66165686c721c2f0b3a197f7dda1822721ad)
+++ sansmodels/src/sans/models/c_models/spheroid.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -91,4 +91,5 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double vol = 0.0;
 
 	// Loop over major core weight points
@@ -107,7 +108,13 @@
 				for(int l=0; l<(int)weights_polar_shell.size(); l++) {
 					dp[4] = weights_polar_shell[l].value;
-
+					//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 * ProlateForm(dp, q)
+						* pow(weights_equat_shell[k].value,2)*weights_polar_shell[l].value;
+					//Find average volume
+					vol += weights_equat_core[i].weight* weights_polar_core[j].weight
+						* weights_equat_shell[k].weight
+						* weights_polar_shell[l].weight
+						* pow(weights_equat_shell[k].value,2)*weights_polar_shell[l].value;
 					norm += weights_equat_core[i].weight* weights_polar_core[j].weight * weights_equat_shell[k].weight
 							* weights_polar_shell[l].weight;
@@ -116,4 +123,7 @@
 		}
 	}
+	if (vol != 0.0 && norm != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm);}
 	return sum/norm + background();
 }
@@ -194,4 +204,6 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double norm_vol = 0.0;
+	double vol = 0.0;
 
 	// Loop over major core weight points
@@ -218,14 +230,22 @@
 						for(int n=0; n< (int)weights_phi.size(); n++) {
 							dp.axis_phi = weights_phi[n].value;
-
+							//Un-normalize by volume
 							double _ptvalue = weights_equat_core[i].weight *weights_polar_core[j].weight
 								* weights_equat_shell[k].weight * weights_polar_shell[l].weight
 								* weights_theta[m].weight
 								* weights_phi[n].weight
-								* spheroid_analytical_2DXY(&dp, qx, qy);
+								* spheroid_analytical_2DXY(&dp, qx, qy)
+								* pow(weights_equat_shell[k].value,2)*weights_polar_shell[l].value;
 							if (weights_theta.size()>1) {
 								_ptvalue *= sin(weights_theta[m].value);
 							}
 							sum += _ptvalue;
+							//Find average volume
+							vol += weights_equat_shell[k].weight
+								* weights_polar_shell[l].weight
+								* pow(weights_equat_shell[k].value,2)*weights_polar_shell[l].value;
+							//Find norm for volume
+							norm_vol += weights_equat_shell[k].weight
+								* weights_polar_shell[l].weight;
 
 							norm += weights_equat_core[i].weight *weights_polar_core[j].weight
@@ -242,4 +262,9 @@
 	// integration (see documentation).
 	if (weights_theta.size()>1) norm = norm / asin(1.0);
+
+	if (vol != 0.0 && norm_vol != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm_vol);}
+
 	return sum/norm + background();
 }
Index: sansmodels/src/sans/models/c_models/stackeddisks.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/stackeddisks.cpp	(revision f9bf66165686c721c2f0b3a197f7dda1822721ad)
+++ sansmodels/src/sans/models/c_models/stackeddisks.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -89,4 +89,5 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double vol = 0.0;
 
 	// Loop over length weight points
@@ -101,7 +102,12 @@
 			for(int k=0; k< (int)weights_layer_thick.size(); k++) {
 				dp[3] = weights_layer_thick[k].value;
-
+				//Un-normalize by volume
 				sum += weights_radius[i].weight
-					* weights_core_thick[j].weight * weights_layer_thick[k].weight* StackedDiscs(dp, q);
+					* weights_core_thick[j].weight * weights_layer_thick[k].weight* StackedDiscs(dp, q)
+					*pow(weights_radius[i].value,2)*(weights_core_thick[j].value+2*weights_layer_thick[k].value);
+				//Find average volume
+				vol += weights_radius[i].weight
+					* weights_core_thick[j].weight * weights_layer_thick[k].weight
+					*pow(weights_radius[i].value,2)*(weights_core_thick[j].value+2*weights_layer_thick[k].value);
 				norm += weights_radius[i].weight
 					* weights_core_thick[j].weight* weights_layer_thick[k].weight;
@@ -109,4 +115,8 @@
 		}
 	}
+	if (vol != 0.0 && norm != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm);}
+
 	return sum/norm + background();
 }
@@ -157,4 +167,6 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double norm_vol = 0.0;
+	double vol = 0.0;
 
 	// Loop over length weight points
@@ -177,4 +189,5 @@
 							dp.axis_phi = weights_phi[m].value;
 
+							//Un-normalize by volume
 							double _ptvalue = weights_core_thick[i].weight
 								* weights_radius[j].weight
@@ -182,9 +195,17 @@
 								* weights_theta[l].weight
 								* weights_phi[m].weight
-								* stacked_disks_analytical_2DXY(&dp, qx, qy);
+								* stacked_disks_analytical_2DXY(&dp, qx, qy)
+								*pow(weights_radius[j].value,2)*(weights_core_thick[i].value+2*weights_layer_thick[k].value);
 							if (weights_theta.size()>1) {
 								_ptvalue *= sin(weights_theta[l].value);
 							}
 							sum += _ptvalue;
+							//Find average volume
+							vol += weights_radius[j].weight
+								* weights_core_thick[i].weight * weights_layer_thick[k].weight
+								*pow(weights_radius[j].value,2)*(weights_core_thick[i].value+2*weights_layer_thick[k].value);
+							//Find norm for volume
+							norm_vol += weights_radius[j].weight
+								* weights_core_thick[i].weight * weights_layer_thick[k].weight;
 
 							norm += weights_core_thick[i].weight
@@ -202,4 +223,7 @@
 	// integration (see documentation).
 	if (weights_theta.size()>1) norm = norm / asin(1.0);
+	if (vol != 0.0 && norm_vol != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm_vol);}
 	return sum/norm + background();
 }
Index: sansmodels/src/sans/models/c_models/triaxialellipsoid.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/triaxialellipsoid.cpp	(revision f9bf66165686c721c2f0b3a197f7dda1822721ad)
+++ sansmodels/src/sans/models/c_models/triaxialellipsoid.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -81,4 +81,5 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double vol = 0.0;
 
 	// Loop over semi axis A weight points
@@ -93,7 +94,13 @@
 			for(int k=0; k< (int)weights_semi_axisC.size(); k++) {
 				dp[3] = weights_semi_axisC[k].value;
-
+				//Un-normalize  by volume
 				sum += weights_semi_axisA[i].weight
-					* weights_semi_axisB[j].weight * weights_semi_axisC[k].weight* TriaxialEllipsoid(dp, q);
+					* weights_semi_axisB[j].weight * weights_semi_axisC[k].weight* TriaxialEllipsoid(dp, q)
+					* weights_semi_axisA[i].value*weights_semi_axisB[j].value*weights_semi_axisC[k].value;
+				//Find average volume
+				vol += weights_semi_axisA[i].weight
+					* weights_semi_axisB[j].weight * weights_semi_axisC[k].weight
+					* weights_semi_axisA[i].value*weights_semi_axisB[j].value*weights_semi_axisC[k].value;
+
 				norm += weights_semi_axisA[i].weight
 					* weights_semi_axisB[j].weight * weights_semi_axisC[k].weight;
@@ -101,4 +108,8 @@
 		}
 	}
+	if (vol != 0.0 && norm != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm);}
+
 	return sum/norm + background();
 }
@@ -150,4 +161,6 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double norm_vol = 0.0;
+	double vol = 0.0;
 
 	// Loop over semi axis A weight points
@@ -173,5 +186,5 @@
 						for(int n=0; n <(int)weights_psi.size(); n++) {
 							dp.axis_psi = weights_psi[n].value;
-
+							//Un-normalize  by volume
 							double _ptvalue = weights_semi_axisA[i].weight
 								* weights_semi_axisB[j].weight
@@ -180,9 +193,19 @@
 								* weights_phi[m].weight
 								* weights_psi[n].weight
-								* triaxial_ellipsoid_analytical_2DXY(&dp, qx, qy);
+								* triaxial_ellipsoid_analytical_2DXY(&dp, qx, qy)
+								* weights_semi_axisA[i].value*weights_semi_axisB[j].value*weights_semi_axisC[k].value;
 							if (weights_theta.size()>1) {
 								_ptvalue *= sin(weights_theta[k].value);
 							}
 							sum += _ptvalue;
+							//Find average volume
+							vol += weights_semi_axisA[i].weight
+								* weights_semi_axisB[j].weight
+								* weights_semi_axisC[k].weight
+								* weights_semi_axisA[i].value*weights_semi_axisB[j].value*weights_semi_axisC[k].value;
+							//Find norm for volume
+							norm_vol += weights_semi_axisA[i].weight
+								* weights_semi_axisB[j].weight
+								* weights_semi_axisC[k].weight;
 
 							norm += weights_semi_axisA[i].weight
@@ -203,4 +226,9 @@
 	// integration (see documentation).
 	if (weights_theta.size()>1) norm = norm / asin(1.0);
+
+	if (vol != 0.0 && norm_vol != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm_vol);}
+
 	return sum/norm + background();
 }
Index: sansmodels/src/sans/models/c_models/vesicle.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/vesicle.cpp	(revision f9bf66165686c721c2f0b3a197f7dda1822721ad)
+++ sansmodels/src/sans/models/c_models/vesicle.cpp	(revision c451be953dd7ec3d17683e043145313f5c761ac0)
@@ -71,4 +71,5 @@
 	double sum = 0.0;
 	double norm = 0.0;
+	double vol = 0.0;
 
 	// Loop over radius weight points
@@ -78,8 +79,16 @@
 			dp[2] = weights_thickness[j].value;
 			sum += weights_radius[i].weight
-				* weights_thickness[j].weight * VesicleForm(dp, q);
+				* weights_thickness[j].weight * VesicleForm(dp, q)
+				*(pow(weights_radius[i].value+weights_thickness[j].value,3)-pow(weights_radius[i].value,3));
+			//Find average volume
+			vol += weights_radius[i].weight * weights_thickness[j].weight
+				*(pow(weights_radius[i].value+weights_thickness[j].value,3)-pow(weights_radius[i].value,3));
 			norm += weights_radius[i].weight * weights_thickness[j].weight;
 		}
 	}
+	if (vol != 0.0 && norm != 0.0) {
+		//Re-normalize by avg volume
+		sum = sum/(vol/norm);}
+
 	return sum/norm + background();
 }
