Index: sansmodels/include/DiamCyl.h
===================================================================
--- sansmodels/include/DiamCyl.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/DiamCyl.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,39 @@
+#if !defined(DiamCyl_h)
+#define DiamCyl_h
+#include "parameters.hh"
+
+/**
+* To calculate the 2nd virial coefficient
+* [PYTHONCLASS] = DiamCylFunc
+* [DISP_PARAMS] = radius, length
+  [DESCRIPTION] =<text>To calculate the 2nd virial coefficient for
+  the non-spherical object, then find the
+  radius of sphere that has this value of
+  virial coefficient.
+ 				</text>
+	[FIXED]= <text>
+				radius.width; length.width
+			</text>
+**/
+
+class DiamCylFunc{
+public:
+  // Model parameters
+  /// Radius [A]
+  //  [DEFAULT]=radius=20.0 A
+  Parameter radius;
+  /// Length [A]
+  //  [DEFAULT]=length= 400 A
+  Parameter length;
+
+  // Constructor
+  DiamCylFunc();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/DiamEllip.h
===================================================================
--- sansmodels/include/DiamEllip.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/DiamEllip.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,45 @@
+#if !defined(DiamEllip_h)
+#define DiamEllip_h
+#include "parameters.hh"
+
+/**
+ * To calculate the 2nd virial coefficient
+* [PYTHONCLASS] = DiamEllipFunc
+* [DISP_PARAMS] = radius_a, radius_b
+  [DESCRIPTION] =<text>To calculate the 2nd virial coefficient for
+                            the non-spherical object, then find the
+                            radius of sphere that has this value of
+                            virial coefficient:
+                              radius_a = polar radius,
+                              radius_b = equatorial radius;
+                                 radius_a > radius_b: Prolate spheroid,
+                                 radius_a < radius_b: Oblate spheroid.
+ 				</text>
+	[FIXED]= <text>
+				radius_a.width;radius_b.width
+			</text>
+
+ **/
+
+class DiamEllipFunc{
+public:
+  // Model parameters
+  /// Polar radius [A]
+  //  [DEFAULT]=radius_a=20.0 A
+  Parameter radius_a;
+
+  /// Equatorial radius [A]
+  //  [DEFAULT]=radius_b= 400 A
+  Parameter radius_b;
+
+  // Constructor
+  DiamEllipFunc();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/Hardsphere.h
===================================================================
--- sansmodels/include/Hardsphere.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/Hardsphere.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,46 @@
+#if !defined(Hardsphere_h)
+#define Hardsphere_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for HardsphereStructure (factor) parameters
+ */
+//[PYTHONCLASS] = HardsphereStructure
+//[DISP_PARAMS] = effect_radius
+//[DESCRIPTION] =<text>Structure factor for interacting particles:                   .
+//
+//  The interparticle potential is
+//
+//                     U(r)= inf   , r < 2R
+//                         = 0     , r >= 2R
+//
+//						R: effective radius of the Hardsphere particle
+//						V:The volume fraction
+//
+//    Ref: Percus., J. K.,etc., J. Phy.
+//     Rev. 1958, 110, 1.
+//	 </text>
+//[FIXED]= effect_radius.width
+
+class HardsphereStructure{
+public:
+  // Model parameters
+  /// effect radius of hardsphere [A]
+  //  [DEFAULT]=effect_radius=50.0 [A]
+  Parameter effect_radius;
+
+  /// Volume fraction
+  //  [DEFAULT]=volfraction= 0.2
+  Parameter volfraction;
+
+  // Constructor
+  HardsphereStructure();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/HayterMSA.h
===================================================================
--- sansmodels/include/HayterMSA.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/HayterMSA.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,64 @@
+#if !defined(HayterMSA_h)
+#define HayterMSA_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for screened Coulomb interaction
+ */
+//[PYTHONCLASS] = HayterMSAStructure
+//[DISP_PARAMS] = effect_radius
+//[DESCRIPTION] =<text>To calculate the structure factor (the Fourier transform of the
+//                     pair correlation function g(r)) for a system of
+//                     charged, spheroidal objects in a dielectric
+//						medium.
+//                     When combined with an appropriate form
+//                     factor, this allows for inclusion of
+//                     the interparticle interference effects
+//                     due to screened coulomb repulsion between
+//                     charged particles.
+//						(Note: charge > 0 required.)
+//
+//                     Ref: JP Hansen and JB Hayter, Molecular
+//                           Physics 46, 651-656 (1982).
+//
+//				</text>
+//[FIXED]= effect_radius.width
+
+class HayterMSAStructure{
+public:
+  // Model parameters
+  /// effetitve radius of particle [A]
+  //  [DEFAULT]=effect_radius=20.75 [A]
+  Parameter effect_radius;
+
+  /// charge
+  //  [DEFAULT]=charge= 19
+  Parameter charge;
+
+  /// Volume fraction
+  //  [DEFAULT]=volfraction= 0.0192
+  Parameter volfraction;
+
+  /// Temperature [K]
+  //  [DEFAULT]=temperature= 318.16 [K]
+  Parameter temperature;
+
+  /// Monovalent salt concentration [M]
+  //  [DEFAULT]=saltconc= 0 [M]
+  Parameter saltconc;
+
+  /// Dielectric constant of solvent
+  //  [DEFAULT]=dielectconst= 71.08
+  Parameter dielectconst;
+
+  // Constructor
+  HayterMSAStructure();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/SquareWell.h
===================================================================
--- sansmodels/include/SquareWell.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/SquareWell.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,58 @@
+#if !defined(SquareWell_h)
+#define SquareWell_h
+#include "parameters.hh"
+
+/**Structure definition for SquareWell parameters
+ */
+//   [PYTHONCLASS] = SquareWellStructure
+//   [DISP_PARAMS] = effect_radius
+//   [DESCRIPTION] = <text> Structure Factor for interacting particles:             .
+//
+//  The interaction potential is
+//
+//		U(r)= inf   , r < 2R
+//			= -d    , 2R <= r <=2Rw
+//			= 0     , r >= 2Rw
+//
+//		R: effective radius (A)of the particle
+//		v: volume fraction
+//		d: well depth
+//		w: well width; multiples of the
+//		particle diameter
+//
+//		Ref: Sharma, R. V.; Sharma,
+//      K. C., Physica, 1977, 89A, 213.
+//   			</text>
+//   [FIXED]= effect_radius.width
+//[ORIENTATION_PARAMS]= <text> </text>
+
+class SquareWellStructure{
+public:
+  // Model parameters
+  /// effective radius of particle [A]
+  //  [DEFAULT]=effect_radius=50.0 [A]
+  Parameter effect_radius;
+
+  /// Volume fraction
+  //  [DEFAULT]=volfraction= 0.040
+  Parameter volfraction;
+
+  /// Well depth [kT]
+  //  [DEFAULT]=welldepth= 1.50 [kT]
+  Parameter welldepth;
+
+  /// Well width
+  //  [DEFAULT]=wellwidth= 1.20
+  Parameter wellwidth;
+
+  // Constructor
+  SquareWellStructure();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/StickyHS.h
===================================================================
--- sansmodels/include/StickyHS.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/StickyHS.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,58 @@
+#if !defined(StickyHS_h)
+#define StickyHS_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for StickyHS_struct (struncture factor) parameters
+ */
+//[PYTHONCLASS] = StickyHSStructure
+//[DISP_PARAMS] = effect_radius
+//[DESCRIPTION] =<text> Structure Factor for interacting particles:                               .
+//
+//  The interaction potential is
+//
+//                     U(r)= inf , r < 2R
+//                         = -Uo  , 2R < r < 2R + w
+//                         = 0   , r >= 2R +w
+//
+//						R: effective radius of the hardsphere
+//                     stickiness = [exp(Uo/kT)]/(12*perturb)
+//                     perturb = w/(w+ 2R) , 0.01 =< w <= 0.1
+//                     w: The width of the square well ,w > 0
+//						v: The volume fraction , v > 0
+//
+//                     Ref: Menon, S. V. G.,et.al., J. Chem.
+//                      Phys., 1991, 95(12), 9186-9190.
+//				</text>
+//[FIXED]= effect_radius.width
+
+class StickyHSStructure{
+public:
+  // Model parameters
+  /// effect radius of hardsphere [A]
+  //  [DEFAULT]=effect_radius=50.0 [A]
+  Parameter effect_radius;
+
+  /// Volume fraction
+  //  [DEFAULT]=volfraction= 0.1
+  Parameter volfraction;
+
+  /// Perturbation Parameter ( between 0.01 - 0.1)
+  //  [DEFAULT]=perturb=0.05
+  Parameter perturb;
+
+  /// Stickiness
+  //  [DEFAULT]=stickiness= 0.2
+  Parameter stickiness;
+
+  // Constructor
+  StickyHSStructure();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/barbell.h
===================================================================
--- sansmodels/include/barbell.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/barbell.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,81 @@
+#if !defined(barbell_h)
+#define barbell_h
+#include "parameters.hh"
+/**
+ * Structure definition for BarBell parameters
+ */
+ //[PYTHONCLASS] = BarBellModel
+ //[DISP_PARAMS] = rad_bar,len_bar,rad_bell,phi,  theta
+ //[DESCRIPTION] =<text>Calculates the scattering from a barbell-shaped cylinder. That is
+ //				a sphereocylinder with spherical end caps
+ //				that have a radius larger than that of
+ //				the cylinder and the center of the end cap
+ //				radius lies outside of the cylinder.
+ //				Note: As the length of cylinder(bar) -->0,
+ //				it becomes a dumbbell.
+ //				And when rad_bar = rad_bell,
+ //				it is a spherocylinder.
+ //				It must be that rad_bar <(=) rad_bell.
+ //				[Parameters];
+ //				scale: volume fraction of spheres,
+ //				background:incoherent background,
+ //				rad_bar: radius of the cylindrical bar,
+ //				len_bar: length of the cylindrical bar,
+ //				rad_bell: radius of the spherical bell,
+ //				sld_barbell: SLD of the barbell,
+ //				sld_solv: SLD of the solvent.
+ //		</text>
+ //[FIXED]=  rad_bar.width;len_bar;rad_bell;phi.width; theta.width
+ //[ORIENTATION_PARAMS]= <text> phi; theta; phi.width; theta.width</text>
+
+class BarBellModel {
+public:
+  // Model parameters
+
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+
+  /// rad_bar [A]
+  //  [DEFAULT]=rad_bar=20.0 [A]
+  Parameter rad_bar;
+
+  /// length of the bar [A]
+  //  [DEFAULT]=len_bar=400.0 [A]
+  Parameter len_bar;
+
+  /// Radius of sphere [A]
+  //  [DEFAULT]=rad_bell=40.0 [A]
+  Parameter rad_bell;
+
+  /// sld_barbell [1/A^(2)]
+  //  [DEFAULT]=sld_barbell= 1.0e-6 [1/A^(2)]
+  Parameter sld_barbell;
+
+  /// sld_solv [1/A^(2)]
+  //  [DEFAULT]=sld_solv= 6.3e-6 [1/A^(2)]
+  Parameter sld_solv;
+
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0.0 [1/cm]
+  Parameter background;
+
+  /// Angle of the main axis against z-axis in detector plane [deg]
+  //  [DEFAULT]=theta=0.0 [deg]
+  Parameter theta;
+
+  /// Azimuthal angle around z-axis in detector plane [deg]
+  //  [DEFAULT]=phi=0.0 [deg]
+  Parameter phi;
+
+  // Constructor
+  BarBellModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/bcc.h
===================================================================
--- sansmodels/include/bcc.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/bcc.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,83 @@
+#if !defined(bcc_h)
+#define bcc_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for BCC_ParaCrystal parameters
+ */
+//[PYTHONCLASS] = BCCrystalModel
+//[DISP_PARAMS] = radius,phi, psi, theta
+//[DESCRIPTION] =<text>P(q)=(scale/Vp)*V_lattice*P(q)*Z(q)+bkg where scale is the volume
+//					 fraction of sphere,
+//				Vp = volume of the primary particle,
+//				V_lattice = volume correction for
+//					for the crystal structure,
+//				P(q)= form factor of the sphere (normalized),
+//				Z(q)= paracrystalline structure factor
+//					for a face centered cubic structure.
+//				[Body Centered Cubic ParaCrystal Model]
+//				Parameters;
+//				scale: volume fraction of spheres
+//				bkg:background, R: radius of sphere
+//				dnn: Nearest neighbor distance
+//				d_factor: Paracrystal distortion factor
+//				radius: radius of the spheres
+//				sldSph: SLD of the sphere
+//				sldSolv: SLD of the solvent
+//
+//		</text>
+//[FIXED]=  radius.width;phi.width;psi.width; theta.width
+//[ORIENTATION_PARAMS]= <text> phi;psi; theta; phi.width;psi.width; theta.width</text>
+
+class BCCrystalModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+
+  /// Nearest neighbor distance [A]
+  //  [DEFAULT]=dnn=220.0 [A]
+  Parameter dnn;
+
+  /// Paracrystal distortion factor g
+  //  [DEFAULT]=d_factor=0.06
+  Parameter d_factor;
+
+  /// Radius of sphere [A]
+  //  [DEFAULT]=radius=40.0 [A]
+  Parameter radius;
+
+  /// sldSph [1/A^(2)]
+  //  [DEFAULT]=sldSph= 3.0e-6 [1/A^(2)]
+  Parameter sldSph;
+
+  /// sldSolv [1/A^(2)]
+  //  [DEFAULT]=sldSolv= 6.3e-6 [1/A^(2)]
+  Parameter sldSolv;
+
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0 [1/cm]
+  Parameter background;
+  /// Orientation of the a1 axis w/respect incoming beam [deg]
+  //  [DEFAULT]=theta=0.0 [deg]
+  Parameter theta;
+  /// Orientation of the a2 in the plane of the detector [deg]
+  //  [DEFAULT]=phi=0.0 [deg]
+  Parameter phi;
+  /// Orientation of the a3 in the plane of the detector [deg]
+  //  [DEFAULT]=psi=0.0 [deg]
+  Parameter psi;
+
+  // Constructor
+  BCCrystalModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+
+#endif
Index: sansmodels/include/binaryHS.h
===================================================================
--- sansmodels/include/binaryHS.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/binaryHS.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,68 @@
+#if !defined(binaryHS_h)
+#define binaryHS_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for binary hard sphere parameters
+
+	[PYTHONCLASS] = BinaryHSModel
+	[DISP_PARAMS] = l_radius,s_radius
+	[DESCRIPTION] =<text> Model parameters: l_radius : large radius of binary hard sphere
+			s_radius : small radius of binary hard sphere
+			vol_frac_ls : volume fraction of large spheres
+			vol_frac_ss : volume fraction of small spheres
+			ls_sld: large sphere  scattering length density
+			ss_sld: small sphere scattering length density
+			solvent_sld: solvent scattering length density
+			background: incoherent background
+               </text>
+	[FIXED]= l_radius.width;s_radius.width
+	[ORIENTATION_PARAMS]= <text> </text>
+ */
+
+class BinaryHSModel{
+public:
+  // Model parameters
+  /// large radius of the binary hard sphere [A]
+  //  [DEFAULT]=l_radius= 100.0 [A]
+  Parameter l_radius;
+
+  /// small radius of the binary hard sphere [A]
+  //  [DEFAULT]=s_radius= 25.0 [A]
+  Parameter s_radius;
+
+  /// volume fraction of large spheres
+  //  [DEFAULT]=vol_frac_ls= 0.1
+  Parameter vol_frac_ls;
+
+  /// volume fraction of small spheres
+  //  [DEFAULT]=vol_frac_ss= 0.2
+  Parameter vol_frac_ss;
+
+  /// large sphere scattering length density [1/A^(2)]
+  //  [DEFAULT]=ls_sld= 3.5e-6 [1/A^(2)]
+  Parameter ls_sld;
+
+  /// lsmall sphere scattering length density [1/A^(2)]
+  //  [DEFAULT]=ss_sld= 5e-7 [1/A^(2)]
+  Parameter ss_sld;
+
+  /// solvent scattering length density [1/A^(2)]
+  //  [DEFAULT]=solvent_sld= 6.36e-6 [1/A^(2)]
+  Parameter solvent_sld;
+
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0.001 [1/cm]
+  Parameter background;
+
+  //Constructor
+  BinaryHSModel();
+
+  //Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx , double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/capcyl.h
===================================================================
--- sansmodels/include/capcyl.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/capcyl.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,79 @@
+#if !defined(capcyl_h)
+#define capcyl_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for CappedCylinder parameters
+ */
+ //[PYTHONCLASS] = CappedCylinderModel
+ //[DISP_PARAMS] = rad_cyl,len_cyl,rad_cap,phi,  theta
+ //[DESCRIPTION] =<text>Calculates the scattering from a cylinder with spherical section end-caps.
+ //				That is, a sphereocylinder
+ //				with end caps that have a radius larger than
+ //				that of the cylinder and the center of the
+ //				end cap radius lies within the cylinder.
+ //				Note: As the length of cylinder -->0,
+ //				it becomes a ConvexLens.
+ //				It must be that rad_cyl <(=) rad_cap.
+ //				[Parameters];
+ //				scale: volume fraction of spheres,
+ //				background:incoherent background,
+ //				rad_cyl: radius of the cylinder,
+ //				len_cyl: length of the cylinder,
+ //				rad_cap: radius of the semi-spherical cap,
+ //				sld_capcyl: SLD of the capped cylinder,
+ //				sld_solv: SLD of the solvent.
+ //		</text>
+ //[FIXED]=  rad_cyl.width;len_cyl;rad_cap;phi.width; theta.width
+ //[ORIENTATION_PARAMS]= <text> phi; theta; phi.width; theta.width</text>
+
+class CappedCylinderModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+
+  /// rad_cyl [A]
+  //  [DEFAULT]=rad_cyl=20.0 [A]
+  Parameter rad_cyl;
+
+  /// length of the cylinder
+  //  [DEFAULT]=len_cyl=400.0 [A]
+  Parameter len_cyl;
+
+  /// Radius of sphere [A]
+  //  [DEFAULT]=rad_cap=40.0 [A]
+  Parameter rad_cap;
+
+  /// sld_capcyl [1/A^(2)]
+  //  [DEFAULT]=sld_capcyl= 1.0e-6 [1/A^(2)]
+  Parameter sld_capcyl;
+
+  /// sld_solv [1/A^(2)]
+  //  [DEFAULT]=sld_solv= 6.3e-6 [1/A^(2)]
+  Parameter sld_solv;
+
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0.0 [1/cm]
+  Parameter background;
+
+  /// Angle of the main axis against z-axis in detector plane [deg]
+  //  [DEFAULT]=theta=0.0 [deg]
+  Parameter theta;
+
+  /// Azimuthal angle around z-axis in detector plane [deg]
+  //  [DEFAULT]=phi=0.0 [deg]
+  Parameter phi;
+
+  // Constructor
+  CappedCylinderModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/core_shell.h
===================================================================
--- sansmodels/include/core_shell.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/core_shell.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,61 @@
+#if !defined(core_shell_h)
+#define core_shell_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for core-shell parameters
+ */
+ //[PYTHONCLASS] = CoreShellModel
+ //[DISP_PARAMS] = radius, thickness
+ //[DESCRIPTION] =<text>Form factor for a monodisperse spherical particle with particle
+ //    with a core-shell structure:
+ //
+ //    The form factor is normalized by the
+ //    total particle volume.
+ //
+ //		radius: core radius, thickness: shell thickness
+ //
+ //     Ref: Guinier, A. and G. Fournet,
+ //     John Wiley and Sons, New York, 1955.
+ //				</text>
+ //[FIXED]= <text> thickness.width;radius.width</text>
+
+
+class CoreShellModel{
+public:
+  // Model parameters
+
+  /// Core Radius [A] 60.0
+  //  [DEFAULT]=radius=60.0 [A]
+  Parameter radius;
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  /// Shell Thickness [A] 10.0
+  //  [DEFAULT]=thickness=10 [A]
+  Parameter thickness;
+  /// Core SLD [1/A^(2)] 1.0e-6
+  //  [DEFAULT]=core_sld=1.0e-6 [1/A^(2)]
+  Parameter core_sld;
+/// Shell SLD [1/A^(2)] 2.0e-6
+//  [DEFAULT]=shell_sld=2.0e-6 [1/A^(2)]
+  Parameter shell_sld;
+/// Solvent SLD [1/A^(2)] 3.0e-6
+//  [DEFAULT]=solvent_sld=3.0e-6 [1/A^(2)]
+  Parameter solvent_sld;
+/// Incoherent Background [1/cm] 0.000
+//  [DEFAULT]=background=0 [1/cm]
+  Parameter background;
+
+  // Constructor
+  CoreShellModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+
+#endif
Index: sansmodels/include/core_shell_cylinder.h
===================================================================
--- sansmodels/include/core_shell_cylinder.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/core_shell_cylinder.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,92 @@
+#if !defined(core_shell_cylinder_h)
+#define core_shell_cylinder_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for core-shell cylinder parameters
+ */
+//[PYTHONCLASS] = CoreShellCylinderModel
+//[DISP_PARAMS] = radius, thickness, length, axis_theta, axis_phi
+//[DESCRIPTION] = <text>P(q,alpha)= scale/Vs*f(q)^(2) + bkg,  where: f(q)= 2(core_sld
+//			- solvant_sld)* Vc*sin[qLcos(alpha/2)]
+//			/[qLcos(alpha/2)]*J1(qRsin(alpha))
+//			/[qRsin(alpha)]+2(shell_sld-solvent_sld)
+//			*Vs*sin[q(L+T)cos(alpha/2)][[q(L+T)
+//			*cos(alpha/2)]*J1(q(R+T)sin(alpha))
+//			/q(R+T)sin(alpha)]
+//
+//			alpha:is the angle between the axis of
+//          the cylinder and the q-vector
+//			Vs: the volume of the outer shell
+//			Vc: the volume of the core
+//			L: the length of the core
+//    		shell_sld: the scattering length density
+//			of the shell
+//			solvent_sld: the scattering length density
+//			of the solvent
+//			bkg: the background
+//			T: the thickness
+//    		R+T: is the outer radius
+// 		L+2T: The total length of the outershell
+//			J1: the first order Bessel function
+// 		theta: axis_theta of the cylinder
+// 		phi: the axis_phi of the cylinder...
+//		</text>
+//[FIXED]= <text> axis_phi.width; axis_theta.width; length.width;radius.width; thickness.width</text>
+//[ORIENTATION_PARAMS]= axis_phi; axis_theta;axis_phi.width; axis_theta.width
+
+class CoreShellCylinderModel{
+public:
+  // Model parameters
+
+  /// Core radius [A]
+  //  [DEFAULT]=radius=20.0 [A]
+  Parameter radius;
+
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+
+  /// Shell thickness [A]
+  //  [DEFAULT]=thickness=10.0 [A]
+  Parameter thickness;
+
+  /// Core length [A]
+  //  [DEFAULT]=length=400.0 [A]
+  Parameter length;
+
+  /// Core SLD [1/A^(2)]
+  //  [DEFAULT]=core_sld=1.0e-6 [1/A^(2)]
+  Parameter core_sld;
+
+  /// Shell SLD [1/A^(2)]
+  //  [DEFAULT]=shell_sld=4.0e-6 [1/A^(2)]
+  Parameter shell_sld;
+
+  /// Solvent SLD [1/A^(2)]
+  //  [DEFAULT]=solvent_sld=1.0e-6 [1/A^(2)]
+  Parameter solvent_sld;
+
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0 [1/cm]
+  Parameter background;
+
+  /// Orientation of the long axis of the core-shell cylinder w/respect incoming beam [deg]
+  //  [DEFAULT]=axis_theta=90.0 [deg]
+  Parameter axis_theta;
+
+  /// Orientation of the long axis of the core-shell cylinder in the plane of the detector [deg]
+  //  [DEFAULT]=axis_phi=0.0 [deg]
+  Parameter axis_phi;
+
+  // Constructor
+  CoreShellCylinderModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/corefourshell.h
===================================================================
--- sansmodels/include/corefourshell.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/corefourshell.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,87 @@
+#if !defined(corefourshell_h)
+#define corefourshell_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for sphere parameters
+ */
+//[PYTHONCLASS] = CoreFourShellModel
+//[DISP_PARAMS] = rad_core0, thick_shell1,thick_shell2,thick_shell3,thick_shell4
+//[DESCRIPTION] =<text> Calculates the scattering intensity from a core-4 shell structure.
+// 			scale = scale factor * volume fraction
+//				rad_core0: the radius of the core
+//				sld_core0: the SLD of the core
+//				thick_shelli: the thickness of the i'th shell from the core
+//				sld_shelli: the SLD of the i'th shell from the core
+//				sld_solv: the SLD of the solvent
+//				background: incoherent background
+//		</text>
+//[FIXED]=<text>  thick_shell4.width; thick_shell1.width;thick_shell2.width;thick_shell3.width;rad_core0.width </text>
+//[ORIENTATION_PARAMS]= <text> </text>
+
+class CoreFourShellModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+
+  /// Radius of the core0 [A]
+  //  [DEFAULT]=rad_core0=60. [A]
+  Parameter rad_core0;
+
+  /// sld of core0 [1/A^(2)]
+  //  [DEFAULT]=sld_core0= 6.4e-6 [1/A^(2)]
+  Parameter sld_core0;
+
+  /// thickness of the shell1 [A]
+  //  [DEFAULT]=thick_shell1=10.0 [A]
+  Parameter thick_shell1;
+
+  ///  sld of shell1 [1/A^(2)]
+  //  [DEFAULT]=sld_shell1= 1.0e-6 [1/A^(2)]
+  Parameter sld_shell1;
+
+  ///  thickness of the shell2 [A]
+  //  [DEFAULT]=thick_shell2=10.0 [A]
+  Parameter thick_shell2;
+
+  /// sld of shell2 [1/A^(2)]
+  //  [DEFAULT]=sld_shell2= 2.0e-6 [1/A^(2)]
+  Parameter sld_shell2;
+
+  /// thickness of the shell3 [A]
+  //  [DEFAULT]=thick_shell3=10.0 [A]
+  Parameter thick_shell3;
+
+  ///  sld of shell3 [1/A^(2)]
+  //  [DEFAULT]=sld_shell3= 3.0e-6 [1/A^(2)]
+  Parameter sld_shell3;
+
+  ///  thickness of the shell4 [A]
+  //  [DEFAULT]=thick_shell4=10.0 [A]
+  Parameter thick_shell4;
+
+  /// sld of shell4 [1/A^(2)]
+  //  [DEFAULT]=sld_shell4= 4.0e-6 [1/A^(2)]
+  Parameter sld_shell4;
+
+  /// sld_solv[1/A^(2)]
+  //  [DEFAULT]=sld_solv= 6.4e-6 [1/A^(2)]
+  Parameter sld_solv;
+
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0.001 [1/cm]
+  Parameter background;
+
+  // Constructor
+  CoreFourShellModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/csparallelepiped.h
===================================================================
--- sansmodels/include/csparallelepiped.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/csparallelepiped.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,94 @@
+/*
+	TODO: Add 2D model
+*/
+
+#if !defined(csparallelepiped_h)
+#define csparallelepiped_h
+#include "parameters.hh"
+/** Structure definition for CSParallelepiped parameters
+ * [PYTHONCLASS] = CSParallelepipedModel
+ * [DISP_PARAMS] = shortA, midB, longC,parallel_phi,parallel_psi, parallel_theta
+   [DESCRIPTION] = <text> Form factor for a rectangular Shell. Below are the Parameters.
+		scale: scale factor
+		shortA: length of short edge  [A]
+		midB: length of another short edge [A]
+		longC: length of long edge  of the parallelepiped [A]
+		rimA: length of short edge  [A]
+		rimB: length of another short edge [A]
+		rimC: length of long edge  of the parallelepiped [A]
+		sld_rimA: sld of rimA [1/A^(2)]
+		sld_rimB: sld of rimB [1/A^(2)]
+		sld_rimC: sld of rimC [1/A^(2)]
+		sld_core: Pipe_sld [1/A^(2)]
+		sld_solv: solvent_sld [1/A^(2)]
+		background: incoherent Background [1/cm]
+		</text>
+	[FIXED]= <text>shortA.width; midB.width; longC.width;parallel_phi.width;parallel_psi.width; parallel_theta.width</text>
+	[ORIENTATION_PARAMS]= <text>parallel_phi;parallel_psi; parallel_theta; parallel_phi.width;parallel_psi.width; parallel_theta.width</text>
+
+
+ **/
+
+class CSParallelepipedModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  ///  Length of short edge of the parallelepiped [A]
+  //  [DEFAULT]=shortA=35 [A]
+  Parameter shortA;
+  /// Length of mid edge of the parallelepiped [A]
+  //  [DEFAULT]=midB=75 [A]
+  Parameter midB;
+  /// Length of long edge of the parallelepiped [A]
+  //  [DEFAULT]=longC=400 [A]
+  Parameter longC;
+  ///  Thickness of rimA [A]
+  //  [DEFAULT]=rimA=10 [A]
+  Parameter rimA;
+  /// Thickness of rimB [A] [A]
+  //  [DEFAULT]=rimB=10 [A]
+  Parameter rimB;
+  /// Thickness of rimC [A] [A]
+  //  [DEFAULT]=rimC=10 [A]
+  Parameter rimC;
+  /// SLD_rimA [1/A^(2)]
+  //  [DEFAULT]=sld_rimA=2e-6 [1/A^(2)]
+  Parameter sld_rimA;
+  /// SLD_rimB [1/A^(2)]
+  //  [DEFAULT]=sld_rimB=4e-6 [1/A^(2)]
+  Parameter sld_rimB;
+  /// SLD_rimC [1/A^(2)]
+  //  [DEFAULT]=sld_rimC=2e-6 [1/A^(2)]
+  Parameter sld_rimC;
+  /// SLD_pcore [1/A^(2)]
+  //  [DEFAULT]=sld_pcore=1e-6 [1/A^(2)]
+  Parameter sld_pcore;
+  /// sld_solv [1/A^(2)]
+  //  [DEFAULT]=sld_solv=6e-6 [1/A^(2)]
+  Parameter sld_solv;
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0.06 [1/cm]
+  Parameter background;
+  /// Orientation of the parallelepiped axis w/respect incoming beam [deg]
+  //  [DEFAULT]=parallel_theta=0.0 [deg]
+  Parameter parallel_theta;
+  /// Orientation of the longitudinal axis of the parallelepiped in the plane of the detector [deg]
+  //  [DEFAULT]=parallel_phi=0.0 [deg]
+  Parameter parallel_phi;
+  /// Orientation of the cross-sectional minor axis of the parallelepiped in the plane of the detector [deg]
+  //  [DEFAULT]=parallel_psi=0.0 [deg]
+  Parameter parallel_psi;
+
+  // Constructor
+  CSParallelepipedModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/cylinder.h
===================================================================
--- sansmodels/include/cylinder.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/cylinder.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,73 @@
+#if !defined(cylinder_h)
+#define cylinder_h
+#include "parameters.hh"
+
+/** Structure definition for cylinder parameters
+ * [PYTHONCLASS] = CylinderModel
+ * [DISP_PARAMS] = radius, length, cyl_theta, cyl_phi
+   [DESCRIPTION] = <text> f(q)= 2*(sldCyl - sldSolv)*V*sin(qLcos(alpha/2))
+				/[qLcos(alpha/2)]*J1(qRsin(alpha/2))/[qRsin(alpha)]
+
+		P(q,alpha)= scale/V*f(q)^(2)+bkg
+		V: Volume of the cylinder
+		R: Radius of the cylinder
+		L: Length of the cylinder
+		J1: The bessel function
+		alpha: angle betweenthe axis of the
+		cylinder and the q-vector for 1D
+		:the ouput is P(q)=scale/V*integral
+		from pi/2 to zero of...
+		f(q)^(2)*sin(alpha)*dalpha+ bkg
+		</text>
+	[FIXED]= <text>cyl_phi.width; cyl_theta.width; length.width;radius.width</text>
+	[ORIENTATION_PARAMS]= <text>cyl_phi; cyl_theta; cyl_phi.width; cyl_theta.width</text>
+
+
+ **/
+class CylinderModel{
+public:
+  // Model parameters
+
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+
+  /// Radius of the cylinder [A]
+  //  [DEFAULT]=radius=20.0 [A]
+  Parameter radius;
+
+  /// Length of the cylinder [A]
+  //  [DEFAULT]=length=400.0 [A]
+  Parameter length;
+
+  /// Contrast [1/A^(2)]
+  //  [DEFAULT]=sldCyl=4.0e-6 [1/A^(2)]
+  Parameter sldCyl;
+
+  /// sldCyl [1/A^(2)]
+  //  [DEFAULT]=sldSolv=1.0e-6 [1/A^(2)]
+  Parameter sldSolv;
+
+  /// Incoherent Background [1/cm] 0.00
+  //  [DEFAULT]=background=0.0 [1/cm]
+  Parameter background;
+
+  /// Orientation of the cylinder axis w/respect incoming beam [deg]
+  //  [DEFAULT]=cyl_theta=60.0 [deg]
+  Parameter cyl_theta;
+
+  /// Orientation of the cylinder in the plane of the detector [deg]
+  //  [DEFAULT]=cyl_phi=60.0 [deg]
+  Parameter cyl_phi;
+
+  // Constructor
+  CylinderModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/ellipsoid.h
===================================================================
--- sansmodels/include/ellipsoid.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/ellipsoid.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,80 @@
+#if !defined(ellipsoid_h)
+#define ellipsoid_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for ellipsoid parameters
+ * The ellipsoid has axes radius_b, radius_b, radius_a.
+ * Ref: Jan Skov Pedersen, Advances in Colloid and Interface Science, 70 (1997) 171-210
+ */
+//[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*(sld_ell
+//		- sld_solvent)*V*[sin(q*r(Ra,Rb,alpha))
+//		-q*r*cos(qr(Ra,Rb,alpha))]
+//		/[qr(Ra,Rb,alpha)]^(3)"
+//
+//     r(Ra,Rb,alpha)= [Rb^(2)*(sin(alpha))^(2)
+//     + Ra^(2)*(cos(alpha))^(2)]^(1/2)
+//
+//		scatter_sld: SLD of the scatter
+//		solvent_sld: SLD of the solvent
+//     sldEll: SLD of ellipsoid
+//		sldSolv: SLD of solvent
+//		V: volune of the Eliipsoid
+//		Ra: radius along the rotation axis
+//		of the Ellipsoid
+//		Rb: radius perpendicular to the
+//		rotation axis of the ellipsoid
+//		</text>
+//[FIXED]= <text> axis_phi.width; axis_theta.width;radius_a.width;
+//radius_b.width; length.width; r_minor.width;
+//r_ratio.width</text>
+//[ORIENTATION_PARAMS]=  axis_phi.width; axis_theta.width;axis_phi; axis_theta
+
+class EllipsoidModel{
+public:
+  // Model parameters
+  /// Rotation axis radius_a [A]
+  //  [DEFAULT]=radius_a=20.0 [A]
+  Parameter radius_a;
+
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+
+  /// Radius_b [A]
+  //  [DEFAULT]=radius_b=400 [A]
+  Parameter radius_b;
+
+  /// sldEll [1/A^(2)]
+  //  [DEFAULT]=sldEll=4.0e-6 [1/A^(2)]
+  Parameter sldEll;
+
+  /// sld of solvent [1/A^(2)]
+  //  [DEFAULT]=sldSolv=1.0e-6 [1/A^(2)]
+  Parameter sldSolv;
+
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0 [1/cm]
+  Parameter background;
+
+  /// Orientation of the long axis of the ellipsoid w/respect incoming beam [deg]
+  //  [DEFAULT]=axis_theta=90.0 [deg]
+  Parameter axis_theta;
+  /// Orientation of the long axis of the ellipsoid in the plane of the detector [deg]
+  //  [DEFAULT]=axis_phi=0.0 [deg]
+  Parameter axis_phi;
+
+  // Constructor
+  EllipsoidModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+
+#endif
Index: sansmodels/include/elliptical_cylinder.h
===================================================================
--- sansmodels/include/elliptical_cylinder.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/elliptical_cylinder.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,64 @@
+#if !defined(ell_cylinder_h)
+#define ell_cylinder_h
+#include "parameters.hh"
+
+/** Structure definition for cylinder parameters
+ * [PYTHONCLASS] = EllipticalCylinderModel
+ * [DISP_PARAMS] = r_minor, r_ratio, length, cyl_theta, cyl_phi, cyl_psi
+ * [DESCRIPTION] = <text> Model parameters: r_minor = the radius of minor axis of the cross section
+r_ratio = the ratio of (r_major /r_minor >= 1)
+length = the length of the cylinder
+sldCyl = SLD of the cylinder
+sldSolv = SLD of solvent -
+background = incoherent background
+ *</text>
+ * [FIXED]= <text> cyl_phi.width;
+ * cyl_theta.width; cyl_psi.width; length.width; r_minor.width; r_ratio.width
+ *</text>
+ * [ORIENTATION_PARAMS]= cyl_phi; cyl_theta; cyl_psi;  cyl_phi.width; cyl_theta.width; cyl_psi.width
+ * */
+
+class EllipticalCylinderModel{
+public:
+  // Model parameters
+  /// Minor radius [A]
+  //  [DEFAULT]=r_minor=20.0 [A]
+  Parameter r_minor;
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  /// Ratio of major/minor radii
+  //  [DEFAULT]=r_ratio=1.5
+  Parameter r_ratio;
+  /// Length of the cylinder [A]
+  //  [DEFAULT]=length=400.0 [A]
+  Parameter length;
+  /// SLD of cylinder [1/A^(2)]
+  //  [DEFAULT]=sldCyl=4.0e-6 [1/A^(2)]
+  Parameter sldCyl;
+  /// SLD of solvent [1/A^(2)]
+  //  [DEFAULT]=sldSolv=1.0e-6 [1/A^(2)]
+  Parameter sldSolv;
+  /// Incoherent Background [1/cm] 0.000
+  //  [DEFAULT]=background=0 [1/cm]
+  Parameter background;
+  /// Orientation of the cylinder axis w/respect incoming beam [deg]
+  //  [DEFAULT]=cyl_theta=90.0 [deg]
+  Parameter cyl_theta;
+  /// Orientation of the cylinder in the plane of the detector [deg]
+  //  [DEFAULT]=cyl_phi=0.0 [deg]
+  Parameter cyl_phi;
+  /// Orientation of major radius of the cross-section w/respect vector q [deg]
+  //  [DEFAULT]=cyl_psi=0.0 [deg]
+  Parameter cyl_psi;
+
+  // Constructor
+  EllipticalCylinderModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+#endif
Index: sansmodels/include/fcc.h
===================================================================
--- sansmodels/include/fcc.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/fcc.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,82 @@
+#if !defined(fcc_h)
+#define fcc_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for FCC_ParaCrystal parameters
+ */
+ //[PYTHONCLASS] = FCCrystalModel
+ //[DISP_PARAMS] = radius,phi, psi, theta
+ //[DESCRIPTION] =<text>P(q)=(scale/Vp)*V_lattice*P(q)*Z(q)+bkg where scale is the volume
+ //					 fraction of sphere,
+ //				Vp = volume of the primary particle,
+ //				V_lattice = volume correction for
+ //					for the crystal structure,
+ //				P(q)= form factor of the sphere (normalized),
+ //				Z(q)= paracrystalline structure factor
+ //					for a face centered cubic structure.
+ //				[Face Centered Cubic ParaCrystal Model]
+ //				Parameters;
+ //				scale: volume fraction of spheres
+ //				bkg:background, R: radius of sphere
+ //				dnn: Nearest neighbor distance
+ //				d_factor: Paracrystal distortion factor
+ //				radius: radius of the spheres
+ //				sldSph: SLD of the sphere
+ //				sldSolv: SLD of the solvent
+ //
+ //		</text>
+ //[FIXED]=  radius.width;phi.width;psi.width; theta.width
+ //[ORIENTATION_PARAMS]= <text> phi;psi; theta; phi.width;psi.width; theta.width</text>
+
+class FCCrystalModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+
+  /// Nearest neighbor distance [A]
+  //  [DEFAULT]=dnn=220.0 [A]
+  Parameter dnn;
+
+  /// Paracrystal distortion factor g
+  //  [DEFAULT]=d_factor=0.06
+  Parameter d_factor;
+
+  /// Radius of sphere [A]
+  //  [DEFAULT]=radius=40.0 [A]
+  Parameter radius;
+
+  /// sldSph [1/A^(2)]
+  //  [DEFAULT]=sldSph= 3.0e-6 [1/A^(2)]
+  Parameter sldSph;
+
+  /// sldSolv [1/A^(2)]
+  //  [DEFAULT]=sldSolv= 6.3e-6 [1/A^(2)]
+  Parameter sldSolv;
+
+/// Incoherent Background [1/cm]
+//  [DEFAULT]=background=0 [1/cm]
+Parameter background;
+  /// Orientation of the a1 axis w/respect incoming beam [deg]
+  //  [DEFAULT]=theta=0.0 [deg]
+  Parameter theta;
+  /// Orientation of the a2 in the plane of the detector [deg]
+  //  [DEFAULT]=phi=0.0 [deg]
+  Parameter phi;
+  /// Orientation of the a3 in the plane of the detector [deg]
+  //  [DEFAULT]=psi=0.0 [deg]
+  Parameter psi;
+
+  // Constructor
+  FCCrystalModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/flexcyl_ellipX.h
===================================================================
--- sansmodels/include/flexcyl_ellipX.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/flexcyl_ellipX.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,55 @@
+#if !defined(flexcyl_ellipX_h)
+#define flexcyl_ellipX_h
+#include "parameters.hh"
+
+/** Structure definition for Flexible cylinder w/ EllipX parameters
+ * [PYTHONCLASS] = FlexCylEllipXModel
+ * [DISP_PARAMS] = length, kuhn_length, radius, axis_ratio
+   [DESCRIPTION] = <text> Note : scale and contrast=sldCyl-sldSolv are both multiplicative factors in the
+		model and are perfectly correlated. One or
+		both of these parameters must be held fixed
+		during model fitting.
+		</text>
+	[FIXED]= <text>length.width; kuhn_length.width; radius.width; axis_ratio.width</text>
+	[ORIENTATION_PARAMS]= <text></text>
+ **/
+
+class FlexCylEllipXModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  /// Length of the flexible cylinder [A]
+  //  [DEFAULT]=length=1000 [A]
+  Parameter length;
+  /// Kuhn length of the flexible cylinder [A]
+  //  [DEFAULT]=kuhn_length=100 [A]
+  Parameter kuhn_length;
+  /// Radius of the flexible cylinder [A]
+  //  [DEFAULT]=radius=20.0 [A]
+  Parameter radius;
+  /// axis_ratio (major_radius/radius
+  //  [DEFAULT]=axis_ratio=1.5
+  Parameter axis_ratio;
+  /// SLD of cylinder [1/A^(2)]
+  //  [DEFAULT]=sldCyl=1.0e-6 [1/A^(2)]
+  Parameter sldCyl;
+  /// SLD of solvent [1/A^(2)]
+  //  [DEFAULT]=sldSolv=6.3e-6 [1/A^(2)]
+  Parameter sldSolv;
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0.0001 [1/cm]
+  Parameter background;
+
+  // Constructor
+  FlexCylEllipXModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/flexible_cylinder.h
===================================================================
--- sansmodels/include/flexible_cylinder.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/flexible_cylinder.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,55 @@
+/*
+	TODO: Add 2D model
+ */
+#if !defined(flexible_cylinder_h)
+#define flexible_cylinder_h
+#include "parameters.hh"
+
+/** Structure definition for Flexible cylinder parameters
+ * [PYTHONCLASS] = FlexibleCylinderModel
+ * [DISP_PARAMS] = length, kuhn_length, radius
+   [DESCRIPTION] = <text> Note : scale and contrast=sldCyl-sldSolv are both multiplicative factors in the
+		model and are perfectly correlated. One or
+		both of these parameters must be held fixed
+		during model fitting.
+		</text>
+	[FIXED]= <text>length.width; kuhn_length.width; radius.width</text>
+	[ORIENTATION_PARAMS]= <text></text>
+ **/
+
+class FlexibleCylinderModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  /// Length of the flexible cylinder [A]
+  //  [DEFAULT]=length=1000 [A]
+  Parameter length;
+  /// Kuhn length of the flexible cylinder [A]
+  //  [DEFAULT]=kuhn_length=100 [A]
+  Parameter kuhn_length;
+  /// Radius of the flexible cylinder [A]
+  //  [DEFAULT]=radius=20.0 [A]
+  Parameter radius;
+  /// SLD of cylinder [1/A^(2)]
+  //  [DEFAULT]=sldCyl=1.0e-6 [1/A^(2)]
+  Parameter sldCyl;
+  /// SLD of solvent [1/A^(2)]
+  //  [DEFAULT]=sldSolv=6.3e-6 [1/A^(2)]
+  Parameter sldSolv;
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0.0001 [1/cm]
+  Parameter background;
+
+  // Constructor
+  FlexibleCylinderModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/fractal.h
===================================================================
--- sansmodels/include/fractal.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/fractal.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,66 @@
+#if !defined(fractal_h)
+#define fractal_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for sphere parameters
+ */
+//[PYTHONCLASS] = FractalModel
+//[DISP_PARAMS] = radius
+//[DESCRIPTION] =<text> The scattering intensity  I(x) = P(|x|)*S(|x|) + background, where
+//       p(x)= scale * V * delta^(2)* F(x*radius)^(2)
+//       F(x) = 3*[sin(x)-x cos(x)]/x**3
+//       where delta = sldBlock -sldSolv.
+//       scale        =  scale factor * Volume fraction
+//       radius       =  Block radius
+//       fractal_dim  =  Fractal dimension
+//       cor_length  =  Correlation Length
+//       sldBlock    =  SDL block
+//       sldSolv  =  SDL solvent
+//       background   =  background
+//		</text>
+//[FIXED]= <text> radius.width </text>
+//[ORIENTATION_PARAMS]= <text> </text>
+
+class FractalModel{
+public:
+  // Model parameters
+  /// Radius of gyration [A]
+  //  [DEFAULT]=radius=5.0 [A]
+  Parameter radius;
+
+  /// Scale factor
+  //  [DEFAULT]=scale= 0.05
+  Parameter scale;
+
+  /// Fractal dimension
+  //  [DEFAULT]=fractal_dim=2.0
+  Parameter fractal_dim;
+
+  /// Correlation Length [A]
+  //  [DEFAULT]=cor_length=100.0 [A]
+  Parameter cor_length;
+
+  /// SDL block [1/A^(2)]
+  //  [DEFAULT]=sldBlock=2.0e-6 [1/A^(2)]
+  Parameter sldBlock;
+
+  /// SDL solvent [1/A^(2)]
+  //  [DEFAULT]=sldSolv= 6.35e-6 [1/A^(2)]
+  Parameter sldSolv;
+
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0.0 [1/cm]
+  Parameter background;
+
+  // Constructor
+  FractalModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/fuzzysphere.h
===================================================================
--- sansmodels/include/fuzzysphere.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/fuzzysphere.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,61 @@
+#if !defined(fuzzysphere_h)
+#define fuzzysphere_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for FuzzySphere parameters
+ */
+//[PYTHONCLASS] = FuzzySphereModel
+//[DISP_PARAMS] = radius, fuzziness
+//[DESCRIPTION] =<text>
+//				scale: scale factor times volume fraction,
+//					or just volume fraction for absolute scale data
+//				radius: radius of the solid sphere
+//				fuzziness = the STD of the height of fuzzy interfacial
+//				 thickness (ie., so-called interfacial roughness)
+//				sldSph: the SLD of the sphere
+//				sldSolv: the SLD of the solvent
+//				background: incoherent background
+//			Note: By definition, this function works only when fuzziness << radius.
+//		</text>
+//[FIXED]=  radius.width; fuzziness.width
+//[ORIENTATION_PARAMS]= <text> </text>
+
+class FuzzySphereModel{
+public:
+  // Model parameters
+  /// Radius of sphere [A]
+  //  [DEFAULT]=radius=60.0 [A]
+  Parameter radius;
+  /// Scale factor
+  //  [DEFAULT]=scale= 0.01
+  Parameter scale;
+
+
+  /// surface roughness [A]
+  //  [DEFAULT]=fuzziness= 10.0 [A]
+  Parameter fuzziness;
+
+  /// sldSph [1/A^(2)]
+  //  [DEFAULT]=sldSph= 1.0e-6 [1/A^(2)]
+  Parameter sldSph;
+
+  /// sldSolv [1/A^(2)]
+  //  [DEFAULT]=sldSolv= 3.0e-6 [1/A^(2)]
+  Parameter sldSolv;
+
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0.001 [1/cm]
+  Parameter background;
+
+  // Constructor
+  FuzzySphereModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/gaussian.h
===================================================================
--- sansmodels/include/gaussian.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/gaussian.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,36 @@
+#if !defined(gaussian_h)
+#define gaussian_h
+#include "parameters.hh"
+
+/** Structure definition for Gaussian parameters.
+ * The Gaussian is normalized to the 'scale' parameter.
+ *  
+ * f(x)=scale * 1/(sigma^2*2pi)e^(-(x-mu)^2/2sigma^2)
+ * 
+ * [PYTHONCLASS] = Gaussian
+ * [DESCRIPTION] = <text>f(x)=scale * 1/(sigma^2*2pi)e^(-(x-mu)^2/2sigma^2)</text>
+ */
+
+class Gaussian{
+public:
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  /// Standard deviation
+  //  [DEFAULT]=sigma=1
+  Parameter sigma;
+  /// Center of the Gaussian distribution
+  //  [DEFAULT]=center=0.0
+  Parameter center;
+
+  // Constructor
+  Gaussian();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/hollow_cylinder.h
===================================================================
--- sansmodels/include/hollow_cylinder.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/hollow_cylinder.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,69 @@
+#if !defined(hollow_cylinder_h)
+#define hollow_cylinder_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for hollow cylinder parameters
+ */
+//[PYTHONCLASS] = HollowCylinderModel
+//[DISP_PARAMS] = core_radius, radius, length, axis_theta, axis_phi
+//[DESCRIPTION] = <text> P(q) = scale*<f*f>/Vol + bkg, where f is the scattering amplitude.
+//					core_radius = the radius of core
+//				radius = the radius of shell
+// 			length = the total length of the cylinder
+//				sldCyl = SLD of the shell
+//				sldSolv = SLD of the solvent
+//				background = incoherent background
+//	</text>
+//[FIXED]= <text> axis_phi.width; axis_theta.width; length.width;core_radius.width; radius</text>
+//[ORIENTATION_PARAMS]= axis_phi; axis_theta;axis_phi.width; axis_theta.width
+
+class HollowCylinderModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+
+  /// Core radius [A]
+  //  [DEFAULT]=core_radius=20.0 [A]
+  Parameter core_radius;
+
+  /// Shell radius [A]
+  //  [DEFAULT]=radius=30.0 [A]
+  Parameter radius;
+
+  /// Hollow cylinder length [A]
+  //  [DEFAULT]=length=400.0 [A]
+  Parameter length;
+
+  /// SLD_cylinder  [1/A^(2)]
+  //  [DEFAULT]=sldCyl=6.3e-6 [1/A^(2)]
+  Parameter sldCyl;
+
+  /// SLD_solvent  [1/A^(2)]
+  //  [DEFAULT]=sldSolv=1.0e-6 [1/A^(2)]
+  Parameter sldSolv;
+
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0.01 [1/cm]
+  Parameter background;
+
+  /// Orientation of the long axis of the hollow cylinder w/respect incoming beam [deg]
+  //  [DEFAULT]=axis_theta=90.0 [deg]
+  Parameter axis_theta;
+
+  /// Orientation of the long axis of the hollow cylinder in the plane of the detector [deg]
+  //  [DEFAULT]=axis_phi=0.0 [deg]
+  Parameter axis_phi;
+  //Constructor
+  HollowCylinderModel();
+
+  //Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx , double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/lamellar.h
===================================================================
--- sansmodels/include/lamellar.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/lamellar.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,49 @@
+#if !defined(lamellar_h)
+#define lamellar_h
+#include "parameters.hh"
+
+/** Structure definition for lamellar parameters
+ * [PYTHONCLASS] = LamellarModel
+ * [DISP_PARAMS] = bi_thick
+   [DESCRIPTION] = <text>[Dilute Lamellar Form Factor](from a lyotropic lamellar phase)
+		I(q)= 2*pi*P(q)/(delta *q^(2)), where
+		P(q)=2*(contrast/q)^(2)*(1-cos(q*delta))^(2))
+		bi_thick = bilayer thickness
+		sld_bi = SLD of bilayer
+		sld_sol = SLD of solvent
+		background = Incoherent background
+		scale = scale factor
+
+ </text>
+[FIXED]= <text>bi_thick.width</text>
+ **/
+
+class LamellarModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  /// delta bilayer thickness [A]
+  //  [DEFAULT]=bi_thick=50.0 [A]
+  Parameter bi_thick;
+  /// SLD of bilayer [1/A^(2)]
+  //  [DEFAULT]=sld_bi=1.0e-6 [1/A^(2)]
+  Parameter sld_bi;
+  /// SLD of solvent [1/A^(2)]
+  //  [DEFAULT]=sld_sol=6.3e-6 [1/A^(2)]
+  Parameter sld_sol;
+  /// Incoherent Background [1/cm] 0.00
+  //  [DEFAULT]=background=0.0 [1/cm]
+  Parameter background;
+  // Constructor
+  LamellarModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/lamellarFF_HG.h
===================================================================
--- sansmodels/include/lamellarFF_HG.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/lamellarFF_HG.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,56 @@
+#if !defined(lamellarFF_HG_h)
+#define lamellarFF_HG_h
+#include "parameters.hh"
+
+/** Structure definition for lamellar parameters
+ * [PYTHONCLASS] = LamellarFFHGModel
+ * [DISP_PARAMS] =  t_length, h_thickness
+   [DESCRIPTION] = <text> Parameters: t_length = tail length, h_thickness = head thickness,
+			scale = Scale factor,
+			background = incoherent Background
+			sld_tail = tail scattering length density ,
+			sld_solvent = solvent scattering length density.
+			NOTE: The total bilayer thickness
+			= 2(h_thickness+ t_length).
+
+	</text>
+	[FIXED]= t_length.width, h_thickness.width
+	[ORIENTATION_PARAMS]=
+ **/
+
+class LamellarFFHGModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  /// tail length [A]
+  //  [DEFAULT]=t_length=15.0 [A]
+  Parameter t_length;
+  /// head thickness
+  //  [DEFAULT]=h_thickness=10.0 [A]
+  Parameter h_thickness;
+  /// tail scrattering length density[1/A^(2)]
+  //  [DEFAULT]=sld_tail=4e-7 [1/A^(2)]
+  Parameter sld_tail;
+  /// head group scrattering length density[1/A^(2)]
+  //  [DEFAULT]=sld_head=3e-6 [1/A^(2)]
+  Parameter sld_head;
+  /// solvent scrattering length density[1/A^(2)]
+  //  [DEFAULT]=sld_solvent=6e-6 [1/A^(2)]
+  Parameter sld_solvent;
+  /// Incoherent Background [1/cm] 0.00
+  //  [DEFAULT]=background=0.0 [1/cm]
+  Parameter background;
+
+  // Constructor
+  LamellarFFHGModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/lamellarPC.h
===================================================================
--- sansmodels/include/lamellarPC.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/lamellarPC.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,62 @@
+#if !defined(lamellarPC_h)
+#define lamellarPC_h
+#include "parameters.hh"
+
+/** Structure definition for lamellar_paracrystal parameters
+ * [PYTHONCLASS] = LamellarPCrystalModel
+ * [DISP_PARAMS] =  thickness
+   [DESCRIPTION] = <text>[Lamellar ParaCrystal Model] Parameter Definitions: scale = scale factor,
+			background = incoherent background
+			thickness = lamellar thickness,
+			sld_layer = layer scattering length density ,
+			sld_solvent = solvent scattering length density.
+			Nlayers = no. of lamellar layers
+			spacing = spacing between layers
+			pd_spacing = polydispersity of spacing
+			Note: This model can be used for large
+				multilamellar vesicles.
+
+	</text>
+	[FIXED]= thickness.width;
+	[ORIENTATION_PARAMS]=
+ **/
+
+class LamellarPCrystalModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  /// thickness
+  //  [DEFAULT]=thickness=33.0 [A]
+  Parameter thickness;
+  /// Nlayers
+  //  [DEFAULT]=Nlayers=20.0
+  Parameter Nlayers;
+  /// spacing
+  //  [DEFAULT]=spacing=250.0 [A]
+  Parameter spacing;
+  /// poly-dispersity of spacing
+  //  [DEFAULT]=pd_spacing=0.0
+  Parameter pd_spacing;
+  /// layer scrattering length density[1/A^(2)]
+  //  [DEFAULT]=sld_layer=1.0e-6 [1/A^(2)]
+  Parameter sld_layer;
+  /// solvent scrattering length density[1/A^(2)]
+  //  [DEFAULT]=sld_solvent=6.34e-6 [1/A^(2)]
+  Parameter sld_solvent;
+  /// Incoherent Background [1/cm] 0.00
+  //  [DEFAULT]=background=0.0 [1/cm]
+  Parameter background;
+
+  // Constructor
+  LamellarPCrystalModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/lamellarPS.h
===================================================================
--- sansmodels/include/lamellarPS.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/lamellarPS.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,74 @@
+/*
+	TODO: Add 2D model
+ */
+
+#if !defined(lamellarPS_h)
+#define lamellarPS_h
+#include "parameters.hh"
+
+/** Structure definition for concentrated lamellar form factor parameters
+ * [PYTHONCLASS] = LamellarPSModel
+ * [DISP_PARAMS] = delta, spacing
+   [DESCRIPTION] = <text>[Concentrated Lamellar Form Factor] Calculates the scattered
+	   intensity from a lyotropic lamellar phase.
+	   The intensity (form factor and structure
+	   factor)calculated is for lamellae of
+	   uniform scattering length density that
+	   are randomly distributed in solution
+	   (a powder average). The lamellae thickness
+		is polydisperse. The model can also
+		be applied to large, multi-lamellar vesicles.
+		No resolution smeared version is included
+		in the structure factor of this model.
+ *Parameters: spacing = repeat spacing,
+		delta = bilayer thickness,
+		sld_bi = SLD_bilayer
+		sld_sol = SLD_solvent
+		n_plate = # of Lamellar plates
+		caille = Caille parameter (<0.8 or <1)
+		background = incoherent bgd
+		scale = scale factor
+</text>
+   [FIXED]= <text>delta.width; spacing.width</text>
+   [ORIENTATION_PARAMS]=
+
+ **/
+
+class LamellarPSModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  /// repeat spacing of the lamellar [A]
+  //  [DEFAULT]=spacing=400 [A]
+  Parameter spacing;
+  /// bilayer thicknes [A]
+  //  [DEFAULT]=delta=30 [A]
+  Parameter delta;
+  /// SLD of bilayer [1/A^(2)]
+  //  [DEFAULT]=sld_bi=6.3e-6 [1/A^(2)]
+  Parameter sld_bi;
+  /// SLD of solvent [1/A^(2)]
+  //  [DEFAULT]=sld_sol=1.0e-6 [1/A^(2)]
+  Parameter sld_sol;
+  /// Number of lamellar plates
+  //  [DEFAULT]=n_plates=20
+  Parameter n_plates;
+  /// caille parameters
+  //  [DEFAULT]=caille=0.1
+  Parameter caille;
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0.0 [1/cm]
+  Parameter background;
+  // Constructor
+  LamellarPSModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/lamellarPS_HG.h
===================================================================
--- sansmodels/include/lamellarPS_HG.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/lamellarPS_HG.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,80 @@
+/*
+	TODO: Add 2D model
+ */
+
+#if !defined(lamellarPS_HG_h)
+#define lamellarPS_HG_h
+#include "parameters.hh"
+
+/** Structure definition for concentrated lamellar form factor parameters
+ * [PYTHONCLASS] = LamellarPSHGModel
+ * [DISP_PARAMS] = deltaT,deltaH,spacing
+   [DESCRIPTION] = <text>[Concentrated Lamellar (head+tail) Form Factor]: Calculates the
+	   intensity from a lyotropic lamellar phase.
+	   The intensity (form factor and structure factor)
+		calculated is for lamellae of two-layer scattering
+		length density that are randomly distributed in
+		solution (a powder average). The scattering
+		length density of the tail region, headgroup
+		region, and solvent are taken to be different.
+		The model can also be applied to large,
+		multi-lamellar vesicles.
+		No resolution smeared version is included
+		in the structure factor of this model.
+ *Parameters: spacing = repeat spacing,
+		deltaT = tail length,
+		deltaH = headgroup thickness,
+		n_plates = # of Lamellar plates
+		caille = Caille parameter (<0.8 or <1)
+		background = incoherent bgd
+		scale = scale factor ...
+</text>
+   [FIXED]= deltaT.width;deltaH.width;spacing.width
+   [ORIENTATION_PARAMS]=
+ **/
+
+class LamellarPSHGModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  /// repeat spacing of the lamellar [A]
+  //  [DEFAULT]=spacing=40 [A]
+  Parameter spacing;
+  ///  tail thickness [A]
+  //  [DEFAULT]=deltaT=10 [A]
+  Parameter deltaT;
+  ///  head thickness [A]
+  //  [DEFAULT]=deltaH=2.0 [A]
+  Parameter deltaH;
+  /// scattering density length of tails [1/A^(2)]
+  //  [DEFAULT]=sld_tail=0.4e-6 [1/A^(2)]
+  Parameter sld_tail;
+  /// scattering density length of head [1/A^(2)]
+  //  [DEFAULT]=sld_head=2e-6 [1/A^(2)]
+  Parameter sld_head;
+  /// scattering density length of solvent [1/A^(2)]
+  //  [DEFAULT]=sld_solvent=6e-6 [1/A^(2)]
+  Parameter sld_solvent;
+  /// Number of lamellar plates
+  //  [DEFAULT]=n_plates=30
+  Parameter n_plates;
+  /// caille parameters
+  //  [DEFAULT]=caille=0.001
+  Parameter caille;
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0.001 [1/cm]
+  Parameter background;
+
+  // Constructor
+  LamellarPSHGModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/libmultifunc/libfunc.h
===================================================================
--- sansmodels/include/libmultifunc/libfunc.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/libmultifunc/libfunc.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,10 @@
+#if !defined(o_h)
+#define libfunc_h
+
+int factorial(int i);
+
+double Si(double x);
+
+double sinc(double x);
+
+#endif
Index: sansmodels/include/libmultifunc/librefl.h
===================================================================
--- sansmodels/include/libmultifunc/librefl.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/libmultifunc/librefl.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,37 @@
+#if !defined(librefl_h)
+#define librefl_h
+
+typedef struct {
+	double re;
+	double im;
+} complex;
+
+typedef struct {
+	complex a;
+	complex b;
+	complex c;
+	complex d;
+} matrix;
+
+complex cassign(double real, double imag);
+
+complex cplx_add(complex x,complex y);
+
+complex rcmult(double x,complex y);
+
+complex cplx_sub(complex x,complex y);
+
+complex cplx_mult(complex x,complex y);
+
+complex cplx_div(complex x,complex y);
+
+complex cplx_exp(complex b);
+
+complex cplx_sqrt(complex z);
+
+complex cplx_cos(complex b);
+
+double intersldfunc(int fun_type, double n_sub, double i, double nu, double sld_l, double sld_r);
+double interfunc(int fun_type, double n_sub, double i, double sld_l, double sld_r);
+double linePq(int fun_type, double thick, double sld_in, double sld_out,double r, double q);
+#endif
Index: sansmodels/include/logNormal.h
===================================================================
--- sansmodels/include/logNormal.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/logNormal.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,36 @@
+#if !defined(logNormal_h)
+#define logNormal_h
+#include "parameters.hh"
+
+/** Structure definition for Gaussian parameters.
+ * The Log normal is normalized to the 'scale' parameter.
+ *  
+ * f(x)=scale * 1/(sigma*math.sqrt(2pi))e^(-1/2*((math.log(x)-mu)/sigma)^2)
+ *
+ * [PYTHONCLASS] = LogNormal
+ * [DESCRIPTION] = <text>f(x)=scale * 1/(sigma*math.sqrt(2pi))e^(-1/2*((math.log(x)-mu)/sigma)^2)</text>
+ */
+
+class LogNormal{
+public:
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  /// Standard deviation
+  //  [DEFAULT]=sigma=1
+  Parameter sigma;
+  /// Center of the Log Normal distribution
+  //  [DEFAULT]=center=0.0
+  Parameter center;
+
+  // Constructor
+  LogNormal();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/lorentzian.h
===================================================================
--- sansmodels/include/lorentzian.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/lorentzian.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,37 @@
+#if !defined(lorentzian_h)
+#define lorentzian_h
+#include "parameters.hh"
+
+/** Structure definition for Lorentzian parameters.
+ * The Lorentzian is normalized to the 'scale' parameter.
+ *  
+ * f(x)=scale * 1/pi 0.5gamma / [ (x-x_0)^2 + (0.5gamma)^2 ]
+ * 
+ * [PYTHONCLASS] = Lorentzian
+ * [DESCRIPTION] = <text>f(x)=scale * 1/pi 0.5gamma / [ (x-x_0)^2 + (0.5gamma)^2 ]</text>
+ * [ORIENTATION_PARAMS]= <text> </text>
+ */
+
+class Lorentzian{
+public:
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  /// Width
+  //  [DEFAULT]=gamma=1.0
+  Parameter gamma;
+  /// Center of the Lorentzian distribution
+  //  [DEFAULT]=center=0.0
+  Parameter center;
+
+  // Constructor
+  Lorentzian();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/multishell.h
===================================================================
--- sansmodels/include/multishell.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/multishell.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,69 @@
+#if !defined(multishell_h)
+#define multishell_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for sphere parameters
+
+	[PYTHONCLASS] = MultiShellModel
+	[DISP_PARAMS] = core_radius, s_thickness, w_thickness
+	[DESCRIPTION] =<text> MultiShell (Sphere) Model (or Multilamellar Vesicles): Model parameters;
+				scale : scale factor
+				core_radius : Core radius of the multishell
+				s_thickness: shell thickness
+				w_thickness: water thickness
+				core_sld: core scattering length density
+				shell_sld: shell scattering length density
+				n_pairs:number of pairs of water/shell
+				background: incoherent background
+               </text>
+	[FIXED]=  core_radius.width; s_thickness.width; w_thickness.width
+	[ORIENTATION_PARAMS]= <text> </text>
+ */
+
+class MultiShellModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+
+  /// Core radius of the multishell [A]
+  //  [DEFAULT]=core_radius=60.0 [A]
+  Parameter core_radius;
+
+  /// shell thickness [A]
+  //  [DEFAULT]=s_thickness= 10.0 [A]
+  Parameter s_thickness;
+
+  /// water thickness [A]
+  //  [DEFAULT]=w_thickness= 10.0 [A]
+  Parameter w_thickness;
+
+  /// core scattering length density [1/A^(2)]
+  //  [DEFAULT]=core_sld= 6.4e-6 [1/A^(2)]
+  Parameter core_sld;
+
+  /// shell scattering length density [1/A^(2)]
+  //  [DEFAULT]=shell_sld= 4.0e-7 [1/A^(2)]
+  Parameter shell_sld;
+
+  /// number of pairs of water and shell
+  //  [DEFAULT]=n_pairs= 2
+  Parameter n_pairs;
+
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0 [1/cm]
+  Parameter background;
+
+  //Constructor
+  MultiShellModel();
+
+  //Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx , double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/onion.h
===================================================================
--- sansmodels/include/onion.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/onion.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,174 @@
+#if !defined(o_h)
+#define onion_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for sphere parameters
+ */
+ //[PYTHONCLASS] = OnionModel
+ //[DISP_PARAMS] = rad_core0, thick_shell1,thick_shell2,thick_shell3,thick_shell4, thick_shell5,thick_shell6,thick_shell7,thick_shell8,thick_shell9,thick_shell10
+ //[DESCRIPTION] =<text>Form factor of mutishells normalized by the volume. Here each shell is described
+ //						 by an exponential function;
+ //							I)
+ //							For A_shell != 0,
+ //							f(r) = B*exp(A_shell*(r-r_in)/thick_shell)+C
+ //                         where
+ //								B=(sld_out-sld_in)/(exp(A_shell)-1)
+ //								C=sld_in-B.
+ //							Note that in the above case,
+ //								the function becomes a linear function
+ //								as A_shell --> 0+ or 0-.
+ //							II)
+ //							For the exact point of A_shell == 0,
+ //							f(r) = sld_in ,i.e., it crosses over flat function
+ //							Note that the 'sld_out' becaomes NULL in this case.
+ //
+ //				background:background,
+ //				rad_core0: radius of sphere(core)
+ //				thick_shell#:the thickness of the shell#
+ //				sld_core0: the SLD of the sphere
+ //				sld_solv: the SLD of the solvent
+ //				sld_shell: the SLD of the shell#
+ //				A_shell#: the coefficient in the exponential function
+ //		</text>
+ //[FIXED]=  <text>rad_core0.width;thick_shell1.width;thick_shell2.width;thick_shell3.width;thick_shell4.width;thick_shell5.width;thick_shell6.width;thick_shell7.width;thick_shell8.width;thick_shell9.width;thick_shell10.width</text>
+ //[ORIENTATION_PARAMS]= <text> </text>
+
+class OnionModel{
+public:
+    // Model parameters
+    /// number of shells
+    //  [DEFAULT]=n_shells=1
+    Parameter n_shells;
+      /// Scale factor
+      //  [DEFAULT]=scale= 1.0
+    Parameter scale;
+      /// Radius of sphere [A]
+      //  [DEFAULT]=rad_core0=200.0 [A]
+    Parameter rad_core0;
+    /// sld_core [1/A^(2)]
+    //  [DEFAULT]=sld_core0= 1.0e-6 [1/A^(2)]
+    Parameter sld_core0;
+    /// sld_solv [1/A^(2)]
+    //  [DEFAULT]=sld_solv= 6.4e-6 [1/A^(2)]
+    Parameter sld_solv;
+    /// Incoherent Background [1/cm]
+    //  [DEFAULT]=background=0 [1/cm]
+    Parameter background;
+
+    //  [DEFAULT]=sld_out_shell1=2.0e-06 [1/A^(2)]
+    Parameter sld_out_shell1;
+    //  [DEFAULT]=sld_out_shell2=2.5e-06 [1/A^(2)]
+    Parameter sld_out_shell2;
+    //  [DEFAULT]=sld_out_shell3=3.0e-06 [1/A^(2)]
+    Parameter sld_out_shell3;
+    //  [DEFAULT]=sld_out_shell4=3.5e-06 [1/A^(2)]
+    Parameter sld_out_shell4;
+    //  [DEFAULT]=sld_out_shell5=4.0e-06 [1/A^(2)]
+    Parameter sld_out_shell5;
+    //  [DEFAULT]=sld_out_shell6=4.5e-06 [1/A^(2)]
+    Parameter sld_out_shell6;
+    //  [DEFAULT]=sld_out_shell7=5.0e-06 [1/A^(2)]
+    Parameter sld_out_shell7;
+    //  [DEFAULT]=sld_out_shell8=5.5e-06 [1/A^(2)]
+    Parameter sld_out_shell8;
+    //  [DEFAULT]=sld_out_shell9=6.0e-06 [1/A^(2)]
+    Parameter sld_out_shell9;
+    //  [DEFAULT]=sld_out_shell10=6.2e-06 [1/A^(2)]
+    Parameter sld_out_shell10;
+
+    //  [DEFAULT]=sld_in_shell1=1.7e-06 [1/A^(2)]
+    Parameter sld_in_shell1;
+    //  [DEFAULT]=sld_in_shell2=2.2e-06 [1/A^(2)]
+    Parameter sld_in_shell2;
+    //  [DEFAULT]=sld_in_shell3=2.7e-06 [1/A^(2)]
+    Parameter sld_in_shell3;
+    //  [DEFAULT]=sld_in_shell4=3.2e-06 [1/A^(2)]
+    Parameter sld_in_shell4;
+    //  [DEFAULT]=sld_in_shell5=3.7e-06 [1/A^(2)]
+    Parameter sld_in_shell5;
+    //  [DEFAULT]=sld_in_shell6=4.2e-06 [1/A^(2)]
+    Parameter sld_in_shell6;
+    //  [DEFAULT]=sld_in_shell7=4.7e-06 [1/A^(2)]
+    Parameter sld_in_shell7;
+    //  [DEFAULT]=sld_in_shell8=5.2e-06 [1/A^(2)]
+    Parameter sld_in_shell8;
+    //  [DEFAULT]=sld_in_shell9=5.7e-06 [1/A^(2)]
+    Parameter sld_in_shell9;
+    //  [DEFAULT]=sld_in_shell10=6.0e-06 [1/A^(2)]
+    Parameter sld_in_shell10;
+
+    //  [DEFAULT]=A_shell1=1.0
+    Parameter A_shell1;
+    //  [DEFAULT]=A_shell2=1.0
+    Parameter A_shell2;
+    //  [DEFAULT]=A_shell3=1.0
+    Parameter A_shell3;
+    //  [DEFAULT]=A_shell4=1.0
+    Parameter A_shell4;
+    //  [DEFAULT]=A_shell5=1.0
+    Parameter A_shell5;
+    //  [DEFAULT]=A_shell6=1.0
+    Parameter A_shell6;
+    //  [DEFAULT]=A_shell7=1.0
+    Parameter A_shell7;
+    //  [DEFAULT]=A_shell8=1.0
+    Parameter A_shell8;
+    //  [DEFAULT]=A_shell9=1.0
+    Parameter A_shell9;
+    //  [DEFAULT]=A_shell10=1.0
+    Parameter A_shell10;
+
+    //  [DEFAULT]=thick_shell1=50.0 [A]
+    Parameter thick_shell1;
+    //  [DEFAULT]=thick_shell2=50.0 [A]
+    Parameter thick_shell2;
+    //  [DEFAULT]=thick_shell3=50.0 [A]
+    Parameter thick_shell3;
+    //  [DEFAULT]=thick_shell4=50.0 [A]
+    Parameter thick_shell4;
+    //  [DEFAULT]=thick_shell5=50.0 [A]
+    Parameter thick_shell5;
+    //  [DEFAULT]=thick_shell6=50.0 [A]
+    Parameter thick_shell6;
+    //  [DEFAULT]=thick_shell7=50.0 [A]
+    Parameter thick_shell7;
+    //  [DEFAULT]=thick_shell8=50.0 [A]
+    Parameter thick_shell8;
+    //  [DEFAULT]=thick_shell9=50.0 [A]
+    Parameter thick_shell9;
+    //  [DEFAULT]=thick_shell10=50.0 [A]
+    Parameter thick_shell10;
+
+    //  [DEFAULT]=func_shell1=2
+    Parameter func_shell1;
+    //  [DEFAULT]=func_shell2=2
+    Parameter func_shell2;
+    //  [DEFAULT]=func_shell3=2
+    Parameter func_shell3;
+    //  [DEFAULT]=func_shell4=2
+    Parameter func_shell4;
+    //  [DEFAULT]=func_shell5=2
+    Parameter func_shell5;
+    //  [DEFAULT]=func_shell6=2
+    Parameter func_shell6;
+    //  [DEFAULT]=func_shell7=2
+    Parameter func_shell7;
+    //  [DEFAULT]=func_shell8=2
+    Parameter func_shell8;
+    //  [DEFAULT]=func_shell9=2
+    Parameter func_shell9;
+    //  [DEFAULT]=func_shell10=2
+    Parameter func_shell10;
+
+  // Constructor
+  OnionModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/parallelepiped.h
===================================================================
--- sansmodels/include/parallelepiped.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/parallelepiped.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,67 @@
+#if !defined(parallelepiped_h)
+#define parallelepiped_h
+#include "parameters.hh"
+
+/** Structure definition for Parallelepiped parameters
+ * [PYTHONCLASS] = ParallelepipedModel
+ * [DISP_PARAMS] = short_a, short_b, long_c,parallel_phi,parallel_psi, parallel_theta
+   [DESCRIPTION] = <text> Form factor for a rectangular solid with uniform scattering length density.
+
+		scale:Scale factor
+		short_a: length of short edge  [A]
+		short_b: length of another short edge [A]
+		long_c: length of long edge  of the parallelepiped [A]
+		sldPipe: Pipe_sld
+		sldSolv: solvent_sld
+		background:Incoherent Background [1/cm]
+		</text>
+	[FIXED]= <text>short_a.width; short_b.width; long_c.width;parallel_phi.width;parallel_psi.width; parallel_theta.width</text>
+	[ORIENTATION_PARAMS]= <text>parallel_phi;parallel_psi; parallel_theta; parallel_phi.width;parallel_psi.width; parallel_theta.width</text>
+
+
+ **/
+
+class ParallelepipedModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  ///  Length of short edge of the parallelepiped [A]
+  //  [DEFAULT]=short_a=35 [A]
+  Parameter short_a;
+  /// Length of short edge edge of the parallelepiped [A]
+  //  [DEFAULT]=short_b=75 [A]
+  Parameter short_b;
+  /// Length of long edge of the parallelepiped [A]
+  //  [DEFAULT]=long_c=400 [A]
+  Parameter long_c;
+  /// SLD_Pipe [1/A^(2)]
+  //  [DEFAULT]=sldPipe=6.3e-6 [1/A^(2)]
+  Parameter sldPipe;
+  /// sldSolv [1/A^(2)]
+  //  [DEFAULT]=sldSolv=1.0e-6 [1/A^(2)]
+  Parameter sldSolv;
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0.0 [1/cm]
+  Parameter background;
+  /// Orientation of the parallelepiped axis w/respect incoming beam [deg]
+  //  [DEFAULT]=parallel_theta=0.0 [deg]
+  Parameter parallel_theta;
+  /// Orientation of the longitudinal axis of the parallelepiped in the plane of the detector [deg]
+  //  [DEFAULT]=parallel_phi=0.0 [deg]
+  Parameter parallel_phi;
+  /// Orientation of the cross-sectional minor axis of the parallelepiped in the plane of the detector [deg]
+  //  [DEFAULT]=parallel_psi=0.0 [deg]
+  Parameter parallel_psi;
+
+  // Constructor
+  ParallelepipedModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+#endif
Index: sansmodels/include/pearlnecklace.h
===================================================================
--- sansmodels/include/pearlnecklace.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/pearlnecklace.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,101 @@
+#if !defined(o_h)
+#define pearl_necklace_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for sphere parameters
+ */
+//[PYTHONCLASS] = PearlNecklaceModel
+//[DISP_PARAMS] = radius, edge_separation
+//[DESCRIPTION] =<text>Calculate form factor for Pearl Necklace Model
+//				[Macromol. Symp. 2004, 211, 25-42]
+//				Parameters:
+//				background:background
+//				scale: scale factor
+//				sld_pearl: the SLD of the pearl spheres
+//	            sld_string: the SLD of the strings
+//				sld_solv: the SLD of the solvent
+//				num_pearls: number of the pearls
+//				radius: the radius of a pearl
+//				edge_separation: the length of string segment; surface to surface
+//				thick_string: thickness (ie, diameter) of the string
+//		</text>
+//[FIXED]=  <text>radius.width; edge_separation.width</text>
+//[NON_FITTABLE_PARAMS]= <text></text>
+//[ORIENTATION_PARAMS]= <text> </text>
+
+typedef struct {
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  double scale;
+  ///	radius [A]
+  //  [DEFAULT]=radius=80.0 [A]
+  double radius;
+  ///	edge_separation
+  //  [DEFAULT]=edge_separation= 350 [A]
+  double edge_separation;
+  ///	thick_string [A]
+  //  [DEFAULT]=thick_string= 2.5 [A]
+  double thick_string;
+  ///	num_pearls
+  //  [DEFAULT]=num_pearls= 3
+  double num_pearls;
+  ///	sld_pearl
+  //  [DEFAULT]=sld_pearl= 1.0e-06 [1/A^(2)]
+  double sld_pearl;
+  ///	sld_string
+  //  [DEFAULT]=sld_string= 1.0e-06 [1/A^(2)]
+  double sld_string;
+  ///	sld_solv
+  //  [DEFAULT]=sld_solv= 6.3e-06 [1/A^(2)]
+  double sld_solv;
+  /// Background
+  //  [DEFAULT]=background=0
+  double background;
+
+}PeralNecklaceParameters;
+
+
+
+class PearlNecklaceModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+  /// radius [A]
+  //  [DEFAULT]=radius=80.0 [A]
+  Parameter radius;
+  /// edge_separation
+  //  [DEFAULT]=edge_separation= 350 [A]
+  Parameter edge_separation;
+  /// thick_string [A]
+  //  [DEFAULT]=thick_string= 2.5 [A]
+  Parameter thick_string;
+  /// num_pearls
+  //  [DEFAULT]=num_pearls= 3
+  Parameter num_pearls;
+  /// sld_pearl
+  //  [DEFAULT]=sld_pearl= 1.0e-06 [1/A^(2)]
+  Parameter sld_pearl;
+  /// sld_string
+  //  [DEFAULT]=sld_string= 1.0e-06 [1/A^(2)]
+  Parameter sld_string;
+  /// sld_solv
+  //  [DEFAULT]=sld_solv= 6.3e-06 [1/A^(2)]
+  Parameter sld_solv;
+  /// Background
+  //  [DEFAULT]=background=0
+  Parameter background;
+
+  // Constructor
+  PearlNecklaceModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/polygausscoil.h
===================================================================
--- sansmodels/include/polygausscoil.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/polygausscoil.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,51 @@
+#if !defined(polygausscoil_h)
+#define polygausscoil_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for sphere parameters
+ */
+//[PYTHONCLASS] = Poly_GaussCoil
+//[DISP_PARAMS] = rg
+//[DESCRIPTION] =<text>I(q)=(scale)*2*[(1+U*x)^(-1/U)+x-1]/[(1+U)*x^2] + background
+//				where x = [rg^2*q^2]
+//					and the polydispersity is
+//					U = [M_w/M_n]-1.
+//				scale = scale factor * volume fraction
+//				rg = radius of gyration
+//				poly_m = polydispersity of molecular weight
+//				background = incoherent background
+//		</text>
+//[FIXED]=
+//[ORIENTATION_PARAMS]= <text> </text>
+
+class Poly_GaussCoil{
+public:
+  // Model parameters
+  /// Radius of gyration [A]
+  //  [DEFAULT]=rg=60.0 [A]
+  Parameter rg;
+
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+
+  /// polydispersity of molecular weight
+  //  [DEFAULT]=poly_m= 2.0 [Mw/Mn]
+  Parameter poly_m;
+
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0.001 [1/cm]
+  Parameter background;
+
+  // Constructor
+  Poly_GaussCoil();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/refl.h
===================================================================
--- sansmodels/include/refl.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/refl.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,154 @@
+// The original code, of which work was not DANSE funded,
+// was provided by J. Cho.
+#if !defined(o_h)
+#define refl_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for sphere parameters
+ */
+ //[PYTHONCLASS] = ReflModel
+ //[DISP_PARAMS] = thick_inter0
+ //[DESCRIPTION] =<text>Calculate neutron reflectivity using the Parratt iterative formula
+ //				Parameters:
+ //				background:background
+ //				scale: scale factor
+ //				sld_bottom0: the SLD of the substrate
+ //				sld_medium: the SLD of the incident medium
+ //					or superstrate
+ //				sld_flatN: the SLD of the flat region of
+ //					the N'th layer
+ //				thick_flatN: the thickness of the flat
+ //					region of the N'th layer
+ //				func_interN: the function used to describe
+ //					the interface of the N'th layer
+ //				thick_interN: the thickness of the interface
+ //					of the N'th layer
+ //				Note: the layer number starts to increase
+ //					from the bottom (substrate) to the top.
+ //		</text>
+ //[FIXED]=  <text></text>
+ //[NON_FITTABLE_PARAMS]= <text>n_layers;func_inter0;func_inter1;func_inter2;func_inter3;func_inter4;func_inter5;func_inter5;func_inter7;func_inter8;func_inter9;func_inter10 </text>
+ //[ORIENTATION_PARAMS]= <text> </text>
+
+class ReflModel{
+public:
+  // Model parameters
+  /// number of layers
+  //  [DEFAULT]=n_layers=1
+  Parameter n_layers;
+    /// Scale factor
+    //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+    /// thick_inter0 [A]
+    //  [DEFAULT]=thick_inter0=1.0 [A]
+  Parameter thick_inter0;
+  /// func_inter0
+  //  [DEFAULT]=func_inter0= 0
+  Parameter func_inter0;
+  /// sld_bottom0 [1/A^(2)]
+  //  [DEFAULT]=sld_bottom0= 2.07e-6 [1/A^(2)]
+  Parameter sld_bottom0;
+  /// sld_medium [1/A^(2)]
+  //  [DEFAULT]=sld_medium= 1.0e-6 [1/A^(2)]
+  Parameter sld_medium;
+  /// Background
+  //  [DEFAULT]=background=0
+  Parameter background;
+
+    //  [DEFAULT]=sld_flat1=4.0e-06 [1/A^(2)]
+    Parameter sld_flat1;
+    //  [DEFAULT]=sld_flat2=3.5e-06 [1/A^(2)]
+    Parameter sld_flat2;
+    //  [DEFAULT]=sld_flat3=4.0e-06 [1/A^(2)]
+    Parameter sld_flat3;
+    //  [DEFAULT]=sld_flat4=3.5e-06 [1/A^(2)]
+    Parameter sld_flat4;
+    //  [DEFAULT]=sld_flat5=4.0e-06 [1/A^(2)]
+    Parameter sld_flat5;
+    //  [DEFAULT]=sld_flat6=3.5e-06 [1/A^(2)]
+    Parameter sld_flat6;
+    //  [DEFAULT]=sld_flat7=4.0e-06 [1/A^(2)]
+    Parameter sld_flat7;
+    //  [DEFAULT]=sld_flat8=3.5e-06 [1/A^(2)]
+    Parameter sld_flat8;
+    //  [DEFAULT]=sld_flat9=4.0e-06 [1/A^(2)]
+    Parameter sld_flat9;
+    //  [DEFAULT]=sld_flat10=3.5e-06 [1/A^(2)]
+    Parameter sld_flat10;
+
+    //  [DEFAULT]=thick_inter1=1 [A]
+    Parameter thick_inter1;
+    //  [DEFAULT]=thick_inter2=1 [A]
+    Parameter thick_inter2;
+    //  [DEFAULT]=thick_inter3=1 [A]
+    Parameter thick_inter3;
+    //  [DEFAULT]=thick_inter4=1 [A]
+    Parameter thick_inter4;
+    //  [DEFAULT]=thick_inter5=1 [A]
+    Parameter thick_inter5;
+    //  [DEFAULT]=thick_inter6=1 [A]
+    Parameter thick_inter6;
+    //  [DEFAULT]=thick_inter7=1 [A]
+    Parameter thick_inter7;
+    //  [DEFAULT]=thick_inter8=1 [A]
+    Parameter thick_inter8;
+    //  [DEFAULT]=thick_inter9=1 [A]
+    Parameter thick_inter9;
+    //  [DEFAULT]=thick_inter10=1 [A]
+    Parameter thick_inter10;
+
+    //  [DEFAULT]=thick_flat1=10 [A]
+    Parameter thick_flat1;
+    //  [DEFAULT]=thick_flat2=100 [A]
+    Parameter thick_flat2;
+    //  [DEFAULT]=thick_flat3=100 [A]
+    Parameter thick_flat3;
+    //  [DEFAULT]=thick_flat4=100 [A]
+    Parameter thick_flat4;
+    //  [DEFAULT]=thick_flat5=100 [A]
+    Parameter thick_flat5;
+    //  [DEFAULT]=thick_flat6=100 [A]
+    Parameter thick_flat6;
+    //  [DEFAULT]=thick_flat7=100 [A]
+    Parameter thick_flat7;
+    //  [DEFAULT]=thick_flat8=100 [A]
+    Parameter thick_flat8;
+    //  [DEFAULT]=thick_flat9=100 [A]
+    Parameter thick_flat9;
+    //  [DEFAULT]=thick_flat10=100 [A]
+    Parameter thick_flat10;
+
+    //  [DEFAULT]=func_inter1=0
+    Parameter func_inter1;
+    //  [DEFAULT]=func_inter2=0
+    Parameter func_inter2;
+    //  [DEFAULT]=func_inter3=0
+    Parameter func_inter3;
+    //  [DEFAULT]=func_inter4=0
+    Parameter func_inter4;
+    //  [DEFAULT]=func_inter5=0
+    Parameter func_inter5;
+    //  [DEFAULT]=func_inter6=0
+    Parameter func_inter6;
+    //  [DEFAULT]=func_inter7=0
+    Parameter func_inter7;
+    //  [DEFAULT]=func_inter8=0
+    Parameter func_inter8;
+    //  [DEFAULT]=func_inter9=0
+    Parameter func_inter9;
+    //  [DEFAULT]=func_inter10=0
+    Parameter func_inter10;
+
+
+  // Constructor
+  ReflModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/refl_adv.h
===================================================================
--- sansmodels/include/refl_adv.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/refl_adv.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,206 @@
+// The original code, of which work was not DANSE funded,
+// was provided by J. Cho.
+#if !defined(o_h)
+#define refl_adv_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for sphere parameters
+ */
+//[PYTHONCLASS] = ReflAdvModel
+//[DISP_PARAMS] = thick_inter0
+//[DESCRIPTION] =<text>Calculate neutron reflectivity using the Parratt iterative formula
+//				Parameters:
+//				background:background
+//				scale: scale factor
+//				sld_bottom0: the SLD of the substrate
+//				sld_medium: the SLD of the incident medium
+//					or superstrate
+//				sld_flatN: the SLD of the flat region of
+//					the N'th layer
+//				thick_flatN: the thickness of the flat
+//					region of the N'th layer
+//				func_interN: the function used to describe
+//					the interface of the N'th layer
+//				nu_interN: the coefficient for the func_interN
+//				thick_interN: the thickness of the interface
+//					of the N'th layer
+//				Note: the layer number starts to increase
+//					from the bottom (substrate) to the top.
+//		</text>
+//[FIXED]=  <text></text>
+//[NON_FITTABLE_PARAMS]= <text>n_layers;func_inter0;func_inter1;func_inter2;func_inter3;func_inter4;func_inter5;func_inter5;func_inter7;func_inter8;func_inter9;func_inter10 </text>
+//[ORIENTATION_PARAMS]= <text> </text>
+
+class ReflAdvModel{
+public:
+  // Model parameters
+  /// number of layers
+  //  [DEFAULT]=n_layers=1
+  Parameter n_layers;
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+  /// thick_inter0 [A]
+  //  [DEFAULT]=thick_inter0=50.0 [A]
+  Parameter thick_inter0;
+  /// func_inter0
+  //  [DEFAULT]=func_inter0= 0
+  Parameter func_inter0;
+  /// sld_bottom0 [1/A^(2)]
+  //  [DEFAULT]=sld_bottom0= 2.07e-6 [1/A^(2)]
+  Parameter sld_bottom0;
+  /// sld_medium [1/A^(2)]
+  //  [DEFAULT]=sld_medium= 1.0e-6 [1/A^(2)]
+  Parameter sld_medium;
+  /// Background
+  //  [DEFAULT]=background=0
+  Parameter background;
+
+  //  [DEFAULT]=sld_flat1=4.0e-06 [1/A^(2)]
+  Parameter sld_flat1;
+  //  [DEFAULT]=sld_flat2=3.5e-06 [1/A^(2)]
+  Parameter sld_flat2;
+  //  [DEFAULT]=sld_flat3=4.0e-06 [1/A^(2)]
+  Parameter sld_flat3;
+  //  [DEFAULT]=sld_flat4=3.5e-06 [1/A^(2)]
+  Parameter sld_flat4;
+  //  [DEFAULT]=sld_flat5=4.0e-06 [1/A^(2)]
+  Parameter sld_flat5;
+  //  [DEFAULT]=sld_flat6=3.5e-06 [1/A^(2)]
+  Parameter sld_flat6;
+  //  [DEFAULT]=sld_flat7=4.0e-06 [1/A^(2)]
+  Parameter sld_flat7;
+  //  [DEFAULT]=sld_flat8=3.5e-06 [1/A^(2)]
+  Parameter sld_flat8;
+  //  [DEFAULT]=sld_flat9=4.0e-06 [1/A^(2)]
+  Parameter sld_flat9;
+  //  [DEFAULT]=sld_flat10=3.5e-06 [1/A^(2)]
+  Parameter sld_flat10;
+
+  //  [DEFAULT]=thick_inter1=50 [A]
+  Parameter thick_inter1;
+  //  [DEFAULT]=thick_inter2=50 [A]
+  Parameter thick_inter2;
+  //  [DEFAULT]=thick_inter3=50 [A]
+  Parameter thick_inter3;
+  //  [DEFAULT]=thick_inter4=50 [A]
+  Parameter thick_inter4;
+  //  [DEFAULT]=thick_inter5=50 [A]
+  Parameter thick_inter5;
+  //  [DEFAULT]=thick_inter6=50 [A]
+  Parameter thick_inter6;
+  //  [DEFAULT]=thick_inter7=50 [A]
+  Parameter thick_inter7;
+  //  [DEFAULT]=thick_inter8=50 [A]
+  Parameter thick_inter8;
+  //  [DEFAULT]=thick_inter9=50 [A]
+  Parameter thick_inter9;
+  //  [DEFAULT]=thick_inter10=50 [A]
+  Parameter thick_inter10;
+
+  //  [DEFAULT]=thick_flat1=100 [A]
+  Parameter thick_flat1;
+  //  [DEFAULT]=thick_flat2=100 [A]
+  Parameter thick_flat2;
+  //  [DEFAULT]=thick_flat3=100 [A]
+  Parameter thick_flat3;
+  //  [DEFAULT]=thick_flat4=100 [A]
+  Parameter thick_flat4;
+  //  [DEFAULT]=thick_flat5=100 [A]
+  Parameter thick_flat5;
+  //  [DEFAULT]=thick_flat6=100 [A]
+  Parameter thick_flat6;
+  //  [DEFAULT]=thick_flat7=100 [A]
+  Parameter thick_flat7;
+  //  [DEFAULT]=thick_flat8=100 [A]
+  Parameter thick_flat8;
+  //  [DEFAULT]=thick_flat9=100 [A]
+  Parameter thick_flat9;
+  //  [DEFAULT]=thick_flat10=100 [A]
+  Parameter thick_flat10;
+
+  //  [DEFAULT]=func_inter1=0
+  Parameter func_inter1;
+  //  [DEFAULT]=func_inter2=0
+  Parameter func_inter2;
+  //  [DEFAULT]=func_inter3=0
+  Parameter func_inter3;
+  //  [DEFAULT]=func_inter4=0
+  Parameter func_inter4;
+  //  [DEFAULT]=func_inter5=0
+  Parameter func_inter5;
+  //  [DEFAULT]=func_inter6=0
+  Parameter func_inter6;
+  //  [DEFAULT]=func_inter7=0
+  Parameter func_inter7;
+  //  [DEFAULT]=func_inter8=0
+  Parameter func_inter8;
+  //  [DEFAULT]=func_inter9=0
+  Parameter func_inter9;
+  //  [DEFAULT]=func_inter10=0
+  Parameter func_inter10;
+
+  //  [DEFAULT]=sldIM_flat1=0 [1/A^(2)]
+  Parameter sldIM_flat1;
+  //  [DEFAULT]=sldIM_flat2=0 [1/A^(2)]
+  Parameter sldIM_flat2;
+  //  [DEFAULT]=sldIM_flat3=0 [1/A^(2)]
+  Parameter sldIM_flat3;
+  //  [DEFAULT]=sldIM_flat4=0 [1/A^(2)]
+  Parameter sldIM_flat4;
+  //  [DEFAULT]=sldIM_flat5=0 [1/A^(2)]
+  Parameter sldIM_flat5;
+  //  [DEFAULT]=sldIM_flat6=0 [1/A^(2)]
+  Parameter sldIM_flat6;
+  //  [DEFAULT]=sldIM_flat7=0 [1/A^(2)]
+  Parameter sldIM_flat7;
+  //  [DEFAULT]=sldIM_flat8=0 [1/A^(2)]
+  Parameter sldIM_flat8;
+  //  [DEFAULT]=sldIM_flat9=0 [1/A^(2)]
+  Parameter sldIM_flat9;
+  //  [DEFAULT]=sldIM_flat10=0 [1/A^(2)]
+  Parameter sldIM_flat10;
+
+  //  [DEFAULT]=nu_inter1=2.5
+  Parameter nu_inter1;
+  //  [DEFAULT]=nu_inter2=2.5
+  Parameter nu_inter2;
+  //  [DEFAULT]=nu_inter3=2.5
+  Parameter nu_inter3;
+  //  [DEFAULT]=nu_inter4=2.5
+  Parameter nu_inter4;
+  //  [DEFAULT]=nu_inter5=2.5
+  Parameter nu_inter5;
+  //  [DEFAULT]=nu_inter6=2.5
+  Parameter nu_inter6;
+  //  [DEFAULT]=nu_inter7=2.5
+  Parameter nu_inter7;
+  //  [DEFAULT]=nu_inter8=2.5
+  Parameter nu_inter8;
+  //  [DEFAULT]=nu_inter9=2.5
+  Parameter nu_inter9;
+  //  [DEFAULT]=nu_inter10=2.5
+  Parameter nu_inter10;
+
+
+  //  [DEFAULT]=sldIM_sub0=0
+  Parameter sldIM_sub0;
+  //  [DEFAULT]=sldIM_medium=0
+  Parameter sldIM_medium;
+  //  [DEFAULT]=npts_inter=21.0
+  Parameter npts_inter;
+  //  [DEFAULT]=nu_inter0=2.5
+  Parameter nu_inter0;
+
+  // Constructor
+  ReflAdvModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/rpa.h
===================================================================
--- sansmodels/include/rpa.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/rpa.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,139 @@
+#if !defined(o_h)
+#define rpa_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for sphere parameters
+ */
+//[PYTHONCLASS] = RPAModel
+//[DISP_PARAMS] = background
+//[DESCRIPTION] =<text>  THIS FORMALISM APPLIES TO MULTICOMPONENT POLYMER MIXTURES IN THE
+//							HOMOGENEOUS (MIXED) PHASE REGION ONLY.;
+//							CASE 0: C/D BINARY MIXTURE OF HOMOPOLYMERS
+//							CASE 1: C-D DIBLOCK COPOLYMER
+//							CASE 2: B/C/D TERNARY MIXTURE OF HOMOPOLYMERS
+//							CASE 3: B/C-D MIXTURE OF HOMOPOLYMER B AND
+//								DIBLOCK COPOLYMER C-D
+//							CASE 4: B-C-D TRIBLOCK COPOLYMER
+//							CASE 5: A/B/C/D QUATERNARY MIXTURE OF HOMOPOLYMERS
+//							CASE 6: A/B/C-D MIXTURE OF TWO HOMOPOLYMERS A/B
+//								AND A DIBLOCK C-D
+//							CASE 7: A/B-C-D MIXTURE OF A HOMOPOLYMER A AND A
+//								TRIBLOCK B-C-D
+//							CASE 8: A-B/C-D MIXTURE OF TWO DIBLOCK COPOLYMERS
+//								A-B AND C-D
+//							CASE 9: A-B-C-D FOUR-BLOCK COPOLYMER
+//							See details in the model function help
+//		</text>
+//[FIXED]=  <text></text>
+//[NON_FITTABLE_PARAMS]= <text> lcase_n; Na; Phia; va; La; Nb; Phib; vb; Lb;Nc; Phic; vc; Lc;Nd; Phid; vd; Ld; </text>
+//[ORIENTATION_PARAMS]= <text> </text>
+
+class RPAModel{
+public:
+  // Model parameters
+  /// The Case number
+  //  [DEFAULT]=lcase_n=0
+  Parameter lcase_n;
+
+  /// Segment Length ba
+  //  [DEFAULT]=ba= 5.0
+  Parameter ba;
+  /// Segment Length bb
+  //  [DEFAULT]=bb=5.0
+  Parameter bb;
+  /// Segment Length bc
+  //  [DEFAULT]=bc= 5.0
+  Parameter bc;
+  /// Segment Length bd
+  //  [DEFAULT]=bd= 5.0
+  Parameter bd;
+
+  /// Chi Param ab
+  //  [DEFAULT]=Kab=-0.0004
+  Parameter Kab;
+  /// Chi Param ac
+  //  [DEFAULT]=Kac=-0.0004
+  Parameter Kac;
+  /// Chi Param ad
+  //  [DEFAULT]=Kad=-0.0004
+  Parameter Kad;
+  /// Chi Param bc
+  //  [DEFAULT]=Kbc=-0.0004
+  Parameter Kbc;
+  /// Chi Param bd
+  //  [DEFAULT]=Kbd=-0.0004
+  Parameter Kbd;
+  /// Chi Param cd
+  //  [DEFAULT]=Kcd=-0.0004
+  Parameter Kcd;
+
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0 [1/cm]
+  Parameter background;
+
+  /// Degree OF POLYMERIZATION of a
+  //  [DEFAULT]=Na=1000.0
+  Parameter Na;
+  /// Volume Fraction of a
+  //  [DEFAULT]=Phia=0.25
+  Parameter Phia;
+  /// Specific Volume of a
+  //  [DEFAULT]=va=100.0
+  Parameter va;
+  /// Scattering Length of a
+  //  [DEFAULT]=La=1.0e-012
+  Parameter La;
+
+  /// Degree OF POLYMERIZATION of b
+  //  [DEFAULT]=Nb=1000.0
+  Parameter Nb;
+  /// Volume Fraction of b
+  //  [DEFAULT]=Phib=0.25
+  Parameter Phib;
+  /// Specific Volume of b
+  //  [DEFAULT]=vb=100.0
+  Parameter vb;
+  /// Scattering Length of b
+  //  [DEFAULT]=Lb=1.0e-012
+  Parameter Lb;
+
+  /// Degree OF POLYMERIZATION of c
+  //  [DEFAULT]=Nc=1000.0
+  Parameter Nc;
+  /// Volume Fraction of c
+  //  [DEFAULT]=Phic=0.25
+  Parameter Phic;
+  /// Specific Volume of c
+  //  [DEFAULT]=vc=100.0
+  Parameter vc;
+  /// Scattering Length of c
+  //  [DEFAULT]=Lc=1.0e-012
+  Parameter Lc;
+
+  /// Degree OF POLYMERIZATION of d
+  //  [DEFAULT]=Nd=1000.0
+  Parameter Nd;
+  /// Volume Fraction of d
+  //  [DEFAULT]=Phid=0.25
+  Parameter Phid;
+  /// Specific Volume of d
+  //  [DEFAULT]=vd=100.0
+  Parameter vd;
+  /// Scattering Length of d
+  //  [DEFAULT]=Ld=0.0e-012
+  Parameter Ld;
+
+  // Constructor
+  RPAModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+#endif
Index: sansmodels/include/sc.h
===================================================================
--- sansmodels/include/sc.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/sc.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,84 @@
+#if !defined(sc_h)
+#define sc_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for SC_ParaCrystal parameters
+ */
+//[PYTHONCLASS] = SCCrystalModel
+//[DISP_PARAMS] = radius,phi, psi, theta
+//[DESCRIPTION] =<text>P(q)=(scale/Vp)*V_lattice*P(q)*Z(q)+bkg where scale is the volume
+//					 fraction of sphere,
+//				Vp = volume of the primary particle,
+//				V_lattice = volume correction for
+//					for the crystal structure,
+//				P(q)= form factor of the sphere (normalized),
+//				Z(q)= paracrystalline structure factor
+//					for a simple cubic structure.
+//				[Simple Cubic ParaCrystal Model]
+//				Parameters;
+//				scale: volume fraction of spheres
+//				bkg:background, R: radius of sphere
+//				dnn: Nearest neighbor distance
+//				d_factor: Paracrystal distortion factor
+//				radius: radius of the spheres
+//				sldSph: SLD of the sphere
+//				sldSolv: SLD of the solvent
+//
+//		</text>
+//[FIXED]=  radius.width;phi.width;psi.width; theta.width
+//[ORIENTATION_PARAMS]= <text> phi;psi; theta; phi.width;psi.width; theta.width</text>
+
+
+
+class SCCrystalModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+
+  /// Nearest neighbor distance [A]
+  //  [DEFAULT]=dnn=220.0 [A]
+  Parameter dnn;
+
+  /// Paracrystal distortion factor g
+  //  [DEFAULT]=d_factor=0.06
+  Parameter d_factor;
+
+  /// Radius of sphere [A]
+  //  [DEFAULT]=radius=40.0 [A]
+  Parameter radius;
+
+  /// sldSph [1/A^(2)]
+  //  [DEFAULT]=sldSph= 3.0e-6 [1/A^(2)]
+  Parameter sldSph;
+
+  /// sldSolv [1/A^(2)]
+  //  [DEFAULT]=sldSolv= 6.3e-6 [1/A^(2)]
+  Parameter sldSolv;
+
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0 [1/cm]
+  Parameter background;
+  /// Orientation of the a1 axis w/respect incoming beam [deg]
+  //  [DEFAULT]=theta=0.0 [deg]
+  Parameter theta;
+  /// Orientation of the a2 in the plane of the detector [deg]
+  //  [DEFAULT]=phi=0.0 [deg]
+  Parameter phi;
+  /// Orientation of the a3 in the plane of the detector [deg]
+  //  [DEFAULT]=psi=0.0 [deg]
+  Parameter psi;
+
+  // Constructor
+  SCCrystalModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/schulz.h
===================================================================
--- sansmodels/include/schulz.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/schulz.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,42 @@
+#if !defined(schulz_h)
+#define schulz_h
+#include "parameters.hh"
+
+/** Structure definition for Schulz parameters.
+ * The Schulz is normalized to the 'scale' parameter.
+ *  
+ * f(x)=scale * math.pow(z+1, z+1)*math.pow((R), z)*
+ *					math.exp(-R*(z+1))/(center*gamma(z+1)
+ *		z= math.pow[(1/(sigma/center),2]-1
+ *		R= x/center
+ * 
+ * [PYTHONCLASS] = Schulz
+ * [DESCRIPTION] = <text> f(x)=scale * math.pow(z+1, z+1)*math.pow((R), z)*
+ 					math.exp(-R*(z+1))/(center*gamma(z+1)
+ 		            z= math.pow[(1/(sigma/center),2]-1
+ 					R= x/center</text>
+ */
+
+class Schulz{
+public:
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  /// Standard deviation
+  //  [DEFAULT]=sigma=1
+  Parameter sigma;
+  /// Center of the Schulz distribution
+  //  [DEFAULT]=center=0.0
+  Parameter center;
+
+  // Constructor
+  Schulz();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/sld_cal.h
===================================================================
--- sansmodels/include/sld_cal.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/sld_cal.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,55 @@
+#if !defined(sld_cal_h)
+#define sld_cal_h
+#include "parameters.hh"
+
+/**
+ * To calculate the sld value
+* [PYTHONCLASS] = SLDCalFunc
+* [DISP_PARAMS] = npts_inter
+  [DESCRIPTION] =<text>To calculate sld values
+ 				</text>
+	[FIXED]= <text>
+			</text>
+
+ **/
+
+class SLDCalFunc{
+public:
+  // Model parameters
+  /// fun_type
+  //  [DEFAULT]=fun_type=0
+  Parameter fun_type;
+
+  /// npts_inter
+  //  [DEFAULT]=npts_inter= 21
+  Parameter npts_inter;
+
+  /// shell_num
+  //  [DEFAULT]=shell_num= 0
+  Parameter shell_num;
+
+  /// nu_inter
+  //  [DEFAULT]=nu_inter= 2.5
+  Parameter nu_inter;
+
+  /// sld_left [1/A^(2)]
+  //  [DEFAULT]=sld_left= 0 [1/A^(2)]
+  Parameter sld_left;
+
+  /// sld_right [1/A^(2)]
+  //  [DEFAULT]=sld_right= 0 [1/A^(2)]
+  Parameter sld_right;
+
+  // Constructor
+  SLDCalFunc();
+
+  // Operators to get SLD
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+
+
+#endif
Index: sansmodels/include/sphere.h
===================================================================
--- sansmodels/include/sphere.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/sphere.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,56 @@
+#if !defined(sphere_h)
+#define sphere_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for sphere parameters
+ */
+ //[PYTHONCLASS] = SphereModel
+ //[DISP_PARAMS] = radius
+ //[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
+ //				sldSph: the SLD of the sphere
+ //				sldSolv: the SLD of the solvent
+ //
+ //		</text>
+ //[FIXED]=  radius.width
+ //[ORIENTATION_PARAMS]= <text> </text>
+
+class SphereModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+
+  /// Radius of sphere [A]
+  //  [DEFAULT]=radius=60.0 [A]
+  Parameter radius;
+
+  /// sldSph [1/A^(2)]
+  //  [DEFAULT]=sldSph= 2.0e-6 [1/A^(2)]
+  Parameter sldSph;
+
+  /// sldSolv [1/A^(2)]
+  //  [DEFAULT]=sldSolv= 1.0e-6 [1/A^(2)]
+  Parameter sldSolv;
+
+/// Incoherent Background [1/cm]
+//  [DEFAULT]=background=0 [1/cm]
+Parameter background;
+
+  // Constructor
+  SphereModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+
+#endif
Index: sansmodels/include/spheresld.h
===================================================================
--- sansmodels/include/spheresld.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/spheresld.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,181 @@
+#if !defined(o_h)
+#define sphere_sld_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for sphere parameters
+ */
+ //[PYTHONCLASS] = SphereSLDModel
+ //[DISP_PARAMS] = rad_core0, thick_inter0
+ //[DESCRIPTION] =<text>Calculate neutron reflectivity using the Parratt iterative formula
+ //				Parameters:
+ //				background:background
+ //				scale: scale factor
+ //				sld_core0: the SLD of the substrate
+ //				sld_solv: the SLD of the incident medium
+ //					or superstrate
+ //				sld_flatN: the SLD of the flat region of
+ //					the N'th layer
+ //				thick_flatN: the thickness of the flat
+ //					region of the N'th layer
+ //				func_interN: the function used to describe
+ //					the interface of the N'th layer
+ //				nu_interN: the coefficient for the func_interN
+ //				thick_interN: the thickness of the interface
+ //					of the N'th layer
+ //				Note: the layer number starts to increase
+ //					from the bottom (substrate) to the top.
+ //		</text>
+ //[FIXED]=  <text>rad_core0.width; thick_inter0.width</text>
+ //[NON_FITTABLE_PARAMS]= <text>n_shells;func_inter0;func_inter1;func_inter2;func_inter3;func_inter4;func_inter5;func_inter5;func_inter7;func_inter8;func_inter9;func_inter10 </text>
+ //[ORIENTATION_PARAMS]= <text> </text>
+
+class SphereSLDModel{
+public:
+  // Model parameters
+  /// number of shells
+  //  [DEFAULT]=n_shells=1
+  Parameter n_shells;
+    /// Scale factor
+    //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+    /// thick_inter0 [A]
+    //  [DEFAULT]=thick_inter0=50.0 [A]
+  Parameter thick_inter0;
+  /// func_inter0
+  //  [DEFAULT]=func_inter0= 0
+  Parameter func_inter0;
+  /// sld_core0 [1/A^(2)]
+  //  [DEFAULT]=sld_core0= 2.07e-6 [1/A^(2)]
+  Parameter sld_core0;
+  /// sld_solv [1/A^(2)]
+  //  [DEFAULT]=sld_solv= 1.0e-6 [1/A^(2)]
+  Parameter sld_solv;
+  /// Background
+  //  [DEFAULT]=background=0
+  Parameter background;
+
+    //  [DEFAULT]=sld_flat1=4.0e-06 [1/A^(2)]
+    Parameter sld_flat1;
+    //  [DEFAULT]=sld_flat2=3.5e-06 [1/A^(2)]
+    Parameter sld_flat2;
+    //  [DEFAULT]=sld_flat3=4.0e-06 [1/A^(2)]
+    Parameter sld_flat3;
+    //  [DEFAULT]=sld_flat4=3.5e-06 [1/A^(2)]
+    Parameter sld_flat4;
+    //  [DEFAULT]=sld_flat5=4.0e-06 [1/A^(2)]
+    Parameter sld_flat5;
+    //  [DEFAULT]=sld_flat6=3.5e-06 [1/A^(2)]
+    Parameter sld_flat6;
+    //  [DEFAULT]=sld_flat7=4.0e-06 [1/A^(2)]
+    Parameter sld_flat7;
+    //  [DEFAULT]=sld_flat8=3.5e-06 [1/A^(2)]
+    Parameter sld_flat8;
+    //  [DEFAULT]=sld_flat9=4.0e-06 [1/A^(2)]
+    Parameter sld_flat9;
+    //  [DEFAULT]=sld_flat10=3.5e-06 [1/A^(2)]
+    Parameter sld_flat10;
+
+    //  [DEFAULT]=thick_inter1=50.0 [A]
+    Parameter thick_inter1;
+    //  [DEFAULT]=thick_inter2=50.0 [A]
+    Parameter thick_inter2;
+    //  [DEFAULT]=thick_inter3=50.0 [A]
+    Parameter thick_inter3;
+    //  [DEFAULT]=thick_inter4=50.0 [A]
+    Parameter thick_inter4;
+    //  [DEFAULT]=thick_inter5=50.0 [A]
+    Parameter thick_inter5;
+    //  [DEFAULT]=thick_inter6=50.0 [A]
+    Parameter thick_inter6;
+    //  [DEFAULT]=thick_inter7=50.0 [A]
+    Parameter thick_inter7;
+    //  [DEFAULT]=thick_inter8=50.0 [A]
+    Parameter thick_inter8;
+    //  [DEFAULT]=thick_inter9=50.0 [A]
+    Parameter thick_inter9;
+    //  [DEFAULT]=thick_inter10=50.0 [A]
+    Parameter thick_inter10;
+
+    //  [DEFAULT]=thick_flat1=100 [A]
+    Parameter thick_flat1;
+    //  [DEFAULT]=thick_flat2=100 [A]
+    Parameter thick_flat2;
+    //  [DEFAULT]=thick_flat3=100 [A]
+    Parameter thick_flat3;
+    //  [DEFAULT]=thick_flat4=100 [A]
+    Parameter thick_flat4;
+    //  [DEFAULT]=thick_flat5=100 [A]
+    Parameter thick_flat5;
+    //  [DEFAULT]=thick_flat6=100 [A]
+    Parameter thick_flat6;
+    //  [DEFAULT]=thick_flat7=100 [A]
+    Parameter thick_flat7;
+    //  [DEFAULT]=thick_flat8=100 [A]
+    Parameter thick_flat8;
+    //  [DEFAULT]=thick_flat9=100 [A]
+    Parameter thick_flat9;
+    //  [DEFAULT]=thick_flat10=100 [A]
+    Parameter thick_flat10;
+
+    //  [DEFAULT]=func_inter1=0
+    Parameter func_inter1;
+    //  [DEFAULT]=func_inter2=0
+    Parameter func_inter2;
+    //  [DEFAULT]=func_inter3=0
+    Parameter func_inter3;
+    //  [DEFAULT]=func_inter4=0
+    Parameter func_inter4;
+    //  [DEFAULT]=func_inter5=0
+    Parameter func_inter5;
+    //  [DEFAULT]=func_inter6=0
+    Parameter func_inter6;
+    //  [DEFAULT]=func_inter7=0
+    Parameter func_inter7;
+    //  [DEFAULT]=func_inter8=0
+    Parameter func_inter8;
+    //  [DEFAULT]=func_inter9=0
+    Parameter func_inter9;
+    //  [DEFAULT]=func_inter10=0
+    Parameter func_inter10;
+
+    //  [DEFAULT]=nu_inter1=2.5
+    Parameter nu_inter1;
+    //  [DEFAULT]=nu_inter2=2.5
+    Parameter nu_inter2;
+    //  [DEFAULT]=nu_inter3=2.5
+    Parameter nu_inter3;
+    //  [DEFAULT]=nu_inter4=2.5
+    Parameter nu_inter4;
+    //  [DEFAULT]=nu_inter5=2.5
+    Parameter nu_inter5;
+    //  [DEFAULT]=nu_inter6=2.5
+    Parameter nu_inter6;
+    //  [DEFAULT]=nu_inter7=2.5
+    Parameter nu_inter7;
+    //  [DEFAULT]=nu_inter8=2.5
+    Parameter nu_inter8;
+    //  [DEFAULT]=nu_inter9=2.5
+    Parameter nu_inter9;
+    //  [DEFAULT]=nu_inter10=2.5
+    Parameter nu_inter10;
+
+    //  [DEFAULT]=npts_inter=35.0
+    Parameter npts_inter;
+    //  [DEFAULT]=nu_inter0=2.5
+    Parameter nu_inter0;
+    //  [DEFAULT]=rad_core0=50.0 [A]
+    Parameter rad_core0;
+
+  // Constructor
+  SphereSLDModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+
+#endif
Index: sansmodels/include/spheroid.h
===================================================================
--- sansmodels/include/spheroid.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/spheroid.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,83 @@
+#if !defined(spheroid_h)
+#define spheroid_h
+#include "parameters.hh"
+
+/** Structure definition for oblate parameters
+ * [PYTHONCLASS] = CoreShellEllipsoidModel
+ * [DISP_PARAMS] = equat_core, polar_core, equat_shell,polar_shell,axis_phi, axis_theta
+   [DESCRIPTION] = <text>[SpheroidCoreShellModel] Calculates the form factor for an spheroid
+			ellipsoid particle with a core_shell structure.
+			The form factor is averaged over all possible
+			orientations of the ellipsoid such that P(q)
+			= scale*<f^2>/Vol + bkg, where f is the
+			single particle scattering amplitude.
+			[Parameters]:
+			equat_core = equatorial radius of core,
+			polar_core = polar radius of core,
+			equat_shell = equatorial radius of shell,
+			polar_shell = polar radius (revolution axis) of shell,
+			sld_core = SLD_core
+			sld_shell = SLD_shell
+			sld_solvent = SLD_solvent
+			background = Incoherent bkg
+			scale =scale
+			Note:It is the users' responsibility to ensure
+			that shell radii are larger than core radii.
+			oblate: polar radius < equatorial radius
+			prolate :  polar radius > equatorial radius
+			</text>
+
+   [FIXED] = <text>equat_core.width;polar_core.width; equat_shell.width; polar_shell.width; axis_phi.width; axis_theta.width</text>
+   [ORIENTATION_PARAMS]= <text>axis_phi; axis_theta; axis_phi.width; axis_theta.width</text>
+
+ **/
+
+class CoreShellEllipsoidModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  /// Equatorial radius of core [A]
+  //  [DEFAULT]=equat_core=200.0 [A]
+  Parameter equat_core;
+  /// Polar radius of core [A]
+  //  [DEFAULT]=polar_core=20.0 [A]
+  Parameter polar_core;
+  /// equatorial radius of shell [A]
+  //  [DEFAULT]=equat_shell=250.0 [A]
+  Parameter equat_shell;
+  /// polar radius of shell [A]
+  //  [DEFAULT]=polar_shell=30.0 [A]
+  Parameter polar_shell;
+  ///  Core scattering length density [1/A^(2)]
+  //  [DEFAULT]=sld_core=2.0e-6 [1/A^(2)]
+  Parameter sld_core;
+  ///  Shell scattering length density [1/A^(2)]
+  //  [DEFAULT]=sld_shell=1.0e-6 [1/A^(2)]
+  Parameter sld_shell;
+  /// Solvent scattering length density  [1/A^(2)]
+  //  [DEFAULT]=sld_solvent=6.3e-6 [1/A^(2)]
+  Parameter sld_solvent;
+  /// Incoherent Background [1/cm] 0.001
+  //  [DEFAULT]=background=0.001 [1/cm]
+  Parameter background;
+  //Disable for now
+  /// Orientation of the oblate axis w/respect incoming beam [deg]
+  //  [DEFAULT]=axis_theta=0.0 [deg]
+  Parameter axis_theta;
+  /// Orientation of the oblate in the plane of the detector [deg]
+  //  [DEFAULT]=axis_phi=0.0 [deg]
+  Parameter axis_phi;
+
+  // Constructor
+  CoreShellEllipsoidModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/stacked_disks.h
===================================================================
--- sansmodels/include/stacked_disks.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/stacked_disks.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,79 @@
+/*
+	TODO: Add 2D model
+ */
+
+#if !defined(stacked_disks_h)
+#define stacked_disks_h
+#include "parameters.hh"
+
+/** Structure definition for stacked disks parameters
+ * [PYTHONCLASS] = StackedDisksModel
+ * [DISP_PARAMS] = core_thick, layer_thick, radius, axis_theta, axis_phi
+   [DESCRIPTION] = <text> One layer of disk consists of a core, a top layer, and a bottom layer.
+		radius =  the radius of the disk
+		core_thick = thickness of the core
+		layer_thick = thickness of a layer
+		core_sld = the SLD of the core
+		layer_sld = the SLD of the layers
+		n_stacking = the number of the disks
+		sigma_d =  Gaussian STD of d-spacing
+		solvent_sld = the SLD of the solvent
+		</text>
+	[FIXED]= <text>core_thick.width;layer_thick.width; radius.width; axis_theta.width; axis_phi.width</text>
+	[ORIENTATION_PARAMS]= <text>axis_phi; axis_theta; axis_phi.width; axis_theta.width</text>
+
+
+ **/
+
+class StackedDisksModel{
+public:
+  // Model parameters
+
+  /// Scale factor
+  //  [DEFAULT]=scale=0.01
+  Parameter scale;
+  /// Thickness of the core disk [A]
+  //  [DEFAULT]=core_thick=10.0 [A]
+  Parameter core_thick;
+  /// radius of the staked disk [A]
+  //  [DEFAULT]=radius=3000 [A]
+  Parameter radius;
+  /// Thickness of the staked disk [A]
+  //  [DEFAULT]=layer_thick=15.0 [A]
+  Parameter layer_thick;
+  /// Core scattering length density[1/A^(2)]
+  //  [DEFAULT]=core_sld=4e-6 [1/A^(2)]
+  Parameter core_sld;
+  /// layer scattering length density[1/A^(2)]
+  //  [DEFAULT]=layer_sld=-4e-7 [1/A^(2)]
+  Parameter layer_sld;
+  /// solvent scattering length density[1/A^(2)]
+  //  [DEFAULT]=solvent_sld=5.0e-6 [1/A^(2)]
+  Parameter solvent_sld;
+  /// number of stacking
+  //  [DEFAULT]=n_stacking=1
+  Parameter n_stacking;
+  /// GSD of disks sigma_d
+  //  [DEFAULT]=sigma_d=0
+  Parameter sigma_d;
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0.001 [1/cm]
+  Parameter background;
+  /// Orientation of the staked disk axis w/respect incoming beam [rad]
+  //  [DEFAULT]=axis_theta=0.0 [rad]
+  Parameter axis_theta;
+  /// Orientation of the  staked disk in the plane of the detector [rad]
+  //  [DEFAULT]=axis_phi=0.0 [rad]
+  Parameter axis_phi;
+
+  // Constructor
+  StackedDisksModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/triaxial_ellipsoid.h
===================================================================
--- sansmodels/include/triaxial_ellipsoid.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/triaxial_ellipsoid.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,59 @@
+#if !defined(triaxial_ellipsoid_h)
+#define triaxial_ellipsoid_h
+#include "parameters.hh"
+
+/** Structure definition for cylinder parameters
+ * [PYTHONCLASS] = TriaxialEllipsoidModel
+ * [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
+	not be correct.
+	</text>
+	[FIXED]= <text>axis_psi.width; axis_phi.width; axis_theta.width; semi_axisA.width; semi_axisB.width; semi_axisC.width </text>
+	[ORIENTATION_PARAMS]= <text>axis_psi; axis_phi; axis_theta; axis_psi.width; axis_phi.width; axis_theta.width</text>
+ **/
+
+class TriaxialEllipsoidModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale=1.0
+  Parameter scale;
+  /// semi -axis A of the triaxial_ellipsoid [A]
+  //  [DEFAULT]=semi_axisA= 35.0 [A]
+  Parameter semi_axisA;
+  /// semi -axis B of the triaxial_ellipsoid [A]
+  //  [DEFAULT]=semi_axisB=100.0 [A]
+  Parameter semi_axisB;
+  /// semi -axis C of the triaxial_ellipsoid [A]
+  //  [DEFAULT]=semi_axisC=400.0 [A]
+  Parameter semi_axisC;
+  /// sldEll [1/A^(2)]
+  //  [DEFAULT]=sldEll=1.0e-6 [1/A^(2)]
+  Parameter sldEll;
+  /// sldSolv [1/A^(2)]
+  //  [DEFAULT]=sldSolv=6.3e-6 [1/A^(2)]
+  Parameter sldSolv;
+  /// Incoherent Background [1/cm] 0.00
+  //  [DEFAULT]=background=0.0 [1/cm]
+  Parameter background;
+  /// Orientation of the triaxial_ellipsoid axis w/respect incoming beam [deg]
+  //  [DEFAULT]=axis_theta=57.325 [deg]
+  Parameter axis_theta;
+  /// Orientation of the triaxial_ellipsoid in the plane of the detector [deg]
+  //  [DEFAULT]=axis_phi=57.325 [deg]
+  Parameter axis_phi;
+  /// Orientation of the cross section of the triaxial_ellipsoid in the plane of the detector [deg]
+  //  [DEFAULT]=axis_psi=0.0 [deg]
+  Parameter axis_psi;
+
+  // Constructor
+  TriaxialEllipsoidModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+#endif
Index: sansmodels/include/vesicle.h
===================================================================
--- sansmodels/include/vesicle.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/vesicle.h	(revision 503a9728116697915322a45fc66882720885ca92)
@@ -0,0 +1,57 @@
+#if !defined(vesicle_h)
+#define vesicle_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for vesicle parameters
+[PYTHONCLASS] = VesicleModel
+[DISP_PARAMS] = radius,thickness
+[DESCRIPTION] =<text>Model parameters:    radius : the core radius of the vesicle
+		thickness: the shell thickness
+		core_sld: the core SLD
+		shell_sld: the shell SLD
+		background: incoherent background
+		scale : scale factor
+</text>
+[FIXED]=  radius.width; thickness.width
+[ORIENTATION_PARAMS]= <text> </text>
+ */
+
+class VesicleModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+
+  /// Core radius of the vesicle [A]
+  //  [DEFAULT]=radius= 100.0 [A]
+  Parameter radius;
+
+  /// shell thickness [A]
+  //  [DEFAULT]=thickness= 30.0 [A]
+  Parameter thickness;
+
+  /// core scattering length density [1/A^(2)]
+  //  [DEFAULT]=core_sld= 6.36e-6 [1/A^(2)]
+  Parameter core_sld;
+
+  /// shell scattering length density [1/A^(2)]
+  //  [DEFAULT]=shell_sld= 5.0e-7 [1/A^(2)]
+  Parameter shell_sld;
+
+  /// Incoherent Background [1/cm]
+  //  [DEFAULT]=background=0 [1/cm]
+  Parameter background;
+
+  //Constructor
+  VesicleModel();
+
+  //Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx , double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
