diff --git a/Sample/HardParticle/Bipyramid4.cpp b/Sample/HardParticle/Bipyramid4.cpp
index 4cd0bd5d7307bda793c591f9f90944c0aa234dac..1da6cbd87108c139cb217430162ccd4706e1f939 100644
--- a/Sample/HardParticle/Bipyramid4.cpp
+++ b/Sample/HardParticle/Bipyramid4.cpp
@@ -17,17 +17,17 @@
 #include "Base/Math/Functions.h"
 #include "Sample/HardParticle/Pyramid4.h"
 
-const ff::PolyhedralTopology Bipyramid4::topology = {{{{3, 2, 1, 0}, true},
-                                                      {{0, 1, 5, 4}, false},
-                                                      {{1, 2, 6, 5}, false},
-                                                      {{2, 3, 7, 6}, false},
-                                                      {{3, 0, 4, 7}, false},
-                                                      {{4, 5, 9, 8}, false},
-                                                      {{5, 6, 10, 9}, false},
-                                                      {{6, 7, 11, 10}, false},
-                                                      {{7, 4, 8, 11}, false},
-                                                      {{8, 9, 10, 11}, true}},
-                                                     false};
+const ff::Topology Bipyramid4::topology = {{{{3, 2, 1, 0}, true},
+                                            {{0, 1, 5, 4}, false},
+                                            {{1, 2, 6, 5}, false},
+                                            {{2, 3, 7, 6}, false},
+                                            {{3, 0, 4, 7}, false},
+                                            {{4, 5, 9, 8}, false},
+                                            {{5, 6, 10, 9}, false},
+                                            {{6, 7, 11, 10}, false},
+                                            {{7, 4, 8, 11}, false},
+                                            {{8, 9, 10, 11}, true}},
+                                           false};
 
 Bipyramid4::Bipyramid4(const std::vector<double> P)
     : IFormFactorPolyhedron(P)
diff --git a/Sample/HardParticle/Bipyramid4.h b/Sample/HardParticle/Bipyramid4.h
index 5d31b88c7026dd1c59322d54ecfa46068403fc72..b45d35cb3583202b299efc79cd4033e297cf29a2 100644
--- a/Sample/HardParticle/Bipyramid4.h
+++ b/Sample/HardParticle/Bipyramid4.h
@@ -57,7 +57,7 @@ public:
 #endif // USER_API
 
 private:
-    static const ff::PolyhedralTopology topology;
+    static const ff::Topology topology;
 
     const double& m_length;
     const double& m_height;
diff --git a/Sample/HardParticle/CantellatedCube.cpp b/Sample/HardParticle/CantellatedCube.cpp
index 90385291c9e7cb8f7b30cd991068e9f86bbb826d..118ea85ed29295625c616767af4f6da1c00a4e0b 100644
--- a/Sample/HardParticle/CantellatedCube.cpp
+++ b/Sample/HardParticle/CantellatedCube.cpp
@@ -14,35 +14,35 @@
 
 #include "Sample/HardParticle/CantellatedCube.h"
 
-const ff::PolyhedralTopology CantellatedCube::topology = {{
-                                                              /*  0 */ {{0, 1, 2, 3}, true},
-                                                              /*  1 */ {{0, 8, 5, 1}, true},
-                                                              /*  2 */ {{1, 9, 6, 2}, true},
-                                                              /*  3 */ {{2, 10, 7, 3}, true},
-                                                              /*  4 */ {{3, 11, 4, 0}, true},
-                                                              /*  5 */ {{0, 4, 8}, false},
-                                                              /*  6 */ {{1, 5, 9}, false},
-                                                              /*  7 */ {{2, 6, 10}, false},
-                                                              /*  8 */ {{3, 7, 11}, false},
-                                                              /*  9 */ {{4, 12, 16, 8}, true},
-                                                              /* 10 */ {{5, 13, 17, 9}, true},
-                                                              /* 11 */ {{4, 11, 19, 12}, true},
-                                                              /* 12 */ {{5, 8, 16, 13}, true},
-                                                              /* 13 */ {{7, 10, 18, 15}, true},
-                                                              /* 14 */ {{6, 9, 17, 14}, true},
-                                                              /* 15 */ {{7, 15, 19, 11}, true},
-                                                              /* 16 */ {{6, 14, 18, 10}, true},
-                                                              /* 17 */ {{13, 21, 17}, false},
-                                                              /* 18 */ {{12, 20, 16}, false},
-                                                              /* 19 */ {{15, 23, 19}, false},
-                                                              /* 20 */ {{14, 22, 18}, false},
-                                                              /* 21 */ {{14, 17, 21, 22}, true},
-                                                              /* 22 */ {{13, 16, 20, 21}, true},
-                                                              /* 23 */ {{12, 19, 23, 20}, true},
-                                                              /* 24 */ {{15, 18, 22, 23}, true},
-                                                              /* 25 */ {{20, 23, 22, 21}, true},
-                                                          },
-                                                          true};
+const ff::Topology CantellatedCube::topology = {{
+                                                    /*  0 */ {{0, 1, 2, 3}, true},
+                                                    /*  1 */ {{0, 8, 5, 1}, true},
+                                                    /*  2 */ {{1, 9, 6, 2}, true},
+                                                    /*  3 */ {{2, 10, 7, 3}, true},
+                                                    /*  4 */ {{3, 11, 4, 0}, true},
+                                                    /*  5 */ {{0, 4, 8}, false},
+                                                    /*  6 */ {{1, 5, 9}, false},
+                                                    /*  7 */ {{2, 6, 10}, false},
+                                                    /*  8 */ {{3, 7, 11}, false},
+                                                    /*  9 */ {{4, 12, 16, 8}, true},
+                                                    /* 10 */ {{5, 13, 17, 9}, true},
+                                                    /* 11 */ {{4, 11, 19, 12}, true},
+                                                    /* 12 */ {{5, 8, 16, 13}, true},
+                                                    /* 13 */ {{7, 10, 18, 15}, true},
+                                                    /* 14 */ {{6, 9, 17, 14}, true},
+                                                    /* 15 */ {{7, 15, 19, 11}, true},
+                                                    /* 16 */ {{6, 14, 18, 10}, true},
+                                                    /* 17 */ {{13, 21, 17}, false},
+                                                    /* 18 */ {{12, 20, 16}, false},
+                                                    /* 19 */ {{15, 23, 19}, false},
+                                                    /* 20 */ {{14, 22, 18}, false},
+                                                    /* 21 */ {{14, 17, 21, 22}, true},
+                                                    /* 22 */ {{13, 16, 20, 21}, true},
+                                                    /* 23 */ {{12, 19, 23, 20}, true},
+                                                    /* 24 */ {{15, 18, 22, 23}, true},
+                                                    /* 25 */ {{20, 23, 22, 21}, true},
+                                                },
+                                                true};
 
 CantellatedCube::CantellatedCube(const std::vector<double> P)
     : IFormFactorPolyhedron(P)
diff --git a/Sample/HardParticle/CantellatedCube.h b/Sample/HardParticle/CantellatedCube.h
index d49fc2280459d61aaae0850b11027ba494547e70..84e111af1b22c920513af997a52255b4340332d6 100644
--- a/Sample/HardParticle/CantellatedCube.h
+++ b/Sample/HardParticle/CantellatedCube.h
@@ -51,7 +51,7 @@ public:
 #endif // USER_API
 
 private:
-    static const ff::PolyhedralTopology topology;
+    static const ff::Topology topology;
     const double& m_length;
     const double& m_removed_length;
 };
diff --git a/Sample/HardParticle/Dodecahedron.h b/Sample/HardParticle/Dodecahedron.h
index 1abab77bac3c9d9ae6b41b187649b0e6c679c808..877e4b733fa23dd77c06882866b65ffde4e30b57 100644
--- a/Sample/HardParticle/Dodecahedron.h
+++ b/Sample/HardParticle/Dodecahedron.h
@@ -47,7 +47,7 @@ public:
     std::string validate() const override;
 
 private:
-    static const ff::PolyhedralTopology topology;
+    static const ff::Topology topology;
     const double& m_edge;
 #endif // USER_API
 };
diff --git a/Sample/HardParticle/IFormFactorPolyhedron.cpp b/Sample/HardParticle/IFormFactorPolyhedron.cpp
index df881d5be1fd28c179e99bbd30b045feca03475c..ccba56f69bbdc8d5281ad7b00a08f1c294d871a1 100644
--- a/Sample/HardParticle/IFormFactorPolyhedron.cpp
+++ b/Sample/HardParticle/IFormFactorPolyhedron.cpp
@@ -39,7 +39,7 @@ IFormFactorPolyhedron::~IFormFactorPolyhedron() = default;
 
 //! Called by child classes to set faces and other internal variables.
 
-void IFormFactorPolyhedron::setPolyhedron(const ff::PolyhedralTopology& topology, double z_bottom,
+void IFormFactorPolyhedron::setPolyhedron(const ff::Topology& topology, double z_bottom,
                                           const std::vector<R3>& vertices) const
 {
     m_z_bottom = z_bottom;
diff --git a/Sample/HardParticle/IFormFactorPolyhedron.h b/Sample/HardParticle/IFormFactorPolyhedron.h
index b8d6cba90898f68b256f94bd5b5e0bee87a3e18e..31d58b1e1601b9210c9b4f373d85f0ec4e11837f 100644
--- a/Sample/HardParticle/IFormFactorPolyhedron.h
+++ b/Sample/HardParticle/IFormFactorPolyhedron.h
@@ -17,7 +17,7 @@
 #define BORNAGAIN_SAMPLE_HARDPARTICLE_IFORMFACTORPOLYHEDRON_H
 
 #include "Sample/Particle/IFormFactor.h"
-#include <ff/PolyhedralTopology.h>
+#include <ff/Topology.h>
 #include <memory>
 
 namespace ff {
@@ -46,7 +46,7 @@ public:
     void assert_platonic() const;
 
 protected:
-    void setPolyhedron(const ff::PolyhedralTopology& topology, double z_bottom,
+    void setPolyhedron(const ff::Topology& topology, double z_bottom,
                        const std::vector<R3>& vertices) const;
 
 private:
diff --git a/Sample/HardParticle/Icosahedron.h b/Sample/HardParticle/Icosahedron.h
index 6bd7fac4b567a31de20c61ba7c2242feb2a69861..a3568649c4f3b09269767517b48dec8e1ae0a9f7 100644
--- a/Sample/HardParticle/Icosahedron.h
+++ b/Sample/HardParticle/Icosahedron.h
@@ -47,7 +47,7 @@ public:
     std::string validate() const override;
 
 private:
-    static const ff::PolyhedralTopology topology;
+    static const ff::Topology topology;
     const double& m_edge;
 #endif // USER_API
 };
diff --git a/Sample/HardParticle/PlatonicOctahedron.h b/Sample/HardParticle/PlatonicOctahedron.h
index 9b73baabeed179034782dc34539a23a57c0f2c35..24addbce29d69c52f51f3f7121c4c36665aa9bd6 100644
--- a/Sample/HardParticle/PlatonicOctahedron.h
+++ b/Sample/HardParticle/PlatonicOctahedron.h
@@ -51,7 +51,7 @@ public:
     std::string validate() const override;
 
 private:
-    static const ff::PolyhedralTopology topology;
+    static const ff::Topology topology;
 
     const double& m_edge;
 #endif // USER_API
diff --git a/Sample/HardParticle/PlatonicTetrahedron.h b/Sample/HardParticle/PlatonicTetrahedron.h
index 8eb61942f8e1680bb21e6b966ac9b8f6aab803df..02aec21b29df68de6540ce43292c1660b8d0fd19 100644
--- a/Sample/HardParticle/PlatonicTetrahedron.h
+++ b/Sample/HardParticle/PlatonicTetrahedron.h
@@ -51,7 +51,7 @@ public:
     std::string validate() const override;
 
 private:
-    static const ff::PolyhedralTopology topology;
+    static const ff::Topology topology;
     const double& m_edge;
 #endif // USER_API
 };
diff --git a/Sample/HardParticle/Pyramid2.cpp b/Sample/HardParticle/Pyramid2.cpp
index 5f090685e4f6bb88a5ab972402cfd5021ebe6044..e5cff650504cef26fd37163d2a732e838c028323 100644
--- a/Sample/HardParticle/Pyramid2.cpp
+++ b/Sample/HardParticle/Pyramid2.cpp
@@ -16,13 +16,13 @@
 #include "Base/Math/Constants.h"
 #include "Base/Math/Functions.h"
 
-const ff::PolyhedralTopology Pyramid2::topology = {{{{3, 2, 1, 0}, true},
-                                                    {{0, 1, 5, 4}, false},
-                                                    {{1, 2, 6, 5}, false},
-                                                    {{2, 3, 7, 6}, false},
-                                                    {{3, 0, 4, 7}, false},
-                                                    {{4, 5, 6, 7}, true}},
-                                                   false};
+const ff::Topology Pyramid2::topology = {{{{3, 2, 1, 0}, true},
+                                          {{0, 1, 5, 4}, false},
+                                          {{1, 2, 6, 5}, false},
+                                          {{2, 3, 7, 6}, false},
+                                          {{3, 0, 4, 7}, false},
+                                          {{4, 5, 6, 7}, true}},
+                                         false};
 
 Pyramid2::Pyramid2(const std::vector<double> P)
     : IFormFactorPolyhedron(P)
diff --git a/Sample/HardParticle/Pyramid2.h b/Sample/HardParticle/Pyramid2.h
index 890024936ffbfe2ba1c6f33746e54cc6ed6b57cd..faf0257c54b6a11ed627bde7bb41e3011286f54f 100644
--- a/Sample/HardParticle/Pyramid2.h
+++ b/Sample/HardParticle/Pyramid2.h
@@ -59,7 +59,7 @@ public:
     std::string validate() const override;
 
 private:
-    static const ff::PolyhedralTopology topology;
+    static const ff::Topology topology;
 
     const double& m_length;
     const double& m_width;
diff --git a/Sample/HardParticle/Pyramid3.cpp b/Sample/HardParticle/Pyramid3.cpp
index 91cac117ed7a27b00c12cbd0818759c66880dd2c..aec2e912ca388e3faade4b949afb7ca32ab70dd4 100644
--- a/Sample/HardParticle/Pyramid3.cpp
+++ b/Sample/HardParticle/Pyramid3.cpp
@@ -16,12 +16,12 @@
 #include "Base/Math/Constants.h"
 #include "Base/Math/Functions.h"
 
-const ff::PolyhedralTopology Pyramid3::topology = {{{{2, 1, 0}, false},
-                                                    {{0, 1, 4, 3}, false},
-                                                    {{1, 2, 5, 4}, false},
-                                                    {{2, 0, 3, 5}, false},
-                                                    {{3, 4, 5}, false}},
-                                                   false};
+const ff::Topology Pyramid3::topology = {{{{2, 1, 0}, false},
+                                          {{0, 1, 4, 3}, false},
+                                          {{1, 2, 5, 4}, false},
+                                          {{2, 0, 3, 5}, false},
+                                          {{3, 4, 5}, false}},
+                                         false};
 
 Pyramid3::Pyramid3(const std::vector<double> P)
     : IFormFactorPolyhedron(P)
diff --git a/Sample/HardParticle/Pyramid3.h b/Sample/HardParticle/Pyramid3.h
index ecd00766e71849faf6c4ca2a7ab43c1e90ff5025..7f6e39dfc14f56ac05045b9c0d6bf21c9b626636 100644
--- a/Sample/HardParticle/Pyramid3.h
+++ b/Sample/HardParticle/Pyramid3.h
@@ -54,7 +54,7 @@ public:
     std::string validate() const override;
 
 private:
-    static const ff::PolyhedralTopology topology;
+    static const ff::Topology topology;
     const double& m_base_edge;
     const double& m_height;
     const double& m_alpha;
diff --git a/Sample/HardParticle/Pyramid4.cpp b/Sample/HardParticle/Pyramid4.cpp
index 417e4195ffddb6f65a74ce731c5cae263c27f037..81437173a5aebb3ee101904a20495629ea138f22 100644
--- a/Sample/HardParticle/Pyramid4.cpp
+++ b/Sample/HardParticle/Pyramid4.cpp
@@ -16,15 +16,15 @@
 #include "Base/Math/Constants.h"
 #include "Base/Math/Functions.h"
 
-const ff::PolyhedralTopology Pyramid4::topology = {{
-                                                       {{3, 2, 1, 0}, true}, // TODO -> true
-                                                       {{0, 1, 5, 4}, false},
-                                                       {{1, 2, 6, 5}, false},
-                                                       {{2, 3, 7, 6}, false},
-                                                       {{3, 0, 4, 7}, false},
-                                                       {{4, 5, 6, 7}, true} // TODO -> true
-                                                   },
-                                                   false};
+const ff::Topology Pyramid4::topology = {{
+                                             {{3, 2, 1, 0}, true}, // TODO -> true
+                                             {{0, 1, 5, 4}, false},
+                                             {{1, 2, 6, 5}, false},
+                                             {{2, 3, 7, 6}, false},
+                                             {{3, 0, 4, 7}, false},
+                                             {{4, 5, 6, 7}, true} // TODO -> true
+                                         },
+                                         false};
 
 Pyramid4::Pyramid4(const std::vector<double> P)
     : IFormFactorPolyhedron(P)
diff --git a/Sample/HardParticle/Pyramid4.h b/Sample/HardParticle/Pyramid4.h
index 943278ebc05db0836dfc09adba343a2ff4c332af..eb6627a68f057c7bbd4309215e21792b50051b1e 100644
--- a/Sample/HardParticle/Pyramid4.h
+++ b/Sample/HardParticle/Pyramid4.h
@@ -54,7 +54,7 @@ public:
     std::string validate() const override;
 
 private:
-    static const ff::PolyhedralTopology topology;
+    static const ff::Topology topology;
 
     const double& m_base_edge;
     const double& m_height;
diff --git a/Sample/HardParticle/Pyramid6.cpp b/Sample/HardParticle/Pyramid6.cpp
index 451aa1fa5c7b8877ed9f6262a10749c843fcd901..5dbfd26040d8bbf699c89b32b59f411780b23687 100644
--- a/Sample/HardParticle/Pyramid6.cpp
+++ b/Sample/HardParticle/Pyramid6.cpp
@@ -16,15 +16,15 @@
 #include "Base/Math/Constants.h"
 #include "Base/Math/Functions.h"
 
-const ff::PolyhedralTopology Pyramid6::topology = {{{{5, 4, 3, 2, 1, 0}, true},
-                                                    {{0, 1, 7, 6}, false},
-                                                    {{1, 2, 8, 7}, false},
-                                                    {{2, 3, 9, 8}, false},
-                                                    {{3, 4, 10, 9}, false},
-                                                    {{4, 5, 11, 10}, false},
-                                                    {{5, 0, 6, 11}, false},
-                                                    {{6, 7, 8, 9, 10, 11}, true}},
-                                                   false};
+const ff::Topology Pyramid6::topology = {{{{5, 4, 3, 2, 1, 0}, true},
+                                          {{0, 1, 7, 6}, false},
+                                          {{1, 2, 8, 7}, false},
+                                          {{2, 3, 9, 8}, false},
+                                          {{3, 4, 10, 9}, false},
+                                          {{4, 5, 11, 10}, false},
+                                          {{5, 0, 6, 11}, false},
+                                          {{6, 7, 8, 9, 10, 11}, true}},
+                                         false};
 
 Pyramid6::Pyramid6(const std::vector<double> P)
     : IFormFactorPolyhedron(P)
diff --git a/Sample/HardParticle/Pyramid6.h b/Sample/HardParticle/Pyramid6.h
index 6391a511b0d3239baaa12ee460a5bfe78e50281f..00bebfdebe491a6b1c15734e0e09a58b3fc7523f 100644
--- a/Sample/HardParticle/Pyramid6.h
+++ b/Sample/HardParticle/Pyramid6.h
@@ -54,7 +54,7 @@ public:
     std::string validate() const override;
 
 private:
-    static const ff::PolyhedralTopology topology;
+    static const ff::Topology topology;
     const double& m_base_edge;
     const double& m_height;
     const double& m_alpha;
diff --git a/Sample/HardParticle/TruncatedCube.cpp b/Sample/HardParticle/TruncatedCube.cpp
index d2e32014d782016329ce2269ab65d182eda4b889..5d52990dadfa010c6ad9d3e65c4704db062ef105 100644
--- a/Sample/HardParticle/TruncatedCube.cpp
+++ b/Sample/HardParticle/TruncatedCube.cpp
@@ -14,21 +14,21 @@
 
 #include "Sample/HardParticle/TruncatedCube.h"
 
-const ff::PolyhedralTopology TruncatedCube::topology = {{{{0, 1, 7, 6, 9, 10, 4, 3}, true},
-                                                         {{0, 2, 1}, false},
-                                                         {{3, 4, 5}, false},
-                                                         {{9, 11, 10}, false},
-                                                         {{6, 7, 8}, false},
-                                                         {{0, 3, 5, 17, 15, 12, 14, 2}, true},
-                                                         {{4, 10, 11, 23, 22, 16, 17, 5}, true},
-                                                         {{1, 2, 14, 13, 19, 20, 8, 7}, true},
-                                                         {{6, 8, 20, 18, 21, 23, 11, 9}, true},
-                                                         {{15, 17, 16}, false},
-                                                         {{12, 13, 14}, false},
-                                                         {{18, 20, 19}, false},
-                                                         {{21, 22, 23}, false},
-                                                         {{12, 15, 16, 22, 21, 18, 19, 13}, true}},
-                                                        true};
+const ff::Topology TruncatedCube::topology = {{{{0, 1, 7, 6, 9, 10, 4, 3}, true},
+                                               {{0, 2, 1}, false},
+                                               {{3, 4, 5}, false},
+                                               {{9, 11, 10}, false},
+                                               {{6, 7, 8}, false},
+                                               {{0, 3, 5, 17, 15, 12, 14, 2}, true},
+                                               {{4, 10, 11, 23, 22, 16, 17, 5}, true},
+                                               {{1, 2, 14, 13, 19, 20, 8, 7}, true},
+                                               {{6, 8, 20, 18, 21, 23, 11, 9}, true},
+                                               {{15, 17, 16}, false},
+                                               {{12, 13, 14}, false},
+                                               {{18, 20, 19}, false},
+                                               {{21, 22, 23}, false},
+                                               {{12, 15, 16, 22, 21, 18, 19, 13}, true}},
+                                              true};
 
 TruncatedCube::TruncatedCube(const std::vector<double> P)
     : IFormFactorPolyhedron(P)
diff --git a/Sample/HardParticle/TruncatedCube.h b/Sample/HardParticle/TruncatedCube.h
index d7da06ee2c221ea32c435791adab3572924c1bf2..4dca03b3eae9425109ceebd580bd4e60914f1966 100644
--- a/Sample/HardParticle/TruncatedCube.h
+++ b/Sample/HardParticle/TruncatedCube.h
@@ -50,7 +50,7 @@ public:
     std::string validate() const override;
 
 private:
-    static const ff::PolyhedralTopology topology;
+    static const ff::Topology topology;
     const double& m_length;
     const double& m_removed_length;
 #endif // USER_API