diff --git a/Core/Computation/SpecularComputationTerm.cpp b/Core/Computation/SpecularComputationTerm.cpp
index 0b6549fa31d4ebe8cb9eb480c7a1212126ae9a69..dcf8f59d914b65846e788134a64a6e087b5fa7da 100644
--- a/Core/Computation/SpecularComputationTerm.cpp
+++ b/Core/Computation/SpecularComputationTerm.cpp
@@ -2,7 +2,6 @@
 #include "ILayerRTCoefficients.h"
 #include "MultiLayer.h"
 #include "SpecularComputationTerm.h"
-#include "SpecularData.h"
 #include "SpecularSimulationElement.h"
 
 SpecularComputationTerm::SpecularComputationTerm(const MultiLayer* p_multi_layer,
@@ -18,13 +17,8 @@ void SpecularComputationTerm::eval(ProgressHandler*, const SpecularElementIter&
         return;
 
     for (auto it = begin_it; it != end_it; ++it)
-        if (it->isCalculated())
-            evalSingle(it);
-}
-
-void SpecularComputationTerm::evalSingle(const SpecularElementIter& iter) const
-{
-    mp_fresnel_map->fillSpecularData(*iter);
-    const ILayerRTCoefficients& layer_data = iter->specularData()[0];
-    iter->setIntensity(std::norm(layer_data.getScalarR()));
+        if (it->isCalculated()) {
+            double intensity = std::norm(mp_fresnel_map->getInCoefficients(*it, 0)->getScalarR());
+            it->setIntensity(intensity);
+        }
 }
diff --git a/Core/Computation/SpecularComputationTerm.h b/Core/Computation/SpecularComputationTerm.h
index e314868554eef5e84fbf3670a08eb51ed6726bf5..1cedf7febfa157975d0bf5fdb88c40a1332d3939 100644
--- a/Core/Computation/SpecularComputationTerm.h
+++ b/Core/Computation/SpecularComputationTerm.h
@@ -37,8 +37,6 @@ public:
               const SpecularElementIter& end_it) const;
 
 private:
-    void evalSingle(const SpecularElementIter& iter) const;
-
     const MultiLayer* mp_multilayer;
     const IFresnelMap* mp_fresnel_map;
 };
diff --git a/Core/Multilayer/IFresnelMap.h b/Core/Multilayer/IFresnelMap.h
index 2fb2901439cbd5c5332e6104ef50d69a67f77f70..7563b2d286a73c138e6fed906be9754e7469bdb1 100644
--- a/Core/Multilayer/IFresnelMap.h
+++ b/Core/Multilayer/IFresnelMap.h
@@ -50,9 +50,6 @@ public:
         return getCoefficients(sim_element.getKi(), layer_index);
     }
 
-    //! Fills simulation element specular data
-    virtual void fillSpecularData(SpecularSimulationElement& sim_element) const = 0;
-
     //! Sets the multilayer to be used for the Fresnel calculations.
     virtual void setMultilayer(const MultiLayer& multilayer);
 
diff --git a/Core/Multilayer/MatrixFresnelMap.cpp b/Core/Multilayer/MatrixFresnelMap.cpp
index f8034f01d26799ebe345b7acb17e50bd63240a2c..8da0be8e05aa1352cc652b09d4dd0e2ae3343d80 100644
--- a/Core/Multilayer/MatrixFresnelMap.cpp
+++ b/Core/Multilayer/MatrixFresnelMap.cpp
@@ -19,7 +19,6 @@
 #include "SimulationElement.h"
 #include "SpecularData.h"
 #include "SpecularMagnetic.h"
-#include "SpecularSimulationElement.h"
 
 namespace {
 std::vector<MatrixRTCoefficients> calculateCoefficients(const MultiLayer& multilayer,
@@ -41,16 +40,6 @@ MatrixFresnelMap::getOutCoefficients(const SimulationElement& sim_element, size_
                            m_hash_table_out);
 }
 
-void MatrixFresnelMap::fillSpecularData(SpecularSimulationElement& sim_element) const
-{
-    const auto& kvec = sim_element.getKi();
-    if (m_use_cache)
-        sim_element.setSpecular(
-            SpecularData(getCoefficientsFromCache(kvec, *mP_multilayer, m_hash_table_in)));
-    else
-        sim_element.setSpecular(SpecularData(calculateCoefficients(*mP_multilayer, kvec)));
-}
-
 std::unique_ptr<const ILayerRTCoefficients>
 MatrixFresnelMap::getCoefficients(const kvector_t& kvec, size_t layer_index) const
 {
diff --git a/Core/Multilayer/MatrixFresnelMap.h b/Core/Multilayer/MatrixFresnelMap.h
index a1dbd8dccd7d58b0983fcdcf9395966549050aa1..c1047bcf069f1fcdf2002592bc7b72357b6ba0a6 100644
--- a/Core/Multilayer/MatrixFresnelMap.h
+++ b/Core/Multilayer/MatrixFresnelMap.h
@@ -33,7 +33,7 @@ class BA_CORE_API_ MatrixFresnelMap : public IFresnelMap
 {
 public:
     MatrixFresnelMap();
-    virtual ~MatrixFresnelMap();
+    ~MatrixFresnelMap() override;
 
     std::unique_ptr<const ILayerRTCoefficients>
     getOutCoefficients(const SimulationElement& sim_element,
@@ -41,9 +41,6 @@ public:
 
     void setMultilayer(const MultiLayer& multilayer) final override;
 
-    //! Fills simulation element specular data
-    void fillSpecularData(SpecularSimulationElement& sim_element) const override;
-
     typedef std::unordered_map<kvector_t, std::vector<MatrixRTCoefficients>, HashKVector>
         CoefficientHash;
 
diff --git a/Core/Multilayer/ScalarFresnelMap.cpp b/Core/Multilayer/ScalarFresnelMap.cpp
index 2d3fdf806b0a5d243c5733e44b4bfc2e555d37ca..4034889e238081abfcc9b8d85b8e2922195125f9 100644
--- a/Core/Multilayer/ScalarFresnelMap.cpp
+++ b/Core/Multilayer/ScalarFresnelMap.cpp
@@ -17,7 +17,6 @@
 #include "ScalarRTCoefficients.h"
 #include "SimulationElement.h"
 #include "SpecularMatrix.h"
-#include "SpecularSimulationElement.h"
 #include "Vectors3D.h"
 
 namespace {
@@ -37,15 +36,6 @@ ScalarFresnelMap::getOutCoefficients(const SimulationElement& sim_element, size_
     return getCoefficients(-sim_element.getMeanKf(), layer_index);
 }
 
-void ScalarFresnelMap::fillSpecularData(SpecularSimulationElement& sim_element) const
-{
-    const auto& kvec = sim_element.getKi();
-    if (m_use_cache)
-        sim_element.setSpecular(SpecularData(getCoefficientsFromCache(kvec)));
-    else
-        sim_element.setSpecular(SpecularData(calculateCoefficients(*mP_multilayer, kvec)));
-}
-
 std::unique_ptr<const ILayerRTCoefficients>
 ScalarFresnelMap::getCoefficients(const kvector_t& kvec, size_t layer_index) const
 {
diff --git a/Core/Multilayer/ScalarFresnelMap.h b/Core/Multilayer/ScalarFresnelMap.h
index 7a5a81e28449eb3b38ffacfc429c709a38a4977e..57c357d98b5e3918a18604b629d9f39f146b87a1 100644
--- a/Core/Multilayer/ScalarFresnelMap.h
+++ b/Core/Multilayer/ScalarFresnelMap.h
@@ -39,9 +39,6 @@ public:
     getOutCoefficients(const SimulationElement& sim_element,
                        size_t layer_index) const override;
 
-    //! Fills simulation element specular data
-    void fillSpecularData(SpecularSimulationElement& sim_element) const override;
-
 private:
     std::unique_ptr<const ILayerRTCoefficients> getCoefficients(const kvector_t& kvec,
                                                                 size_t layer_index) const override;