diff --git a/GUI/Model/FromCore/ItemizeSample.cpp b/GUI/Model/FromCore/ItemizeSample.cpp
index 71afd4578a9f9c94e67f08a8f669b5cb16c27adb..e50ab62907112eec0be86eec135787f615489599 100644
--- a/GUI/Model/FromCore/ItemizeSample.cpp
+++ b/GUI/Model/FromCore/ItemizeSample.cpp
@@ -306,12 +306,12 @@ void set_Roughness(LayerItem* parent, const LayerInterface* top_interface)
         return;
     }
 
-    const AutoCorrModel* autoCorr = roughness->autoCorrModel();
+    const AutoCorrModel* autocorrelation = roughness->autocorrelationModel();
     const InterlayerModel* interlayer = roughness->interlayerModel();
 
-    if (const auto* autoCorrItem = dynamic_cast<const BasicAutoCorr*>(autoCorr)) {
-        auto* br = new BasicRoughnessItem(autoCorrItem->sigma(), autoCorrItem->hurst(),
-                                          autoCorrItem->lateralCorrLength());
+    if (const auto* autocorrItem = dynamic_cast<const BasicAutoCorr*>(autocorrelation)) {
+        auto* br = new BasicRoughnessItem(autocorrItem->sigma(), autocorrItem->hurst(),
+                                          autocorrItem->lateralCorrLength());
         set_InterlayerModel(br, interlayer);
         parent->roughnessSelection().setCertainItem(br);
     } else
diff --git a/GUI/Model/ToCore/SampleToCore.cpp b/GUI/Model/ToCore/SampleToCore.cpp
index a636d2d174eaa9e5e9eedf1976e8008a853be65c..9732e5cd6f2f436e6f2488e2c304d25bf72c5d02 100644
--- a/GUI/Model/ToCore/SampleToCore.cpp
+++ b/GUI/Model/ToCore/SampleToCore.cpp
@@ -115,22 +115,23 @@ std::unique_ptr<MultiLayer> GUI::ToCore::itemToSample(const SampleItem& sampleIt
         auto layer = buildLayer(*layerItem);
         ASSERT(layer);
 
-        if (layerItem->isTopLayer()) {
+        const RoughnessItem* roughItem = layerItem->certainRoughness();
+        if (layerItem->isTopLayer() || !roughItem) {
             sample->addLayer(*layer);
             continue;
         }
-        std::unique_ptr<AutoCorrModel> autoCorr;
-        std::unique_ptr<InterlayerModel> interlayer;
-        const RoughnessItem* roughItem = layerItem->certainRoughness();
 
-        if (roughItem)
-            interlayer = roughItem->certainInterlayerModel()->createModel();
+        std::unique_ptr<InterlayerModel> interlayer(
+            roughItem->certainInterlayerModel()->createModel());
+        std::unique_ptr<AutoCorrModel> autocorrelation;
 
         if (const auto* br = dynamic_cast<const BasicRoughnessItem*>(roughItem))
-            autoCorr = std::make_unique<BasicAutoCorr>(br->sigma().dVal(), br->hurst().dVal(),
-                                                       br->lateralCorrelationLength().dVal());
+            autocorrelation = std::make_unique<BasicAutoCorr>(
+                br->sigma().dVal(), br->hurst().dVal(), br->lateralCorrelationLength().dVal());
+        else
+            ASSERT_NEVER;
 
-        LayerRoughness roughness(autoCorr.get(), interlayer.get());
+        LayerRoughness roughness(autocorrelation.get(), interlayer.get());
         sample->addLayerWithTopRoughness(*layer, roughness);
     }
     return sample;
diff --git a/GUI/View/Realspace/RealspaceBuilder.cpp b/GUI/View/Realspace/RealspaceBuilder.cpp
index e97071cfe9a03915d16a42916ae621ffeaf505c3..80f644dd506b403c02e8a24fd1e6fa8ec005717d 100644
--- a/GUI/View/Realspace/RealspaceBuilder.cpp
+++ b/GUI/View/Realspace/RealspaceBuilder.cpp
@@ -94,7 +94,7 @@ std::unique_ptr<const double2d_t> layerRoughnessMap(const LayerItem& layerItem,
                                                     const SceneGeometry& sceneGeometry, int seed)
 {
     std::unique_ptr<const double2d_t> result;
-    std::unique_ptr<AutoCorrModel> autoCorr;
+    std::unique_ptr<AutoCorrModel> autocorrelation;
     std::unique_ptr<InterlayerModel> interlayer;
     const RoughnessItem* roughItem = layerItem.certainRoughness();
 
@@ -102,10 +102,10 @@ std::unique_ptr<const double2d_t> layerRoughnessMap(const LayerItem& layerItem,
         interlayer = roughItem->certainInterlayerModel()->createModel();
 
     if (const auto* br = dynamic_cast<const BasicRoughnessItem*>(roughItem))
-        autoCorr = std::make_unique<BasicAutoCorr>(br->sigma().dVal(), br->hurst().dVal(),
-                                                   br->lateralCorrelationLength().dVal());
+        autocorrelation = std::make_unique<BasicAutoCorr>(br->sigma().dVal(), br->hurst().dVal(),
+                                                          br->lateralCorrelationLength().dVal());
 
-    auto roughness = LayerRoughness(autoCorr.get(), interlayer.get());
+    auto roughness = LayerRoughness(autocorrelation.get(), interlayer.get());
     if (roughness.sigma() == 0)
         return result;
 
diff --git a/Sample/Interface/AutoCorrModels.h b/Sample/Interface/AutoCorrModels.h
index fc4fad3f6d64e1e6b88fab2e69c9fc00032cf08e..58314617ad7413abd46fd723c3e1e6a1a55a76fd 100644
--- a/Sample/Interface/AutoCorrModels.h
+++ b/Sample/Interface/AutoCorrModels.h
@@ -94,6 +94,4 @@ private:
     double m_lateral_corr_length; //!< lateral correlation length of the roughness
 };
 
-using DefaultAutoCorr = BasicAutoCorr;
-
 #endif // BORNAGAIN_SAMPLE_INTERFACE_AUTOCORRMODELS_H
diff --git a/Sample/Interface/InterlayerModels.h b/Sample/Interface/InterlayerModels.h
index a839662552a1b40dd98216994765ca61858672e1..7f51b16cec05a8879aba08db0f10ce25d231b81a 100644
--- a/Sample/Interface/InterlayerModels.h
+++ b/Sample/Interface/InterlayerModels.h
@@ -46,6 +46,4 @@ public:
     std::string className() const override { return "TanhInterlayer"; }
 };
 
-using DefaultInterlayer = TanhInterlayer;
-
 #endif // BORNAGAIN_SAMPLE_INTERFACE_INTERLAYERMODELS_H
diff --git a/Sample/Interface/LayerRoughness.cpp b/Sample/Interface/LayerRoughness.cpp
index 5ff47b3dc327db0aa397b141d59ccbb8da8ec207..8e1198a5b56a8731d8037a297b502bb1f39eb3e9 100644
--- a/Sample/Interface/LayerRoughness.cpp
+++ b/Sample/Interface/LayerRoughness.cpp
@@ -18,46 +18,46 @@
 //! Constructor of layer roughness.
 //! @param autoCorrModel: autocorrelation function and spectrum
 //! @param interlayerModel: shape of the interfacial transition region
-LayerRoughness::LayerRoughness(const AutoCorrModel* autoCorrModel,
-                               const InterlayerModel* interlayerModel)
-    : m_auto_corr_model(autoCorrModel ? autoCorrModel->clone() : nullptr)
-    , m_interlayer_model(interlayerModel ? interlayerModel->clone() : nullptr)
+LayerRoughness::LayerRoughness(const AutoCorrModel* autocorrelation,
+                               const InterlayerModel* interlayer)
+    : m_autocorrelation_model(autocorrelation ? autocorrelation->clone() : nullptr)
+    , m_interlayer_model(interlayer ? interlayer->clone() : nullptr)
 {
-    ASSERT(m_auto_corr_model);
+    ASSERT(m_autocorrelation_model);
     ASSERT(m_interlayer_model);
 }
 
 LayerRoughness* LayerRoughness::clone() const
 {
-    return new LayerRoughness(m_auto_corr_model.get(), m_interlayer_model.get());
+    return new LayerRoughness(m_autocorrelation_model.get(), m_interlayer_model.get());
 }
 
 std::vector<const INode*> LayerRoughness::nodeChildren() const
 {
-    return std::vector<const INode*>() << m_auto_corr_model << m_interlayer_model;
+    return std::vector<const INode*>() << m_autocorrelation_model << m_interlayer_model;
 }
 
 bool LayerRoughness::showInScriptOrGui() const
 {
-    if (auto basicAutocorr = dynamic_cast<const BasicAutoCorr*>(autoCorrModel()))
-        if (basicAutocorr->sigma() == 0)
+    if (auto autocorrelation = dynamic_cast<const BasicAutoCorr*>(autocorrelationModel()))
+        if (autocorrelation->sigma() == 0)
             return false;
 
     return true;
 }
 
-void LayerRoughness::setAutoCorrModel(const AutoCorrModel* autoCorrModel)
+void LayerRoughness::setAutocorrelationModel(const AutoCorrModel* autocorrelation)
 {
-    if (!autoCorrModel)
+    if (!autocorrelation)
         throw std::runtime_error("Autocorrelation model should be provided");
 
-    m_auto_corr_model.reset(autoCorrModel->clone());
+    m_autocorrelation_model.reset(autocorrelation->clone());
 }
 
-void LayerRoughness::setInterlayerModel(const InterlayerModel* interlayerModel)
+void LayerRoughness::setInterlayerModel(const InterlayerModel* interlayer)
 {
-    if (!interlayerModel)
+    if (!interlayer)
         throw std::runtime_error("Interlayer model should be provided");
 
-    m_interlayer_model.reset(interlayerModel->clone());
+    m_interlayer_model.reset(interlayer->clone());
 }
diff --git a/Sample/Interface/LayerRoughness.h b/Sample/Interface/LayerRoughness.h
index d8a9a0b7b1fa06abd56dc46a6f242472f4e077f3..a6a972640f55a4a55fba37cfc86d90137e0c5f4f 100644
--- a/Sample/Interface/LayerRoughness.h
+++ b/Sample/Interface/LayerRoughness.h
@@ -27,7 +27,7 @@
 
 class LayerRoughness : public ISampleNode {
 public:
-    LayerRoughness(const AutoCorrModel* autoCorrModel, const InterlayerModel* interlayerModel);
+    LayerRoughness(const AutoCorrModel* autocorrelation, const InterlayerModel* interlayer);
 
     LayerRoughness* clone() const override;
     std::string className() const final { return "LayerRoughness"; }
@@ -40,24 +40,24 @@ public:
     //! Returns rms of roughness
     double sigma() const
     {
-        return m_auto_corr_model->sigma();
+        return m_autocorrelation_model->sigma();
     }
 
-    void setAutoCorrModel(const AutoCorrModel* autoCorrModel);
-    const AutoCorrModel* autoCorrModel() const
+    void setAutocorrelationModel(const AutoCorrModel* autocorrelation);
+    const AutoCorrModel* autocorrelationModel() const
     {
-        return m_auto_corr_model.get();
+        return m_autocorrelation_model.get();
     }
 
-    void setInterlayerModel(const InterlayerModel* interlayerModel);
+    void setInterlayerModel(const InterlayerModel* interlayer);
     const InterlayerModel* interlayerModel() const
     {
         return m_interlayer_model.get();
     }
 
 private:
-    std::unique_ptr<AutoCorrModel> m_auto_corr_model;    // never nullptr
-    std::unique_ptr<InterlayerModel> m_interlayer_model; // never nullptr
+    std::unique_ptr<AutoCorrModel> m_autocorrelation_model; // never nullptr
+    std::unique_ptr<InterlayerModel> m_interlayer_model;    // never nullptr
 };
 
 #endif // BORNAGAIN_SAMPLE_INTERFACE_LAYERROUGHNESS_H
diff --git a/Sample/Interface/RoughnessMap.cpp b/Sample/Interface/RoughnessMap.cpp
index fba3e4ff4d4c36891b45b12b322fec2b4b2fbd92..d79718316c64e8cddf21420045421dcf1ed5a5ff 100644
--- a/Sample/Interface/RoughnessMap.cpp
+++ b/Sample/Interface/RoughnessMap.cpp
@@ -115,8 +115,8 @@ double2d_t RoughnessMap::mapFromSpectrum() const
     double2d_t psd_mag(m_y_points, std::vector<double>(N));
     for (int i = 0; i < N; i++) {
         for (int j = 0; j < M; j++)
-            psd_mag[j][i] =
-                std::sqrt(m_layerRoughness->autoCorrModel()->spectralFunction(R3(fx[i], fy[j], 0)));
+            psd_mag[j][i] = std::sqrt(
+                m_layerRoughness->autocorrelationModel()->spectralFunction(R3(fx[i], fy[j], 0)));
         for (int j = M; j < m_y_points; j++)
             psd_mag[j][i] = psd_mag[m_y_points - j][i];
     }
diff --git a/Sample/Multilayer/MultiLayer.cpp b/Sample/Multilayer/MultiLayer.cpp
index f78b0c9238c864c773cd6c4c41196e94c8c9d775..8378fe89c1c79b7a1139956d223487652ed7ec63 100644
--- a/Sample/Multilayer/MultiLayer.cpp
+++ b/Sample/Multilayer/MultiLayer.cpp
@@ -74,8 +74,8 @@ void MultiLayer::addLayerExec(const Layer& layer, const LayerRoughness* roughnes
         if (roughness)
             new_roughness = roughness->clone();
         else {
-            DefaultAutoCorr autocorrelation;
-            DefaultInterlayer interlayer;
+            BasicAutoCorr autocorrelation(0, 0, 0);
+            ErfInterlayer interlayer;
             new_roughness = new LayerRoughness(&autocorrelation, &interlayer);
         }
         m_interfaces.push_back(new LayerInterface(last_layer, new_layer, new_roughness));
diff --git a/Sample/StandardSample/FeNiBilayerBuilder.cpp b/Sample/StandardSample/FeNiBilayerBuilder.cpp
index fadcfb948f470d9092d5b9dd7ed95ddce9086661..b7f84828b92dc1d1f1735c4d0e28b388d2a183f4 100644
--- a/Sample/StandardSample/FeNiBilayerBuilder.cpp
+++ b/Sample/StandardSample/FeNiBilayerBuilder.cpp
@@ -41,7 +41,7 @@ public:
     double m_thickness_ni = 40. * Units::angstrom;
     double m_sigma_roughness = 0.;
     int m_effectiveSLD = 0;
-    std::unique_ptr<InterlayerModel> m_interlayer_model;
+    std::unique_ptr<InterlayerModel> m_interlayer_model = std::make_unique<ErfInterlayer>();
 
     Options() = default;
     void setNBilayers(int n) { m_NBilayers = n; }
@@ -113,8 +113,8 @@ std::unique_ptr<MultiLayer> FeNiBilayer::constructSample()
     Layer l_Fe{m_Fe, thicknessFe};
     Layer l_Ni{m_Ni, thicknessNi};
 
-    BasicAutoCorr autoCorr(sigmaRoughness);
-    LayerRoughness roughness{&autoCorr, interlayerModel.get()};
+    BasicAutoCorr autocorrelation(sigmaRoughness);
+    LayerRoughness roughness{&autocorrelation, interlayerModel.get()};
     result->addLayer(Layer{m_ambient});
 
     for (auto i = 0; i < NBilayers; ++i) {
diff --git a/Sample/StandardSample/MagneticLayersBuilder.cpp b/Sample/StandardSample/MagneticLayersBuilder.cpp
index 657d582ee1555ba63f6b51e647b109784807000c..77713010dbb259af9a6aaa60ac4bc89dd2eb5cbe 100644
--- a/Sample/StandardSample/MagneticLayersBuilder.cpp
+++ b/Sample/StandardSample/MagneticLayersBuilder.cpp
@@ -118,6 +118,7 @@ ExemplarySamples::createSimpleMagneticRotationWithRoughness(const std::string& r
 
     if (roughnessKey == "Flat") {
         sigmaRoughness = 0.;
+        interlayerModel = std::make_unique<TanhInterlayer>();
     } else if (roughnessKey == "Tanh") {
         sigmaRoughness = 2. * Units::angstrom;
         interlayerModel = std::make_unique<TanhInterlayer>();
diff --git a/Sample/StandardSample/MultiLayerWithRoughnessBuilder.cpp b/Sample/StandardSample/MultiLayerWithRoughnessBuilder.cpp
index ba578052f750ee6086c483b6aebc9081ff76245d..fca63d796200d418ac0509e8e100b3b28aaf8133 100644
--- a/Sample/StandardSample/MultiLayerWithRoughnessBuilder.cpp
+++ b/Sample/StandardSample/MultiLayerWithRoughnessBuilder.cpp
@@ -38,8 +38,8 @@ MultiLayer* createMultiLayerWithInterlayerModel(const InterlayerModel* interlaye
     Layer partB_layer(part_b_material, thicknessB);
     Layer substrate_layer(substrate_material, 0);
 
-    BasicAutoCorr autoCorr(sigma, hurst, lateralCorrLength);
-    LayerRoughness roughness(&autoCorr, interlayerModel);
+    BasicAutoCorr autocorrelation(sigma, hurst, lateralCorrLength);
+    LayerRoughness roughness(&autocorrelation, interlayerModel);
 
     auto* sample = new MultiLayer;
     sample->addLayer(vacuum_layer);
@@ -55,11 +55,12 @@ MultiLayer* createMultiLayerWithInterlayerModel(const InterlayerModel* interlaye
 
 MultiLayer* ExemplarySamples::createMultiLayerWithRoughness()
 {
-    return createMultiLayerWithInterlayerModel(nullptr);
+    TanhInterlayer interlayer;
+    return createMultiLayerWithInterlayerModel(&interlayer);
 }
 
 MultiLayer* ExemplarySamples::createMultiLayerWithNCRoughness()
 {
-    std::unique_ptr<InterlayerModel> rm = std::make_unique<ErfInterlayer>();
-    return createMultiLayerWithInterlayerModel(rm.get());
+    ErfInterlayer interlayer;
+    return createMultiLayerWithInterlayerModel(&interlayer);
 }
diff --git a/Sample/StandardSample/ResonatorBuilder.cpp b/Sample/StandardSample/ResonatorBuilder.cpp
index d269f9e0244ae4ec75128d5e4e4b1748562c4718..e865fbfce18ad3bc8b0a535ec99bfa2d4f641afe 100644
--- a/Sample/StandardSample/ResonatorBuilder.cpp
+++ b/Sample/StandardSample/ResonatorBuilder.cpp
@@ -37,7 +37,7 @@ MultiLayer* ExemplarySamples::createResonator(double ti_thickness)
     Layer l_D2O(m_D2O);
 
     BasicAutoCorr autocorrelation(2.0, 0.8, 1e4);
-    ErfInterlayer interlayer;
+    TanhInterlayer interlayer;
     LayerRoughness roughness(&autocorrelation, &interlayer);
 
     result->addLayer(l_Si);
diff --git a/Sim/Computation/RoughMultiLayerContribution.cpp b/Sim/Computation/RoughMultiLayerContribution.cpp
index 08dab0dbaa82e2e935001887cf84214dff2a9432..fa35875dcd5b9d347534e4df6afe5cf1ee69b715 100644
--- a/Sim/Computation/RoughMultiLayerContribution.cpp
+++ b/Sim/Computation/RoughMultiLayerContribution.cpp
@@ -105,8 +105,8 @@ double crossCorrSpectralFun(const R3& kvec, const SliceStack& stack, size_t j, s
                             double crossCorrLength)
 {
     const double distance = std::abs(stack[j].hig() - stack[k].hig());
-    const AutoCorrModel* rough_j = stack[j].topRoughness()->autoCorrModel();
-    const AutoCorrModel* rough_k = stack[k].topRoughness()->autoCorrModel();
+    const AutoCorrModel* rough_j = stack[j].topRoughness()->autocorrelationModel();
+    const AutoCorrModel* rough_k = stack[k].topRoughness()->autocorrelationModel();
     const double sigma_j = rough_j->sigma();
     const double sigma_k = rough_k->sigma();
 
@@ -154,7 +154,7 @@ double Compute::roughMultiLayerContribution(const ReSample& re_sample, const Dif
     // auto correlation in each layer (first term in final expression in Eq (3) of Schlomka et al)
     for (size_t i = 0; i < n_interfaces; i++)
         autocorr += std::norm(rterm[i] * sterm[i])
-                    * roughStack[i].topRoughness()->autoCorrModel()->spectralFunction(q);
+                    * roughStack[i].topRoughness()->autocorrelationModel()->spectralFunction(q);
 
     // cross correlation between layers (second term in loc. cit.)
     if (crossCorrLength > 0.0)
diff --git a/Tests/Unit/Sample/LayerRoughnessTest.cpp b/Tests/Unit/Sample/LayerRoughnessTest.cpp
index 792870f24aa0e1708e662d327d84df0062190963..a9a39018e31889bfe22495344a28353b7e29e49f 100644
--- a/Tests/Unit/Sample/LayerRoughnessTest.cpp
+++ b/Tests/Unit/Sample/LayerRoughnessTest.cpp
@@ -10,7 +10,8 @@ TEST(LayerRoughness, LayerRoughnessClone)
     LayerRoughness original(&originalAutocorrelation, &interlayer);
 
     LayerRoughness* clone = original.clone();
-    const BasicAutoCorr* cloneAC = dynamic_cast<const BasicAutoCorr*>(clone->autoCorrModel());
+    const BasicAutoCorr* cloneAC =
+        dynamic_cast<const BasicAutoCorr*>(clone->autocorrelationModel());
 
     EXPECT_TRUE(cloneAC);
     EXPECT_EQ(cloneAC->sigma(), originalAutocorrelation.sigma());
diff --git a/Tests/Unit/Sample/MultiLayerTest.cpp b/Tests/Unit/Sample/MultiLayerTest.cpp
index 011dff8b159830c2d9f208d64839e82db498c795..83654fcb59c481e72ec90a3685b2ae535ae249f8 100644
--- a/Tests/Unit/Sample/MultiLayerTest.cpp
+++ b/Tests/Unit/Sample/MultiLayerTest.cpp
@@ -152,7 +152,7 @@ TEST_F(MultiLayerTest, WithRoughness)
     const LayerRoughness* roughness1 = interface1->roughness();
 
     EXPECT_TRUE(roughness0);
-    auto* roughness0_AC = dynamic_cast<const BasicAutoCorr*>(roughness0->autoCorrModel());
+    auto* roughness0_AC = dynamic_cast<const BasicAutoCorr*>(roughness0->autocorrelationModel());
     EXPECT_TRUE(roughness0_AC);
 
     EXPECT_EQ(1.1, roughness0->sigma());
@@ -190,14 +190,14 @@ TEST_F(MultiLayerTest, CloneWithRoughness)
     EXPECT_TRUE(roughness0);
     EXPECT_TRUE(roughness1);
 
-    auto* roughness0_AC = dynamic_cast<const BasicAutoCorr*>(roughness0->autoCorrModel());
+    auto* roughness0_AC = dynamic_cast<const BasicAutoCorr*>(roughness0->autocorrelationModel());
     EXPECT_TRUE(roughness0_AC);
 
     EXPECT_EQ(2.1, roughness0->sigma());
     EXPECT_EQ(.3, roughness0_AC->hurst());
     EXPECT_EQ(12.1, roughness0_AC->lateralCorrLength());
 
-    auto* roughness1_AC = dynamic_cast<const BasicAutoCorr*>(roughness1->autoCorrModel());
+    auto* roughness1_AC = dynamic_cast<const BasicAutoCorr*>(roughness1->autocorrelationModel());
     EXPECT_TRUE(roughness1_AC);
 
     EXPECT_EQ(1.1, roughness1->sigma());
diff --git a/auto/Examples/fit/specular/PolarizedSpinAsymmetry.py b/auto/Examples/fit/specular/PolarizedSpinAsymmetry.py
index 1e63ac2b624d91487f3e62db30cf0a1bccc0b6d4..4e6ff9bcdea7886c2f5bb534afa5001708004103 100755
--- a/auto/Examples/fit/specular/PolarizedSpinAsymmetry.py
+++ b/auto/Examples/fit/specular/PolarizedSpinAsymmetry.py
@@ -53,8 +53,10 @@ def get_sample(P):
     r_Mafo_autocorr = ba.BasicAutoCorr(P["r_Mafo"]*angstrom)
     r_substrate_autocorr = ba.BasicAutoCorr(P["r_Mao"]*angstrom)
 
-    r_Mafo = ba.LayerRoughness(r_Mafo_autocorr)
-    r_substrate = ba.LayerRoughness(r_substrate_autocorr)
+    interlayer = ba.TanhInterlayer()
+
+    r_Mafo = ba.LayerRoughness(r_Mafo_autocorr, interlayer)
+    r_substrate = ba.LayerRoughness(r_substrate_autocorr, interlayer)
 
     sample = ba.MultiLayer()
     sample.addLayer(ambient_layer)
diff --git a/auto/Examples/fit/specular/Pt_layer_fit.py b/auto/Examples/fit/specular/Pt_layer_fit.py
index 18780ab6c14f6c1742e10f09cf81de6acae7806a..89837d2ebb7ac97562d7fea61074c7bfd6b4d72b 100755
--- a/auto/Examples/fit/specular/Pt_layer_fit.py
+++ b/auto/Examples/fit/specular/Pt_layer_fit.py
@@ -31,11 +31,13 @@ def get_sample(P):
     layer = ba.Layer(material_layer, P["t_pt/nm"])
     substrate_layer = ba.Layer(material_substrate)
 
+    interlayer = ba.TanhInterlayer()
+
     si_autocorr = ba.BasicAutoCorr(P["r_si/nm"])
     pt_autocorr = ba.BasicAutoCorr(P["r_pt/nm"])
 
-    r_si = ba.LayerRoughness(si_autocorr)
-    r_pt = ba.LayerRoughness(pt_autocorr)
+    r_si = ba.LayerRoughness(si_autocorr, interlayer)
+    r_pt = ba.LayerRoughness(pt_autocorr, interlayer)
     
     sample = ba.MultiLayer()
     sample.addLayer(ambient_layer)
diff --git a/auto/Examples/fit/specular/TREFF_Ni_film.py b/auto/Examples/fit/specular/TREFF_Ni_film.py
index 55e500e0b209594e21294535a5e89931f9cc8eda..b35eac8bb27a8bdc07cc82f55557bf551cdec024 100755
--- a/auto/Examples/fit/specular/TREFF_Ni_film.py
+++ b/auto/Examples/fit/specular/TREFF_Ni_film.py
@@ -26,13 +26,15 @@ def get_sample(P):
     # Layers and interfaces
     layer_Ni = ba.Layer(material_Ni_58, P["thickness"])
     
+    interlayer = ba.TanhInterlayer()
+
     Ni_autocorr = ba.BasicAutoCorr(P["sigma_Ni"])
-    roughness_Ni = ba.LayerRoughness(Ni_autocorr)
+    roughness_Ni = ba.LayerRoughness(Ni_autocorr, interlayer)
     
     substrate = ba.Layer(material_SiO2)  
     
     sub_autocorr = ba.BasicAutoCorr(P["sigma_Substrate"])
-    roughness_Substrate = ba.LayerRoughness(sub_autocorr)
+    roughness_Substrate = ba.LayerRoughness(sub_autocorr, interlayer)
 
     sample = ba.MultiLayer()
     sample.addLayer(ba.Layer(vacuum))
diff --git a/auto/Examples/scatter2d/CorrelatedRoughness.py b/auto/Examples/scatter2d/CorrelatedRoughness.py
index 76133172f2495d3b44e33fb8dc91964d85a6f63a..5fbb40e401b18e8f3f1b078d304fc81daffa991c 100755
--- a/auto/Examples/scatter2d/CorrelatedRoughness.py
+++ b/auto/Examples/scatter2d/CorrelatedRoughness.py
@@ -24,7 +24,8 @@ def get_sample():
 
     sigma, hurst, corrLength = 1*nm, 0.3, 5*nm
     autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
-    roughness = ba.LayerRoughness(autocorr)
+    interlayer = ba.TanhInterlayer()
+    roughness = ba.LayerRoughness(autocorr, interlayer)
 
     my_sample = ba.MultiLayer()
 
diff --git a/auto/Examples/scatter2d/FindPeaks.py b/auto/Examples/scatter2d/FindPeaks.py
index d27fcb5faee55fc90d367af1abd5297c5d9fcccd..2fe1c739c9f6875c64214d1cbb3b0d8f488ef2df 100755
--- a/auto/Examples/scatter2d/FindPeaks.py
+++ b/auto/Examples/scatter2d/FindPeaks.py
@@ -43,7 +43,8 @@ def get_sample(lattice_rotation_angle=0*deg):
 
     sigma, hurst, corrLength = 5*nm, 0.5, 10*nm
     autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
-    roughness = ba.LayerRoughness(autocorr)
+    interlayer = ba.TanhInterlayer()
+    roughness = ba.LayerRoughness(autocorr, interlayer)
 
     sample = ba.MultiLayer()
     sample.addLayer(vacuum_layer)
diff --git a/auto/Examples/scatter2d/RectangularGrating.py b/auto/Examples/scatter2d/RectangularGrating.py
index 434e97a5e906857fc6329782d3867b66093b8c17..4a7297a55949fb9c3c0deabb95b966b79d3d004b 100755
--- a/auto/Examples/scatter2d/RectangularGrating.py
+++ b/auto/Examples/scatter2d/RectangularGrating.py
@@ -42,7 +42,8 @@ def get_sample(lattice_rotation_angle=0*deg):
 
     sigma, hurst, corrLength = 5*nm, 0.5, 10*nm
     autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
-    roughness = ba.LayerRoughness(autocorr)
+    interlayer = ba.TanhInterlayer()
+    roughness = ba.LayerRoughness(autocorr, interlayer)
 
     sample = ba.MultiLayer()
     sample.addLayer(vacuum_layer)
diff --git a/auto/Examples/scatter2d/RoughAndSpecular.py b/auto/Examples/scatter2d/RoughAndSpecular.py
index d1fa524ff5e30f64c35029259fdc7a206724151d..0778ea50877c0788de90812416b0e7ca776505ce 100755
--- a/auto/Examples/scatter2d/RoughAndSpecular.py
+++ b/auto/Examples/scatter2d/RoughAndSpecular.py
@@ -13,8 +13,10 @@ def get_sample():
     autocorr_1 = ba.BasicAutoCorr(1.1, 0.3, 5*nm)
     autocorr_2 = ba.BasicAutoCorr(2.3, 0.3, 5*nm)
     
-    roughness_1 = ba.LayerRoughness(autocorr_1)
-    roughness_2 = ba.LayerRoughness(autocorr_2)
+    interlayer = ba.TanhInterlayer()
+
+    roughness_1 = ba.LayerRoughness(autocorr_1, interlayer)
+    roughness_2 = ba.LayerRoughness(autocorr_2, interlayer)
 
     # Define layers
     layer_1 = ba.Layer(material_Vacuum)
diff --git a/auto/Examples/specular/MagneticLayerImperfect.py b/auto/Examples/specular/MagneticLayerImperfect.py
index c729798c67ccbd8c81ee8205fe50f368afc4b6db..d6ca94819b85a96e5de3ed7e0c370c8bbf2ae44f 100755
--- a/auto/Examples/specular/MagneticLayerImperfect.py
+++ b/auto/Examples/specular/MagneticLayerImperfect.py
@@ -27,7 +27,8 @@ def get_sample():
     layer_substrate = ba.Layer(material_substrate)
 
     autocorr = ba.BasicAutoCorr(20*angstrom)
-    roughness = ba.LayerRoughness(autocorr)
+    interlayer = ba.TanhInterlayer()
+    roughness = ba.LayerRoughness(autocorr, interlayer)
 
     # Multilayer
     sample = ba.MultiLayer()
diff --git a/auto/Examples/specular/PolarizedSpinAsymmetry.py b/auto/Examples/specular/PolarizedSpinAsymmetry.py
index 664aba6f26195fd395c379dbd5ad8e66197acab6..57680c65be1a1c3753ed9ec319121dbba0cac6a4 100755
--- a/auto/Examples/specular/PolarizedSpinAsymmetry.py
+++ b/auto/Examples/specular/PolarizedSpinAsymmetry.py
@@ -53,8 +53,10 @@ def get_sample(P):
     r_Mafo_autocorr = ba.BasicAutoCorr(P["r_Mafo"]*angstrom)
     r_sub_autocorr = ba.BasicAutoCorr(P["r_Mao"]*angstrom)
 
-    r_Mafo = ba.LayerRoughness(r_Mafo_autocorr)   
-    r_substrate = ba.LayerRoughness(r_sub_autocorr)
+    interlayer = ba.TanhInterlayer()
+
+    r_Mafo = ba.LayerRoughness(r_Mafo_autocorr, interlayer)   
+    r_substrate = ba.LayerRoughness(r_sub_autocorr, interlayer)
 
     sample = ba.MultiLayer()
     sample.addLayer(ambient_layer)
diff --git a/auto/Examples/specular/SpecularSimulationWithRoughness.py b/auto/Examples/specular/SpecularSimulationWithRoughness.py
index 3b90013d9067cb066285d0e4674ef021df4a9ecf..01e63bf75540daa7079559770d97747620b3fb86 100755
--- a/auto/Examples/specular/SpecularSimulationWithRoughness.py
+++ b/auto/Examples/specular/SpecularSimulationWithRoughness.py
@@ -22,7 +22,8 @@ def get_sample():
     substrate_layer = ba.Layer(material_substrate)
 
     autocorr = ba.BasicAutoCorr(1*nm)
-    roughness = ba.LayerRoughness(autocorr)
+    interlayer = ba.TanhInterlayer()
+    roughness = ba.LayerRoughness(autocorr, interlayer)
 
     # Sample
     sample = ba.MultiLayer()
diff --git a/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetry.py b/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetry.py
index a8745e3f886e959f6d3b65bde62d399f3126defb..5f62b17f15130a9f9bb2420732c214f2cafcba07 100755
--- a/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetry.py
+++ b/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetry.py
@@ -53,8 +53,10 @@ def get_sample(P):
     r_Mafo_autocorr = ba.BasicAutoCorr(P["r_Mafo"]*angstrom)
     r_substrate_autocorr = ba.BasicAutoCorr(P["r_Mao"]*angstrom)
 
-    r_Mafo = ba.LayerRoughness(r_Mafo_autocorr)
-    r_substrate = ba.LayerRoughness(r_substrate_autocorr)
+    interlayer = ba.TanhInterlayer()
+
+    r_Mafo = ba.LayerRoughness(r_Mafo_autocorr, interlayer)
+    r_substrate = ba.LayerRoughness(r_substrate_autocorr, interlayer)
 
     sample = ba.MultiLayer()
     sample.addLayer(ambient_layer)
diff --git a/auto/MiniExamples/fit/specular/Pt_layer_fit.py b/auto/MiniExamples/fit/specular/Pt_layer_fit.py
index 3f63e8197889ec9cb6dd77f02ac15fce3a0cd86b..d2d6e371121540f9190dce950b323e6d640dd2b1 100755
--- a/auto/MiniExamples/fit/specular/Pt_layer_fit.py
+++ b/auto/MiniExamples/fit/specular/Pt_layer_fit.py
@@ -31,11 +31,13 @@ def get_sample(P):
     layer = ba.Layer(material_layer, P["t_pt/nm"])
     substrate_layer = ba.Layer(material_substrate)
 
+    interlayer = ba.TanhInterlayer()
+
     si_autocorr = ba.BasicAutoCorr(P["r_si/nm"])
     pt_autocorr = ba.BasicAutoCorr(P["r_pt/nm"])
 
-    r_si = ba.LayerRoughness(si_autocorr)
-    r_pt = ba.LayerRoughness(pt_autocorr)
+    r_si = ba.LayerRoughness(si_autocorr, interlayer)
+    r_pt = ba.LayerRoughness(pt_autocorr, interlayer)
     
     sample = ba.MultiLayer()
     sample.addLayer(ambient_layer)
diff --git a/auto/MiniExamples/fit/specular/TREFF_Ni_film.py b/auto/MiniExamples/fit/specular/TREFF_Ni_film.py
index 058e5448cbfbfb4993cfa420a41a0af0256728ee..1fb5259df2db5a14c9e2f4615827095dffc436f0 100755
--- a/auto/MiniExamples/fit/specular/TREFF_Ni_film.py
+++ b/auto/MiniExamples/fit/specular/TREFF_Ni_film.py
@@ -26,13 +26,15 @@ def get_sample(P):
     # Layers and interfaces
     layer_Ni = ba.Layer(material_Ni_58, P["thickness"])
     
+    interlayer = ba.TanhInterlayer()
+
     Ni_autocorr = ba.BasicAutoCorr(P["sigma_Ni"])
-    roughness_Ni = ba.LayerRoughness(Ni_autocorr)
+    roughness_Ni = ba.LayerRoughness(Ni_autocorr, interlayer)
     
     substrate = ba.Layer(material_SiO2)  
     
     sub_autocorr = ba.BasicAutoCorr(P["sigma_Substrate"])
-    roughness_Substrate = ba.LayerRoughness(sub_autocorr)
+    roughness_Substrate = ba.LayerRoughness(sub_autocorr, interlayer)
 
     sample = ba.MultiLayer()
     sample.addLayer(ba.Layer(vacuum))
diff --git a/auto/MiniExamples/scatter2d/CorrelatedRoughness.py b/auto/MiniExamples/scatter2d/CorrelatedRoughness.py
index 50cd51489c9478a037e4fef3841fb94081c4ac3c..5ad1dcd15715dbf2d0d5c45c0f7f959cc9e4ea24 100755
--- a/auto/MiniExamples/scatter2d/CorrelatedRoughness.py
+++ b/auto/MiniExamples/scatter2d/CorrelatedRoughness.py
@@ -24,7 +24,8 @@ def get_sample():
 
     sigma, hurst, corrLength = 1*nm, 0.3, 5*nm
     autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
-    roughness = ba.LayerRoughness(autocorr)
+    interlayer = ba.TanhInterlayer()
+    roughness = ba.LayerRoughness(autocorr, interlayer)
 
     my_sample = ba.MultiLayer()
 
diff --git a/auto/MiniExamples/scatter2d/FindPeaks.py b/auto/MiniExamples/scatter2d/FindPeaks.py
index 922ae536087dacf5c0fb629aca0b7d536d11a858..1e49a1f76c0c89832eab17248b52197d6a3b0323 100755
--- a/auto/MiniExamples/scatter2d/FindPeaks.py
+++ b/auto/MiniExamples/scatter2d/FindPeaks.py
@@ -43,7 +43,8 @@ def get_sample(lattice_rotation_angle=0*deg):
 
     sigma, hurst, corrLength = 5*nm, 0.5, 10*nm
     autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
-    roughness = ba.LayerRoughness(autocorr)
+    interlayer = ba.TanhInterlayer()
+    roughness = ba.LayerRoughness(autocorr, interlayer)
 
     sample = ba.MultiLayer()
     sample.addLayer(vacuum_layer)
diff --git a/auto/MiniExamples/scatter2d/RectangularGrating.py b/auto/MiniExamples/scatter2d/RectangularGrating.py
index b459ffbee8cd1227d28e38f0f758341f4d91f7ff..0517cbbacd924aec49c90104e1a2d5766e70e84f 100755
--- a/auto/MiniExamples/scatter2d/RectangularGrating.py
+++ b/auto/MiniExamples/scatter2d/RectangularGrating.py
@@ -42,7 +42,8 @@ def get_sample(lattice_rotation_angle=0*deg):
 
     sigma, hurst, corrLength = 5*nm, 0.5, 10*nm
     autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
-    roughness = ba.LayerRoughness(autocorr)
+    interlayer = ba.TanhInterlayer()
+    roughness = ba.LayerRoughness(autocorr, interlayer)
 
     sample = ba.MultiLayer()
     sample.addLayer(vacuum_layer)
diff --git a/auto/MiniExamples/scatter2d/RoughAndSpecular.py b/auto/MiniExamples/scatter2d/RoughAndSpecular.py
index c916545ca11bc0153dcd651b85d9496aa1b556e6..168a4f13dd8d204833561409ece3ecd8eb73a497 100755
--- a/auto/MiniExamples/scatter2d/RoughAndSpecular.py
+++ b/auto/MiniExamples/scatter2d/RoughAndSpecular.py
@@ -13,8 +13,10 @@ def get_sample():
     autocorr_1 = ba.BasicAutoCorr(1.1, 0.3, 5*nm)
     autocorr_2 = ba.BasicAutoCorr(2.3, 0.3, 5*nm)
     
-    roughness_1 = ba.LayerRoughness(autocorr_1)
-    roughness_2 = ba.LayerRoughness(autocorr_2)
+    interlayer = ba.TanhInterlayer()
+
+    roughness_1 = ba.LayerRoughness(autocorr_1, interlayer)
+    roughness_2 = ba.LayerRoughness(autocorr_2, interlayer)
 
     # Define layers
     layer_1 = ba.Layer(material_Vacuum)
diff --git a/auto/MiniExamples/specular/MagneticLayerImperfect.py b/auto/MiniExamples/specular/MagneticLayerImperfect.py
index c729798c67ccbd8c81ee8205fe50f368afc4b6db..d6ca94819b85a96e5de3ed7e0c370c8bbf2ae44f 100755
--- a/auto/MiniExamples/specular/MagneticLayerImperfect.py
+++ b/auto/MiniExamples/specular/MagneticLayerImperfect.py
@@ -27,7 +27,8 @@ def get_sample():
     layer_substrate = ba.Layer(material_substrate)
 
     autocorr = ba.BasicAutoCorr(20*angstrom)
-    roughness = ba.LayerRoughness(autocorr)
+    interlayer = ba.TanhInterlayer()
+    roughness = ba.LayerRoughness(autocorr, interlayer)
 
     # Multilayer
     sample = ba.MultiLayer()
diff --git a/auto/MiniExamples/specular/PolarizedSpinAsymmetry.py b/auto/MiniExamples/specular/PolarizedSpinAsymmetry.py
index 58343c9f811cc5c6a1c5ffbe36bce2abcec68acc..1c80d957292d647126b1a6b1b0644300aa7e601c 100755
--- a/auto/MiniExamples/specular/PolarizedSpinAsymmetry.py
+++ b/auto/MiniExamples/specular/PolarizedSpinAsymmetry.py
@@ -53,8 +53,10 @@ def get_sample(P):
     r_Mafo_autocorr = ba.BasicAutoCorr(P["r_Mafo"]*angstrom)
     r_sub_autocorr = ba.BasicAutoCorr(P["r_Mao"]*angstrom)
 
-    r_Mafo = ba.LayerRoughness(r_Mafo_autocorr)   
-    r_substrate = ba.LayerRoughness(r_sub_autocorr)
+    interlayer = ba.TanhInterlayer()
+
+    r_Mafo = ba.LayerRoughness(r_Mafo_autocorr, interlayer)   
+    r_substrate = ba.LayerRoughness(r_sub_autocorr, interlayer)
 
     sample = ba.MultiLayer()
     sample.addLayer(ambient_layer)
diff --git a/auto/MiniExamples/specular/SpecularSimulationWithRoughness.py b/auto/MiniExamples/specular/SpecularSimulationWithRoughness.py
index b28dfc6c10c2c96016eb3b792d09976a45816bf0..9f30fcb9cb3a7d331d43d3374a473fea9ab724b5 100755
--- a/auto/MiniExamples/specular/SpecularSimulationWithRoughness.py
+++ b/auto/MiniExamples/specular/SpecularSimulationWithRoughness.py
@@ -22,7 +22,8 @@ def get_sample():
     substrate_layer = ba.Layer(material_substrate)
 
     autocorr = ba.BasicAutoCorr(1*nm)
-    roughness = ba.LayerRoughness(autocorr)
+    interlayer = ba.TanhInterlayer()
+    roughness = ba.LayerRoughness(autocorr, interlayer)
 
     # Sample
     sample = ba.MultiLayer()
diff --git a/auto/Wrap/libBornAgainSample.py b/auto/Wrap/libBornAgainSample.py
index 80453d9416a8fe7474545d4d686931d4d943a85d..5d3c7aabfec42ef6b9d527167967a6ea5bcb8e37 100644
--- a/auto/Wrap/libBornAgainSample.py
+++ b/auto/Wrap/libBornAgainSample.py
@@ -4175,9 +4175,9 @@ class LayerRoughness(ISampleNode):
     thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
     __repr__ = _swig_repr
 
-    def __init__(self, autoCorrModel, interlayerModel):
-        r"""__init__(LayerRoughness self, AutoCorrModel autoCorrModel, InterlayerModel interlayerModel) -> LayerRoughness"""
-        _libBornAgainSample.LayerRoughness_swiginit(self, _libBornAgainSample.new_LayerRoughness(autoCorrModel, interlayerModel))
+    def __init__(self, autocorrelation, interlayer):
+        r"""__init__(LayerRoughness self, AutoCorrModel autocorrelation, InterlayerModel interlayer) -> LayerRoughness"""
+        _libBornAgainSample.LayerRoughness_swiginit(self, _libBornAgainSample.new_LayerRoughness(autocorrelation, interlayer))
 
     def clone(self):
         r"""clone(LayerRoughness self) -> LayerRoughness"""
@@ -4195,17 +4195,17 @@ class LayerRoughness(ISampleNode):
         r"""sigma(LayerRoughness self) -> double"""
         return _libBornAgainSample.LayerRoughness_sigma(self)
 
-    def setAutoCorrModel(self, autoCorrModel):
-        r"""setAutoCorrModel(LayerRoughness self, AutoCorrModel autoCorrModel)"""
-        return _libBornAgainSample.LayerRoughness_setAutoCorrModel(self, autoCorrModel)
+    def setAutocorrelationModel(self, autocorrelation):
+        r"""setAutocorrelationModel(LayerRoughness self, AutoCorrModel autocorrelation)"""
+        return _libBornAgainSample.LayerRoughness_setAutocorrelationModel(self, autocorrelation)
 
-    def autoCorrModel(self):
-        r"""autoCorrModel(LayerRoughness self) -> AutoCorrModel"""
-        return _libBornAgainSample.LayerRoughness_autoCorrModel(self)
+    def autocorrelationModel(self):
+        r"""autocorrelationModel(LayerRoughness self) -> AutoCorrModel"""
+        return _libBornAgainSample.LayerRoughness_autocorrelationModel(self)
 
-    def setInterlayerModel(self, interlayerModel):
-        r"""setInterlayerModel(LayerRoughness self, InterlayerModel interlayerModel)"""
-        return _libBornAgainSample.LayerRoughness_setInterlayerModel(self, interlayerModel)
+    def setInterlayerModel(self, interlayer):
+        r"""setInterlayerModel(LayerRoughness self, InterlayerModel interlayer)"""
+        return _libBornAgainSample.LayerRoughness_setInterlayerModel(self, interlayer)
 
     def interlayerModel(self):
         r"""interlayerModel(LayerRoughness self) -> InterlayerModel"""
diff --git a/auto/Wrap/libBornAgainSample_wrap.cpp b/auto/Wrap/libBornAgainSample_wrap.cpp
index a4bd281efb3faaa8fa173e13a9569151f0c248a7..437cf51c939802a2942c1919b57e477e05d44367 100644
--- a/auto/Wrap/libBornAgainSample_wrap.cpp
+++ b/auto/Wrap/libBornAgainSample_wrap.cpp
@@ -50671,7 +50671,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_LayerRoughness_setAutoCorrModel(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_LayerRoughness_setAutocorrelationModel(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   LayerRoughness *arg1 = (LayerRoughness *) 0 ;
   AutoCorrModel *arg2 = (AutoCorrModel *) 0 ;
@@ -50682,20 +50682,20 @@ SWIGINTERN PyObject *_wrap_LayerRoughness_setAutoCorrModel(PyObject *self, PyObj
   PyObject *swig_obj[2] ;
   
   (void)self;
-  if (!SWIG_Python_UnpackTuple(args, "LayerRoughness_setAutoCorrModel", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "LayerRoughness_setAutocorrelationModel", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_LayerRoughness, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "LayerRoughness_setAutoCorrModel" "', argument " "1"" of type '" "LayerRoughness *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "LayerRoughness_setAutocorrelationModel" "', argument " "1"" of type '" "LayerRoughness *""'"); 
   }
   arg1 = reinterpret_cast< LayerRoughness * >(argp1);
   res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_AutoCorrModel, 0 |  0 );
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "LayerRoughness_setAutoCorrModel" "', argument " "2"" of type '" "AutoCorrModel const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "LayerRoughness_setAutocorrelationModel" "', argument " "2"" of type '" "AutoCorrModel const *""'"); 
   }
   arg2 = reinterpret_cast< AutoCorrModel * >(argp2);
   {
     try {
-      (arg1)->setAutoCorrModel((AutoCorrModel const *)arg2);
+      (arg1)->setAutocorrelationModel((AutoCorrModel const *)arg2);
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -50711,7 +50711,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_LayerRoughness_autoCorrModel(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_LayerRoughness_autocorrelationModel(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   LayerRoughness *arg1 = (LayerRoughness *) 0 ;
   void *argp1 = 0 ;
@@ -50724,12 +50724,12 @@ SWIGINTERN PyObject *_wrap_LayerRoughness_autoCorrModel(PyObject *self, PyObject
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_LayerRoughness, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "LayerRoughness_autoCorrModel" "', argument " "1"" of type '" "LayerRoughness const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "LayerRoughness_autocorrelationModel" "', argument " "1"" of type '" "LayerRoughness const *""'"); 
   }
   arg1 = reinterpret_cast< LayerRoughness * >(argp1);
   {
     try {
-      result = (AutoCorrModel *)((LayerRoughness const *)arg1)->autoCorrModel();
+      result = (AutoCorrModel *)((LayerRoughness const *)arg1)->autocorrelationModel();
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -73505,14 +73505,14 @@ static PyMethodDef SwigMethods[] = {
 	 { "ParticleLayout_setAbsoluteWeight", _wrap_ParticleLayout_setAbsoluteWeight, METH_VARARGS, "ParticleLayout_setAbsoluteWeight(ParticleLayout self, double weight)"},
 	 { "ParticleLayout_swigregister", ParticleLayout_swigregister, METH_O, NULL},
 	 { "ParticleLayout_swiginit", ParticleLayout_swiginit, METH_VARARGS, NULL},
-	 { "new_LayerRoughness", _wrap_new_LayerRoughness, METH_VARARGS, "new_LayerRoughness(AutoCorrModel autoCorrModel, InterlayerModel interlayerModel) -> LayerRoughness"},
+	 { "new_LayerRoughness", _wrap_new_LayerRoughness, METH_VARARGS, "new_LayerRoughness(AutoCorrModel autocorrelation, InterlayerModel interlayer) -> LayerRoughness"},
 	 { "LayerRoughness_clone", _wrap_LayerRoughness_clone, METH_O, "LayerRoughness_clone(LayerRoughness self) -> LayerRoughness"},
 	 { "LayerRoughness_className", _wrap_LayerRoughness_className, METH_O, "LayerRoughness_className(LayerRoughness self) -> std::string"},
 	 { "LayerRoughness_nodeChildren", _wrap_LayerRoughness_nodeChildren, METH_O, "LayerRoughness_nodeChildren(LayerRoughness self) -> swig_dummy_type_const_inode_vector"},
 	 { "LayerRoughness_sigma", _wrap_LayerRoughness_sigma, METH_O, "LayerRoughness_sigma(LayerRoughness self) -> double"},
-	 { "LayerRoughness_setAutoCorrModel", _wrap_LayerRoughness_setAutoCorrModel, METH_VARARGS, "LayerRoughness_setAutoCorrModel(LayerRoughness self, AutoCorrModel autoCorrModel)"},
-	 { "LayerRoughness_autoCorrModel", _wrap_LayerRoughness_autoCorrModel, METH_O, "LayerRoughness_autoCorrModel(LayerRoughness self) -> AutoCorrModel"},
-	 { "LayerRoughness_setInterlayerModel", _wrap_LayerRoughness_setInterlayerModel, METH_VARARGS, "LayerRoughness_setInterlayerModel(LayerRoughness self, InterlayerModel interlayerModel)"},
+	 { "LayerRoughness_setAutocorrelationModel", _wrap_LayerRoughness_setAutocorrelationModel, METH_VARARGS, "LayerRoughness_setAutocorrelationModel(LayerRoughness self, AutoCorrModel autocorrelation)"},
+	 { "LayerRoughness_autocorrelationModel", _wrap_LayerRoughness_autocorrelationModel, METH_O, "LayerRoughness_autocorrelationModel(LayerRoughness self) -> AutoCorrModel"},
+	 { "LayerRoughness_setInterlayerModel", _wrap_LayerRoughness_setInterlayerModel, METH_VARARGS, "LayerRoughness_setInterlayerModel(LayerRoughness self, InterlayerModel interlayer)"},
 	 { "LayerRoughness_interlayerModel", _wrap_LayerRoughness_interlayerModel, METH_O, "LayerRoughness_interlayerModel(LayerRoughness self) -> InterlayerModel"},
 	 { "delete_LayerRoughness", _wrap_delete_LayerRoughness, METH_O, "delete_LayerRoughness(LayerRoughness self)"},
 	 { "LayerRoughness_swigregister", LayerRoughness_swigregister, METH_O, NULL},
@@ -75305,7 +75305,7 @@ static void *_p_SquareLattice2DTo_p_Lattice2D(void *x, int *SWIGUNUSEDPARM(newme
 static swig_type_info _swigt__p_AutoCorrModel = {"_p_AutoCorrModel", "AutoCorrModel *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_BarGauss = {"_p_BarGauss", "BarGauss *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_BarLorentz = {"_p_BarLorentz", "BarLorentz *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_BasicAutoCorr = {"_p_BasicAutoCorr", "DefaultAutoCorr *|BasicAutoCorr *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_BasicAutoCorr = {"_p_BasicAutoCorr", "BasicAutoCorr *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_BasicLattice2D = {"_p_BasicLattice2D", "BasicLattice2D *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Bipyramid4 = {"_p_Bipyramid4", "Bipyramid4 *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Box = {"_p_Box", "Box *", 0, 0, (void*)0, 0};
@@ -75409,7 +75409,7 @@ static swig_type_info _swigt__p_Sphere = {"_p_Sphere", "Sphere *", 0, 0, (void*)
 static swig_type_info _swigt__p_Spheroid = {"_p_Spheroid", "Spheroid *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_SpinMatrix = {"_p_SpinMatrix", "SpinMatrix *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_SquareLattice2D = {"_p_SquareLattice2D", "SquareLattice2D *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_TanhInterlayer = {"_p_TanhInterlayer", "DefaultInterlayer *|TanhInterlayer *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_TanhInterlayer = {"_p_TanhInterlayer", "TanhInterlayer *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_TruncatedCube = {"_p_TruncatedCube", "TruncatedCube *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_TruncatedSphere = {"_p_TruncatedSphere", "TruncatedSphere *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_TruncatedSpheroid = {"_p_TruncatedSpheroid", "TruncatedSpheroid *", 0, 0, (void*)0, 0};
diff --git a/rawEx/fit/specular/PolarizedSpinAsymmetry.py b/rawEx/fit/specular/PolarizedSpinAsymmetry.py
index 7d7942af640b8606383250ae232c109e3101f74b..38c8c12a151d96e52d83893d73adbbd5acf57455 100755
--- a/rawEx/fit/specular/PolarizedSpinAsymmetry.py
+++ b/rawEx/fit/specular/PolarizedSpinAsymmetry.py
@@ -53,8 +53,10 @@ def get_sample(P):
     r_Mafo_autocorr = ba.BasicAutoCorr(P["r_Mafo"]*angstrom)
     r_substrate_autocorr = ba.BasicAutoCorr(P["r_Mao"]*angstrom)
 
-    r_Mafo = ba.LayerRoughness(r_Mafo_autocorr)
-    r_substrate = ba.LayerRoughness(r_substrate_autocorr)
+    interlayer = ba.TanhInterlayer()
+
+    r_Mafo = ba.LayerRoughness(r_Mafo_autocorr, interlayer)
+    r_substrate = ba.LayerRoughness(r_substrate_autocorr, interlayer)
 
     sample = ba.MultiLayer()
     sample.addLayer(ambient_layer)
diff --git a/rawEx/fit/specular/Pt_layer_fit.py b/rawEx/fit/specular/Pt_layer_fit.py
index 9841504b2bfa34361ba2834e5f2b267b73707617..ac477b7114e59858554cff81b49db5a5a8d659ee 100755
--- a/rawEx/fit/specular/Pt_layer_fit.py
+++ b/rawEx/fit/specular/Pt_layer_fit.py
@@ -31,11 +31,13 @@ def get_sample(P):
     layer = ba.Layer(material_layer, P["t_pt/nm"])
     substrate_layer = ba.Layer(material_substrate)
 
+    interlayer = ba.TanhInterlayer()
+
     si_autocorr = ba.BasicAutoCorr(P["r_si/nm"])
     pt_autocorr = ba.BasicAutoCorr(P["r_pt/nm"])
 
-    r_si = ba.LayerRoughness(si_autocorr)
-    r_pt = ba.LayerRoughness(pt_autocorr)
+    r_si = ba.LayerRoughness(si_autocorr, interlayer)
+    r_pt = ba.LayerRoughness(pt_autocorr, interlayer)
     
     sample = ba.MultiLayer()
     sample.addLayer(ambient_layer)
diff --git a/rawEx/fit/specular/TREFF_Ni_film.py b/rawEx/fit/specular/TREFF_Ni_film.py
index b0c7415dc09d573e1e2148c3c00310c4b66b25c6..5f7f7a3d3e05669f1f191fbfe0346a466e02b756 100755
--- a/rawEx/fit/specular/TREFF_Ni_film.py
+++ b/rawEx/fit/specular/TREFF_Ni_film.py
@@ -26,13 +26,15 @@ def get_sample(P):
     # Layers and interfaces
     layer_Ni = ba.Layer(material_Ni_58, P["thickness"])
     
+    interlayer = ba.TanhInterlayer()
+
     Ni_autocorr = ba.BasicAutoCorr(P["sigma_Ni"])
-    roughness_Ni = ba.LayerRoughness(Ni_autocorr)
+    roughness_Ni = ba.LayerRoughness(Ni_autocorr, interlayer)
     
     substrate = ba.Layer(material_SiO2)  
     
     sub_autocorr = ba.BasicAutoCorr(P["sigma_Substrate"])
-    roughness_Substrate = ba.LayerRoughness(sub_autocorr)
+    roughness_Substrate = ba.LayerRoughness(sub_autocorr, interlayer)
 
     sample = ba.MultiLayer()
     sample.addLayer(ba.Layer(vacuum))
diff --git a/rawEx/scatter2d/CorrelatedRoughness.py b/rawEx/scatter2d/CorrelatedRoughness.py
index a0bf429d78131acf27a249aa5e66e467c21c3b06..1dc37e5fd6f2b6975c77668b297f86543bb4503f 100755
--- a/rawEx/scatter2d/CorrelatedRoughness.py
+++ b/rawEx/scatter2d/CorrelatedRoughness.py
@@ -24,7 +24,8 @@ def get_sample():
 
     sigma, hurst, corrLength = 1*nm, 0.3, 5*nm
     autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
-    roughness = ba.LayerRoughness(autocorr)
+    interlayer = ba.TanhInterlayer()
+    roughness = ba.LayerRoughness(autocorr, interlayer)
 
     my_sample = ba.MultiLayer()
 
diff --git a/rawEx/scatter2d/FindPeaks.py b/rawEx/scatter2d/FindPeaks.py
index 59725f342eb1e008260d15c662d11b789d1c1bb0..32cfd1b5a7c66f532d55be5f2594d69d2d9142bd 100755
--- a/rawEx/scatter2d/FindPeaks.py
+++ b/rawEx/scatter2d/FindPeaks.py
@@ -43,7 +43,8 @@ def get_sample(lattice_rotation_angle=0*deg):
 
     sigma, hurst, corrLength = 5*nm, 0.5, 10*nm
     autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
-    roughness = ba.LayerRoughness(autocorr)
+    interlayer = ba.TanhInterlayer()
+    roughness = ba.LayerRoughness(autocorr, interlayer)
 
     sample = ba.MultiLayer()
     sample.addLayer(vacuum_layer)
diff --git a/rawEx/scatter2d/RectangularGrating.py b/rawEx/scatter2d/RectangularGrating.py
index 523245918d91c8c79406d307294faaeb38c77bdf..73aa566f5c6846047d434236461f8ca7432c2c81 100755
--- a/rawEx/scatter2d/RectangularGrating.py
+++ b/rawEx/scatter2d/RectangularGrating.py
@@ -42,7 +42,8 @@ def get_sample(lattice_rotation_angle=0*deg):
 
     sigma, hurst, corrLength = 5*nm, 0.5, 10*nm
     autocorr = ba.BasicAutoCorr(sigma, hurst, corrLength)
-    roughness = ba.LayerRoughness(autocorr)
+    interlayer = ba.TanhInterlayer()
+    roughness = ba.LayerRoughness(autocorr, interlayer)
 
     sample = ba.MultiLayer()
     sample.addLayer(vacuum_layer)
diff --git a/rawEx/scatter2d/RoughAndSpecular.py b/rawEx/scatter2d/RoughAndSpecular.py
index a822197f227e9ffe4cb224a13a2e7828eaa9aad9..cd5c2743247231f5e453212cfb98051ba1964ea8 100755
--- a/rawEx/scatter2d/RoughAndSpecular.py
+++ b/rawEx/scatter2d/RoughAndSpecular.py
@@ -13,8 +13,10 @@ def get_sample():
     autocorr_1 = ba.BasicAutoCorr(1.1, 0.3, 5*nm)
     autocorr_2 = ba.BasicAutoCorr(2.3, 0.3, 5*nm)
     
-    roughness_1 = ba.LayerRoughness(autocorr_1)
-    roughness_2 = ba.LayerRoughness(autocorr_2)
+    interlayer = ba.TanhInterlayer()
+
+    roughness_1 = ba.LayerRoughness(autocorr_1, interlayer)
+    roughness_2 = ba.LayerRoughness(autocorr_2, interlayer)
 
     # Define layers
     layer_1 = ba.Layer(material_Vacuum)
diff --git a/rawEx/specular/MagneticLayerImperfect.py b/rawEx/specular/MagneticLayerImperfect.py
index c729798c67ccbd8c81ee8205fe50f368afc4b6db..d6ca94819b85a96e5de3ed7e0c370c8bbf2ae44f 100755
--- a/rawEx/specular/MagneticLayerImperfect.py
+++ b/rawEx/specular/MagneticLayerImperfect.py
@@ -27,7 +27,8 @@ def get_sample():
     layer_substrate = ba.Layer(material_substrate)
 
     autocorr = ba.BasicAutoCorr(20*angstrom)
-    roughness = ba.LayerRoughness(autocorr)
+    interlayer = ba.TanhInterlayer()
+    roughness = ba.LayerRoughness(autocorr, interlayer)
 
     # Multilayer
     sample = ba.MultiLayer()
diff --git a/rawEx/specular/PolarizedSpinAsymmetry.py b/rawEx/specular/PolarizedSpinAsymmetry.py
index 62f8acdcddf94dbfad2ea4617f3d3150c115c1e1..cc786ceafcd7e58f4c2abbacb40eb220b2874c66 100755
--- a/rawEx/specular/PolarizedSpinAsymmetry.py
+++ b/rawEx/specular/PolarizedSpinAsymmetry.py
@@ -53,8 +53,10 @@ def get_sample(P):
     r_Mafo_autocorr = ba.BasicAutoCorr(P["r_Mafo"]*angstrom)
     r_sub_autocorr = ba.BasicAutoCorr(P["r_Mao"]*angstrom)
 
-    r_Mafo = ba.LayerRoughness(r_Mafo_autocorr)   
-    r_substrate = ba.LayerRoughness(r_sub_autocorr)
+    interlayer = ba.TanhInterlayer()
+
+    r_Mafo = ba.LayerRoughness(r_Mafo_autocorr, interlayer)   
+    r_substrate = ba.LayerRoughness(r_sub_autocorr, interlayer)
 
     sample = ba.MultiLayer()
     sample.addLayer(ambient_layer)
diff --git a/rawEx/specular/SpecularSimulationWithRoughness.py b/rawEx/specular/SpecularSimulationWithRoughness.py
index 3280c8dcfd329a65802ce368d7c5b0486fc7d6a3..5284943a3fa3d9d5ac7a2a39d3cae406b81f563e 100755
--- a/rawEx/specular/SpecularSimulationWithRoughness.py
+++ b/rawEx/specular/SpecularSimulationWithRoughness.py
@@ -22,7 +22,8 @@ def get_sample():
     substrate_layer = ba.Layer(material_substrate)
 
     autocorr = ba.BasicAutoCorr(1*nm)
-    roughness = ba.LayerRoughness(autocorr)
+    interlayer = ba.TanhInterlayer()
+    roughness = ba.LayerRoughness(autocorr, interlayer)
 
     # Sample
     sample = ba.MultiLayer()