diff --git a/Core/Assembly/DecouplingApproximationStrategy.h b/Core/Assembly/DecouplingApproximationStrategy.h
index 6f7d92d8f1cf431e1c9f4c59143be787bab287f4..94d6cb25374dbf7c2993ac5cb09a6e3709b7425b 100644
--- a/Core/Assembly/DecouplingApproximationStrategy.h
+++ b/Core/Assembly/DecouplingApproximationStrategy.h
@@ -18,6 +18,8 @@
 
 #include "IInterferenceFunctionStrategy.h"
 
+class SimulationElement;
+
 //! @class DecouplingApproximationStrategy
 //! @ingroup algorithms_internal
 //! @brief Strategy for implementing decoupling approximation
@@ -30,21 +32,19 @@ public:
     {
     }
 
-    virtual ~DecouplingApproximationStrategy()
-    {
-    }
+    virtual ~DecouplingApproximationStrategy() {}
 
     void init(const SafePointerVector<FormFactorInfo> &form_factor_infos,
               const IInterferenceFunction& iff);
 
 protected:
     //! Evaluates the intensity for given list of evaluated form factors
-    double evaluateForList(const class SimulationElement& sim_element,
+    double evaluateForList(const SimulationElement& sim_element,
                            const std::vector<complex_t> &ff_list) const;
 
     //! Evaluates the intensity for given list of evaluated form factors
     //! in the presence of polarization of beam and detector
-    double evaluateForMatrixList(const class SimulationElement& sim_element,
+    double evaluateForMatrixList(const SimulationElement& sim_element,
                                  const MatrixFFVector &ff_list) const;
 
 private:
diff --git a/Core/Assembly/IInterferenceFunctionStrategy.h b/Core/Assembly/IInterferenceFunctionStrategy.h
index 2a2996885f0c2f5df57e32329a2bce90156f8314..a60f569600c2a79b3442caf189cdc91cfe81a550 100644
--- a/Core/Assembly/IInterferenceFunctionStrategy.h
+++ b/Core/Assembly/IInterferenceFunctionStrategy.h
@@ -25,8 +25,11 @@
 #include <vector>
 #include <memory>
 
-// Forward declaration to prevent IntegratorMCMiser.h to be parsed for Python API:
 template <class T> class IntegratorMCMiser;
+class FormFactorInfo;
+class IInterferenceFunction;
+class LayerSpecularInfo;
+class SimulationElement;
 
 //! @class IInterferenceFunctionStrategy
 //! @ingroup algorithms_internal
@@ -40,55 +43,55 @@ public:
     virtual ~IInterferenceFunctionStrategy();
 
     //! Initializes the object with form factors and interference functions
-    virtual void init(const SafePointerVector<class FormFactorInfo>& form_factor_infos,
-                      const class IInterferenceFunction& iff);
+    virtual void init(const SafePointerVector<FormFactorInfo>& form_factor_infos,
+                      const IInterferenceFunction& iff);
 
     //! Provides the R,T coefficients information
-    void setSpecularInfo(const class LayerSpecularInfo& specular_info);
+    void setSpecularInfo(const LayerSpecularInfo& specular_info);
 
     //! Calculates the intensity for scalar particles/interactions
-    double evaluate(const class SimulationElement& sim_element) const;
+    double evaluate(const SimulationElement& sim_element) const;
 
     //! Calculates the intensity in the presence of polarization of beam and detector
-    double evaluatePol(const class SimulationElement& sim_element) const;
+    double evaluatePol(const SimulationElement& sim_element) const;
 
 protected:
     //! Evaluates the intensity for given list of evaluated form factors
-    virtual double evaluateForList(const class SimulationElement& sim_element,
+    virtual double evaluateForList(const SimulationElement& sim_element,
                                    const std::vector<complex_t>& ff_list) const = 0;
 
     //! Evaluates the intensity for given list of evaluated form factors
     //! in the presence of polarization of beam and detector
-    virtual double evaluateForMatrixList(const class SimulationElement& sim_element,
+    virtual double evaluateForMatrixList(const SimulationElement& sim_element,
                                          const MatrixFFVector& ff_list) const = 0;
 
     //! Returns q-vector from k_i and the bin of k_f
     cvector_t getQ(const cvector_t k_i, const Bin1DCVector& k_f_bin) const;
 
-    SafePointerVector<class FormFactorInfo> m_ff_infos;          //!< form factor info
-    std::unique_ptr<class IInterferenceFunction> mP_iff;       //!< interference function
+    SafePointerVector<FormFactorInfo> m_ff_infos;          //!< form factor info
+    std::unique_ptr<IInterferenceFunction> mP_iff;       //!< interference function
     SimulationOptions m_options;                     //!< simulation options
-    std::unique_ptr<class LayerSpecularInfo> mP_specular_info; //!< R and T coefficients for DWBA
+    std::unique_ptr<LayerSpecularInfo> mP_specular_info; //!< R and T coefficients for DWBA
 
 private:
     //! Constructs one list of evaluated form factors to be used in subsequent
     //! calculations
-    void calculateFormFactorList(const class SimulationElement& sim_element) const;
+    void calculateFormFactorList(const SimulationElement& sim_element) const;
 
     //! Constructs lists of evaluated form factors to be used in subsequent
     //! calculations
-    void calculateFormFactorLists(const class SimulationElement& sim_element) const;
+    void calculateFormFactorLists(const SimulationElement& sim_element) const;
 
     //! Clears the cached form factor lists
     void clearFormFactorLists() const;
 
     //! Perform a Monte Carlo integration over the bin for the evaluation of the
     //! intensity
-    double MCIntegratedEvaluate(const class SimulationElement& sim_element) const;
+    double MCIntegratedEvaluate(const SimulationElement& sim_element) const;
 
     //! Perform a Monte Carlo integration over the bin for the evaluation of the
     //! polarized intensity
-    double MCIntegratedEvaluatePol(const class SimulationElement& sim_element) const;
+    double MCIntegratedEvaluatePol(const SimulationElement& sim_element) const;
 
     //! Evaluate for fixed angles
     double evaluate_for_fixed_angles(double* fractions, size_t dim, void* params) const;
@@ -103,8 +106,8 @@ private:
     mutable MatrixFFVector m_ff_pol;
 
 #ifndef SWIG
-    std::unique_ptr<IntegratorMCMiser<class IInterferenceFunctionStrategy>> mP_integrator;
-    std::unique_ptr<IntegratorMCMiser<class IInterferenceFunctionStrategy>> mP_integrator_pol;
+    std::unique_ptr<IntegratorMCMiser<IInterferenceFunctionStrategy>> mP_integrator;
+    std::unique_ptr<IntegratorMCMiser<IInterferenceFunctionStrategy>> mP_integrator_pol;
 #endif
 };
 
diff --git a/Core/Assembly/ILayout.h b/Core/Assembly/ILayout.h
index 84f6714a2787917203d1fda42f4c434d90c69720..41a3a1588d05fbb8b515610c4b4cc5695478325e 100644
--- a/Core/Assembly/ILayout.h
+++ b/Core/Assembly/ILayout.h
@@ -19,6 +19,10 @@
 #include "ICompositeSample.h"
 #include "SafePointerVector.h"
 
+class IAbstractParticle;
+class IParticle;
+class ISampleVisitor;
+
 //! @class ILayout
 //! @ingroup samples_internal
 //! @brief Interface to equip a sample component with various properties.
@@ -34,7 +38,7 @@ public:
     virtual ILayout* clone() const=0;
 
     //! calls the ISampleVisitor's visit method
-    virtual void accept(class ISampleVisitor* visitor) const=0;
+    virtual void accept(ISampleVisitor* visitor) const=0;
 
     //! Returns a clone with inverted magnetic fields
     virtual ILayout* cloneInvertB() const=0;
@@ -43,11 +47,11 @@ public:
     virtual size_t getNumberOfParticles() const=0;
 
     //! Returns information about particle with index
-    virtual const class IAbstractParticle* getParticle(size_t index) const=0;
+    virtual const IAbstractParticle* getParticle(size_t index) const=0;
 
     //! Returns information on all particles (type and abundance)
     //! and generates new particles if an IAbstractParticle denotes a collection
-    virtual SafePointerVector<const class IParticle> getParticles() const=0;
+    virtual SafePointerVector<const IParticle> getParticles() const=0;
 
     /// Get abundance fraction of particle with index
     virtual double getAbundanceOfParticle(size_t index) const=0;
diff --git a/Core/Assembly/InterferenceFunction2DParaCrystal.h b/Core/Assembly/InterferenceFunction2DParaCrystal.h
index af82b07432d48befb46ddab055679ca7a969714d..ad5520d904220a02e18cebb1d758295136b3dca4 100644
--- a/Core/Assembly/InterferenceFunction2DParaCrystal.h
+++ b/Core/Assembly/InterferenceFunction2DParaCrystal.h
@@ -22,8 +22,8 @@
 #include "Lattice2DParameters.h"
 #include <memory>
 
-// Forward declaration to prevent IntegratorReal.h to be parsed for Python API:
 template <class T> class IntegratorReal;
+class IFTDistribution2D;
 
 //! @class InterferenceFunction2DParaCrystal
 //! @ingroup interference
@@ -65,14 +65,14 @@ public:
     //! lattice directions.
     //! @param pdf_1: probability distribution in first lattice direction
     //! @param pdf_2: probability distribution in second lattice direction
-    void setProbabilityDistributions(const class IFTDistribution2D& pdf_1,
-                                     const class IFTDistribution2D& pdf_2);
+    void setProbabilityDistributions(const IFTDistribution2D& pdf_1,
+                                     const IFTDistribution2D& pdf_2);
 
 
     virtual double evaluate(const kvector_t q) const;
 
     std::vector<double> getDomainSizes() const;
-    std::vector<const class IFTDistribution2D*> getProbabilityDistributions() const;
+    std::vector<const IFTDistribution2D*> getProbabilityDistributions() const;
 
     void setIntegrationOverXi(bool integrate_xi) { m_integrate_xi = integrate_xi; }
     bool getIntegrationOverXi() const { return m_integrate_xi; }
@@ -96,7 +96,7 @@ protected:
 
     Lattice2DParameters m_lattice_params; //!< Lattice parameters
     bool m_integrate_xi; //!< Integrate over the orientation xi
-    class IFTDistribution2D* m_pdfs[2];
+    IFTDistribution2D* m_pdfs[2];
     double m_damping_length; //!< Damping length for removing delta function singularity at q=0.
     bool m_use_damping_length; //!< Flag that determines if the damping length should be used.
     double m_domain_sizes[2]; //!< Coherence domain sizes
diff --git a/Core/Assembly/ParticleLayout.h b/Core/Assembly/ParticleLayout.h
index a2908bde5d61fa47570130a6563dd1782c82112f..29e016bc1a26f1fe73cff72b4b0176081139460c 100644
--- a/Core/Assembly/ParticleLayout.h
+++ b/Core/Assembly/ParticleLayout.h
@@ -20,6 +20,11 @@
 #include "Vectors3D.h"
 #include <memory>
 
+class IAbstractParticle;
+class IInterferenceFunction;
+class IParticle;
+class ISampleVisitor;
+
 //! @class ParticleLayout
 //! @ingroup samples
 //! @brief Decorator class that adds particles to ISample objects
@@ -28,8 +33,8 @@ class BA_CORE_API_ ParticleLayout : public ILayout
 {
 public:
     ParticleLayout();
-    ParticleLayout(const class IAbstractParticle& particle);
-    ParticleLayout(const class IAbstractParticle& particle, double abundance);
+    ParticleLayout(const IAbstractParticle& particle);
+    ParticleLayout(const IAbstractParticle& particle, double abundance);
     virtual ~ParticleLayout();
 
     virtual ParticleLayout* clone() const;
@@ -38,29 +43,29 @@ public:
     virtual ParticleLayout* cloneInvertB() const;
 
     //! calls the ISampleVisitor's visit method
-    virtual void accept(class ISampleVisitor* visitor) const;
+    virtual void accept(ISampleVisitor* visitor) const;
 
     //! @brief Adds generic particle to the layout
-    virtual void addParticle(const class IAbstractParticle& particle);
+    virtual void addParticle(const IAbstractParticle& particle);
 
     //! @brief Adds generic particle to the layout with only abundance defined
     //! @param particle to be added
     //! @param abundance Particle abundance
-    virtual void addParticle(const class IAbstractParticle& particle, double abundance);
+    virtual void addParticle(const IAbstractParticle& particle, double abundance);
 
     //! @brief Adds particle to the layout with abundance and position defined
     //! @param particle to be added
     //! @param abundance Particle abundance
     //! @param position Particle position
     virtual void addParticle(
-        const class IParticle& particle, double abundance, const kvector_t position);
+        const IParticle& particle, double abundance, const kvector_t position);
 
     //! @brief Adds particle to the layout with abundance, position and the rotation defined
     //! @param particle to be added
     //! @param abundance Particle abundance
     //! @param position Particle position
     //! @param rotation Particle rotation
-    virtual void addParticle(const class IParticle& particle, double abundance,
+    virtual void addParticle(const IParticle& particle, double abundance,
                              const kvector_t position, const IRotation& rotation);
 
     //! Returns number of particles
@@ -71,16 +76,16 @@ public:
 
     //! Returns information on all particles (type and abundance)
     //! and generates new particles if an IAbstractParticle denotes a collection
-    virtual SafePointerVector<const class IParticle> getParticles() const;
+    virtual SafePointerVector<const IParticle> getParticles() const;
 
     //! Get abundance fraction of particle with index
     double getAbundanceOfParticle(size_t index) const;
 
     //! Returns interference functions
-    virtual const class IInterferenceFunction* getInterferenceFunction() const;
+    virtual const IInterferenceFunction* getInterferenceFunction() const;
 
     //! Sets interference function
-    void addInterferenceFunction(const class IInterferenceFunction& interference_function);
+    void addInterferenceFunction(const IInterferenceFunction& interference_function);
 
     //! Returns surface density of all particles
     virtual double getTotalParticleSurfaceDensity() const;
@@ -91,18 +96,18 @@ public:
 
 private:
     //! Adds particle information with simultaneous registration in parent class.
-    void addAndRegisterAbstractParticle(class IAbstractParticle* child);
+    void addAndRegisterAbstractParticle(IAbstractParticle* child);
 
     //! Sets interference function with simultaneous registration in parent class
-    void setAndRegisterInterferenceFunction(class IInterferenceFunction* child);
+    void setAndRegisterInterferenceFunction(IInterferenceFunction* child);
 
     void print(std::ostream& ostr) const;
 
     //! Vector of the types of particles
-    SafePointerVector<class IAbstractParticle> m_particles;
+    SafePointerVector<IAbstractParticle> m_particles;
 
     //! Interference function
-    std::unique_ptr<class IInterferenceFunction> mP_interference_function;
+    std::unique_ptr<IInterferenceFunction> mP_interference_function;
 
     //! Total particle surface density
     double m_total_particle_density;
diff --git a/Core/Assembly/SizeSpacingCorrelationApproximationStrategy.h b/Core/Assembly/SizeSpacingCorrelationApproximationStrategy.h
index 9a29bcb20b1330f992b09c856f3c6172adadbd9f..8cc67a4668a139248b8e13ce86f544c087fde0ac 100644
--- a/Core/Assembly/SizeSpacingCorrelationApproximationStrategy.h
+++ b/Core/Assembly/SizeSpacingCorrelationApproximationStrategy.h
@@ -18,6 +18,8 @@
 
 #include "IInterferenceFunctionStrategy.h"
 
+class SimulationElement;
+
 //! @class SizeSpacingCorrelationApproximationStrategy
 //! @ingroup algorithms_internal
 //! @brief Strategy which implements size spacing correlation approximation.
@@ -35,12 +37,12 @@ public:
 
 protected:
     //! Evaluates the intensity for given list of evaluated form factors
-    virtual double evaluateForList(const class SimulationElement& sim_element,
+    virtual double evaluateForList(const SimulationElement& sim_element,
                                    const std::vector<complex_t>& ff_list) const;
 
     //! Evaluates the intensity for given list of evaluated form factors
     //! in the presence of polarization of beam and detector
-    double evaluateForMatrixList(const class SimulationElement& sim_element,
+    double evaluateForMatrixList(const SimulationElement& sim_element,
                                  const MatrixFFVector& ff_list) const;
 
 private:
diff --git a/Core/Export/PyGenTools.cpp b/Core/Export/PyGenTools.cpp
index 217d2eeee64d37efa81c88669ccb5d6528b7d6d8..c4844af1624e42368e32b70cf0b22892bb26620f 100644
--- a/Core/Export/PyGenTools.cpp
+++ b/Core/Export/PyGenTools.cpp
@@ -50,7 +50,7 @@ std::string PyGenTools::genPyScript(GISASSimulation* simulation, const std::stri
     return result.str();
 }
 
-std::string PyGenTools::getRepresentation(const class IDistribution1D* distribution)
+std::string PyGenTools::getRepresentation(const IDistribution1D* distribution)
 {
      std::ostringstream result;
      result << std::setprecision(12);
@@ -94,7 +94,7 @@ std::string PyGenTools::getRepresentation(const class IDistribution1D* distribut
 }
 
 std::string PyGenTools::getRepresentation(
-    const std::string& indent, const class Geometry::IShape2D* ishape, bool mask_value)
+    const std::string& indent, const Geometry::IShape2D* ishape, bool mask_value)
 {     std::ostringstream result;
       result << std::setprecision(12);
 
diff --git a/Core/Export/SampleLabelHandler.h b/Core/Export/SampleLabelHandler.h
index 16684a6c4469d7c1ede66d7646e268c1d180e808..d0ad49162aeb0611461d7504baa6d66fbf47f27a 100644
--- a/Core/Export/SampleLabelHandler.h
+++ b/Core/Export/SampleLabelHandler.h
@@ -18,6 +18,20 @@
 
 #include "Utils.h"
 
+class IAbstractParticle;
+class IFormFactor;
+class IInterferenceFunction;
+class ILayout;
+class IMaterial;
+class IRotation;
+class Layer;
+class LayerRoughness;
+class MultiLayer;
+class Particle;
+class ParticleComposition;
+class ParticleCoreShell;
+class ParticleDistribution;
+
 //! @class SampleLabelHandler
 //! @ingroup tools_internal
 //! @brief The hadler which construct labels for sample variables during python script generation
@@ -25,75 +39,74 @@
 class BA_CORE_API_ SampleLabelHandler
 {
 public:
-    typedef Utils::OrderedMap<const class IFormFactor*, std::string> formfactors_t;
-    typedef Utils::OrderedMap<const class IInterferenceFunction*, std::string> interferences_t;
-    typedef Utils::OrderedMap<const class Layer*, std::string> layers_t;
-    typedef Utils::OrderedMap<const class LayerRoughness*, std::string> roughnesses_t;
-    typedef Utils::OrderedMap<const class IMaterial*, std::string> materials_t;
-    typedef Utils::OrderedMap<const class MultiLayer*, std::string> multilayers_t;
-    typedef Utils::OrderedMap<const class Particle*, std::string> particles_t;
-    typedef Utils::OrderedMap<const class ParticleCoreShell*, std::string> particlescoreshell_t;
-    typedef Utils::OrderedMap<const class ParticleDistribution*, std::string>
+    typedef Utils::OrderedMap<const IFormFactor*, std::string> formfactors_t;
+    typedef Utils::OrderedMap<const IInterferenceFunction*, std::string> interferences_t;
+    typedef Utils::OrderedMap<const ILayout*, std::string> layouts_t;
+    typedef Utils::OrderedMap<const IMaterial*, std::string> materials_t;
+    typedef Utils::OrderedMap<const IRotation*, std::string> rotations_t;
+    typedef Utils::OrderedMap<const Layer*, std::string> layers_t;
+    typedef Utils::OrderedMap<const LayerRoughness*, std::string> roughnesses_t;
+    typedef Utils::OrderedMap<const MultiLayer*, std::string> multilayers_t;
+    typedef Utils::OrderedMap<const Particle*, std::string> particles_t;
+    typedef Utils::OrderedMap<const ParticleComposition*, std::string> particlecompositions_t;
+    typedef Utils::OrderedMap<const ParticleCoreShell*, std::string> particlescoreshell_t;
+    typedef Utils::OrderedMap<const ParticleDistribution*, std::string>
         particledistributions_t;
-    typedef Utils::OrderedMap<const class ILayout*, std::string> layouts_t;
-    typedef Utils::OrderedMap<const class ParticleComposition*, std::string> particlecompositions_t;
-    typedef Utils::OrderedMap<const class IRotation*, std::string> rotations_t;
 
     SampleLabelHandler() {}
     formfactors_t* getFormFactorMap();
     interferences_t* getInterferenceFunctionMap();
     layers_t* getLayerMap();
-    roughnesses_t* getLayerRoughnessMap();
+    layouts_t* getParticleLayoutMap();
     materials_t* getMaterialMap();
     multilayers_t* getMultiLayerMap();
+    particlecompositions_t* getParticleCompositionMap();
+    particledistributions_t* getParticleDistributionsMap();
     particles_t* getParticleMap();
     particlescoreshell_t* getParticleCoreShellMap();
-    particledistributions_t* getParticleDistributionsMap();
-    layouts_t* getParticleLayoutMap();
-    particlecompositions_t* getParticleCompositionMap();
     rotations_t* getRotationsMap();
+    roughnesses_t* getLayerRoughnessMap();
 
-    std::string getLabel(const class IFormFactor* sample);
-    std::string getLabel(const class IInterferenceFunction* sample);
-    std::string getLabel(const class IMaterial* sample);
-    std::string getLabel(const class Layer* sample);
-    std::string getLabel(const class LayerRoughness* sample);
-    std::string getLabel(const class MultiLayer* sample);
-    std::string getLabel(const class IAbstractParticle* sample);
-    std::string getLabel(const class ParticleCoreShell* sample);
-    std::string getLabel(const class ParticleDistribution* sample);
-    std::string getLabel(const class ILayout* sample);
-    std::string getLabel(const class ParticleComposition* sample);
-    std::string getLabel(const class IRotation* sample);
-
-    void insertMaterial(const class IMaterial* sample);
-    void setLabel(const class IFormFactor* sample);
-    void setLabel(const class IInterferenceFunction* sample);
-    void setLabel(const class ILayout* sample);
-    void setLabel(const class Layer* sample);
-    void setLabel(const class LayerRoughness* sample);
-    void setLabel(const class MultiLayer* sample);
-    void setLabel(const class Particle* sample);
-    void setLabel(const class ParticleCoreShell* sample);
-    void setLabel(const class ParticleDistribution* sample);
-    void setLabel(const class ParticleComposition* sample);
-    void setLabel(const class IRotation* sample);
+    std::string getLabel(const IAbstractParticle* sample);
+    std::string getLabel(const IFormFactor* sample);
+    std::string getLabel(const IInterferenceFunction* sample);
+    std::string getLabel(const ILayout* sample);
+    std::string getLabel(const IMaterial* sample);
+    std::string getLabel(const IRotation* sample);
+    std::string getLabel(const Layer* sample);
+    std::string getLabel(const LayerRoughness* sample);
+    std::string getLabel(const MultiLayer* sample);
+    std::string getLabel(const ParticleComposition* sample);
+    std::string getLabel(const ParticleCoreShell* sample);
+    std::string getLabel(const ParticleDistribution* sample);
 
+    void insertMaterial(const IMaterial* sample);
+    void setLabel(const IFormFactor* sample);
+    void setLabel(const IInterferenceFunction* sample);
+    void setLabel(const ILayout* sample);
+    void setLabel(const IRotation* sample);
+    void setLabel(const Layer* sample);
+    void setLabel(const LayerRoughness* sample);
+    void setLabel(const MultiLayer* sample);
+    void setLabel(const Particle* sample);
+    void setLabel(const ParticleComposition* sample);
+    void setLabel(const ParticleCoreShell* sample);
+    void setLabel(const ParticleDistribution* sample);
 
 private:
-    bool definesSameMaterial(const class IMaterial* left, const class IMaterial* right) const;
+    bool definesSameMaterial(const IMaterial* left, const IMaterial* right) const;
     formfactors_t m_FormFactorLabel;
     interferences_t m_InterferenceFunctionLabel;
     layers_t m_LayerLabel;
-    roughnesses_t m_LayerRoughnessLabel;
+    layouts_t m_ILayoutLabel;
     materials_t m_MaterialLabel;
     multilayers_t m_MultiLayerLabel;
+    particlecompositions_t m_ParticleCompositionLabel;
+    particledistributions_t m_ParticleDistributionLabel;
     particles_t m_ParticleLabel;
     particlescoreshell_t m_ParticleCoreShellLabel;
-    particledistributions_t m_ParticleDistributionLabel;
-    layouts_t m_ILayoutLabel;
-    particlecompositions_t m_ParticleCompositionLabel;
     rotations_t m_RotationsLabel;
+    roughnesses_t m_LayerRoughnessLabel;
 };
 
 #endif // SAMPLELABELHANDLER_H
diff --git a/Core/FormFactor/FormFactorDWBA.h b/Core/FormFactor/FormFactorDWBA.h
index e16d07599e2cfc1d69ec2d1b697f296ba09dba5e..b05bb5e8b831bc5a3beeb43c9ebdf349c74c3adb 100644
--- a/Core/FormFactor/FormFactorDWBA.h
+++ b/Core/FormFactor/FormFactorDWBA.h
@@ -18,6 +18,9 @@
 
 #include "IFormFactorDecorator.h"
 
+class ILayerRTCoefficients;
+class ISampleVisitor;
+
 //! @class FormFactorDWBA
 //! @ingroup formfactors_internal
 //! @brief Evaluates a coherent sum of the four DWBA terms in a scalar formfactor.
@@ -33,8 +36,8 @@ public:
     virtual void accept(ISampleVisitor* visitor) const { visitor->visit(this); }
 
     //! Sets reflection/transmission info for scalar DWBA simulation
-    virtual void setSpecularInfo(const class ILayerRTCoefficients* p_in_coeffs,
-                                 const class ILayerRTCoefficients* p_out_coeffs);
+    virtual void setSpecularInfo(const ILayerRTCoefficients* p_in_coeffs,
+                                 const ILayerRTCoefficients* p_out_coeffs);
 
     virtual complex_t evaluate(const WavevectorInfo& wavevectors) const;
 
@@ -44,8 +47,8 @@ protected:
     void calculateTerms(const WavevectorInfo& wavevectors) const;
 
     mutable complex_t m_term_S, m_term_RS, m_term_SR, m_term_RSR;
-    const class ILayerRTCoefficients* mp_in_coeffs;
-    const class ILayerRTCoefficients* mp_out_coeffs;
+    const ILayerRTCoefficients* mp_in_coeffs;
+    const ILayerRTCoefficients* mp_out_coeffs;
 };
 
 #endif // FORMFACTORDWBA_H
diff --git a/Core/FormFactor/FormFactorDWBAPol.h b/Core/FormFactor/FormFactorDWBAPol.h
index 93839f3ed7eb9309ed0e65828435cd4f49b16e3e..53004451152bc05da0d67673d2f5a320080d3935 100644
--- a/Core/FormFactor/FormFactorDWBAPol.h
+++ b/Core/FormFactor/FormFactorDWBAPol.h
@@ -18,6 +18,8 @@
 
 #include "IFormFactor.h"
 
+class ILayerRTCoefficients;
+
 //! @class FormFactorDWBAPol
 //! @ingroup formfactors_internal
 //! @brief Evaluates a coherent sum of the 16 matrix DWBA terms in a polarized formfactor.
@@ -47,8 +49,8 @@ public:
     virtual double getRadius() const;
 
     //! Sets reflection/transmission info for scalar DWBA simulation
-    virtual void setSpecularInfo(const class ILayerRTCoefficients* p_in_coeffs,
-                                 const class ILayerRTCoefficients* p_out_coeffs);
+    virtual void setSpecularInfo(const ILayerRTCoefficients* p_in_coeffs,
+                                 const ILayerRTCoefficients* p_out_coeffs);
 
     friend class TestPolarizedDWBATerms;
 
@@ -80,8 +82,8 @@ protected:
     mutable Eigen::Matrix2cd m_M22_RS;
     mutable Eigen::Matrix2cd m_M22_SR;
     mutable Eigen::Matrix2cd m_M22_RSR;
-    const class ILayerRTCoefficients* mp_in_coeffs;
-    const class ILayerRTCoefficients* mp_out_coeffs;
+    const ILayerRTCoefficients* mp_in_coeffs;
+    const ILayerRTCoefficients* mp_out_coeffs;
 };
 
 #endif // FORMFACTORDWBAPOL_H
diff --git a/Core/Simulation/DWBADiffuseReflection.h b/Core/Simulation/DWBADiffuseReflection.h
index 618ca38b3871a70c8ad2b7abcfa74a23691a6a88..d0e5126b0c4483bdd85f6b1f99a6ee3b7721a6ff 100644
--- a/Core/Simulation/DWBADiffuseReflection.h
+++ b/Core/Simulation/DWBADiffuseReflection.h
@@ -18,6 +18,8 @@
 
 #include "SpecularMatrix.h"
 
+class MultiLayer;
+
 //! @class DWBADiffuseReflection
 //! @ingroup algorithms_internal
 //! @brief Calculation of diffuse (aka off-specular) reflection from multilayers.
@@ -27,10 +29,10 @@ class BA_CORE_API_ DWBADiffuseReflection : public ISimulation
 public:
     DWBADiffuseReflection();
 
-    void execute(const class MultiLayer& sample,
+    void execute(const MultiLayer& sample,
                  const kvector_t ki, const kvector_t kf);
 
-    void setSample(const class MultiLayer& sample) {m_sample =& sample; }
+    void setSample(const MultiLayer& sample) {m_sample =& sample; }
 
     double getDiffuseAutocorr() const { return m_diffuse_autocorr; }
 
@@ -47,7 +49,7 @@ private:
 
     complex_t get_sum4terms(size_t ilayer);
 
-    const class MultiLayer *m_sample;
+    const MultiLayer *m_sample;
     SpecularMatrix::MultiLayerCoeff_t m_fcoeff_i;
     SpecularMatrix::MultiLayerCoeff_t m_fcoeff_f;
     double m_diffuse_autocorr;
diff --git a/Core/Simulation/DecoratedLayerDWBASimulation.h b/Core/Simulation/DecoratedLayerDWBASimulation.h
index addd0313f22efee5792cc9cbfd4ff7cd869206c8..c14d8611749f2d67d1ae99e2a3280981ef5dfd70 100644
--- a/Core/Simulation/DecoratedLayerDWBASimulation.h
+++ b/Core/Simulation/DecoratedLayerDWBASimulation.h
@@ -18,6 +18,8 @@
 
 #include "LayerDWBASimulation.h"
 
+class IInterferenceFunctionStrategy;
+
 //! @class DecoratedLayerDWBASimulation
 //! @ingroup algorithms_internal
 //! @brief Calculates scattering cross sections in DWBA for a layer with particles in/on it
@@ -30,8 +32,8 @@ public:
 
     DecoratedLayerDWBASimulation* clone() const
     {
-        throw Exceptions::NotImplementedException("DecoratedLayerDWBASimulation::clone() -> "
-                                      "Error: not implemented.");
+        throw Exceptions::NotImplementedException(
+            "DecoratedLayerDWBASimulation::clone() -> Error: not implemented.");
     }
 
     virtual void run();
@@ -39,8 +41,8 @@ protected:
     virtual void runProtected();
 
 private:
-    class IInterferenceFunctionStrategy* createAndInitStrategy() const;
-    void calculateCoherentIntensity(const class IInterferenceFunctionStrategy* p_strategy);
+    IInterferenceFunctionStrategy* createAndInitStrategy() const;
+    void calculateCoherentIntensity(const IInterferenceFunctionStrategy* p_strategy);
     size_t m_layout_index;
 };
 
diff --git a/Core/Simulation/GISASSimulation.cpp b/Core/Simulation/GISASSimulation.cpp
index a7589396516f8566ec499f5f69a91dee19b46072..a6fa4534014b987928e036b02fa0a8b407f75156 100644
--- a/Core/Simulation/GISASSimulation.cpp
+++ b/Core/Simulation/GISASSimulation.cpp
@@ -29,7 +29,7 @@ GISASSimulation::GISASSimulation(const ISample& p_sample)
     initialize();
 }
 
-GISASSimulation::GISASSimulation(std::shared_ptr<class ISampleBuilder> p_sample_builder)
+GISASSimulation::GISASSimulation(std::shared_ptr<ISampleBuilder> p_sample_builder)
     : Simulation(p_sample_builder)
 {
     initialize();
@@ -111,7 +111,7 @@ void GISASSimulation::setDetectorParameters(const OutputData<double>& output_dat
     m_intensity_map.setAllTo(0.);
 }
 
-void GISASSimulation::setDetectorParameters(const class IHistogram& histogram)
+void GISASSimulation::setDetectorParameters(const IHistogram& histogram)
 {
     const std::unique_ptr<OutputData<double> > data(histogram.createOutputData());
     setDetectorParameters(*data);
diff --git a/Core/Simulation/GISASSimulation.h b/Core/Simulation/GISASSimulation.h
index c304a21bf0a54503cfaf392fa9b2d59333cde7da..0ddfef6b01a3f65dbe05fa24df871f67db11748f 100644
--- a/Core/Simulation/GISASSimulation.h
+++ b/Core/Simulation/GISASSimulation.h
@@ -19,6 +19,11 @@
 #include "Instrument.h"
 #include "Simulation.h"
 
+class ISample;
+class ISampleBuilder;
+class IHistogram;
+class Histogram2D;
+
 //! @class Simulation
 //! @ingroup simulation
 //! @brief Main class to run the simulation.
@@ -27,8 +32,8 @@ class BA_CORE_API_ GISASSimulation : public Simulation
 {
 public:
     GISASSimulation();
-    GISASSimulation(const class ISample& p_sample);
-    GISASSimulation(std::shared_ptr<class ISampleBuilder> p_sample_builder);
+    GISASSimulation(const ISample& p_sample);
+    GISASSimulation(std::shared_ptr<ISampleBuilder> p_sample_builder);
 
     virtual ~GISASSimulation() {}
 
@@ -49,7 +54,7 @@ public:
 
     //! Returns clone of the detector intensity map with detector resolution applied in the form
     //! of 2D histogram.
-    class Histogram2D* getIntensityData(
+    Histogram2D* getIntensityData(
         IDetector2D::EAxesUnits units_type = IDetector2D::DEFAULT) const;
 
     //! Sets the instrument containing beam and detector information
@@ -73,7 +78,7 @@ public:
 
     //! Sets detector parameters using axes of output data
     void setDetectorParameters(const OutputData<double> &output_data);
-    void setDetectorParameters(const class IHistogram& histogram);
+    void setDetectorParameters(const IHistogram& histogram);
 
     //! Sets spherical detector parameters using angle ranges
     //! @param n_phi number of phi-axis bins
@@ -103,7 +108,7 @@ public:
     //! has priority.
     //! @param shape The shape of mask (Rectangle, Polygon, Line, Ellipse)
     //! @param mask_value The value of mask
-    void addMask(const class Geometry::IShape2D& shape, bool mask_value = true);
+    void addMask(const Geometry::IShape2D& shape, bool mask_value = true);
 
     //! Put the mask for all detector channels (i.e. exclude whole detector from the analysis)
     void maskAll();
diff --git a/Core/Simulation/LayerDWBASimulation.h b/Core/Simulation/LayerDWBASimulation.h
index 20096e46d1b546d8c1711cb4196300da98b53cb2..87bc6c5a99cce211a5ecb5a0dce5128e726b25c8 100644
--- a/Core/Simulation/LayerDWBASimulation.h
+++ b/Core/Simulation/LayerDWBASimulation.h
@@ -19,6 +19,9 @@
 #include "DWBASimulation.h"
 #include "LayerSpecularInfo.h"
 
+class Layer;
+class LayerSpecularInfo;
+
 //! @class LayerDWBASimulation
 //! @ingroup algorithms_internal
 //! @brief Base class for DWBA simulations in a layer.
@@ -26,7 +29,7 @@
 class BA_CORE_API_ LayerDWBASimulation : public DWBASimulation
 {
 public:
-    LayerDWBASimulation(const class Layer* p_layer);
+    LayerDWBASimulation(const Layer* p_layer);
     virtual ~LayerDWBASimulation();
 
     LayerDWBASimulation* clone() const {
@@ -42,8 +45,8 @@ public:
 
 protected:
     Bin1DCVector getKfBin(double wavelength, const Bin1D& alpha_bin, const Bin1D& phi_bin) const;
-    class Layer* mp_layer;
-    class LayerSpecularInfo* mp_specular_info;
+    Layer* mp_layer;
+    LayerSpecularInfo* mp_specular_info;
 };
 
 #endif // LAYERDWBASIMULATION_H
diff --git a/Core/Simulation/MultiLayerRoughnessDWBASimulation.h b/Core/Simulation/MultiLayerRoughnessDWBASimulation.h
index 80acc0476a35ad60e7df896ea49d111cd000ecc1..80043f26d775fbce9263af0535aef085829a0ac5 100644
--- a/Core/Simulation/MultiLayerRoughnessDWBASimulation.h
+++ b/Core/Simulation/MultiLayerRoughnessDWBASimulation.h
@@ -19,6 +19,8 @@
 #include "DWBASimulation.h"
 #include "LayerSpecularInfo.h"
 
+class MultiLayer;
+
 //! @class MultiLayerRoughnessDWBASimulation
 //! @ingroup algorithms_internal
 //! @brief Calculation of diffuse reflection from multilayer with rough interfaces
@@ -26,7 +28,7 @@
 class BA_CORE_API_ MultiLayerRoughnessDWBASimulation : public DWBASimulation
 {
 public:
-    MultiLayerRoughnessDWBASimulation(const class MultiLayer* p_multi_layer);
+    MultiLayerRoughnessDWBASimulation(const MultiLayer* p_multi_layer);
     virtual ~MultiLayerRoughnessDWBASimulation();
 
     MultiLayerRoughnessDWBASimulation* clone() const
@@ -49,7 +51,7 @@ protected:
     complex_t get_refractive_term(size_t ilayer) const;
     complex_t get_sum8terms(size_t ilayer, const SimulationElement& sim_element);
 
-    class MultiLayer* mp_multi_layer;
+    MultiLayer* mp_multi_layer;
     std::vector<LayerSpecularInfo*> mp_specular_info_vector;
 };
 
diff --git a/Core/Simulation/OffSpecSimulation.cpp b/Core/Simulation/OffSpecSimulation.cpp
index ac40f0ab6d999b23b27501c8cc4d2ff0242627d9..fc150c8cbd80a8e7f9e80c99f2dfd2b90f71b368 100644
--- a/Core/Simulation/OffSpecSimulation.cpp
+++ b/Core/Simulation/OffSpecSimulation.cpp
@@ -68,11 +68,10 @@ void OffSpecSimulation::setBeamParameters(
         double lambda, const IAxis &alpha_axis, double phi_i) {
     delete mp_alpha_i_axis;
     mp_alpha_i_axis = alpha_axis.clone();
-    if (alpha_axis.getSize()<1) {
+    if (alpha_axis.getSize()<1)
         throw Exceptions::ClassInitializationException(
                 "OffSpecSimulation::prepareSimulation() "
                 "-> Error. Incoming alpha range size < 1.");
-    }
     double alpha_start = alpha_axis[0];
     m_instrument.setBeamParameters(lambda, alpha_start, phi_i);
     updateIntensityMap();
@@ -168,7 +167,7 @@ void OffSpecSimulation::initSimulationElementVector()
         beam.setCentralK(wavelength, alpha_i, phi_i);
         m_instrument.setBeam(beam);
         std::vector<SimulationElement> sim_elements_alpha_i =
-                m_instrument.createSimulationElements();
+            m_instrument.createSimulationElements();
         m_sim_elements.insert(m_sim_elements.end(), sim_elements_alpha_i.begin(),
                               sim_elements_alpha_i.end());
     }
@@ -185,9 +184,8 @@ void OffSpecSimulation::transferResultsToIntensityMap()
                                     "intensity map size does not conform to number of "
                                     "calculated intensities");
     }
-    for (size_t i=0; i<mp_alpha_i_axis->getSize(); ++i) {
+    for (size_t i=0; i<mp_alpha_i_axis->getSize(); ++i)
         transferDetectorImage(i);
-    }
 }
 
 double OffSpecSimulation::getBeamIntensity() const
@@ -198,13 +196,11 @@ double OffSpecSimulation::getBeamIntensity() const
 void OffSpecSimulation::updateIntensityMap()
 {
     m_intensity_map.clear();
-    if (mp_alpha_i_axis) {
+    if (mp_alpha_i_axis)
         m_intensity_map.addAxis(*mp_alpha_i_axis);
-    }
     size_t detector_dimension = m_instrument.getDetectorDimension();
-    if (detector_dimension==2) {
+    if (detector_dimension==2)
         m_intensity_map.addAxis(m_instrument.getDetectorAxis(1));
-    }
     m_intensity_map.setAllTo(0.);
 }
 
@@ -212,13 +208,11 @@ void OffSpecSimulation::transferDetectorImage(int index)
 {
     OutputData<double> detector_image;
     size_t detector_dimension = m_instrument.getDetectorDimension();
-    for (size_t dim=0; dim<detector_dimension; ++dim) {
+    for (size_t dim=0; dim<detector_dimension; ++dim)
         detector_image.addAxis(m_instrument.getDetectorAxis(dim));
-    }
     size_t detector_size = detector_image.getAllocatedSize();
-    for (size_t i=0; i<detector_size; ++i) {
+    for (size_t i=0; i<detector_size; ++i)
         detector_image[i] = m_sim_elements[index*detector_size + i].getIntensity();
-    }
     m_instrument.applyDetectorResolution(&detector_image);
     size_t y_axis_size = m_instrument.getDetectorAxis(1).getSize();
     for (size_t i=0; i<detector_size; ++i) {
@@ -233,20 +227,17 @@ void OffSpecSimulation::checkInitialization() const
                 "OffSpecSimulation::checkInitialization() "
                 "Incoming alpha range not configured.");
     }
-    if (m_instrument.getDetectorDimension()!=2) {
-        throw Exceptions::RuntimeErrorException("OffSpecSimulation::checkInitialization: "
-                                    "detector is not two-dimensional");
-    }
+    if (m_instrument.getDetectorDimension()!=2)
+        throw Exceptions::RuntimeErrorException(
+            "OffSpecSimulation::checkInitialization: detector is not two-dimensional");
     const IAxis &phi_axis = m_instrument.getDetectorAxis(0);
-    if (phi_axis.getName()!=BornAgain::PHI_AXIS_NAME) {
-        throw Exceptions::RuntimeErrorException("OffSpecSimulation::checkInitialization: "
-                                    "phi-axis is not correct");
-    }
+    if (phi_axis.getName()!=BornAgain::PHI_AXIS_NAME)
+        throw Exceptions::RuntimeErrorException(
+            "OffSpecSimulation::checkInitialization: phi-axis is not correct");
     const IAxis &alpha_axis = m_instrument.getDetectorAxis(1);
-    if (alpha_axis.getName()!=BornAgain::ALPHA_AXIS_NAME) {
-        throw Exceptions::RuntimeErrorException("OffSpecSimulation::checkInitialization: "
-                                    "alpha-axis is not correct");
-    }
+    if (alpha_axis.getName()!=BornAgain::ALPHA_AXIS_NAME)
+        throw Exceptions::RuntimeErrorException(
+            "OffSpecSimulation::checkInitialization: alpha-axis is not correct");
 }
 
 void OffSpecSimulation::initialize()
diff --git a/Core/Simulation/Simulation.h b/Core/Simulation/Simulation.h
index 5c12f0e410d7d9e1b5dfda1171eaf5c9358bef1e..f23829826f98ce2f55de5a6a15c2e08a848cb25a 100644
--- a/Core/Simulation/Simulation.h
+++ b/Core/Simulation/Simulation.h
@@ -23,6 +23,10 @@
 #include "SimulationOptions.h"
 
 template<class T> class OutputData;
+class DWBASimulation;
+class ISample;
+class ISampleBuilder;
+class ProgressHandlerDWBA;
 
 //! @class Simulation
 //! @ingroup simulation
@@ -32,8 +36,8 @@ class BA_CORE_API_ Simulation : public ICloneable, public IParameterized
 {
 public:
     Simulation();
-    Simulation(const class ISample& p_sample);
-    Simulation(std::shared_ptr<class ISampleBuilder> p_sample_builder);
+    Simulation(const ISample& p_sample);
+    Simulation(std::shared_ptr<ISampleBuilder> p_sample_builder);
     virtual ~Simulation();
 
     virtual Simulation* clone() const=0;
@@ -48,16 +52,16 @@ public:
     void runOMPISimulation();
 
     //! Sets the sample to be tested
-    void setSample(const class ISample& sample);
+    void setSample(const ISample& sample);
 
     //! Returns the sample
-    class ISample* getSample() const { return mP_sample.get(); }
+    ISample* getSample() const { return mP_sample.get(); }
 
     //! Sets the sample builder
-    void setSampleBuilder(std::shared_ptr<class ISampleBuilder> sample_builder);
+    void setSampleBuilder(std::shared_ptr<ISampleBuilder> sample_builder);
 
     //! return sample builder
-    std::shared_ptr<class ISampleBuilder> getSampleBuilder() const { return mp_sample_builder; }
+    std::shared_ptr<ISampleBuilder> getSampleBuilder() const { return mp_sample_builder; }
 
     //! Gets the number of elements this simulation needs to calculate
     virtual int getNumberOfSimulationElements() const=0;
@@ -85,7 +89,7 @@ public:
     void setProgressHandler(ProgressHandler_t progress) { m_progress = progress; }
 
     //! initializes DWBA progress handler
-    void initProgressHandlerDWBA(class ProgressHandlerDWBA* dwba_progress);
+    void initProgressHandlerDWBA(ProgressHandlerDWBA* dwba_progress);
 #endif
 
     friend class OMPISimulation;
@@ -122,7 +126,7 @@ protected:
 #endif
 
     //! Verify existence of the DWBASimulation object
-    void verifyDWBASimulation(class DWBASimulation* dwbaSimulation);
+    void verifyDWBASimulation(DWBASimulation* dwbaSimulation);
 
     //! Returns the start iterator of simulation elements for the current batch
     std::vector<SimulationElement>::iterator getBatchStart(int n_batches, int current_batch);
@@ -130,8 +134,8 @@ protected:
     //! Returns the end iterator of simulation elements for the current batch
     std::vector<SimulationElement>::iterator getBatchEnd(int n_batches, int current_batch);
 
-    std::unique_ptr<class ISample> mP_sample;
-    std::shared_ptr<class ISampleBuilder> mp_sample_builder;
+    std::unique_ptr<ISample> mP_sample;
+    std::shared_ptr<ISampleBuilder> mp_sample_builder;
     SimulationOptions m_options;
     DistributionHandler m_distribution_handler;
     ProgressHandler_t m_progress;
diff --git a/Core/Simulation/SpecularSimulation.h b/Core/Simulation/SpecularSimulation.h
index e543a6b92b22f70f5d02f10f3bdc23146cf3ab2c..4266e808767c1b3437c3e9c2707533888e4cc067 100644
--- a/Core/Simulation/SpecularSimulation.h
+++ b/Core/Simulation/SpecularSimulation.h
@@ -22,6 +22,11 @@
 #include "OutputData.h"
 #include <memory>
 
+class IAxis;
+class ISample;
+class ISampleBuilder;
+class MultiLayer;
+
 //! @class SpecularSimulation
 //! @ingroup simulation
 //! @brief Main class to run a specular simulation.
@@ -33,8 +38,8 @@ public:
     typedef std::vector<LayerRTCoefficients_t> MultiLayerRTCoefficients_t;
 
     SpecularSimulation();
-    SpecularSimulation(const class ISample& sample);
-    SpecularSimulation(std::shared_ptr<class ISampleBuilder> sample_builder);
+    SpecularSimulation(const ISample& sample);
+    SpecularSimulation(std::shared_ptr<ISampleBuilder> sample_builder);
     virtual ~SpecularSimulation();
 
     SpecularSimulation* clone() const;
@@ -43,27 +48,27 @@ public:
     void runSimulation();
 
     //! Sets the sample to be tested
-    void setSample(const class ISample& sample);
+    void setSample(const ISample& sample);
 
     //! Returns the sample
-    class ISample* getSample() const { return m_sample; }
+    ISample* getSample() const { return m_sample; }
 
     //! Sets the sample builder
-    void setSampleBuilder(std::shared_ptr<class ISampleBuilder> sample_builder);
+    void setSampleBuilder(std::shared_ptr<ISampleBuilder> sample_builder);
 
     //! return sample builder
-    std::shared_ptr<class ISampleBuilder> getSampleBuilder() const { return m_sample_builder; }
+    std::shared_ptr<ISampleBuilder> getSampleBuilder() const { return m_sample_builder; }
 
     //! Sets beam parameters with alpha_i of the beam defined in the range
-    void setBeamParameters(double lambda, const class IAxis &alpha_axis);
+    void setBeamParameters(double lambda, const IAxis& alpha_axis);
     void setBeamParameters(double lambda, int nbins, double alpha_i_min, double alpha_i_max);
 
     //! set axis for evanescent wave axis
-    void setEvanescentWaveAxis(const class IAxis &z_axis);
+    void setEvanescentWaveAxis(const IAxis& z_axis);
     void setEvanescentWaveAxis(int nbins, double z_min, double z_max);
 
     //! returns alpha_i axis
-    const class IAxis* getAlphaAxis() const;
+    const IAxis* getAlphaAxis() const;
 
     //! returns vector of reflection coefficients for all alpha_i angles for given layer index
     std::vector<complex_t> getScalarR(size_t i_layer) const;
@@ -91,10 +96,10 @@ protected:
     void updateSample();
 
     //! calculates RT coefficients for multilayer without magnetic materials
-    void collectRTCoefficientsScalar(const class MultiLayer* multilayer);
+    void collectRTCoefficientsScalar(const MultiLayer* multilayer);
 
     //! calculates RT coefficients for multilayer with magnetic materials
-    void collectRTCoefficientsMatrix(const class MultiLayer* multilayer);
+    void collectRTCoefficientsMatrix(const MultiLayer* multilayer);
 
     //! calculates the intensity of evanescent wave
 //    void calculateEvanescentWaveIntensity();
@@ -105,10 +110,10 @@ protected:
     //! update data axes
     void updateCoefficientDataAxes();
 
-    class ISample* m_sample;
-    std::shared_ptr<class ISampleBuilder> m_sample_builder;
-    class IAxis* m_alpha_i_axis;
-    class IAxis* m_z_axis;
+    ISample* m_sample;
+    std::shared_ptr<ISampleBuilder> m_sample_builder;
+    IAxis* m_alpha_i_axis;
+    IAxis* m_z_axis;
     double m_lambda;
 
 #ifndef SWIG
diff --git a/Core/StandardSamples/BoxCompositionBuilder.h b/Core/StandardSamples/BoxCompositionBuilder.h
index b6f33c16e5917d53f22a6ec584382dcb05c11818..dbb85ea5a3dc2b48d25a18fc7ff98b95d0aa4599 100644
--- a/Core/StandardSamples/BoxCompositionBuilder.h
+++ b/Core/StandardSamples/BoxCompositionBuilder.h
@@ -18,6 +18,11 @@
 
 #include "ISampleBuilder.h"
 
+class ISample;
+class HomogeneousMaterial;
+class MultiLayer;
+class ParticleComposition;
+
 //! @class BoxCompositionBuilder
 //! @ingroup standard_samples
 //! @brief Parent class to test all kind of compositions made out of boxes.
@@ -30,15 +35,14 @@ public:
     virtual ~BoxCompositionBuilder();
 
 protected:
-    class MultiLayer* createMultiLayer(const class ParticleComposition& composition) const;
-    const class HomogeneousMaterial* m_particleMaterial;
+    MultiLayer* createMultiLayer(const ParticleComposition& composition) const;
+    const HomogeneousMaterial* m_particleMaterial;
     const double m_layer_thickness;
     const double m_length;
     const double m_width;
     const double m_height;
 };
 
-
 //! @class BoxCompositionRotateXBuilder
 //! @ingroup standard_samples
 //! @brief Two boxes in particle composition rotated in X by 90 degrees.
@@ -47,8 +51,7 @@ class BA_CORE_API_ BoxCompositionRotateXBuilder : public BoxCompositionBuilder
 {
 public:
     BoxCompositionRotateXBuilder(){}
-    class ISample* buildSample() const;
-
+    ISample* buildSample() const;
 };
 
 //! @class BoxCompositionRotateYBuilder
@@ -59,8 +62,7 @@ class BA_CORE_API_ BoxCompositionRotateYBuilder : public BoxCompositionBuilder
 {
 public:
     BoxCompositionRotateYBuilder(){}
-    class ISample* buildSample() const;
-
+    ISample* buildSample() const;
 };
 
 //! @class BoxCompositionRotateZBuilder
@@ -71,8 +73,7 @@ class BA_CORE_API_ BoxCompositionRotateZBuilder : public BoxCompositionBuilder
 {
 public:
     BoxCompositionRotateZBuilder(){}
-    class ISample* buildSample() const;
-
+    ISample* buildSample() const;
 };
 
 //! @class BoxCompositionRotateZandYBuilder
@@ -83,8 +84,7 @@ class BA_CORE_API_ BoxCompositionRotateZandYBuilder : public BoxCompositionBuild
 {
 public:
     BoxCompositionRotateZandYBuilder(){}
-    class ISample* buildSample() const;
-
+    ISample* buildSample() const;
 };
 
 //! @class BoxStackCompositionBuilder
@@ -95,9 +95,7 @@ class BA_CORE_API_ BoxStackCompositionBuilder : public BoxCompositionBuilder
 {
 public:
     BoxStackCompositionBuilder(){}
-    class ISample* buildSample() const;
-
+    ISample* buildSample() const;
 };
 
-
 #endif // BOXCOMPOSITIONBUILDER_H
diff --git a/Core/StandardSamples/CoreShellParticleBuilder.h b/Core/StandardSamples/CoreShellParticleBuilder.h
index 7a3be366c14d789840ac829006dd06a4757f73ba..c1ee555e17f902d283751c810d93634fcaa84b3a 100644
--- a/Core/StandardSamples/CoreShellParticleBuilder.h
+++ b/Core/StandardSamples/CoreShellParticleBuilder.h
@@ -18,6 +18,8 @@
 
 #include "ISampleBuilder.h"
 
+class ISample;
+
 //! @class CoreShellParticleBuilder
 //! @ingroup standard_samples
 //! @brief Builds sample: Core Shell Nanoparticles (IsGISAXS example #11).
@@ -26,7 +28,7 @@ class BA_CORE_API_ CoreShellParticleBuilder : public ISampleBuilder
 {
 public:
     CoreShellParticleBuilder(){}
-    class ISample* buildSample() const;
+    ISample* buildSample() const;
 };
 
 
@@ -38,7 +40,7 @@ class BA_CORE_API_ CoreShellBoxRotateZandYBuilder : public ISampleBuilder
 {
 public:
     CoreShellBoxRotateZandYBuilder(){}
-    class ISample* buildSample() const;
+    ISample* buildSample() const;
 };
 
 #endif // CORESHELLPARTICLEBUILDER_H
diff --git a/Core/StandardSamples/CustomMorphologyBuilder.h b/Core/StandardSamples/CustomMorphologyBuilder.h
index 3a8400ad563fb202a8757984db2d1ad1bf0d283a..bf4af90a161906b643f9b2e8135723bf0ee84a04 100644
--- a/Core/StandardSamples/CustomMorphologyBuilder.h
+++ b/Core/StandardSamples/CustomMorphologyBuilder.h
@@ -18,6 +18,8 @@
 
 #include "ISampleBuilder.h"
 
+class ISample;
+
 //! @class CustomMorphologyBuilder
 //! @ingroup standard_samples
 //! @brief Builds sample: mixture of different particles (IsGISAXS example #7)
@@ -26,7 +28,7 @@ class BA_CORE_API_ CustomMorphologyBuilder : public ISampleBuilder
 {
 public:
     CustomMorphologyBuilder() {}
-    class ISample* buildSample() const;
+    ISample* buildSample() const;
 };
 
 #endif // CUSTOMMORPHOLOGYBUILDER_H
diff --git a/Core/StandardSamples/CylindersAndPrismsBuilder.h b/Core/StandardSamples/CylindersAndPrismsBuilder.h
index c5873872c451a328b75723908388ab22e802e60e..52c63f36b1b8f3a77fbaab444b2fa1954f01777a 100644
--- a/Core/StandardSamples/CylindersAndPrismsBuilder.h
+++ b/Core/StandardSamples/CylindersAndPrismsBuilder.h
@@ -18,6 +18,8 @@
 
 #include "ISampleBuilder.h"
 
+class ISample;
+
 //! @class CylindersAndPrismsBuilder
 //! @ingroup standard_samples
 //! @brief Builds sample: mixture of cylinders and prisms without interference
@@ -27,7 +29,7 @@ class BA_CORE_API_ CylindersAndPrismsBuilder : public ISampleBuilder
 {
 public:
     CylindersAndPrismsBuilder();
-    class ISample* buildSample() const;
+    ISample* buildSample() const;
 
 protected:
     void init_parameters();
diff --git a/Core/StandardSamples/CylindersBuilder.h b/Core/StandardSamples/CylindersBuilder.h
index ae5942f708a2d3aa63183be207abddbd9e423870..04c3efaebf762f17bbd4c3aa4b3c7cc2b1ad5c4c 100644
--- a/Core/StandardSamples/CylindersBuilder.h
+++ b/Core/StandardSamples/CylindersBuilder.h
@@ -18,6 +18,8 @@
 
 #include "ISampleBuilder.h"
 
+class ISample;
+
 //! @class CylindersInDWBABuilder
 //! @ingroup standard_samples
 //! @brief Builds sample: cylinder formfactor in DWBA (IsGISAXS example #3, part I)
@@ -26,7 +28,7 @@ class BA_CORE_API_ CylindersInDWBABuilder : public ISampleBuilder
 {
 public:
     CylindersInDWBABuilder();
-    class ISample* buildSample() const;
+    ISample* buildSample() const;
 
 protected:
     void init_parameters();
@@ -36,7 +38,6 @@ private:
     double m_radius;
 };
 
-
 //! @class CylindersInBABuilder
 //! @ingroup standard_samples
 //! @brief Builds sample: cylinder formfactor in BA (IsGISAXS example #3, part II)
@@ -45,7 +46,7 @@ class BA_CORE_API_ CylindersInBABuilder : public ISampleBuilder
 {
 public:
     CylindersInBABuilder();
-    class ISample* buildSample() const;
+    ISample* buildSample() const;
 
 protected:
     void init_parameters();
@@ -63,7 +64,7 @@ class BA_CORE_API_ LargeCylindersInDWBABuilder : public ISampleBuilder
 {
 public:
     LargeCylindersInDWBABuilder();
-    class ISample* buildSample() const;
+    ISample* buildSample() const;
 
 protected:
     void init_parameters();
@@ -73,5 +74,4 @@ private:
     double m_radius;
 };
 
-
 #endif // CYLINDERSBUILDER_H
diff --git a/Core/StandardSamples/LatticeBuilder.h b/Core/StandardSamples/LatticeBuilder.h
index c47d4e87a6a04b813104d591f0c2056217b49e39..3b235d451f1cbc7077713b08b76504b72e807b07 100644
--- a/Core/StandardSamples/LatticeBuilder.h
+++ b/Core/StandardSamples/LatticeBuilder.h
@@ -18,6 +18,8 @@
 
 #include "ISampleBuilder.h"
 
+class ISample;
+
 //! @class Lattice1DBuilder
 //! @ingroup standard_samples
 //! @brief Builds sample: cylinders with 1DDL structure factor
@@ -26,7 +28,7 @@ class BA_CORE_API_ Lattice1DBuilder : public ISampleBuilder
 {
 public:
     Lattice1DBuilder();
-    class ISample* buildSample() const;
+    ISample* buildSample() const;
 
 protected:
     void init_parameters();
diff --git a/Core/StandardSamples/MagneticParticlesBuilder.h b/Core/StandardSamples/MagneticParticlesBuilder.h
index 7999783d49ec92dbebf8df9b45ced710b6850c76..63397000faf016f6a3227b6e817073fa1ca32714 100644
--- a/Core/StandardSamples/MagneticParticlesBuilder.h
+++ b/Core/StandardSamples/MagneticParticlesBuilder.h
@@ -18,6 +18,8 @@
 
 #include "ISampleBuilder.h"
 
+class ISample;
+
 //! @class MagneticParticleZeroFieldBuilder
 //! @ingroup standard_samples
 //! @brief Builds sample: cylinders with magnetic material and zero magnetic field.
@@ -26,7 +28,7 @@ class BA_CORE_API_ MagneticParticleZeroFieldBuilder : public ISampleBuilder
 {
 public:
     MagneticParticleZeroFieldBuilder();
-    class ISample* buildSample() const;
+    ISample* buildSample() const;
 
 protected:
     void init_parameters();
@@ -44,7 +46,7 @@ class BA_CORE_API_ MagneticCylindersBuilder : public ISampleBuilder
 {
 public:
     MagneticCylindersBuilder();
-    class ISample* buildSample() const;
+    ISample* buildSample() const;
 
 protected:
     void init_parameters();
@@ -54,5 +56,4 @@ private:
     double m_cylinder_height;
 };
 
-
 #endif // MAGNETICPARTICLESBUILDER_H
diff --git a/Core/StandardSamples/MesoCrystalBuilder.h b/Core/StandardSamples/MesoCrystalBuilder.h
index 399e274163aff920e6339f8ac8ec62cee99eedba..84e14b87a7f3d346930cfd4b70febe3570789cce 100644
--- a/Core/StandardSamples/MesoCrystalBuilder.h
+++ b/Core/StandardSamples/MesoCrystalBuilder.h
@@ -19,27 +19,32 @@
 #include "Complex.h"
 #include "ISampleBuilder.h"
 
-//! @class MesoCrystalBuilder
+class IFormFactor;
+class ISample;
+class Lattice;
+class MesoCrystal;
+
+//! @MesoCrystalBuilder
 //! @ingroup standard_samples
 //! @brief Builds sample: mesocrystals of cylindrical shape composed by
 //! spherical nanoparticles.
 
-class BA_CORE_API_  MesoCrystalBuilder : public ISampleBuilder
+class BA_CORE_API_ MesoCrystalBuilder : public ISampleBuilder
 {
 public:
     MesoCrystalBuilder();
 
     virtual ~MesoCrystalBuilder(){}
-    virtual class ISample* buildSample() const;
+    virtual ISample* buildSample() const;
 
 protected:
     virtual void init_parameters();
 
 private:
-    class MesoCrystal* createMesoCrystal(
+    MesoCrystal* createMesoCrystal(
         double stacking_radius_a, double stacking_radius_c,
-        complex_t n_particle, const class IFormFactor* p_meso_form_factor) const;
-    const class Lattice* createLattice(double stacking_radius_a, double stacking_radius_c) const;
+        complex_t n_particle, const IFormFactor* p_meso_form_factor) const;
+    const Lattice* createLattice(double stacking_radius_a, double stacking_radius_c) const;
     double m_lattice_length_a;
     double m_lattice_length_c;
     double m_nanoparticle_radius;
diff --git a/Core/StandardSamples/MultiLayerWithRoughnessBuilder.h b/Core/StandardSamples/MultiLayerWithRoughnessBuilder.h
index 3aba670add26f9fcd340925dcf993feb43f09ff0..f71b61da1d7d4c352539ef40c1c63d5d46232a21 100644
--- a/Core/StandardSamples/MultiLayerWithRoughnessBuilder.h
+++ b/Core/StandardSamples/MultiLayerWithRoughnessBuilder.h
@@ -18,6 +18,8 @@
 
 #include "ISampleBuilder.h"
 
+class ISample;
+
 //! @class MultiLayerWithRoughnessBuilder
 //! @ingroup standard_samples
 //! @brief Builds sample: layers with correlated roughness
@@ -26,7 +28,7 @@ class BA_CORE_API_ MultiLayerWithRoughnessBuilder : public ISampleBuilder
 {
 public:
     MultiLayerWithRoughnessBuilder();
-    class ISample* buildSample() const;
+    ISample* buildSample() const;
 
 protected:
     void init_parameters();
diff --git a/Core/StandardSamples/MultipleLayoutBuilder.h b/Core/StandardSamples/MultipleLayoutBuilder.h
index ee1046bc64085ce86d6ad4c63ee5c21d7101f891..6a1e96f60e42f04e9546ac4f41b2a0c0dd422b3a 100644
--- a/Core/StandardSamples/MultipleLayoutBuilder.h
+++ b/Core/StandardSamples/MultipleLayoutBuilder.h
@@ -18,6 +18,8 @@
 
 #include "ISampleBuilder.h"
 
+class ISample;
+
 //! @class MultipleLayoutBuilder
 //! @ingroup standard_samples
 //! @brief Builds sample: mixture of cylinders and prisms without interference
@@ -27,7 +29,7 @@ class BA_CORE_API_ MultipleLayoutBuilder : public ISampleBuilder
 {
 public:
     MultipleLayoutBuilder();
-    class ISample* buildSample() const;
+    ISample* buildSample() const;
 
 protected:
     void init_parameters();
diff --git a/Core/StandardSamples/ParaCrystalBuilder.h b/Core/StandardSamples/ParaCrystalBuilder.h
index d8be7e92c4f274fbc07c52416520baf259677588..1c104138ddfcdc7bf88ee4c65e097b6eb41f2b7b 100644
--- a/Core/StandardSamples/ParaCrystalBuilder.h
+++ b/Core/StandardSamples/ParaCrystalBuilder.h
@@ -18,6 +18,9 @@
 
 #include "ISampleBuilder.h"
 
+class IFTDistribution2D;
+class ISample;
+
 //! @class RadialParaCrystalBuilder
 //! @ingroup standard_samples
 //! @brief Builds sample: cylinders with 1DDL structure factor (IsGISAXS example #4)
@@ -26,7 +29,7 @@ class BA_CORE_API_ RadialParaCrystalBuilder : public ISampleBuilder
 {
 public:
     RadialParaCrystalBuilder();
-    class ISample* buildSample() const;
+    ISample* buildSample() const;
 
 protected:
     void init_parameters();
@@ -49,9 +52,9 @@ class BA_CORE_API_ Basic2DParaCrystalBuilder : public ISampleBuilder
 public:
     Basic2DParaCrystalBuilder();
     virtual ~Basic2DParaCrystalBuilder();
-    virtual class ISample* buildSample() const;
+    virtual ISample* buildSample() const;
 private:
-    class IFTDistribution2D* m_pdf1;
+    IFTDistribution2D* m_pdf1;
 };
 
 //! @class HexParaCrystalBuilder
@@ -62,7 +65,7 @@ class BA_CORE_API_ HexParaCrystalBuilder : public ISampleBuilder
 {
 public:
     HexParaCrystalBuilder();
-    virtual class ISample* buildSample() const;
+    virtual ISample* buildSample() const;
 
 protected:
     virtual void init_parameters();
@@ -84,7 +87,7 @@ class BA_CORE_API_ RectParaCrystalBuilder : public ISampleBuilder
 {
 public:
     RectParaCrystalBuilder(){}
-    virtual class ISample* buildSample() const;
+    virtual ISample* buildSample() const;
 };
 
 //! @class IsGISAXS08BBuilder
@@ -96,7 +99,7 @@ class BA_CORE_API_ IsGISAXS08BBuilder : public ISampleBuilder
 {
 public:
     IsGISAXS08BBuilder(){}
-    virtual class ISample* buildSample() const;
+    virtual ISample* buildSample() const;
 };
 
 #endif // PARACRYSTALBUILDER_H
diff --git a/Core/StandardSamples/SampleBuilderFactory.h b/Core/StandardSamples/SampleBuilderFactory.h
index 6dcf5dda4a494b29a0150e584520c6ab12b8814c..d2f7b09e54fc010fe59635799e767ca31d4cae7f 100644
--- a/Core/StandardSamples/SampleBuilderFactory.h
+++ b/Core/StandardSamples/SampleBuilderFactory.h
@@ -19,6 +19,8 @@
 #include "IFactory.h"
 #include "ISampleBuilder.h"
 
+class ISample;
+
 //! @class SampleBuilderFactory
 //! @ingroup standard_samples
 //! @brief Factory to create standard pre-defined samples
@@ -27,7 +29,7 @@ class BA_CORE_API_ SampleBuilderFactory : public IFactory<std::string, ISampleBu
 {
 public:
     SampleBuilderFactory();
-    class ISample* createSample(const std::string& name);
+    ISample* createSample(const std::string& name);
 };
 
 #endif // SAMPLEBUILDERFACTORY_H
diff --git a/auto/Wrap/doxygen_core.i b/auto/Wrap/doxygen_core.i
index 5bb60f9a5245f3656aa6d824d87f499139be564d..d37c710cbf6157dcc5023525c87ff21cccf406e2 100644
--- a/auto/Wrap/doxygen_core.i
+++ b/auto/Wrap/doxygen_core.i
@@ -1073,6 +1073,8 @@ C++ includes: DecouplingApproximationStrategy.h
 ";
 
 %feature("docstring")  DecouplingApproximationStrategy::init "void DecouplingApproximationStrategy::init(const SafePointerVector< FormFactorInfo > &form_factor_infos, const IInterferenceFunction &iff)
+
+Initializes the object with form factors and interference functions. 
 ";
 
 
@@ -1449,10 +1451,10 @@ C++ includes: DWBADiffuseReflection.h
 %feature("docstring")  DWBADiffuseReflection::DWBADiffuseReflection "DWBADiffuseReflection::DWBADiffuseReflection()
 ";
 
-%feature("docstring")  DWBADiffuseReflection::execute "void DWBADiffuseReflection::execute(const class MultiLayer &sample, const kvector_t ki, const kvector_t kf)
+%feature("docstring")  DWBADiffuseReflection::execute "void DWBADiffuseReflection::execute(const MultiLayer &sample, const kvector_t ki, const kvector_t kf)
 ";
 
-%feature("docstring")  DWBADiffuseReflection::setSample "void DWBADiffuseReflection::setSample(const class MultiLayer &sample)
+%feature("docstring")  DWBADiffuseReflection::setSample "void DWBADiffuseReflection::setSample(const MultiLayer &sample)
 ";
 
 %feature("docstring")  DWBADiffuseReflection::getDiffuseAutocorr "double DWBADiffuseReflection::getDiffuseAutocorr() const 
@@ -2377,7 +2379,7 @@ Returns a clone of this  ISample object.
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorDWBA::setSpecularInfo "void FormFactorDWBA::setSpecularInfo(const class ILayerRTCoefficients *p_in_coeffs, const class ILayerRTCoefficients *p_out_coeffs)
+%feature("docstring")  FormFactorDWBA::setSpecularInfo "void FormFactorDWBA::setSpecularInfo(const ILayerRTCoefficients *p_in_coeffs, const ILayerRTCoefficients *p_out_coeffs)
 
 Sets reflection/transmission info for scalar DWBA simulation. 
 ";
@@ -2432,7 +2434,7 @@ Returns the total volume of the particle of this form factor's shape.
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorDWBAPol::setSpecularInfo "void FormFactorDWBAPol::setSpecularInfo(const class ILayerRTCoefficients *p_in_coeffs, const class ILayerRTCoefficients *p_out_coeffs)
+%feature("docstring")  FormFactorDWBAPol::setSpecularInfo "void FormFactorDWBAPol::setSpecularInfo(const ILayerRTCoefficients *p_in_coeffs, const ILayerRTCoefficients *p_out_coeffs)
 
 Sets reflection/transmission info for scalar DWBA simulation. 
 ";
@@ -4399,10 +4401,10 @@ overloaded in (Core|Py|GUI)Suite.cpp
 %feature("docstring")  GISASSimulation::GISASSimulation "GISASSimulation::GISASSimulation()
 ";
 
-%feature("docstring")  GISASSimulation::GISASSimulation "GISASSimulation::GISASSimulation(const class ISample &p_sample)
+%feature("docstring")  GISASSimulation::GISASSimulation "GISASSimulation::GISASSimulation(const ISample &p_sample)
 ";
 
-%feature("docstring")  GISASSimulation::GISASSimulation "GISASSimulation::GISASSimulation(std::shared_ptr< class ISampleBuilder > p_sample_builder)
+%feature("docstring")  GISASSimulation::GISASSimulation "GISASSimulation::GISASSimulation(std::shared_ptr< ISampleBuilder > p_sample_builder)
 ";
 
 %feature("docstring")  GISASSimulation::~GISASSimulation "virtual GISASSimulation::~GISASSimulation()
@@ -4474,7 +4476,7 @@ Sets the detector (axes can be overwritten later)
 Sets detector parameters using axes of output data. 
 ";
 
-%feature("docstring")  GISASSimulation::setDetectorParameters "void GISASSimulation::setDetectorParameters(const class IHistogram &histogram)
+%feature("docstring")  GISASSimulation::setDetectorParameters "void GISASSimulation::setDetectorParameters(const IHistogram &histogram)
 ";
 
 %feature("docstring")  GISASSimulation::setDetectorParameters "void GISASSimulation::setDetectorParameters(size_t n_phi, double phi_min, double phi_max, size_t n_alpha, double alpha_min, double alpha_max)
@@ -4523,7 +4525,7 @@ Sets the polarization analyzer characteristics of the detector.
 removes all masks from the detector 
 ";
 
-%feature("docstring")  GISASSimulation::addMask "void GISASSimulation::addMask(const class Geometry::IShape2D &shape, bool mask_value=true)
+%feature("docstring")  GISASSimulation::addMask "void GISASSimulation::addMask(const Geometry::IShape2D &shape, bool mask_value=true)
 
 Adds mask of given shape to the stack of detector masks. The mask value 'true' means that the channel will be excluded from the simulation. The mask which is added last has priority.
 
@@ -6224,22 +6226,22 @@ C++ includes: IInterferenceFunctionStrategy.h
 %feature("docstring")  IInterferenceFunctionStrategy::~IInterferenceFunctionStrategy "IInterferenceFunctionStrategy::~IInterferenceFunctionStrategy()
 ";
 
-%feature("docstring")  IInterferenceFunctionStrategy::init "void IInterferenceFunctionStrategy::init(const SafePointerVector< class FormFactorInfo > &form_factor_infos, const class IInterferenceFunction &iff)
+%feature("docstring")  IInterferenceFunctionStrategy::init "void IInterferenceFunctionStrategy::init(const SafePointerVector< FormFactorInfo > &form_factor_infos, const IInterferenceFunction &iff)
 
 Initializes the object with form factors and interference functions. 
 ";
 
-%feature("docstring")  IInterferenceFunctionStrategy::setSpecularInfo "void IInterferenceFunctionStrategy::setSpecularInfo(const class LayerSpecularInfo &specular_info)
+%feature("docstring")  IInterferenceFunctionStrategy::setSpecularInfo "void IInterferenceFunctionStrategy::setSpecularInfo(const LayerSpecularInfo &specular_info)
 
 Provides the R,T coefficients information. 
 ";
 
-%feature("docstring")  IInterferenceFunctionStrategy::evaluate "double IInterferenceFunctionStrategy::evaluate(const class SimulationElement &sim_element) const
+%feature("docstring")  IInterferenceFunctionStrategy::evaluate "double IInterferenceFunctionStrategy::evaluate(const SimulationElement &sim_element) const
 
 Calculates the intensity for scalar particles/interactions. 
 ";
 
-%feature("docstring")  IInterferenceFunctionStrategy::evaluatePol "double IInterferenceFunctionStrategy::evaluatePol(const class SimulationElement &sim_element) const
+%feature("docstring")  IInterferenceFunctionStrategy::evaluatePol "double IInterferenceFunctionStrategy::evaluatePol(const SimulationElement &sim_element) const
 
 Calculates the intensity in the presence of polarization of beam and detector. 
 ";
@@ -6321,7 +6323,7 @@ C++ includes: ILayout.h
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  ILayout::accept "virtual void ILayout::accept(class ISampleVisitor *visitor) const =0
+%feature("docstring")  ILayout::accept "virtual void ILayout::accept(ISampleVisitor *visitor) const =0
 
 calls the  ISampleVisitor's visit method 
 ";
@@ -6336,12 +6338,12 @@ Returns a clone with inverted magnetic fields.
 Returns number of particles. 
 ";
 
-%feature("docstring")  ILayout::getParticle "virtual const class IAbstractParticle* ILayout::getParticle(size_t index) const =0
+%feature("docstring")  ILayout::getParticle "virtual const IAbstractParticle* ILayout::getParticle(size_t index) const =0
 
 Returns information about particle with index. 
 ";
 
-%feature("docstring")  ILayout::getParticles "virtual SafePointerVector<const class IParticle> ILayout::getParticles() const =0
+%feature("docstring")  ILayout::getParticles "virtual SafePointerVector<const IParticle> ILayout::getParticles() const =0
 
 Returns information on all particles (type and abundance) and generates new particles if an  IAbstractParticle denotes a collection 
 ";
@@ -6950,7 +6952,7 @@ size_2:
 size in second lattice direction 
 ";
 
-%feature("docstring")  InterferenceFunction2DParaCrystal::setProbabilityDistributions "void InterferenceFunction2DParaCrystal::setProbabilityDistributions(const class IFTDistribution2D &pdf_1, const class IFTDistribution2D &pdf_2)
+%feature("docstring")  InterferenceFunction2DParaCrystal::setProbabilityDistributions "void InterferenceFunction2DParaCrystal::setProbabilityDistributions(const IFTDistribution2D &pdf_1, const IFTDistribution2D &pdf_2)
 
 Sets the probability distributions (Fourier transformed) for the two lattice directions.
 
@@ -8262,7 +8264,7 @@ Base class for DWBA simulations in a layer.
 C++ includes: LayerDWBASimulation.h
 ";
 
-%feature("docstring")  LayerDWBASimulation::LayerDWBASimulation "LayerDWBASimulation::LayerDWBASimulation(const class Layer *p_layer)
+%feature("docstring")  LayerDWBASimulation::LayerDWBASimulation "LayerDWBASimulation::LayerDWBASimulation(const Layer *p_layer)
 ";
 
 %feature("docstring")  LayerDWBASimulation::~LayerDWBASimulation "LayerDWBASimulation::~LayerDWBASimulation()
@@ -9071,7 +9073,7 @@ Calculation of diffuse reflection from multilayer with rough interfaces.
 C++ includes: MultiLayerRoughnessDWBASimulation.h
 ";
 
-%feature("docstring")  MultiLayerRoughnessDWBASimulation::MultiLayerRoughnessDWBASimulation "MultiLayerRoughnessDWBASimulation::MultiLayerRoughnessDWBASimulation(const class MultiLayer *p_multi_layer)
+%feature("docstring")  MultiLayerRoughnessDWBASimulation::MultiLayerRoughnessDWBASimulation "MultiLayerRoughnessDWBASimulation::MultiLayerRoughnessDWBASimulation(const MultiLayer *p_multi_layer)
 ";
 
 %feature("docstring")  MultiLayerRoughnessDWBASimulation::~MultiLayerRoughnessDWBASimulation "MultiLayerRoughnessDWBASimulation::~MultiLayerRoughnessDWBASimulation()
@@ -10271,10 +10273,10 @@ C++ includes: ParticleLayout.h
 %feature("docstring")  ParticleLayout::ParticleLayout "ParticleLayout::ParticleLayout()
 ";
 
-%feature("docstring")  ParticleLayout::ParticleLayout "ParticleLayout::ParticleLayout(const class IAbstractParticle &particle)
+%feature("docstring")  ParticleLayout::ParticleLayout "ParticleLayout::ParticleLayout(const IAbstractParticle &particle)
 ";
 
-%feature("docstring")  ParticleLayout::ParticleLayout "ParticleLayout::ParticleLayout(const class IAbstractParticle &particle, double abundance)
+%feature("docstring")  ParticleLayout::ParticleLayout "ParticleLayout::ParticleLayout(const IAbstractParticle &particle, double abundance)
 ";
 
 %feature("docstring")  ParticleLayout::~ParticleLayout "ParticleLayout::~ParticleLayout()
@@ -10290,17 +10292,17 @@ Returns a clone of this  ISample object.
 Returns a clone with inverted magnetic fields. 
 ";
 
-%feature("docstring")  ParticleLayout::accept "void ParticleLayout::accept(class ISampleVisitor *visitor) const
+%feature("docstring")  ParticleLayout::accept "void ParticleLayout::accept(ISampleVisitor *visitor) const
 
 calls the  ISampleVisitor's visit method 
 ";
 
-%feature("docstring")  ParticleLayout::addParticle "virtual void ParticleLayout::addParticle(const class IAbstractParticle &particle)
+%feature("docstring")  ParticleLayout::addParticle "void ParticleLayout::addParticle(const IAbstractParticle &particle)
 
 Adds generic particle to the layout. 
 ";
 
-%feature("docstring")  ParticleLayout::addParticle "virtual void ParticleLayout::addParticle(const class IAbstractParticle &particle, double abundance)
+%feature("docstring")  ParticleLayout::addParticle "void ParticleLayout::addParticle(const IAbstractParticle &particle, double abundance)
 
 Adds generic particle to the layout with only abundance defined.
 
@@ -10314,7 +10316,7 @@ abundance:
  Particle abundance 
 ";
 
-%feature("docstring")  ParticleLayout::addParticle "virtual void ParticleLayout::addParticle(const class IParticle &particle, double abundance, const kvector_t position)
+%feature("docstring")  ParticleLayout::addParticle "void ParticleLayout::addParticle(const IParticle &particle, double abundance, const kvector_t position)
 
 Adds particle to the layout with abundance and position defined.
 
@@ -10331,7 +10333,7 @@ position:
  Particle position 
 ";
 
-%feature("docstring")  ParticleLayout::addParticle "virtual void ParticleLayout::addParticle(const class IParticle &particle, double abundance, const kvector_t position, const IRotation &rotation)
+%feature("docstring")  ParticleLayout::addParticle "void ParticleLayout::addParticle(const IParticle &particle, double abundance, const kvector_t position, const IRotation &rotation)
 
 Adds particle to the layout with abundance, position and the rotation defined.
 
@@ -10378,7 +10380,7 @@ Get abundance fraction of particle with index.
 Returns interference functions. 
 ";
 
-%feature("docstring")  ParticleLayout::addInterferenceFunction "void ParticleLayout::addInterferenceFunction(const class IInterferenceFunction &interference_function)
+%feature("docstring")  ParticleLayout::addInterferenceFunction "void ParticleLayout::addInterferenceFunction(const IInterferenceFunction &interference_function)
 
 Sets interference function.
 
@@ -11417,7 +11419,7 @@ C++ includes: SampleLabelHandler.h
 %feature("docstring")  SampleLabelHandler::getLayerMap "SampleLabelHandler::layers_t * SampleLabelHandler::getLayerMap()
 ";
 
-%feature("docstring")  SampleLabelHandler::getLayerRoughnessMap "SampleLabelHandler::roughnesses_t * SampleLabelHandler::getLayerRoughnessMap()
+%feature("docstring")  SampleLabelHandler::getParticleLayoutMap "SampleLabelHandler::layouts_t * SampleLabelHandler::getParticleLayoutMap()
 ";
 
 %feature("docstring")  SampleLabelHandler::getMaterialMap "SampleLabelHandler::materials_t * SampleLabelHandler::getMaterialMap()
@@ -11426,94 +11428,94 @@ C++ includes: SampleLabelHandler.h
 %feature("docstring")  SampleLabelHandler::getMultiLayerMap "SampleLabelHandler::multilayers_t * SampleLabelHandler::getMultiLayerMap()
 ";
 
-%feature("docstring")  SampleLabelHandler::getParticleMap "SampleLabelHandler::particles_t * SampleLabelHandler::getParticleMap()
-";
-
-%feature("docstring")  SampleLabelHandler::getParticleCoreShellMap "SampleLabelHandler::particlescoreshell_t * SampleLabelHandler::getParticleCoreShellMap()
+%feature("docstring")  SampleLabelHandler::getParticleCompositionMap "SampleLabelHandler::particlecompositions_t * SampleLabelHandler::getParticleCompositionMap()
 ";
 
 %feature("docstring")  SampleLabelHandler::getParticleDistributionsMap "SampleLabelHandler::particledistributions_t * SampleLabelHandler::getParticleDistributionsMap()
 ";
 
-%feature("docstring")  SampleLabelHandler::getParticleLayoutMap "SampleLabelHandler::layouts_t * SampleLabelHandler::getParticleLayoutMap()
+%feature("docstring")  SampleLabelHandler::getParticleMap "SampleLabelHandler::particles_t * SampleLabelHandler::getParticleMap()
 ";
 
-%feature("docstring")  SampleLabelHandler::getParticleCompositionMap "SampleLabelHandler::particlecompositions_t * SampleLabelHandler::getParticleCompositionMap()
+%feature("docstring")  SampleLabelHandler::getParticleCoreShellMap "SampleLabelHandler::particlescoreshell_t * SampleLabelHandler::getParticleCoreShellMap()
 ";
 
 %feature("docstring")  SampleLabelHandler::getRotationsMap "SampleLabelHandler::rotations_t * SampleLabelHandler::getRotationsMap()
 ";
 
-%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const class IFormFactor *sample)
+%feature("docstring")  SampleLabelHandler::getLayerRoughnessMap "SampleLabelHandler::roughnesses_t * SampleLabelHandler::getLayerRoughnessMap()
 ";
 
-%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const class IInterferenceFunction *sample)
+%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const IAbstractParticle *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const class IMaterial *sample)
+%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const IFormFactor *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const class Layer *sample)
+%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const IInterferenceFunction *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const class LayerRoughness *sample)
+%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const ILayout *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const class MultiLayer *sample)
+%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const IMaterial *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const class IAbstractParticle *sample)
+%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const IRotation *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const class ParticleCoreShell *sample)
+%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const Layer *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const class ParticleDistribution *sample)
+%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const LayerRoughness *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const class ILayout *sample)
+%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const MultiLayer *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const class ParticleComposition *sample)
+%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const ParticleComposition *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const class IRotation *sample)
+%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const ParticleCoreShell *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::insertMaterial "void SampleLabelHandler::insertMaterial(const class IMaterial *sample)
+%feature("docstring")  SampleLabelHandler::getLabel "std::string SampleLabelHandler::getLabel(const ParticleDistribution *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const class IFormFactor *sample)
+%feature("docstring")  SampleLabelHandler::insertMaterial "void SampleLabelHandler::insertMaterial(const IMaterial *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const class IInterferenceFunction *sample)
+%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const IFormFactor *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const class ILayout *sample)
+%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const IInterferenceFunction *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const class Layer *sample)
+%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const ILayout *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const class LayerRoughness *sample)
+%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const IRotation *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const class MultiLayer *sample)
+%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const Layer *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const class Particle *sample)
+%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const LayerRoughness *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const class ParticleCoreShell *sample)
+%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const MultiLayer *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const class ParticleDistribution *sample)
+%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const Particle *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const class ParticleComposition *sample)
+%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const ParticleComposition *sample)
 ";
 
-%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const class IRotation *sample)
+%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const ParticleCoreShell *sample)
+";
+
+%feature("docstring")  SampleLabelHandler::setLabel "void SampleLabelHandler::setLabel(const ParticleDistribution *sample)
 ";
 
 
@@ -12120,10 +12122,10 @@ C++ includes: GISASSimulation.h
 %feature("docstring")  Simulation::Simulation "Simulation::Simulation()
 ";
 
-%feature("docstring")  Simulation::Simulation "Simulation::Simulation(const class ISample &p_sample)
+%feature("docstring")  Simulation::Simulation "Simulation::Simulation(const ISample &p_sample)
 ";
 
-%feature("docstring")  Simulation::Simulation "Simulation::Simulation(std::shared_ptr< class ISampleBuilder > p_sample_builder)
+%feature("docstring")  Simulation::Simulation "Simulation::Simulation(std::shared_ptr< ISampleBuilder > p_sample_builder)
 ";
 
 %feature("docstring")  Simulation::~Simulation "Simulation::~Simulation()
@@ -12149,24 +12151,24 @@ Run simulation with possible averaging over parameter distributions.
 Run an OpenMPI simulation. 
 ";
 
-%feature("docstring")  Simulation::setSample "void Simulation::setSample(const class ISample &sample)
+%feature("docstring")  Simulation::setSample "void Simulation::setSample(const ISample &sample)
 
 Sets the sample to be tested.
 
 The  ISample object will not be owned by the  Simulation object. 
 ";
 
-%feature("docstring")  Simulation::getSample "class ISample* Simulation::getSample() const
+%feature("docstring")  Simulation::getSample "ISample* Simulation::getSample() const
 
 Returns the sample. 
 ";
 
-%feature("docstring")  Simulation::setSampleBuilder "void Simulation::setSampleBuilder(std::shared_ptr< class ISampleBuilder > sample_builder)
+%feature("docstring")  Simulation::setSampleBuilder "void Simulation::setSampleBuilder(std::shared_ptr< ISampleBuilder > sample_builder)
 
 Sets the sample builder. 
 ";
 
-%feature("docstring")  Simulation::getSampleBuilder "std::shared_ptr<class ISampleBuilder> Simulation::getSampleBuilder() const
+%feature("docstring")  Simulation::getSampleBuilder "std::shared_ptr<ISampleBuilder> Simulation::getSampleBuilder() const
 
 return sample builder 
 ";
@@ -12204,7 +12206,7 @@ add a sampled parameter distribution
 sets progress handler (used by GUI) 
 ";
 
-%feature("docstring")  Simulation::initProgressHandlerDWBA "void Simulation::initProgressHandlerDWBA(class ProgressHandlerDWBA *dwba_progress)
+%feature("docstring")  Simulation::initProgressHandlerDWBA "void Simulation::initProgressHandlerDWBA(ProgressHandlerDWBA *dwba_progress)
 
 initializes DWBA progress handler 
 ";
@@ -12448,6 +12450,8 @@ C++ includes: SizeSpacingCorrelationApproximationStrategy.h
 ";
 
 %feature("docstring")  SizeSpacingCorrelationApproximationStrategy::init "void SizeSpacingCorrelationApproximationStrategy::init(const SafePointerVector< FormFactorInfo > &form_factor_infos, const IInterferenceFunction &iff)
+
+Initializes the object with form factors and interference functions. 
 ";
 
 
@@ -12480,10 +12484,10 @@ C++ includes: SpecularSimulation.h
 %feature("docstring")  SpecularSimulation::SpecularSimulation "SpecularSimulation::SpecularSimulation()
 ";
 
-%feature("docstring")  SpecularSimulation::SpecularSimulation "SpecularSimulation::SpecularSimulation(const class ISample &sample)
+%feature("docstring")  SpecularSimulation::SpecularSimulation "SpecularSimulation::SpecularSimulation(const ISample &sample)
 ";
 
-%feature("docstring")  SpecularSimulation::SpecularSimulation "SpecularSimulation::SpecularSimulation(std::shared_ptr< class ISampleBuilder > sample_builder)
+%feature("docstring")  SpecularSimulation::SpecularSimulation "SpecularSimulation::SpecularSimulation(std::shared_ptr< ISampleBuilder > sample_builder)
 ";
 
 %feature("docstring")  SpecularSimulation::~SpecularSimulation "SpecularSimulation::~SpecularSimulation()
@@ -12497,27 +12501,27 @@ C++ includes: SpecularSimulation.h
 Run a simulation with the current parameter settings. 
 ";
 
-%feature("docstring")  SpecularSimulation::setSample "void SpecularSimulation::setSample(const class ISample &sample)
+%feature("docstring")  SpecularSimulation::setSample "void SpecularSimulation::setSample(const ISample &sample)
 
 Sets the sample to be tested. 
 ";
 
-%feature("docstring")  SpecularSimulation::getSample "class ISample* SpecularSimulation::getSample() const
+%feature("docstring")  SpecularSimulation::getSample "ISample* SpecularSimulation::getSample() const
 
 Returns the sample. 
 ";
 
-%feature("docstring")  SpecularSimulation::setSampleBuilder "void SpecularSimulation::setSampleBuilder(std::shared_ptr< class ISampleBuilder > sample_builder)
+%feature("docstring")  SpecularSimulation::setSampleBuilder "void SpecularSimulation::setSampleBuilder(std::shared_ptr< ISampleBuilder > sample_builder)
 
 Sets the sample builder. 
 ";
 
-%feature("docstring")  SpecularSimulation::getSampleBuilder "std::shared_ptr<class ISampleBuilder> SpecularSimulation::getSampleBuilder() const
+%feature("docstring")  SpecularSimulation::getSampleBuilder "std::shared_ptr<ISampleBuilder> SpecularSimulation::getSampleBuilder() const
 
 return sample builder 
 ";
 
-%feature("docstring")  SpecularSimulation::setBeamParameters "void SpecularSimulation::setBeamParameters(double lambda, const class IAxis &alpha_axis)
+%feature("docstring")  SpecularSimulation::setBeamParameters "void SpecularSimulation::setBeamParameters(double lambda, const IAxis &alpha_axis)
 
 Sets beam parameters with alpha_i of the beam defined in the range. 
 ";
@@ -12525,7 +12529,7 @@ Sets beam parameters with alpha_i of the beam defined in the range.
 %feature("docstring")  SpecularSimulation::setBeamParameters "void SpecularSimulation::setBeamParameters(double lambda, int nbins, double alpha_i_min, double alpha_i_max)
 ";
 
-%feature("docstring")  SpecularSimulation::setEvanescentWaveAxis "void SpecularSimulation::setEvanescentWaveAxis(const class IAxis &z_axis)
+%feature("docstring")  SpecularSimulation::setEvanescentWaveAxis "void SpecularSimulation::setEvanescentWaveAxis(const IAxis &z_axis)
 
 set axis for evanescent wave axis 
 ";
@@ -13494,10 +13498,10 @@ Parse double values from string to vector of double.
 %feature("docstring")  PyGenTools::genPyScript "std::string PyGenTools::genPyScript(GISASSimulation *simulation, const std::string &output_filename)
 ";
 
-%feature("docstring")  PyGenTools::getRepresentation "BA_CORE_API_ std::string PyGenTools::getRepresentation(const IDistribution1D *distribution)
+%feature("docstring")  PyGenTools::getRepresentation "std::string PyGenTools::getRepresentation(const IDistribution1D *distribution)
 ";
 
-%feature("docstring")  PyGenTools::getRepresentation "BA_CORE_API_ std::string PyGenTools::getRepresentation(const std::string &indent, const Geometry::IShape2D *ishape, bool mask_value)
+%feature("docstring")  PyGenTools::getRepresentation "std::string PyGenTools::getRepresentation(const std::string &indent, const Geometry::IShape2D *ishape, bool mask_value)
 ";
 
 %feature("docstring")  PyGenTools::printBool "std::string PyGenTools::printBool(double value)
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index 2e717e10aced4731dc0210c6fda5bcc9cefdabfc..48811d07d00944c8c52108dee51ca212c0d7d115 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -12724,7 +12724,7 @@ class Simulation(ICloneable, IParameterized):
         """
         setSample(Simulation self, ISample sample)
 
-        void Simulation::setSample(const class ISample &sample)
+        void Simulation::setSample(const ISample &sample)
 
         Sets the sample to be tested.
 
@@ -12738,7 +12738,7 @@ class Simulation(ICloneable, IParameterized):
         """
         getSample(Simulation self) -> ISample
 
-        class ISample* Simulation::getSample() const
+        ISample* Simulation::getSample() const
 
         Returns the sample. 
 
@@ -12750,7 +12750,7 @@ class Simulation(ICloneable, IParameterized):
         """
         setSampleBuilder(Simulation self, std::shared_ptr< ISampleBuilder > sample_builder)
 
-        void Simulation::setSampleBuilder(std::shared_ptr< class ISampleBuilder > sample_builder)
+        void Simulation::setSampleBuilder(std::shared_ptr< ISampleBuilder > sample_builder)
 
         Sets the sample builder. 
 
@@ -12762,7 +12762,7 @@ class Simulation(ICloneable, IParameterized):
         """
         getSampleBuilder(Simulation self) -> std::shared_ptr< ISampleBuilder >
 
-        std::shared_ptr<class ISampleBuilder> Simulation::getSampleBuilder() const
+        std::shared_ptr<ISampleBuilder> Simulation::getSampleBuilder() const
 
         return sample builder 
 
@@ -13012,7 +13012,7 @@ class GISASSimulation(Simulation):
         __init__(GISASSimulation self, ISample p_sample) -> GISASSimulation
         __init__(GISASSimulation self, std::shared_ptr< ISampleBuilder > p_sample_builder) -> GISASSimulation
 
-        GISASSimulation::GISASSimulation(std::shared_ptr< class ISampleBuilder > p_sample_builder)
+        GISASSimulation::GISASSimulation(std::shared_ptr< ISampleBuilder > p_sample_builder)
 
         """
         this = _libBornAgainCore.new_GISASSimulation(*args)
@@ -13255,7 +13255,7 @@ class GISASSimulation(Simulation):
         addMask(GISASSimulation self, IShape2D shape, bool mask_value=True)
         addMask(GISASSimulation self, IShape2D shape)
 
-        void GISASSimulation::addMask(const class Geometry::IShape2D &shape, bool mask_value=true)
+        void GISASSimulation::addMask(const Geometry::IShape2D &shape, bool mask_value=true)
 
         Adds mask of given shape to the stack of detector masks. The mask value 'true' means that the channel will be excluded from the simulation. The mask which is added last has priority.
 
@@ -14865,7 +14865,7 @@ class ILayout(ICompositeSample):
         """
         accept(ILayout self, ISampleVisitor visitor)
 
-        virtual void ILayout::accept(class ISampleVisitor *visitor) const =0
+        virtual void ILayout::accept(ISampleVisitor *visitor) const =0
 
         calls the  ISampleVisitor's visit method 
 
@@ -14901,7 +14901,7 @@ class ILayout(ICompositeSample):
         """
         getParticle(ILayout self, size_t index) -> IAbstractParticle
 
-        virtual const class IAbstractParticle* ILayout::getParticle(size_t index) const =0
+        virtual const IAbstractParticle* ILayout::getParticle(size_t index) const =0
 
         Returns information about particle with index. 
 
@@ -14913,7 +14913,7 @@ class ILayout(ICompositeSample):
         """
         getParticles(ILayout self) -> SafePointerVector< IParticle const >
 
-        virtual SafePointerVector<const class IParticle> ILayout::getParticles() const =0
+        virtual SafePointerVector<const IParticle> ILayout::getParticles() const =0
 
         Returns information on all particles (type and abundance) and generates new particles if an  IAbstractParticle denotes a collection 
 
@@ -16993,7 +16993,7 @@ class InterferenceFunction2DParaCrystal(IInterferenceFunction):
         """
         setProbabilityDistributions(InterferenceFunction2DParaCrystal self, IFTDistribution2D pdf_1, IFTDistribution2D pdf_2)
 
-        void InterferenceFunction2DParaCrystal::setProbabilityDistributions(const class IFTDistribution2D &pdf_1, const class IFTDistribution2D &pdf_2)
+        void InterferenceFunction2DParaCrystal::setProbabilityDistributions(const IFTDistribution2D &pdf_1, const IFTDistribution2D &pdf_2)
 
         Sets the probability distributions (Fourier transformed) for the two lattice directions.
 
@@ -21124,7 +21124,7 @@ class ParticleLayout(ILayout):
         __init__(ParticleLayout self, IAbstractParticle particle) -> ParticleLayout
         __init__(ParticleLayout self, IAbstractParticle particle, double abundance) -> ParticleLayout
 
-        ParticleLayout::ParticleLayout(const class IAbstractParticle &particle, double abundance)
+        ParticleLayout::ParticleLayout(const IAbstractParticle &particle, double abundance)
 
         """
         this = _libBornAgainCore.new_ParticleLayout(*args)
@@ -21163,7 +21163,7 @@ class ParticleLayout(ILayout):
         """
         accept(ParticleLayout self, ISampleVisitor visitor)
 
-        void ParticleLayout::accept(class ISampleVisitor *visitor) const
+        void ParticleLayout::accept(ISampleVisitor *visitor) const
 
         calls the  ISampleVisitor's visit method 
 
@@ -21178,7 +21178,7 @@ class ParticleLayout(ILayout):
         addParticle(ParticleLayout self, IParticle particle, double abundance, kvector_t position)
         addParticle(ParticleLayout self, IParticle particle, double abundance, kvector_t position, IRotation rotation)
 
-        virtual void ParticleLayout::addParticle(const class IParticle &particle, double abundance, const kvector_t position, const IRotation &rotation)
+        void ParticleLayout::addParticle(const IParticle &particle, double abundance, const kvector_t position, const IRotation &rotation)
 
         Adds particle to the layout with abundance, position and the rotation defined.
 
@@ -21267,7 +21267,7 @@ class ParticleLayout(ILayout):
         """
         addInterferenceFunction(ParticleLayout self, IInterferenceFunction interference_function)
 
-        void ParticleLayout::addInterferenceFunction(const class IInterferenceFunction &interference_function)
+        void ParticleLayout::addInterferenceFunction(const IInterferenceFunction &interference_function)
 
         Sets interference function.
 
@@ -22070,7 +22070,7 @@ class SpecularSimulation(ICloneable, IParameterized):
         __init__(SpecularSimulation self, ISample sample) -> SpecularSimulation
         __init__(SpecularSimulation self, std::shared_ptr< ISampleBuilder > sample_builder) -> SpecularSimulation
 
-        SpecularSimulation::SpecularSimulation(std::shared_ptr< class ISampleBuilder > sample_builder)
+        SpecularSimulation::SpecularSimulation(std::shared_ptr< ISampleBuilder > sample_builder)
 
         """
         this = _libBornAgainCore.new_SpecularSimulation(*args)
@@ -22107,7 +22107,7 @@ class SpecularSimulation(ICloneable, IParameterized):
         """
         setSample(SpecularSimulation self, ISample sample)
 
-        void SpecularSimulation::setSample(const class ISample &sample)
+        void SpecularSimulation::setSample(const ISample &sample)
 
         Sets the sample to be tested. 
 
@@ -22119,7 +22119,7 @@ class SpecularSimulation(ICloneable, IParameterized):
         """
         getSample(SpecularSimulation self) -> ISample
 
-        class ISample* SpecularSimulation::getSample() const
+        ISample* SpecularSimulation::getSample() const
 
         Returns the sample. 
 
@@ -22131,7 +22131,7 @@ class SpecularSimulation(ICloneable, IParameterized):
         """
         setSampleBuilder(SpecularSimulation self, std::shared_ptr< ISampleBuilder > sample_builder)
 
-        void SpecularSimulation::setSampleBuilder(std::shared_ptr< class ISampleBuilder > sample_builder)
+        void SpecularSimulation::setSampleBuilder(std::shared_ptr< ISampleBuilder > sample_builder)
 
         Sets the sample builder. 
 
@@ -22143,7 +22143,7 @@ class SpecularSimulation(ICloneable, IParameterized):
         """
         getSampleBuilder(SpecularSimulation self) -> std::shared_ptr< ISampleBuilder >
 
-        std::shared_ptr<class ISampleBuilder> SpecularSimulation::getSampleBuilder() const
+        std::shared_ptr<ISampleBuilder> SpecularSimulation::getSampleBuilder() const
 
         return sample builder 
 
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index 21ea717d03f2753e296297da06d49d85eeb12d0a..6ee9631a899ad77a53eeaaf903e49adac8f15928 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -97318,7 +97318,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Simulation_setSample", _wrap_Simulation_setSample, METH_VARARGS, (char *)"\n"
 		"Simulation_setSample(Simulation self, ISample sample)\n"
 		"\n"
-		"void Simulation::setSample(const class ISample &sample)\n"
+		"void Simulation::setSample(const ISample &sample)\n"
 		"\n"
 		"Sets the sample to be tested.\n"
 		"\n"
@@ -97328,7 +97328,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Simulation_getSample", _wrap_Simulation_getSample, METH_VARARGS, (char *)"\n"
 		"Simulation_getSample(Simulation self) -> ISample\n"
 		"\n"
-		"class ISample* Simulation::getSample() const\n"
+		"ISample* Simulation::getSample() const\n"
 		"\n"
 		"Returns the sample. \n"
 		"\n"
@@ -97336,7 +97336,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Simulation_setSampleBuilder", _wrap_Simulation_setSampleBuilder, METH_VARARGS, (char *)"\n"
 		"Simulation_setSampleBuilder(Simulation self, std::shared_ptr< ISampleBuilder > sample_builder)\n"
 		"\n"
-		"void Simulation::setSampleBuilder(std::shared_ptr< class ISampleBuilder > sample_builder)\n"
+		"void Simulation::setSampleBuilder(std::shared_ptr< ISampleBuilder > sample_builder)\n"
 		"\n"
 		"Sets the sample builder. \n"
 		"\n"
@@ -97344,7 +97344,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"Simulation_getSampleBuilder", _wrap_Simulation_getSampleBuilder, METH_VARARGS, (char *)"\n"
 		"Simulation_getSampleBuilder(Simulation self) -> std::shared_ptr< ISampleBuilder >\n"
 		"\n"
-		"std::shared_ptr<class ISampleBuilder> Simulation::getSampleBuilder() const\n"
+		"std::shared_ptr<ISampleBuilder> Simulation::getSampleBuilder() const\n"
 		"\n"
 		"return sample builder \n"
 		"\n"
@@ -97489,7 +97489,7 @@ static PyMethodDef SwigMethods[] = {
 		"GISASSimulation(ISample p_sample)\n"
 		"new_GISASSimulation(std::shared_ptr< ISampleBuilder > p_sample_builder) -> GISASSimulation\n"
 		"\n"
-		"GISASSimulation::GISASSimulation(std::shared_ptr< class ISampleBuilder > p_sample_builder)\n"
+		"GISASSimulation::GISASSimulation(std::shared_ptr< ISampleBuilder > p_sample_builder)\n"
 		"\n"
 		""},
 	 { (char *)"delete_GISASSimulation", _wrap_delete_GISASSimulation, METH_VARARGS, (char *)"\n"
@@ -97661,7 +97661,7 @@ static PyMethodDef SwigMethods[] = {
 		"addMask(IShape2D shape, bool mask_value=True)\n"
 		"GISASSimulation_addMask(GISASSimulation self, IShape2D shape)\n"
 		"\n"
-		"void GISASSimulation::addMask(const class Geometry::IShape2D &shape, bool mask_value=true)\n"
+		"void GISASSimulation::addMask(const Geometry::IShape2D &shape, bool mask_value=true)\n"
 		"\n"
 		"Adds mask of given shape to the stack of detector masks. The mask value 'true' means that the channel will be excluded from the simulation. The mask which is added last has priority.\n"
 		"\n"
@@ -98617,7 +98617,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ILayout_accept", _wrap_ILayout_accept, METH_VARARGS, (char *)"\n"
 		"ILayout_accept(ILayout self, ISampleVisitor visitor)\n"
 		"\n"
-		"virtual void ILayout::accept(class ISampleVisitor *visitor) const =0\n"
+		"virtual void ILayout::accept(ISampleVisitor *visitor) const =0\n"
 		"\n"
 		"calls the  ISampleVisitor's visit method \n"
 		"\n"
@@ -98641,7 +98641,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ILayout_getParticle", _wrap_ILayout_getParticle, METH_VARARGS, (char *)"\n"
 		"ILayout_getParticle(ILayout self, size_t index) -> IAbstractParticle\n"
 		"\n"
-		"virtual const class IAbstractParticle* ILayout::getParticle(size_t index) const =0\n"
+		"virtual const IAbstractParticle* ILayout::getParticle(size_t index) const =0\n"
 		"\n"
 		"Returns information about particle with index. \n"
 		"\n"
@@ -98649,7 +98649,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ILayout_getParticles", _wrap_ILayout_getParticles, METH_VARARGS, (char *)"\n"
 		"ILayout_getParticles(ILayout self) -> SafePointerVector< IParticle const >\n"
 		"\n"
-		"virtual SafePointerVector<const class IParticle> ILayout::getParticles() const =0\n"
+		"virtual SafePointerVector<const IParticle> ILayout::getParticles() const =0\n"
 		"\n"
 		"Returns information on all particles (type and abundance) and generates new particles if an  IAbstractParticle denotes a collection \n"
 		"\n"
@@ -99777,7 +99777,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"InterferenceFunction2DParaCrystal_setProbabilityDistributions", _wrap_InterferenceFunction2DParaCrystal_setProbabilityDistributions, METH_VARARGS, (char *)"\n"
 		"InterferenceFunction2DParaCrystal_setProbabilityDistributions(InterferenceFunction2DParaCrystal self, IFTDistribution2D pdf_1, IFTDistribution2D pdf_2)\n"
 		"\n"
-		"void InterferenceFunction2DParaCrystal::setProbabilityDistributions(const class IFTDistribution2D &pdf_1, const class IFTDistribution2D &pdf_2)\n"
+		"void InterferenceFunction2DParaCrystal::setProbabilityDistributions(const IFTDistribution2D &pdf_1, const IFTDistribution2D &pdf_2)\n"
 		"\n"
 		"Sets the probability distributions (Fourier transformed) for the two lattice directions.\n"
 		"\n"
@@ -102159,7 +102159,7 @@ static PyMethodDef SwigMethods[] = {
 		"ParticleLayout(IAbstractParticle particle)\n"
 		"new_ParticleLayout(IAbstractParticle particle, double abundance) -> ParticleLayout\n"
 		"\n"
-		"ParticleLayout::ParticleLayout(const class IAbstractParticle &particle, double abundance)\n"
+		"ParticleLayout::ParticleLayout(const IAbstractParticle &particle, double abundance)\n"
 		"\n"
 		""},
 	 { (char *)"delete_ParticleLayout", _wrap_delete_ParticleLayout, METH_VARARGS, (char *)"\n"
@@ -102187,7 +102187,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleLayout_accept", _wrap_ParticleLayout_accept, METH_VARARGS, (char *)"\n"
 		"ParticleLayout_accept(ParticleLayout self, ISampleVisitor visitor)\n"
 		"\n"
-		"void ParticleLayout::accept(class ISampleVisitor *visitor) const\n"
+		"void ParticleLayout::accept(ISampleVisitor *visitor) const\n"
 		"\n"
 		"calls the  ISampleVisitor's visit method \n"
 		"\n"
@@ -102198,7 +102198,7 @@ static PyMethodDef SwigMethods[] = {
 		"addParticle(IParticle particle, double abundance, kvector_t position)\n"
 		"ParticleLayout_addParticle(ParticleLayout self, IParticle particle, double abundance, kvector_t position, IRotation rotation)\n"
 		"\n"
-		"virtual void ParticleLayout::addParticle(const class IParticle &particle, double abundance, const kvector_t position, const IRotation &rotation)\n"
+		"void ParticleLayout::addParticle(const IParticle &particle, double abundance, const kvector_t position, const IRotation &rotation)\n"
 		"\n"
 		"Adds particle to the layout with abundance, position and the rotation defined.\n"
 		"\n"
@@ -102263,7 +102263,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ParticleLayout_addInterferenceFunction", _wrap_ParticleLayout_addInterferenceFunction, METH_VARARGS, (char *)"\n"
 		"ParticleLayout_addInterferenceFunction(ParticleLayout self, IInterferenceFunction interference_function)\n"
 		"\n"
-		"void ParticleLayout::addInterferenceFunction(const class IInterferenceFunction &interference_function)\n"
+		"void ParticleLayout::addInterferenceFunction(const IInterferenceFunction &interference_function)\n"
 		"\n"
 		"Sets interference function.\n"
 		"\n"
@@ -102691,7 +102691,7 @@ static PyMethodDef SwigMethods[] = {
 		"SpecularSimulation(ISample sample)\n"
 		"new_SpecularSimulation(std::shared_ptr< ISampleBuilder > sample_builder) -> SpecularSimulation\n"
 		"\n"
-		"SpecularSimulation::SpecularSimulation(std::shared_ptr< class ISampleBuilder > sample_builder)\n"
+		"SpecularSimulation::SpecularSimulation(std::shared_ptr< ISampleBuilder > sample_builder)\n"
 		"\n"
 		""},
 	 { (char *)"delete_SpecularSimulation", _wrap_delete_SpecularSimulation, METH_VARARGS, (char *)"\n"
@@ -102717,7 +102717,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SpecularSimulation_setSample", _wrap_SpecularSimulation_setSample, METH_VARARGS, (char *)"\n"
 		"SpecularSimulation_setSample(SpecularSimulation self, ISample sample)\n"
 		"\n"
-		"void SpecularSimulation::setSample(const class ISample &sample)\n"
+		"void SpecularSimulation::setSample(const ISample &sample)\n"
 		"\n"
 		"Sets the sample to be tested. \n"
 		"\n"
@@ -102725,7 +102725,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SpecularSimulation_getSample", _wrap_SpecularSimulation_getSample, METH_VARARGS, (char *)"\n"
 		"SpecularSimulation_getSample(SpecularSimulation self) -> ISample\n"
 		"\n"
-		"class ISample* SpecularSimulation::getSample() const\n"
+		"ISample* SpecularSimulation::getSample() const\n"
 		"\n"
 		"Returns the sample. \n"
 		"\n"
@@ -102733,7 +102733,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SpecularSimulation_setSampleBuilder", _wrap_SpecularSimulation_setSampleBuilder, METH_VARARGS, (char *)"\n"
 		"SpecularSimulation_setSampleBuilder(SpecularSimulation self, std::shared_ptr< ISampleBuilder > sample_builder)\n"
 		"\n"
-		"void SpecularSimulation::setSampleBuilder(std::shared_ptr< class ISampleBuilder > sample_builder)\n"
+		"void SpecularSimulation::setSampleBuilder(std::shared_ptr< ISampleBuilder > sample_builder)\n"
 		"\n"
 		"Sets the sample builder. \n"
 		"\n"
@@ -102741,7 +102741,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"SpecularSimulation_getSampleBuilder", _wrap_SpecularSimulation_getSampleBuilder, METH_VARARGS, (char *)"\n"
 		"SpecularSimulation_getSampleBuilder(SpecularSimulation self) -> std::shared_ptr< ISampleBuilder >\n"
 		"\n"
-		"std::shared_ptr<class ISampleBuilder> SpecularSimulation::getSampleBuilder() const\n"
+		"std::shared_ptr<ISampleBuilder> SpecularSimulation::getSampleBuilder() const\n"
 		"\n"
 		"return sample builder \n"
 		"\n"