diff --git a/GUI/Model/Sample/FormFactorItems.cpp b/GUI/Model/Sample/FormFactorItems.cpp
index 37ad6aef13d8accbeedb3674aeb0e23857285d1f..332bde03bff49d9c56ab9bc7670646bffa442f3c 100644
--- a/GUI/Model/Sample/FormFactorItems.cpp
+++ b/GUI/Model/Sample/FormFactorItems.cpp
@@ -27,7 +27,7 @@ AnisoPyramidItem::AnisoPyramidItem() : FormFactorItem(M_TYPE)
     addProperty(P_ALPHA, 60.0)->setToolTip("Dihedral angle in degrees between base and facet");
 }
 
-std::unique_ptr<IFormFactor> AnisoPyramidItem::createFormFactor() const
+std::unique_ptr<IBornFF> AnisoPyramidItem::createFormFactor() const
 {
     return std::make_unique<FormFactorAnisoPyramid>(length(), width(), height(),
                                                     alpha() * Units::deg);
@@ -90,7 +90,7 @@ BarGaussItem::BarGaussItem() : FormFactorItem(M_TYPE)
     addProperty(P_HEIGHT, 13.0)->setToolTip("Height of the box in nanometers");
 }
 
-std::unique_ptr<IFormFactor> BarGaussItem::createFormFactor() const
+std::unique_ptr<IBornFF> BarGaussItem::createFormFactor() const
 {
     return std::make_unique<FormFactorBarGauss>(length(), width(), height());
 }
@@ -140,7 +140,7 @@ BarLorentzItem::BarLorentzItem() : FormFactorItem(M_TYPE)
     addProperty(P_HEIGHT, 13.0)->setToolTip("Height of the box in nanometers");
 }
 
-std::unique_ptr<IFormFactor> BarLorentzItem::createFormFactor() const
+std::unique_ptr<IBornFF> BarLorentzItem::createFormFactor() const
 {
     return std::make_unique<FormFactorBarLorentz>(length(), width(), height());
 }
@@ -190,7 +190,7 @@ BoxItem::BoxItem() : FormFactorItem(M_TYPE)
     addProperty(P_HEIGHT, 13.0)->setToolTip("Height of the box in nanometers");
 }
 
-std::unique_ptr<IFormFactor> BoxItem::createFormFactor() const
+std::unique_ptr<IBornFF> BoxItem::createFormFactor() const
 {
     return std::make_unique<FormFactorBox>(length(), width(), height());
 }
@@ -241,7 +241,7 @@ ConeItem::ConeItem() : FormFactorItem(M_TYPE)
         ->setToolTip("Angle between the base and the side surface in degrees");
 }
 
-std::unique_ptr<IFormFactor> ConeItem::createFormFactor() const
+std::unique_ptr<IBornFF> ConeItem::createFormFactor() const
 {
     return std::make_unique<FormFactorCone>(radius(), height(), alpha() * Units::deg);
 }
@@ -291,7 +291,7 @@ Cone6Item::Cone6Item() : FormFactorItem(M_TYPE)
     addProperty(P_ALPHA, 60.0)->setToolTip("Dihedral angle in degrees between base and facet");
 }
 
-std::unique_ptr<IFormFactor> Cone6Item::createFormFactor() const
+std::unique_ptr<IBornFF> Cone6Item::createFormFactor() const
 {
     return std::make_unique<FormFactorCone6>(baseEdge(), height(), alpha() * Units::deg);
 }
@@ -344,7 +344,7 @@ CuboctahedronItem::CuboctahedronItem() : FormFactorItem(M_TYPE)
     addProperty(P_ALPHA, 60.0)->setToolTip("Dihedral angle in degrees between base and facets");
 }
 
-std::unique_ptr<IFormFactor> CuboctahedronItem::createFormFactor() const
+std::unique_ptr<IBornFF> CuboctahedronItem::createFormFactor() const
 {
     return std::make_unique<FormFactorCuboctahedron>(length(), height(), heightRatio(),
                                                      alpha() * Units::deg);
@@ -406,7 +406,7 @@ CylinderItem::CylinderItem() : FormFactorItem(M_TYPE)
     addProperty(P_HEIGHT, 16.0)->setToolTip("Height of the cylinder in nanometers");
 }
 
-std::unique_ptr<IFormFactor> CylinderItem::createFormFactor() const
+std::unique_ptr<IBornFF> CylinderItem::createFormFactor() const
 {
     return std::make_unique<FormFactorCylinder>(radius(), height());
 }
@@ -452,7 +452,7 @@ DodecahedronItem::DodecahedronItem() : FormFactorItem(M_TYPE)
     addProperty(P_EDGE, 10.0)->setToolTip("Length of the edge in nanometers");
 }
 
-std::unique_ptr<IFormFactor> DodecahedronItem::createFormFactor() const
+std::unique_ptr<IBornFF> DodecahedronItem::createFormFactor() const
 {
     return std::make_unique<FormFactorDodecahedron>(edge());
 }
@@ -480,7 +480,7 @@ EllipsoidalCylinderItem::EllipsoidalCylinderItem() : FormFactorItem(M_TYPE)
     addProperty(P_HEIGHT, 16.0)->setToolTip("Height of the ellipsoidal cylinder in nanometers");
 }
 
-std::unique_ptr<IFormFactor> EllipsoidalCylinderItem::createFormFactor() const
+std::unique_ptr<IBornFF> EllipsoidalCylinderItem::createFormFactor() const
 {
     return std::make_unique<FormFactorEllipsoidalCylinder>(radiusX(), radiusY(), height());
 }
@@ -528,7 +528,7 @@ FullSphereItem::FullSphereItem() : FormFactorItem(M_TYPE)
     addProperty(P_RADIUS, 8.0)->setToolTip("Radius of the sphere in nanometers");
 }
 
-std::unique_ptr<IFormFactor> FullSphereItem::createFormFactor() const
+std::unique_ptr<IBornFF> FullSphereItem::createFormFactor() const
 {
     return std::make_unique<FormFactorFullSphere>(radius());
 }
@@ -558,7 +558,7 @@ FullSpheroidItem::FullSpheroidItem() : FormFactorItem(M_TYPE)
     addProperty(P_HEIGHT, 13.0)->setToolTip("Height of the full spheroid in nanometers");
 }
 
-std::unique_ptr<IFormFactor> FullSpheroidItem::createFormFactor() const
+std::unique_ptr<IBornFF> FullSpheroidItem::createFormFactor() const
 {
     return std::make_unique<FormFactorFullSpheroid>(radius(), height());
 }
@@ -598,7 +598,7 @@ HemiEllipsoidItem::HemiEllipsoidItem() : FormFactorItem(M_TYPE)
     addProperty(P_HEIGHT, 8.0)->setToolTip("Height of the hemi ellipsoid in nanometers");
 }
 
-std::unique_ptr<IFormFactor> HemiEllipsoidItem::createFormFactor() const
+std::unique_ptr<IBornFF> HemiEllipsoidItem::createFormFactor() const
 {
     return std::make_unique<FormFactorHemiEllipsoid>(radiusX(), radiusY(), height());
 }
@@ -646,7 +646,7 @@ IcosahedronItem::IcosahedronItem() : FormFactorItem(M_TYPE)
     addProperty(P_EDGE, 10.0)->setToolTip("Length of the edge in nanometers");
 }
 
-std::unique_ptr<IFormFactor> IcosahedronItem::createFormFactor() const
+std::unique_ptr<IBornFF> IcosahedronItem::createFormFactor() const
 {
     return std::make_unique<FormFactorIcosahedron>(edge());
 }
@@ -671,7 +671,7 @@ Prism3Item::Prism3Item() : FormFactorItem(M_TYPE)
     addProperty(P_HEIGHT, 13.0)->setToolTip("Height in nanometers");
 }
 
-std::unique_ptr<IFormFactor> Prism3Item::createFormFactor() const
+std::unique_ptr<IBornFF> Prism3Item::createFormFactor() const
 {
     return std::make_unique<FormFactorPrism3>(baseEdge(), height());
 }
@@ -708,7 +708,7 @@ Prism6Item::Prism6Item() : FormFactorItem(M_TYPE)
     addProperty(P_HEIGHT, 11.0)->setToolTip("Height in nanometers");
 }
 
-std::unique_ptr<IFormFactor> Prism6Item::createFormFactor() const
+std::unique_ptr<IBornFF> Prism6Item::createFormFactor() const
 {
     return std::make_unique<FormFactorPrism6>(baseEdge(), height());
 }
@@ -747,7 +747,7 @@ PyramidItem::PyramidItem() : FormFactorItem(M_TYPE)
         ->setToolTip("Dihedral angle between the base and a side face in degrees");
 }
 
-std::unique_ptr<IFormFactor> PyramidItem::createFormFactor() const
+std::unique_ptr<IBornFF> PyramidItem::createFormFactor() const
 {
     return std::make_unique<FormFactorPyramid>(baseEdge(), height(), alpha() * Units::deg);
 }
@@ -797,7 +797,7 @@ CosineRippleBoxItem::CosineRippleBoxItem() : FormFactorItem(M_TYPE)
     addProperty(P_HEIGHT, 14.0)->setToolTip("Height of the ripple in nanometers");
 }
 
-std::unique_ptr<IFormFactor> CosineRippleBoxItem::createFormFactor() const
+std::unique_ptr<IBornFF> CosineRippleBoxItem::createFormFactor() const
 {
     return std::make_unique<FormFactorCosineRippleBox>(length(), width(), height());
 }
@@ -847,7 +847,7 @@ CosineRippleGaussItem::CosineRippleGaussItem() : FormFactorItem(M_TYPE)
     addProperty(P_HEIGHT, 14.0)->setToolTip("Height of the ripple in nanometers");
 }
 
-std::unique_ptr<IFormFactor> CosineRippleGaussItem::createFormFactor() const
+std::unique_ptr<IBornFF> CosineRippleGaussItem::createFormFactor() const
 {
     return std::make_unique<FormFactorCosineRippleGauss>(length(), width(), height());
 }
@@ -897,7 +897,7 @@ CosineRippleLorentzItem::CosineRippleLorentzItem() : FormFactorItem(M_TYPE)
     addProperty(P_HEIGHT, 14.0)->setToolTip("Height of the ripple in nanometers");
 }
 
-std::unique_ptr<IFormFactor> CosineRippleLorentzItem::createFormFactor() const
+std::unique_ptr<IBornFF> CosineRippleLorentzItem::createFormFactor() const
 {
     return std::make_unique<FormFactorCosineRippleLorentz>(length(), width(), height());
 }
@@ -949,7 +949,7 @@ SawtoothRippleBoxItem::SawtoothRippleBoxItem() : FormFactorItem(M_TYPE)
         ->setToolTip("Asymmetry length of the triangular profile in nanometers");
 }
 
-std::unique_ptr<IFormFactor> SawtoothRippleBoxItem::createFormFactor() const
+std::unique_ptr<IBornFF> SawtoothRippleBoxItem::createFormFactor() const
 {
     return std::make_unique<FormFactorSawtoothRippleBox>(length(), width(), height(), asymmetry());
 }
@@ -1013,7 +1013,7 @@ SawtoothRippleGaussItem::SawtoothRippleGaussItem() : FormFactorItem(M_TYPE)
         ->setToolTip("Asymmetry length of the triangular profile in nanometers");
 }
 
-std::unique_ptr<IFormFactor> SawtoothRippleGaussItem::createFormFactor() const
+std::unique_ptr<IBornFF> SawtoothRippleGaussItem::createFormFactor() const
 {
     return std::make_unique<FormFactorSawtoothRippleGauss>(length(), width(), height(),
                                                            asymmetry());
@@ -1078,7 +1078,7 @@ SawtoothRippleLorentzItem::SawtoothRippleLorentzItem() : FormFactorItem(M_TYPE)
         ->setToolTip("Asymmetry length of the triangular profile in nanometers");
 }
 
-std::unique_ptr<IFormFactor> SawtoothRippleLorentzItem::createFormFactor() const
+std::unique_ptr<IBornFF> SawtoothRippleLorentzItem::createFormFactor() const
 {
     return std::make_unique<FormFactorSawtoothRippleLorentz>(length(), width(), height(),
                                                              asymmetry());
@@ -1143,7 +1143,7 @@ TetrahedronItem::TetrahedronItem() : FormFactorItem(M_TYPE)
     addProperty(P_ALPHA, 60.0)->setToolTip("Dihedral angle in degrees between base and facet");
 }
 
-std::unique_ptr<IFormFactor> TetrahedronItem::createFormFactor() const
+std::unique_ptr<IBornFF> TetrahedronItem::createFormFactor() const
 {
     return std::make_unique<FormFactorTetrahedron>(baseEdge(), height(), alpha() * Units::deg);
 }
@@ -1193,7 +1193,7 @@ TruncatedCubeItem::TruncatedCubeItem() : FormFactorItem(M_TYPE)
         ->setToolTip("Removed length from each edge of the cube in nanometers");
 }
 
-std::unique_ptr<IFormFactor> TruncatedCubeItem::createFormFactor() const
+std::unique_ptr<IBornFF> TruncatedCubeItem::createFormFactor() const
 {
     return std::make_unique<FormFactorTruncatedCube>(length(), removedLength());
 }
@@ -1231,7 +1231,7 @@ TruncatedSphereItem::TruncatedSphereItem() : FormFactorItem(M_TYPE)
     addProperty(P_REMOVED_TOP, 0.0)->setToolTip("Height of the removed top cap in nanometers");
 }
 
-std::unique_ptr<IFormFactor> TruncatedSphereItem::createFormFactor() const
+std::unique_ptr<IBornFF> TruncatedSphereItem::createFormFactor() const
 {
     return std::make_unique<FormFactorTruncatedSphere>(radius(), height(), removedTop());
 }
@@ -1283,7 +1283,7 @@ TruncatedSpheroidItem::TruncatedSpheroidItem() : FormFactorItem(M_TYPE)
     addProperty(P_REMOVED_TOP, 0.0)->setToolTip("Height of the removed top cap in nanometers");
 }
 
-std::unique_ptr<IFormFactor> TruncatedSpheroidItem::createFormFactor() const
+std::unique_ptr<IBornFF> TruncatedSpheroidItem::createFormFactor() const
 {
     return std::make_unique<FormFactorTruncatedSpheroid>(radius(), height(), heightFlattening(),
                                                          removedTop());
diff --git a/GUI/Model/Sample/FormFactorItems.h b/GUI/Model/Sample/FormFactorItems.h
index 28245b20f1d120cb9b2ac3ee40f7ab537f0be13a..37c870048fb58ff4e7ff4172a5fca34c55e7a6e0 100644
--- a/GUI/Model/Sample/FormFactorItems.h
+++ b/GUI/Model/Sample/FormFactorItems.h
@@ -18,7 +18,7 @@
 #include "GUI/Model/Session/SessionItem.h"
 #include "GUI/Model/Types/DoubleDescriptor.h"
 
-class IFormFactor;
+class IBornFF;
 class GroupInfo;
 
 class BA_CORE_API_ FormFactorItem : public SessionItem {
@@ -26,7 +26,7 @@ protected:
     explicit FormFactorItem(const QString& model_type) : SessionItem(model_type) {}
 
 public:
-    virtual std::unique_ptr<IFormFactor> createFormFactor() const = 0;
+    virtual std::unique_ptr<IBornFF> createFormFactor() const = 0;
     virtual DoubleDescriptors geometryValues() const = 0;
 };
 
@@ -41,7 +41,7 @@ public:
     static constexpr auto M_TYPE{"AnisoPyramid"};
 
     AnisoPyramidItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor length() const;
     DoubleDescriptor width() const;
@@ -69,7 +69,7 @@ public:
     static constexpr auto M_TYPE{"BarGauss"};
 
     BarGaussItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor length() const;
     DoubleDescriptor width() const;
@@ -92,7 +92,7 @@ public:
     static constexpr auto M_TYPE{"BarLorentz"};
 
     BarLorentzItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor length() const;
     DoubleDescriptor width() const;
@@ -115,7 +115,7 @@ public:
     static constexpr auto M_TYPE{"Box"};
 
     BoxItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor length() const;
     DoubleDescriptor width() const;
@@ -138,7 +138,7 @@ public:
     static constexpr auto M_TYPE{"Cone"};
 
     ConeItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor radius() const;
     DoubleDescriptor height() const;
@@ -161,7 +161,7 @@ public:
     static constexpr auto M_TYPE{"Cone6"};
 
     Cone6Item();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor baseEdge() const;
     DoubleDescriptor height() const;
@@ -185,7 +185,7 @@ public:
     static constexpr auto M_TYPE{"Cuboctahedron"};
 
     CuboctahedronItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor length() const;
     DoubleDescriptor height() const;
@@ -212,7 +212,7 @@ public:
     static constexpr auto M_TYPE{"Cylinder"};
 
     CylinderItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor radius() const;
     DoubleDescriptor height() const;
@@ -234,7 +234,7 @@ public:
     static constexpr auto M_TYPE{"Dodecahedron"};
 
     DodecahedronItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor edge() const;
 
@@ -253,7 +253,7 @@ public:
     static constexpr auto M_TYPE{"EllipsoidalCylinder"};
 
     EllipsoidalCylinderItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor radiusX() const;
     DoubleDescriptor radiusY() const;
@@ -274,7 +274,7 @@ public:
     static constexpr auto M_TYPE{"FullSphere"};
 
     FullSphereItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor radius() const;
     void setRadius(double radius);
@@ -292,7 +292,7 @@ public:
     static constexpr auto M_TYPE{"FullSpheroid"};
 
     FullSpheroidItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor radius() const;
     DoubleDescriptor height() const;
@@ -313,7 +313,7 @@ public:
     static constexpr auto M_TYPE{"HemiEllipsoid"};
 
     HemiEllipsoidItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor radiusX() const;
     DoubleDescriptor radiusY() const;
@@ -334,7 +334,7 @@ public:
     static constexpr auto M_TYPE{"Icosahedron"};
 
     IcosahedronItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor edge() const;
 
@@ -352,7 +352,7 @@ public:
     static constexpr auto M_TYPE{"Prism3"};
 
     Prism3Item();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor baseEdge() const;
     DoubleDescriptor height() const;
@@ -372,7 +372,7 @@ public:
     static constexpr auto M_TYPE{"Prism6"};
 
     Prism6Item();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor baseEdge() const;
     DoubleDescriptor height() const;
@@ -393,7 +393,7 @@ public:
     static constexpr auto M_TYPE{"Pyramid"};
 
     PyramidItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor baseEdge() const;
     DoubleDescriptor height() const;
@@ -416,7 +416,7 @@ public:
     static constexpr auto M_TYPE{"CosineRippleBox"};
 
     CosineRippleBoxItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor length() const;
     DoubleDescriptor width() const;
@@ -439,7 +439,7 @@ public:
     static constexpr auto M_TYPE{"CosineRippleGauss"};
 
     CosineRippleGaussItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor length() const;
     DoubleDescriptor width() const;
@@ -462,7 +462,7 @@ public:
     static constexpr auto M_TYPE{"CosineRippleLorentz"};
 
     CosineRippleLorentzItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor length() const;
     DoubleDescriptor width() const;
@@ -486,7 +486,7 @@ public:
     static constexpr auto M_TYPE{"SawtoothRippleBox"};
 
     SawtoothRippleBoxItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor length() const;
     DoubleDescriptor width() const;
@@ -515,7 +515,7 @@ public:
     static constexpr auto M_TYPE{"SawtoothRippleGauss"};
 
     SawtoothRippleGaussItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor length() const;
     DoubleDescriptor width() const;
@@ -544,7 +544,7 @@ public:
     static constexpr auto M_TYPE{"SawtoothRippleLorentz"};
 
     SawtoothRippleLorentzItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor length() const;
     DoubleDescriptor width() const;
@@ -572,7 +572,7 @@ public:
     static constexpr auto M_TYPE{"Tetrahedron"};
 
     TetrahedronItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor baseEdge() const;
     DoubleDescriptor height() const;
@@ -594,7 +594,7 @@ public:
     static constexpr auto M_TYPE{"TruncatedCube"};
 
     TruncatedCubeItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor length() const;
     DoubleDescriptor removedLength() const;
@@ -615,7 +615,7 @@ public:
     static constexpr auto M_TYPE{"TruncatedSphere"};
 
     TruncatedSphereItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor radius() const;
     DoubleDescriptor height() const;
@@ -639,7 +639,7 @@ public:
     static constexpr auto M_TYPE{"TruncatedSpheroid"};
 
     TruncatedSpheroidItem();
-    std::unique_ptr<IFormFactor> createFormFactor() const override;
+    std::unique_ptr<IBornFF> createFormFactor() const override;
 
     DoubleDescriptor radius() const;
     DoubleDescriptor height() const;
diff --git a/GUI/Model/Sample/MesoCrystalItem.cpp b/GUI/Model/Sample/MesoCrystalItem.cpp
index fdfb5dcb2ebc75d80d2eeafb34ec5d3ffdb6b3bf..e424c34621b2710cc1dcc7b83930db718bc169a2 100644
--- a/GUI/Model/Sample/MesoCrystalItem.cpp
+++ b/GUI/Model/Sample/MesoCrystalItem.cpp
@@ -24,7 +24,7 @@
 #include "Sample/Particle/MesoCrystal.h"
 #include "Sample/Particle/Particle.h"
 #include "Sample/Particle/ParticleCoreShell.h"
-#include "Sample/Scattering/IFormFactor.h"
+#include "Sample/Scattering/IBornFF.h"
 
 namespace {
 
@@ -73,7 +73,7 @@ std::unique_ptr<MesoCrystal> MesoCrystalItem::createMesoCrystal() const
                     "No basis particle defined");
     Crystal crystal(*basis, lattice);
 
-    std::unique_ptr<IFormFactor> ff = getOuterShape();
+    std::unique_ptr<IBornFF> ff = getOuterShape();
     if (!ff)
         throw Error("MesoCrystalItem::createMesoCrystal(): "
                     "No outer shape defined");
@@ -116,7 +116,7 @@ std::unique_ptr<IParticle> MesoCrystalItem::getBasis() const
     return {};
 }
 
-std::unique_ptr<IFormFactor> MesoCrystalItem::getOuterShape() const
+std::unique_ptr<IBornFF> MesoCrystalItem::getOuterShape() const
 {
     auto& ff_item = groupItem<FormFactorItem>(MesoCrystalItem::P_OUTER_SHAPE);
     return ff_item.createFormFactor();
diff --git a/GUI/Model/Sample/MesoCrystalItem.h b/GUI/Model/Sample/MesoCrystalItem.h
index 34277bcda7a13c3e2cfc1a3b70d0194a2b155cf6..28b6e6a3b4be628cd0ccac1e4e74d7740b198a10 100644
--- a/GUI/Model/Sample/MesoCrystalItem.h
+++ b/GUI/Model/Sample/MesoCrystalItem.h
@@ -21,7 +21,7 @@
 #include "Sample/Lattice/Lattice3D.h"
 
 class FormFactorItem;
-class IFormFactor;
+class IBornFF;
 class IParticle;
 class MesoCrystal;
 class VectorItem;
@@ -45,7 +45,7 @@ public:
     Lattice3D getLattice() const;
     std::unique_ptr<IParticle> getBasis() const;
 
-    std::unique_ptr<IFormFactor> getOuterShape() const;
+    std::unique_ptr<IBornFF> getOuterShape() const;
     template <typename T> T* setOuterShapeType();
 
     SelectionDescriptor<FormFactorItem*> outerShape();
diff --git a/GUI/Model/Sample/ParticleItem.cpp b/GUI/Model/Sample/ParticleItem.cpp
index 2de69c0c0dae9cbf25aeb98ed46fb0460ce71b85..fe66b8f150c349b93425a57707e19e9dbf0bf75a 100644
--- a/GUI/Model/Sample/ParticleItem.cpp
+++ b/GUI/Model/Sample/ParticleItem.cpp
@@ -23,7 +23,6 @@
 #include "GUI/Model/Session/SessionItemUtils.h"
 #include "GUI/Model/Types/VectorItem.h"
 #include "Sample/Particle/Particle.h"
-#include "Sample/Scattering/IFormFactor.h"
 
 namespace {
 
diff --git a/GUI/View/Realspace/RealSpaceBuilderUtils.cpp b/GUI/View/Realspace/RealSpaceBuilderUtils.cpp
index eefd6907eb4670b114ff80e1d8866281be818170..5364af8d8cc4e9b0266f43df4b833d945a519e48 100644
--- a/GUI/View/Realspace/RealSpaceBuilderUtils.cpp
+++ b/GUI/View/Realspace/RealSpaceBuilderUtils.cpp
@@ -37,13 +37,14 @@ namespace {
 
 const double layerBorderWidth = 10.0;
 
-const IFormFactor* getUnderlyingFormFactor(const IFormFactor* ff)
+const IBornFF* getUnderlyingFormFactor(const IFormFactor* ff)
 {
     // TRUE as long as ff is of IFormFactorDecorator (or its derived) type
     while (dynamic_cast<const IFormFactorDecorator*>(ff))
         ff = dynamic_cast<const IFormFactorDecorator*>(ff)->getFormFactor();
-
-    return ff;
+    const auto* ffb = dynamic_cast<const IBornFF*>(ff);
+    ASSERT(ffb);
+    return ffb;
 }
 
 R3 to_kvector(const QVector3D& origin)
@@ -261,7 +262,7 @@ Particle3DContainer GUI::RealSpace::BuilderUtils::singleParticle3DContainer(
     std::unique_ptr<Particle> P_clone(particle.clone()); // clone of the particle
 
     std::unique_ptr<const IFormFactor> particleff(P_clone->createFormFactor());
-    const auto* ff = getUnderlyingFormFactor(particleff.get());
+    const IBornFF* ff = getUnderlyingFormFactor(particleff.get());
 
     auto particle3D = GUI::View::TransformTo3D::createParticlefromIFormFactor(ff);
     applyParticleTransformations(*P_clone, *particle3D, to_kvector(origin));
diff --git a/GUI/View/Realspace/RealSpaceMesoCrystalUtils.cpp b/GUI/View/Realspace/RealSpaceMesoCrystalUtils.cpp
index 465318921091afca799b88c757114e28f6c03b37..a03fbc413b5ccc97a17c34fc35cc3ac83f27f98e 100644
--- a/GUI/View/Realspace/RealSpaceMesoCrystalUtils.cpp
+++ b/GUI/View/Realspace/RealSpaceMesoCrystalUtils.cpp
@@ -28,7 +28,7 @@ namespace {
 
 const int n = 10; // TODO: Adjust this parameter based on the size of the mesocrystal
 
-bool isPositionInsideMesoCrystal(const IFormFactor* outerShape, R3 positionInside)
+bool isPositionInsideMesoCrystal(const IBornFF* outerShape, R3 positionInside)
 {
     bool check(false);
     if (const auto* ff_AnisoPyramid = dynamic_cast<const FormFactorAnisoPyramid*>(outerShape)) {
diff --git a/GUI/View/Realspace/TransformTo3D.cpp b/GUI/View/Realspace/TransformTo3D.cpp
index 00af42752d186868f796103aa68a2357560ea27b..1420a2e70f0d4db1b836f4f49143326f730de714 100644
--- a/GUI/View/Realspace/TransformTo3D.cpp
+++ b/GUI/View/Realspace/TransformTo3D.cpp
@@ -77,7 +77,7 @@ GUI::View::TransformTo3D::createLayer(const LayerItem& layerItem,
 }
 
 std::unique_ptr<GUI::RealSpace::Particles::Particle>
-GUI::View::TransformTo3D::createParticlefromIFormFactor(const IFormFactor* ff)
+GUI::View::TransformTo3D::createParticlefromIFormFactor(const IBornFF* ff)
 {
     if (const auto* ff_AnisoPyramid = dynamic_cast<const FormFactorAnisoPyramid*>(ff)) {
         double length = ff_AnisoPyramid->getLength();
diff --git a/GUI/View/Realspace/TransformTo3D.h b/GUI/View/Realspace/TransformTo3D.h
index 91b41e418be503ca4c1a07ca40f6c5a637350633..828f2f35afd782eb8ab018cbe957c61b677ccc1a 100644
--- a/GUI/View/Realspace/TransformTo3D.h
+++ b/GUI/View/Realspace/TransformTo3D.h
@@ -24,7 +24,7 @@ class LayerItem;
 class ParticleItem;
 class SessionItem;
 struct SceneGeometry;
-class IFormFactor;
+class IBornFF;
 
 //! Collection of utility functions to build 3D objects from session items.
 
@@ -37,7 +37,7 @@ std::unique_ptr<GUI::RealSpace::Layer> createLayer(const LayerItem& layerItem,
                                                    const QVector3D& origin = {});
 
 std::unique_ptr<GUI::RealSpace::Particles::Particle>
-createParticlefromIFormFactor(const IFormFactor* ff);
+createParticlefromIFormFactor(const IBornFF* ff);
 
 } // namespace GUI::View::TransformTo3D
 
diff --git a/Resample/Coherence/CoherentFFSum.cpp b/Resample/Coherence/CoherentFFSum.cpp
index 4d0639f3f3bdef37f5d9ebec8524f1c0e1117858..6a294c5d9787b930dc3d7df52ea0ee1b639526d7 100644
--- a/Resample/Coherence/CoherentFFSum.cpp
+++ b/Resample/Coherence/CoherentFFSum.cpp
@@ -13,8 +13,6 @@
 //  ************************************************************************************************
 
 #include "Resample/Coherence/CoherentFFSum.h"
-
-#include "Base/Util/Assert.h"
 #include "Resample/Coherence/SumDWBA.h"
 #include "Sample/Scattering/IFormFactor.h"
 #include <utility>
diff --git a/Sample/ComponentBuilder/FormFactorComponents.h b/Sample/ComponentBuilder/FormFactorComponents.h
index 3603ded1c6b1252b5ab962698d05361121ff758c..8f95caeb6f44792288a840a34160ff2065e91e46 100644
--- a/Sample/ComponentBuilder/FormFactorComponents.h
+++ b/Sample/ComponentBuilder/FormFactorComponents.h
@@ -26,7 +26,7 @@
 //! @class FormFactorComponents
 //! @brief Predefined form factors for functional tests.
 
-class FormFactorComponents : public IRegistry<IFormFactor> {
+class FormFactorComponents : public IRegistry<IBornFF> {
 public:
     FormFactorComponents();
 };
diff --git a/Sample/Particle/Crystal.h b/Sample/Particle/Crystal.h
index 46c26f286baddfa381d3168abbc0091fc2974040..e7431fd4b4da2ed8c8760a54879fa69540a4ad31 100644
--- a/Sample/Particle/Crystal.h
+++ b/Sample/Particle/Crystal.h
@@ -19,7 +19,6 @@
 #include <heinz/Vectors3D.h>
 
 class Admixtures;
-class IFormFactor;
 class IParticle;
 class IRotation;
 class Lattice3D;
diff --git a/Sample/Particle/Particle.cpp b/Sample/Particle/Particle.cpp
index ecc0cbeeeca6e9c5c579e185a7d2bc8ce22d3b83..d615922b56b416231168fc2116c3e0f261f1f221 100644
--- a/Sample/Particle/Particle.cpp
+++ b/Sample/Particle/Particle.cpp
@@ -20,12 +20,12 @@
 #include "Sample/Scattering/FormFactorDecoratorMaterial.h"
 #include "Sample/Scattering/Rotations.h"
 
-Particle::Particle(Material material, const IFormFactor& formfactor)
+Particle::Particle(Material material, const IBornFF& formfactor)
     : m_material(std::move(material)), m_formfactor(formfactor.clone())
 {
 }
 
-Particle::Particle(Material material, const IFormFactor& formfactor, const IRotation& rotation)
+Particle::Particle(Material material, const IBornFF& formfactor, const IRotation& rotation)
     : Particle(material, formfactor)
 {
     setRotation(rotation);
diff --git a/Sample/Particle/Particle.h b/Sample/Particle/Particle.h
index 54fc0f41ce7a1b5918239fc0edb533b2afcb5b61..b25718342db84365b5f613e40196c95b9b962b6d 100644
--- a/Sample/Particle/Particle.h
+++ b/Sample/Particle/Particle.h
@@ -17,14 +17,15 @@
 
 #include "Sample/Material/Material.h"
 #include "Sample/Particle/IParticle.h"
+#include "Sample/Scattering/IBornFF.h"
 
 //! A particle with a form factor and refractive index.
 //! @ingroup samples
 
 class Particle : public IParticle {
 public:
-    Particle(Material material, const IFormFactor& formfactor);
-    Particle(Material material, const IFormFactor& formfactor, const IRotation& rotation);
+    Particle(Material material, const IBornFF& formfactor);
+    Particle(Material material, const IBornFF& formfactor, const IRotation& rotation);
     ~Particle() override;
 
     Particle* clone() const override;
@@ -35,11 +36,11 @@ public:
 
     const Material* material() const override { return &m_material; }
 
-    const IFormFactor* formFactor() const { return m_formfactor.get(); }
+    const IBornFF* formFactor() const { return m_formfactor.get(); }
 
 private:
     const Material m_material;
-    std::unique_ptr<const IFormFactor> m_formfactor;
+    std::unique_ptr<const IBornFF> m_formfactor;
 };
 
 #endif // BORNAGAIN_SAMPLE_PARTICLE_PARTICLE_H
diff --git a/Sample/StandardSamples/LayersWithAbsorptionBuilder.cpp b/Sample/StandardSamples/LayersWithAbsorptionBuilder.cpp
index 30a4ae4f107fba4c5a7626631c85d60aeda5d7bd..0ba53851899dc09f87b27e5c7ddd0ec059d50000 100644
--- a/Sample/StandardSamples/LayersWithAbsorptionBuilder.cpp
+++ b/Sample/StandardSamples/LayersWithAbsorptionBuilder.cpp
@@ -19,11 +19,12 @@
 #include "Sample/Multilayer/Layer.h"
 #include "Sample/Multilayer/MultiLayer.h"
 #include "Sample/Particle/Particle.h"
+#include "Sample/Scattering/IBornFF.h"
 #include "Sample/StandardSamples/ReferenceMaterials.h"
 
 using Units::deg;
 
-MultiLayer* ExemplarySamples::createLayersWithAbsorptionWithFF(const IFormFactor* ff)
+MultiLayer* ExemplarySamples::createLayersWithAbsorptionWithFF(const IBornFF* ff)
 {
     const double middle_layer_thickness(60.0);
 
diff --git a/Sample/StandardSamples/LayersWithAbsorptionBuilder.h b/Sample/StandardSamples/LayersWithAbsorptionBuilder.h
index bb78ccd9a1fa151002d8aac234fe39981f706f4c..571e2bb9c7dadb7f6b754cac975e87fb06eb7e10 100644
--- a/Sample/StandardSamples/LayersWithAbsorptionBuilder.h
+++ b/Sample/StandardSamples/LayersWithAbsorptionBuilder.h
@@ -20,10 +20,9 @@
 #ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_LAYERSWITHABSORPTIONBUILDER_H
 #define BORNAGAIN_SAMPLE_STANDARDSAMPLES_LAYERSWITHABSORPTIONBUILDER_H
 
+class IBornFF;
 class MultiLayer;
 
-class IFormFactor;
-
 //! The LayersWithAbsorptionBuilder class generates a multilayer with 3 layers with
 //! absorption (refractive index has imaginary part).
 //!
@@ -32,7 +31,7 @@ class IFormFactor;
 
 namespace ExemplarySamples {
 
-MultiLayer* createLayersWithAbsorptionWithFF(const IFormFactor*);
+MultiLayer* createLayersWithAbsorptionWithFF(const IBornFF*);
 
 } // namespace ExemplarySamples
 
diff --git a/Sample/StandardSamples/ParticleInVacuumBuilder.cpp b/Sample/StandardSamples/ParticleInVacuumBuilder.cpp
index 877b32990b4cf5cb46a3a909ca67519ca6911839..01e1df0083378539f51bdbeb34b8176eb93e1cbe 100644
--- a/Sample/StandardSamples/ParticleInVacuumBuilder.cpp
+++ b/Sample/StandardSamples/ParticleInVacuumBuilder.cpp
@@ -18,11 +18,12 @@
 #include "Sample/Multilayer/Layer.h"
 #include "Sample/Multilayer/MultiLayer.h"
 #include "Sample/Particle/Particle.h"
+#include "Sample/Scattering/IBornFF.h"
 #include "Sample/StandardSamples/ReferenceMaterials.h"
 
 #include <iostream>
 
-MultiLayer* ExemplarySamples::createParticleInVacuumWithFF(const IFormFactor* ff)
+MultiLayer* ExemplarySamples::createParticleInVacuumWithFF(const IBornFF* ff)
 {
     Layer vacuum_layer(refMat::Vacuum);
 
diff --git a/Sample/StandardSamples/ParticleInVacuumBuilder.h b/Sample/StandardSamples/ParticleInVacuumBuilder.h
index 4b85957022d5666adcb8ef70040a7fd81d1b1dd8..e190b764e277111c857359384dbadecb689931ae 100644
--- a/Sample/StandardSamples/ParticleInVacuumBuilder.h
+++ b/Sample/StandardSamples/ParticleInVacuumBuilder.h
@@ -20,17 +20,16 @@
 #ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_PARTICLEINVACUUMBUILDER_H
 #define BORNAGAIN_SAMPLE_STANDARDSAMPLES_PARTICLEINVACUUMBUILDER_H
 
+class IBornFF;
 class MultiLayer;
 
-class IFormFactor;
-
 //! The ParticleInVacuumBuilder class generates a multilayer with single vacuum layer
 //! populated with particles of certain types.
 //! @ingroup standard_samples
 
 namespace ExemplarySamples {
 
-MultiLayer* createParticleInVacuumWithFF(const IFormFactor*);
+MultiLayer* createParticleInVacuumWithFF(const IBornFF*);
 
 } // namespace ExemplarySamples
 
diff --git a/Tests/Functional/Std/StandardTests.h b/Tests/Functional/Std/StandardTests.h
index 24696a82d092f27db0fc169815ba9f6fdd62060b..e15209e3e460b5b6359ccb2a63427ab74ede4fa0 100644
--- a/Tests/Functional/Std/StandardTests.h
+++ b/Tests/Functional/Std/StandardTests.h
@@ -45,7 +45,7 @@ class Std : public ::testing::Test {
 TEST_F(Std, FormFactors)
 {
     for (const std::string& ffname : FormFactorComponents().keys()) {
-        const IFormFactor* ff = FormFactorComponents().getItem(ffname)->clone();
+        const IBornFF* ff = FormFactorComponents().getItem(ffname)->clone();
         ASSERT(ff);
         std::unique_ptr<const MultiLayer> sample(
             ExemplarySamples::createParticleInVacuumWithFF(ff));
@@ -572,7 +572,7 @@ TEST_F(Std, OffSpecularResonator)
 TEST_F(Std, FormFactorsWithAbsorption)
 {
     for (const std::string& ffname : FormFactorComponents().keys()) {
-        const IFormFactor* ff = FormFactorComponents().getItem(ffname)->clone();
+        const IBornFF* ff = FormFactorComponents().getItem(ffname)->clone();
         ASSERT(ff);
         std::unique_ptr<const MultiLayer> sample(
             ExemplarySamples::createLayersWithAbsorptionWithFF(ff));
diff --git a/auto/Wrap/doxygenSample.i b/auto/Wrap/doxygenSample.i
index de56b4c7249ac676e286afc1c9872e226efb3e06..89b3c97451bc03068dd4fa22e6b0baa34a767640 100644
--- a/auto/Wrap/doxygenSample.i
+++ b/auto/Wrap/doxygenSample.i
@@ -4428,10 +4428,10 @@ A particle with a form factor and refractive index.
 C++ includes: Particle.h
 ";
 
-%feature("docstring")  Particle::Particle "Particle::Particle(Material material, const IFormFactor &formfactor)
+%feature("docstring")  Particle::Particle "Particle::Particle(Material material, const IBornFF &formfactor)
 ";
 
-%feature("docstring")  Particle::Particle "Particle::Particle(Material material, const IFormFactor &formfactor, const IRotation &rotation)
+%feature("docstring")  Particle::Particle "Particle::Particle(Material material, const IBornFF &formfactor, const IRotation &rotation)
 ";
 
 %feature("docstring")  Particle::~Particle "Particle::~Particle() override
@@ -4458,7 +4458,7 @@ Creates a sliced form factor for this particle.
 Returns nullptr, unless overwritten to return a specific material. 
 ";
 
-%feature("docstring")  Particle::formFactor "const IFormFactor* Particle::formFactor() const
+%feature("docstring")  Particle::formFactor "const IBornFF* Particle::formFactor() const
 ";
 
 
@@ -5317,7 +5317,7 @@ Returns a body-centered cubic (cI) lattice with edge length a. TODO: Clarify mea
 %feature("docstring")  ExemplarySamples::createLattice1D "MultiLayer * ExemplarySamples::createLattice1D()
 ";
 
-%feature("docstring")  ExemplarySamples::createLayersWithAbsorptionWithFF "MultiLayer * ExemplarySamples::createLayersWithAbsorptionWithFF(const IFormFactor *)
+%feature("docstring")  ExemplarySamples::createLayersWithAbsorptionWithFF "MultiLayer * ExemplarySamples::createLayersWithAbsorptionWithFF(const IBornFF *)
 ";
 
 %feature("docstring")  ExemplarySamples::createLayersWithAbsorptionBySLD "MultiLayer * ExemplarySamples::createLayersWithAbsorptionBySLD()
@@ -5392,7 +5392,7 @@ Returns a body-centered cubic (cI) lattice with edge length a. TODO: Clarify mea
 %feature("docstring")  ExemplarySamples::createLinkedBoxDistribution "MultiLayer * ExemplarySamples::createLinkedBoxDistribution()
 ";
 
-%feature("docstring")  ExemplarySamples::createParticleInVacuumWithFF "MultiLayer * ExemplarySamples::createParticleInVacuumWithFF(const IFormFactor *)
+%feature("docstring")  ExemplarySamples::createParticleInVacuumWithFF "MultiLayer * ExemplarySamples::createParticleInVacuumWithFF(const IBornFF *)
 ";
 
 %feature("docstring")  ExemplarySamples::createHardDisk "MultiLayer * ExemplarySamples::createHardDisk()
diff --git a/auto/Wrap/libBornAgainSample.py b/auto/Wrap/libBornAgainSample.py
index 0a0d4490becc59884964c6b551a36aae4199de9b..2199670e1b406fa9d6557480eaa3a70b1cfa34a3 100644
--- a/auto/Wrap/libBornAgainSample.py
+++ b/auto/Wrap/libBornAgainSample.py
@@ -4528,9 +4528,9 @@ class Particle(IParticle):
 
     def __init__(self, *args):
         r"""
-        __init__(Particle self, Material material, IFormFactor formfactor) -> Particle
-        __init__(Particle self, Material material, IFormFactor formfactor, IRotation rotation) -> Particle
-        Particle::Particle(Material material, const IFormFactor &formfactor, const IRotation &rotation)
+        __init__(Particle self, Material material, IBornFF formfactor) -> Particle
+        __init__(Particle self, Material material, IBornFF formfactor, IRotation rotation) -> Particle
+        Particle::Particle(Material material, const IBornFF &formfactor, const IRotation &rotation)
 
         """
         _libBornAgainSample.Particle_swiginit(self, _libBornAgainSample.new_Particle(*args))
@@ -4584,8 +4584,8 @@ class Particle(IParticle):
 
     def formFactor(self):
         r"""
-        formFactor(Particle self) -> IFormFactor
-        const IFormFactor* Particle::formFactor() const
+        formFactor(Particle self) -> IBornFF
+        const IBornFF* Particle::formFactor() const
 
         """
         return _libBornAgainSample.Particle_formFactor(self)
diff --git a/auto/Wrap/libBornAgainSample_wrap.cpp b/auto/Wrap/libBornAgainSample_wrap.cpp
index d579fbdeb8e989fdf4d6c2c259e09b3df7e81d6e..3f128c46a5ecfbf9762097eebdadd7dd610907ff 100644
--- a/auto/Wrap/libBornAgainSample_wrap.cpp
+++ b/auto/Wrap/libBornAgainSample_wrap.cpp
@@ -43782,7 +43782,7 @@ SWIGINTERN PyObject *MesoCrystal_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObje
 SWIGINTERN PyObject *_wrap_new_Particle__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   SwigValueWrapper< Material > arg1 ;
-  IFormFactor *arg2 = 0 ;
+  IBornFF *arg2 = 0 ;
   void *argp1 ;
   int res1 = 0 ;
   void *argp2 = 0 ;
@@ -43803,15 +43803,15 @@ SWIGINTERN PyObject *_wrap_new_Particle__SWIG_0(PyObject *SWIGUNUSEDPARM(self),
       if (SWIG_IsNewObj(res1)) delete temp;
     }
   }
-  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_IFormFactor,  0  | 0);
+  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_IBornFF,  0  | 0);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Particle" "', argument " "2"" of type '" "IFormFactor const &""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Particle" "', argument " "2"" of type '" "IBornFF const &""'"); 
   }
   if (!argp2) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Particle" "', argument " "2"" of type '" "IFormFactor const &""'"); 
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Particle" "', argument " "2"" of type '" "IBornFF const &""'"); 
   }
-  arg2 = reinterpret_cast< IFormFactor * >(argp2);
-  result = (Particle *)new Particle(arg1,(IFormFactor const &)*arg2);
+  arg2 = reinterpret_cast< IBornFF * >(argp2);
+  result = (Particle *)new Particle(arg1,(IBornFF const &)*arg2);
   resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Particle, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
@@ -43822,7 +43822,7 @@ fail:
 SWIGINTERN PyObject *_wrap_new_Particle__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   SwigValueWrapper< Material > arg1 ;
-  IFormFactor *arg2 = 0 ;
+  IBornFF *arg2 = 0 ;
   IRotation *arg3 = 0 ;
   void *argp1 ;
   int res1 = 0 ;
@@ -43846,14 +43846,14 @@ SWIGINTERN PyObject *_wrap_new_Particle__SWIG_1(PyObject *SWIGUNUSEDPARM(self),
       if (SWIG_IsNewObj(res1)) delete temp;
     }
   }
-  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_IFormFactor,  0  | 0);
+  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_IBornFF,  0  | 0);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Particle" "', argument " "2"" of type '" "IFormFactor const &""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Particle" "', argument " "2"" of type '" "IBornFF const &""'"); 
   }
   if (!argp2) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Particle" "', argument " "2"" of type '" "IFormFactor const &""'"); 
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Particle" "', argument " "2"" of type '" "IBornFF const &""'"); 
   }
-  arg2 = reinterpret_cast< IFormFactor * >(argp2);
+  arg2 = reinterpret_cast< IBornFF * >(argp2);
   res3 = SWIG_ConvertPtr(swig_obj[2], &argp3, SWIGTYPE_p_IRotation,  0  | 0);
   if (!SWIG_IsOK(res3)) {
     SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Particle" "', argument " "3"" of type '" "IRotation const &""'"); 
@@ -43862,7 +43862,7 @@ SWIGINTERN PyObject *_wrap_new_Particle__SWIG_1(PyObject *SWIGUNUSEDPARM(self),
     SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Particle" "', argument " "3"" of type '" "IRotation const &""'"); 
   }
   arg3 = reinterpret_cast< IRotation * >(argp3);
-  result = (Particle *)new Particle(arg1,(IFormFactor const &)*arg2,(IRotation const &)*arg3);
+  result = (Particle *)new Particle(arg1,(IBornFF const &)*arg2,(IRotation const &)*arg3);
   resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Particle, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
@@ -43883,7 +43883,7 @@ SWIGINTERN PyObject *_wrap_new_Particle(PyObject *self, PyObject *args) {
     int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_Material, SWIG_POINTER_NO_NULL | 0);
     _v = SWIG_CheckState(res);
     if (_v) {
-      int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_IFormFactor, SWIG_POINTER_NO_NULL | 0);
+      int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_IBornFF, SWIG_POINTER_NO_NULL | 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         return _wrap_new_Particle__SWIG_0(self, argc, argv);
@@ -43895,7 +43895,7 @@ SWIGINTERN PyObject *_wrap_new_Particle(PyObject *self, PyObject *args) {
     int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_Material, SWIG_POINTER_NO_NULL | 0);
     _v = SWIG_CheckState(res);
     if (_v) {
-      int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_IFormFactor, SWIG_POINTER_NO_NULL | 0);
+      int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_IBornFF, SWIG_POINTER_NO_NULL | 0);
       _v = SWIG_CheckState(res);
       if (_v) {
         int res = SWIG_ConvertPtr(argv[2], 0, SWIGTYPE_p_IRotation, SWIG_POINTER_NO_NULL | 0);
@@ -43910,8 +43910,8 @@ SWIGINTERN PyObject *_wrap_new_Particle(PyObject *self, PyObject *args) {
 fail:
   SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_Particle'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    Particle::Particle(Material,IFormFactor const &)\n"
-    "    Particle::Particle(Material,IFormFactor const &,IRotation const &)\n");
+    "    Particle::Particle(Material,IBornFF const &)\n"
+    "    Particle::Particle(Material,IBornFF const &,IRotation const &)\n");
   return 0;
 }
 
@@ -44072,7 +44072,7 @@ SWIGINTERN PyObject *_wrap_Particle_formFactor(PyObject *SWIGUNUSEDPARM(self), P
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
   Swig::Director *director = 0;
-  IFormFactor *result = 0 ;
+  IBornFF *result = 0 ;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
@@ -44081,13 +44081,13 @@ SWIGINTERN PyObject *_wrap_Particle_formFactor(PyObject *SWIGUNUSEDPARM(self), P
     SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Particle_formFactor" "', argument " "1"" of type '" "Particle const *""'"); 
   }
   arg1 = reinterpret_cast< Particle * >(argp1);
-  result = (IFormFactor *)((Particle const *)arg1)->formFactor();
+  result = (IBornFF *)((Particle const *)arg1)->formFactor();
   director = SWIG_DIRECTOR_CAST(result);
   if (director) {
     resultobj = director->swig_get_self();
     Py_INCREF(resultobj);
   } else {
-    resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_IFormFactor, 0 |  0 );
+    resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_IBornFF, 0 |  0 );
   }
   return resultobj;
 fail:
@@ -69066,9 +69066,9 @@ static PyMethodDef SwigMethods[] = {
 	 { "MesoCrystal_swigregister", MesoCrystal_swigregister, METH_O, NULL},
 	 { "MesoCrystal_swiginit", MesoCrystal_swiginit, METH_VARARGS, NULL},
 	 { "new_Particle", _wrap_new_Particle, METH_VARARGS, "\n"
-		"Particle(Material material, IFormFactor formfactor)\n"
-		"new_Particle(Material material, IFormFactor formfactor, IRotation rotation) -> Particle\n"
-		"Particle::Particle(Material material, const IFormFactor &formfactor, const IRotation &rotation)\n"
+		"Particle(Material material, IBornFF formfactor)\n"
+		"new_Particle(Material material, IBornFF formfactor, IRotation rotation) -> Particle\n"
+		"Particle::Particle(Material material, const IBornFF &formfactor, const IRotation &rotation)\n"
 		"\n"
 		""},
 	 { "delete_Particle", _wrap_delete_Particle, METH_O, "\n"
@@ -69108,8 +69108,8 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		""},
 	 { "Particle_formFactor", _wrap_Particle_formFactor, METH_O, "\n"
-		"Particle_formFactor(Particle self) -> IFormFactor\n"
-		"const IFormFactor* Particle::formFactor() const\n"
+		"Particle_formFactor(Particle self) -> IBornFF\n"
+		"const IBornFF* Particle::formFactor() const\n"
 		"\n"
 		""},
 	 { "Particle_swigregister", Particle_swigregister, METH_O, NULL},