diff --git a/Core/Assembly/FTDistributions.cpp b/Core/Assembly/FTDistributions.cpp
index 3631d84c97bff09a17ed2a4c36e63db7d9b3e5e4..2560572af13724dad02dfc8d6ac4aeff0c56ec25 100644
--- a/Core/Assembly/FTDistributions.cpp
+++ b/Core/Assembly/FTDistributions.cpp
@@ -17,6 +17,7 @@
 #include "BornAgainNamespace.h"
 #include "IntegratorReal.h"
 #include "MathFunctions.h"
+#include "Numeric.h"
 
 using namespace BornAgain;
 
diff --git a/Core/Assembly/InterferenceFunction2DParaCrystal.cpp b/Core/Assembly/InterferenceFunction2DParaCrystal.cpp
index 6bb15f4e7fb3f1decb19ecbfcec0cbf6e4a0f2d7..c5f1b75978d55964fc8a57751779388721d168b6 100644
--- a/Core/Assembly/InterferenceFunction2DParaCrystal.cpp
+++ b/Core/Assembly/InterferenceFunction2DParaCrystal.cpp
@@ -17,6 +17,8 @@
 #include "BornAgainNamespace.h"
 #include "ISampleVisitor.h"
 #include "IntegratorReal.h"
+#include "Numeric.h"
+#include <limits>
 
 using namespace BornAgain;
 
diff --git a/Core/Assembly/InterferenceFunctionRadialParaCrystal.cpp b/Core/Assembly/InterferenceFunctionRadialParaCrystal.cpp
index 0d07407dae84910cd61becd0d9bd0ba1473f2f4d..a635952d6cf2e3e1d5cc9558ac682003202f1862 100644
--- a/Core/Assembly/InterferenceFunctionRadialParaCrystal.cpp
+++ b/Core/Assembly/InterferenceFunctionRadialParaCrystal.cpp
@@ -16,6 +16,8 @@
 #include "InterferenceFunctionRadialParaCrystal.h"
 #include "BornAgainNamespace.h"
 #include "ISampleVisitor.h"
+#include "Numeric.h"
+#include <limits>
 
 using namespace BornAgain;
 
@@ -43,8 +45,8 @@ void InterferenceFunctionRadialParaCrystal::init_parameters()
     registerParameter(DomainSize, &m_domain_size);
 }
 
-InterferenceFunctionRadialParaCrystal *InterferenceFunctionRadialParaCrystal::clone() const {
-    InterferenceFunctionRadialParaCrystal *result =
+InterferenceFunctionRadialParaCrystal* InterferenceFunctionRadialParaCrystal::clone() const {
+    InterferenceFunctionRadialParaCrystal* result =
         new InterferenceFunctionRadialParaCrystal(
             m_peak_distance, m_damping_length);
     result->setDomainSize(getDomainSize());
@@ -55,31 +57,11 @@ InterferenceFunctionRadialParaCrystal *InterferenceFunctionRadialParaCrystal::cl
     return result;
 }
 
-void InterferenceFunctionRadialParaCrystal::accept(ISampleVisitor *visitor) const
+void InterferenceFunctionRadialParaCrystal::accept(ISampleVisitor* visitor) const
 {
     visitor->visit(this);
 }
 
-void InterferenceFunctionRadialParaCrystal::setDomainSize(double size)
-{
-    m_domain_size = size;
-}
-
-double InterferenceFunctionRadialParaCrystal::getDomainSize() const
-{
-    return m_domain_size;
-}
-
-void InterferenceFunctionRadialParaCrystal::setKappa(double kappa)
-{
-    m_kappa = kappa;
-}
-
-double InterferenceFunctionRadialParaCrystal::getKappa() const
-{
-    return m_kappa;
-}
-
 double InterferenceFunctionRadialParaCrystal::evaluate(const kvector_t q) const
 {
     if (!mP_pdf.get()) {
@@ -140,8 +122,7 @@ void InterferenceFunctionRadialParaCrystal::setProbabilityDistribution(
     }
 }
 
-const IFTDistribution1D
-    *InterferenceFunctionRadialParaCrystal::getProbabilityDistribution() const
+const IFTDistribution1D* InterferenceFunctionRadialParaCrystal::getProbabilityDistribution() const
 {
     return mP_pdf.get();
 }
diff --git a/Core/Assembly/InterferenceFunctionRadialParaCrystal.h b/Core/Assembly/InterferenceFunctionRadialParaCrystal.h
index 96f5a907da4589ddedcbe04f011cbd81100b74bf..32ba4ba06abdd7a92ea17a001496346ebe86219f 100644
--- a/Core/Assembly/InterferenceFunctionRadialParaCrystal.h
+++ b/Core/Assembly/InterferenceFunctionRadialParaCrystal.h
@@ -34,21 +34,17 @@ public:
 
     virtual void accept(ISampleVisitor* visitor) const;
 
-    //! @brief Sets size of coherence domain
-    //! @param size: size in lattice direction
-    void setDomainSize(double size);
+    //! Sets size of coherence domain
+    void setDomainSize(double size) { m_domain_size = size; }
 
-    //! @brief Gets size of coherence domain
-    //! @return Size in lattice direction
-    double getDomainSize() const;
+    //! Returns size of coherence domain
+    double getDomainSize() const { return m_domain_size; }
 
-    //! @brief Sets size-spacing coupling parameter
-    //! @param kappa: size-spacing coupling parameter
-    void setKappa(double kappa);
+    //! Sets size-spacing coupling parameter
+    void setKappa(double kappa) { m_kappa = kappa; }
 
-    //! @brief Gets size-spacing coupling parameter
-    //! @return Size-spacing coupling parameter
-    virtual double getKappa() const;
+    //! Gets size-spacing coupling parameter
+    virtual double getKappa() const { return m_kappa; }
 
     virtual double evaluate(const kvector_t q) const;
     //TODO: replace these with strategy pattern for different algorithms
diff --git a/Core/Basics/Numeric.cpp b/Core/Basics/Numeric.cpp
index 9a81481ad759c28c18aa645e16c0df29101a6691..f82aebe7ed8fc0b5cf0400361d807e66e4a2d281 100644
--- a/Core/Basics/Numeric.cpp
+++ b/Core/Basics/Numeric.cpp
@@ -14,6 +14,7 @@
 // ************************************************************************** //
 
 #include "Numeric.h"
+#include <cmath>
 
 //! Floating-point epsilon, tolerances, almost-equal.
 
@@ -25,7 +26,6 @@ bool areAlmostEqual(double a, double b, double tolerance_factor)
     return get_relative_difference(a, b) < tolerance_factor*double_epsilon;
 }
 
-
 //! calculates safe relative difference |(a-b)/b|
 double get_relative_difference(double a, double b)
 {
diff --git a/Core/Basics/Numeric.h b/Core/Basics/Numeric.h
index a888103aa300fe2e8489ca194889fa742aafeff5..4638917a6ab759eea2d9c8f426ea38e7a2e0906b 100644
--- a/Core/Basics/Numeric.h
+++ b/Core/Basics/Numeric.h
@@ -16,13 +16,13 @@
 #ifndef NUMERIC_H
 #define NUMERIC_H
 
-#include <algorithm>
-#include <cmath>
+#include <limits>
 
 //! Floating-point epsilon, tolerances, almost-equal.
 
 namespace Numeric {
 
+    // TODO move initialization (and #include <limits>) to .cpp
 static const double double_epsilon = std::numeric_limits<double>::epsilon();
 
 static const double double_min = std::numeric_limits<double>::min();
diff --git a/Core/HardParticles/FormFactorCone.cpp b/Core/HardParticles/FormFactorCone.cpp
index 558c36560e3b7fe7614754d2bdb24d0bdb96caaf..37ad29afb6008d34df5cb0eb9ae7b3d99e52a528 100644
--- a/Core/HardParticles/FormFactorCone.cpp
+++ b/Core/HardParticles/FormFactorCone.cpp
@@ -16,6 +16,7 @@
 #include "FormFactorCone.h"
 #include "BornAgainNamespace.h"
 #include "MathFunctions.h"
+#include "Numeric.h"
 
 //! @brief Cone constructor
 //! @param radius of Cone's base
diff --git a/Core/HardParticles/FormFactorFullSpheroid.cpp b/Core/HardParticles/FormFactorFullSpheroid.cpp
index be65922e7d4df84779e322f7aa425e26448a4b35..1d9c60c40466f7a7fdf6d00b6318ca4afe932ce7 100644
--- a/Core/HardParticles/FormFactorFullSpheroid.cpp
+++ b/Core/HardParticles/FormFactorFullSpheroid.cpp
@@ -16,6 +16,7 @@
 #include "FormFactorFullSpheroid.h"
 #include "BornAgainNamespace.h"
 #include "MathFunctions.h"
+#include "Numeric.h"
 
 using namespace  BornAgain;
 
diff --git a/Core/HardParticles/FormFactorHemiEllipsoid.cpp b/Core/HardParticles/FormFactorHemiEllipsoid.cpp
index 55046fd1fa7059cc1180831ca1af227a17c08ea6..feca8eeb396328f6c5ed82613fc212da52fd742f 100644
--- a/Core/HardParticles/FormFactorHemiEllipsoid.cpp
+++ b/Core/HardParticles/FormFactorHemiEllipsoid.cpp
@@ -16,6 +16,7 @@
 #include "FormFactorHemiEllipsoid.h"
 #include "BornAgainNamespace.h"
 #include "MathFunctions.h"
+#include "Numeric.h"
 
 using namespace  BornAgain;
 
diff --git a/Core/HardParticles/FormFactorTruncatedSphere.cpp b/Core/HardParticles/FormFactorTruncatedSphere.cpp
index a8311385662047670f210115fa086aa72c2a90a1..f57f832b4c2a7b35509ddd30e946b3ab7986b42c 100644
--- a/Core/HardParticles/FormFactorTruncatedSphere.cpp
+++ b/Core/HardParticles/FormFactorTruncatedSphere.cpp
@@ -16,6 +16,7 @@
 #include "FormFactorTruncatedSphere.h"
 #include "BornAgainNamespace.h"
 #include "MathFunctions.h"
+#include "Numeric.h"
 
 using namespace  BornAgain;
 
@@ -81,8 +82,7 @@ complex_t FormFactorTruncatedSphere::evaluate_for_q(const cvector_t q) const
         return Units::PI/3.*m_radius*m_radius*m_radius
                 *(3.*HdivR -1. - (HdivR - 1.)*(HdivR - 1.)*(HdivR - 1.));
     }
-    else {
-        complex_t integral = mP_integrator->integrate(m_radius-m_height, m_radius);
-        return Units::PI2 * integral * exp_I(q.z()*(m_height-m_radius));
-    }
+    // else
+    complex_t integral = mP_integrator->integrate(m_radius-m_height, m_radius);
+    return Units::PI2 * integral * exp_I(q.z()*(m_height-m_radius));
 }
diff --git a/Core/HardParticles/FormFactorTruncatedSpheroid.cpp b/Core/HardParticles/FormFactorTruncatedSpheroid.cpp
index 9f25e981fb94a00a8aa7b097f915aaf1b12b1c76..290358d8feacad1edea9c00dd24a1eb2183bc9c7 100644
--- a/Core/HardParticles/FormFactorTruncatedSpheroid.cpp
+++ b/Core/HardParticles/FormFactorTruncatedSpheroid.cpp
@@ -16,6 +16,7 @@
 #include "FormFactorTruncatedSpheroid.h"
 #include "BornAgainNamespace.h"
 #include "MathFunctions.h"
+#include "Numeric.h"
 
 using namespace  BornAgain;
 
diff --git a/Core/InputOutput/OutputDataIOHelper.cpp b/Core/InputOutput/OutputDataIOHelper.cpp
index 79794aff16ce7481026e5034b11815a3b4b87fce..db12c7799bf5c2156927ad33087137397c1b7c8d 100644
--- a/Core/InputOutput/OutputDataIOHelper.cpp
+++ b/Core/InputOutput/OutputDataIOHelper.cpp
@@ -13,14 +13,13 @@
 //
 // ************************************************************************** //
 
-
 #include "OutputDataIOHelper.h"
 #include "ConstKBinAxis.h"
 #include "CustomBinAxis.h"
 #include "FileSystem.h"
 #include "OutputData.h"
 #include "Utils.h"
-
+#include <iostream>
 
 bool OutputDataIOHelper::isCompressed(const std::string& name)
 {
@@ -31,16 +30,12 @@ bool OutputDataIOHelper::isCompressed(const std::string& name)
 
 bool OutputDataIOHelper::isGZipped(const std::string& name)
 {
-    if ( Utils::FileSystem::GetFileExtension(name) == GzipExtention)
-        return true;
-    return false;
+    return Utils::FileSystem::GetFileExtension(name) == GzipExtention;
 }
 
 bool OutputDataIOHelper::isBZipped(const std::string& name)
 {
-    if ( Utils::FileSystem::GetFileExtension(name) == BzipExtention)
-        return true;
-    return false;
+    return Utils::FileSystem::GetFileExtension(name) == BzipExtention;
 }
 
 
@@ -89,27 +84,17 @@ bool OutputDataIOHelper::isTiffFile(const std::string& file_name)
 //! similar way.
 bool OutputDataIOHelper::isSimilarToFixedBinAxisType(const std::string& line)
 {
-    if(line.find(FixedBinAxisType) != std::string::npos ||
-       line.find(ConstKBinAxisType) != std::string::npos ||
-       line.find(CustomBinAxisType) != std::string::npos)
-    {
-        return true;
-    }
-    return false;
+    return line.find(FixedBinAxisType) != std::string::npos ||
+        line.find(ConstKBinAxisType) != std::string::npos ||
+        line.find(CustomBinAxisType) != std::string::npos;
 }
 
-
 bool OutputDataIOHelper::isVariableBinAxisType(const std::string& line)
 {
-    if(line.find(VariableBinAxisType) != std::string::npos) {
-        return true;
-    } else {
-        return false;
-    }
+    return line.find(VariableBinAxisType) != std::string::npos;
 }
 
 
-
 //! Creates axis of certain type from input stream
 IAxis *OutputDataIOHelper::createAxis(std::istream& input_stream)
 {
@@ -130,7 +115,6 @@ IAxis *OutputDataIOHelper::createAxis(std::istream& input_stream)
     }
 }
 
-
 //! Create one of FixedBinAxis from string representation
 //! FixedBinAxis("axis0", 10, -1, 1)
 //! ConstKBinAxis("axis0", 10, -1, 1)
@@ -199,8 +183,7 @@ void OutputDataIOHelper::fillOutputData(OutputData<double>* data, std::istream&
     std::string line;
     data->setAllTo(0.0);
     OutputData<double>::iterator it = data->begin();
-    while( std::getline(input_stream, line) )
-    {
+    while( std::getline(input_stream, line) ) {
         if(line.empty() || line[0] == '#') break;
 
         std::istringstream iss(line);
diff --git a/Core/Instrument/ConstKBinAxis.cpp b/Core/Instrument/ConstKBinAxis.cpp
index 94beeb9c32b22e6c1eb6d702408b6a50482e808f..abe84722518c3d631e2c6ca3b9f2139e52028049 100644
--- a/Core/Instrument/ConstKBinAxis.cpp
+++ b/Core/Instrument/ConstKBinAxis.cpp
@@ -14,6 +14,7 @@
 // ************************************************************************** //
 
 #include "ConstKBinAxis.h"
+#include "Numeric.h"
 #include <iomanip>
 
 ConstKBinAxis::ConstKBinAxis(const std::string &name, size_t nbins)
@@ -44,12 +45,12 @@ ConstKBinAxis::ConstKBinAxis(const std::string &name, size_t nbins, double start
     setBinBoundaries(bin_boundaries);
 }
 
-ConstKBinAxis *ConstKBinAxis::clone() const
+ConstKBinAxis* ConstKBinAxis::clone() const
 {
     return new ConstKBinAxis(getName(), m_nbins, m_start, m_end);
 }
 
-ConstKBinAxis *ConstKBinAxis::createClippedAxis(double left, double right) const
+ConstKBinAxis* ConstKBinAxis::createClippedAxis(double left, double right) const
 {
     if(left >= right)
         throw Exceptions::LogicErrorException(
@@ -68,7 +69,7 @@ ConstKBinAxis *ConstKBinAxis::createClippedAxis(double left, double right) const
         new_boundaries.push_back(old_boundaries[nbin1 + i]);
     }
 
-    ConstKBinAxis *result = new ConstKBinAxis(getName(), new_nbins);
+    ConstKBinAxis* result = new ConstKBinAxis(getName(), new_nbins);
     result->m_start = new_boundaries.front();
     result->m_end = new_boundaries.back();
     result->setBinBoundaries(new_boundaries);
@@ -78,7 +79,7 @@ ConstKBinAxis *ConstKBinAxis::createClippedAxis(double left, double right) const
 bool ConstKBinAxis::equals(const IAxis& other) const
 {
     if (!IAxis::equals(other)) return false;
-    if (const ConstKBinAxis *otherAxis = dynamic_cast<const ConstKBinAxis *>(&other)) {
+    if (const ConstKBinAxis* otherAxis = dynamic_cast<const ConstKBinAxis*>(&other)) {
         if (getSize() != otherAxis->getSize()) return false;
         if ( !Numeric::areAlmostEqual(m_start, otherAxis->m_start)) return false;
         if ( !Numeric::areAlmostEqual(m_end, otherAxis->m_end)) return false;
@@ -87,7 +88,7 @@ bool ConstKBinAxis::equals(const IAxis& other) const
     return false;
 }
 
-void ConstKBinAxis::print(std::ostream &ostr) const
+void ConstKBinAxis::print(std::ostream& ostr) const
 {
     ostr << "ConstKBinAxis(\"" << m_name << "\", " << getSize() << ", "
          << std::setprecision(std::numeric_limits<double>::digits10+2)
diff --git a/Core/Instrument/CustomBinAxis.cpp b/Core/Instrument/CustomBinAxis.cpp
index b95b76d53866c4fdcf6126532edd3d0929978771..3c64757f3d4c48c55c1b7068cc5f470d04059ea8 100644
--- a/Core/Instrument/CustomBinAxis.cpp
+++ b/Core/Instrument/CustomBinAxis.cpp
@@ -14,7 +14,9 @@
 // ************************************************************************** //
 
 #include "CustomBinAxis.h"
+#include "Numeric.h"
 #include <iomanip>
+#include <limits>
 
 CustomBinAxis::CustomBinAxis(const std::string &name, size_t nbins, double start, double end)
     : VariableBinAxis(name, nbins)
diff --git a/Core/Instrument/FixedBinAxis.cpp b/Core/Instrument/FixedBinAxis.cpp
index 014fb03c7c95c8b6433c15db8e4c596179ebdd1d..9937250a44e9b78eb138ac1b4c76973f74215563 100644
--- a/Core/Instrument/FixedBinAxis.cpp
+++ b/Core/Instrument/FixedBinAxis.cpp
@@ -14,8 +14,9 @@
 // ************************************************************************** //
 
 #include "FixedBinAxis.h"
+#include "Numeric.h"
 #include <iomanip>
-
+#include <limits>
 
 FixedBinAxis::FixedBinAxis(const std::string &name, size_t nbins, double start, double end)
     : IAxis(name), m_nbins(nbins), m_start(start), m_end(end)
@@ -28,11 +29,6 @@ FixedBinAxis *FixedBinAxis::clone() const
     return result;
 }
 
-size_t FixedBinAxis::getSize() const
-{
-    return m_nbins;
-}
-
 double FixedBinAxis::operator[](size_t index) const
 {
     if(index >= m_nbins)
@@ -52,21 +48,6 @@ Bin1D FixedBinAxis::getBin(size_t index) const
     return result;
 }
 
-double FixedBinAxis::getMin() const
-{
-    return m_start;
-}
-
-double FixedBinAxis::getMax() const
-{
-    return m_end;
-}
-
-double FixedBinAxis::getBinCenter(size_t index) const
-{
-    return (*this)[index];
-}
-
 size_t FixedBinAxis::findClosestIndex(double value) const
 {
     if( value < getMin()) {
diff --git a/Core/Instrument/FixedBinAxis.h b/Core/Instrument/FixedBinAxis.h
index afb78af311a380d725e47bcc67fe1ab10a2605cc..b6eb417125cb74c5644ac34657ffcb31f6a613d3 100644
--- a/Core/Instrument/FixedBinAxis.h
+++ b/Core/Instrument/FixedBinAxis.h
@@ -36,17 +36,16 @@ public:
 
     FixedBinAxis *clone() const;
 
-    size_t getSize() const;
+    size_t getSize() const { return m_nbins; }
 
     double operator[](size_t index) const;
 
     Bin1D getBin(size_t index) const;
 
-    double getMin() const;
+    double getMin() const { return m_start; }
+    double getMax() const { return m_end; }
 
-    double getMax() const;
-
-    double getBinCenter(size_t index) const;
+    double getBinCenter(size_t index) const { return (*this)[index]; }
 
     size_t findClosestIndex(double value) const;
 
diff --git a/Core/Instrument/LLData.h b/Core/Instrument/LLData.h
index edf9c2aa8a27dd86ddd2a8cba21c21309c0aa5c6..e74205049bb10cf6be34381184aaa2a1aec16e07 100644
--- a/Core/Instrument/LLData.h
+++ b/Core/Instrument/LLData.h
@@ -16,7 +16,6 @@
 #ifndef LLDATA_H
 #define LLDATA_H
 
-
 #include "EigenCore.h"
 #include "Exceptions.h"
 #include "Numeric.h"
diff --git a/Core/Instrument/Line.cpp b/Core/Instrument/Line.cpp
index 3222e1a9cf85743f56d6b1e41e84044f5ab12576..7ad91b02faa75e1b9de941d562bd6def92d4da9b 100644
--- a/Core/Instrument/Line.cpp
+++ b/Core/Instrument/Line.cpp
@@ -16,6 +16,7 @@
 #include "Line.h"
 #include "Bin.h"
 #include "Macros.h"
+#include "Numeric.h"
 GCC_DIAG_OFF(unused-parameter)
 #include <boost/geometry.hpp>
 #include <boost/geometry/geometries/point_xy.hpp>
@@ -26,7 +27,6 @@ typedef model::d2::point_xy<double> point_t;
 typedef model::box<point_t> box_t;
 typedef model::linestring<point_t> line_t;
 
-
 namespace Geometry {
 
 Line::Line(double x1, double y1, double x2, double y2)
diff --git a/Core/Instrument/VariableBinAxis.cpp b/Core/Instrument/VariableBinAxis.cpp
index f2b63517913f69678542094c4d0ed4e409c61c9c..e6c9c16f46dea59123f73f44c9b27070e5d27c44 100644
--- a/Core/Instrument/VariableBinAxis.cpp
+++ b/Core/Instrument/VariableBinAxis.cpp
@@ -14,9 +14,10 @@
 // ************************************************************************** //
 
 #include "VariableBinAxis.h"
+#include "Numeric.h"
+#include <algorithm>
 #include <iomanip>
 
-
 VariableBinAxis::VariableBinAxis(
     const std::string &name, size_t nbins, const std::vector<double> &bin_boundaries)
     : IAxis(name)
@@ -44,12 +45,6 @@ VariableBinAxis* VariableBinAxis::clone() const
 }
 
 
-size_t VariableBinAxis::getSize() const
-{
-    return m_nbins;
-}
-
-
 double VariableBinAxis::operator[](size_t index) const
 {
     return getBin(index).getMidPoint();
@@ -112,11 +107,6 @@ std::vector<double> VariableBinAxis::getBinCenters() const
     return result;
 }
 
-std::vector<double> VariableBinAxis::getBinBoundaries() const
-{
-    return m_bin_boundaries;
-}
-
 VariableBinAxis* VariableBinAxis::createClippedAxis(double left, double right) const
 {
 
diff --git a/Core/Instrument/VariableBinAxis.h b/Core/Instrument/VariableBinAxis.h
index 2e4d6cd035a15b654f6f141e842c88d14f451d2f..a14007fd58d6901e7e77997a8d7a2a6d78c8644f 100644
--- a/Core/Instrument/VariableBinAxis.h
+++ b/Core/Instrument/VariableBinAxis.h
@@ -18,7 +18,6 @@
 
 #include "IAxis.h"
 
-
 //! @class VariableBinAxis
 //! @ingroup tools
 //! @brief Axis with variable bin size.
@@ -37,7 +36,7 @@ public:
 
     VariableBinAxis* clone() const;
 
-    size_t getSize() const;
+    size_t getSize() const { return m_nbins; }
 
     double operator[](size_t index) const;
 
@@ -51,7 +50,7 @@ public:
     size_t findClosestIndex(double value) const;
 
     std::vector<double> getBinCenters() const;
-    std::vector<double> getBinBoundaries() const;
+    std::vector<double> getBinBoundaries() const { return m_bin_boundaries; }
 
     VariableBinAxis* createClippedAxis(double left, double right) const;
 
diff --git a/Core/Parametrization/IParameterized.cpp b/Core/Parametrization/IParameterized.cpp
index ea90a65b8b72b7947b60152ab1f115a0655d837a..5dafc72ad164858f2f69082fae0f748df4db1574 100644
--- a/Core/Parametrization/IParameterized.cpp
+++ b/Core/Parametrization/IParameterized.cpp
@@ -15,6 +15,7 @@
 
 #include "IParameterized.h"
 #include <memory>
+#include <iostream>
 #include <sstream>
 
 // Copies INamed, but not the parameters.
diff --git a/Core/Parametrization/ParameterPool.cpp b/Core/Parametrization/ParameterPool.cpp
index 72559f89f93df28172fd4ac705e245edab5dff3a..6b27affa7f20ecb3a022a9e76e206c739eb6ba08 100644
--- a/Core/Parametrization/ParameterPool.cpp
+++ b/Core/Parametrization/ParameterPool.cpp
@@ -15,9 +15,9 @@
 
 #include "ParameterPool.h"
 #include "Utils.h"
+#include <iostream>
 
-typedef std::map<std::string, RealParameterWrapper > parametermap_t;
-
+typedef std::map<std::string, RealParameterWrapper> parametermap_t;
 
 //! Constructs an empty parameter pool.
 ParameterPool::ParameterPool(IParameterized* parent)
diff --git a/Core/SoftParticles/FormFactorGauss.cpp b/Core/SoftParticles/FormFactorGauss.cpp
index 06f1107caeeee7d1be2617e112d6631b01c7ef43..281633661ee3a0602e674a45556527bfb0a066eb 100644
--- a/Core/SoftParticles/FormFactorGauss.cpp
+++ b/Core/SoftParticles/FormFactorGauss.cpp
@@ -15,6 +15,7 @@
 
 #include "FormFactorGauss.h"
 #include "BornAgainNamespace.h"
+#include "Numeric.h"
 
 using namespace  BornAgain;
 
@@ -23,7 +24,6 @@ FormFactorGauss::FormFactorGauss(double volume)
     m_height = std::pow(volume, 1.0/3.0);
     m_width = m_height;
     initialize();
-
 }
 
 FormFactorGauss::FormFactorGauss(double width, double height)
@@ -50,7 +50,7 @@ FormFactorGauss* FormFactorGauss::clone() const
     return new FormFactorGauss(m_width, m_height);
 }
 
-void FormFactorGauss::accept(ISampleVisitor *visitor) const
+void FormFactorGauss::accept(ISampleVisitor* visitor) const
 {
     visitor->visit(this);
 }
diff --git a/Core/SoftParticles/FormFactorSphereUniformRadius.cpp b/Core/SoftParticles/FormFactorSphereUniformRadius.cpp
index dacc46bf5e0684897ff9fdf93eb42eadc22ae8bc..1bb841dc006a8c62c0b2dbfe4cd19df6d9125690 100644
--- a/Core/SoftParticles/FormFactorSphereUniformRadius.cpp
+++ b/Core/SoftParticles/FormFactorSphereUniformRadius.cpp
@@ -15,6 +15,7 @@
 
 #include "FormFactorSphereUniformRadius.h"
 #include "BornAgainNamespace.h"
+#include "Numeric.h"
 
 using namespace  BornAgain;
 
@@ -47,26 +48,19 @@ void FormFactorSphereUniformRadius::accept(ISampleVisitor *visitor) const
     visitor->visit(this);
 }
 
-double FormFactorSphereUniformRadius::getRadius() const
-{
-    return m_mean;
-}
-
-complex_t FormFactorSphereUniformRadius::evaluate_for_q(
-        const cvector_t q) const
+complex_t FormFactorSphereUniformRadius::evaluate_for_q(const cvector_t q) const
 {
     double R = m_mean;
     double W = m_full_width;
     double q2 = std::norm(q.x()) + std::norm(q.y()) + std::norm(q.z());
     double q_r = std::sqrt(q2);
-    if (q_r*R < Numeric::double_epsilon) {
+    if (q_r*R < Numeric::double_epsilon)
         return (4.0*Units::PI*R*R*R + Units::PI*R*W*W)/3.0;
-    }
     double qR = q_r*R;
     double qW = q_r*W;
     double nominator = 4*Units::PI*( 4*std::sin(qR)*std::sin(qW/2.0)
-                             - qW*std::cos(qW/2.0)*std::sin(qR)
-                             - 2.0*qR*std::cos(qR)*std::sin(qW/2.0));
+                                     - qW*std::cos(qW/2.0)*std::sin(qR)
+                                     - 2.0*qR*std::cos(qR)*std::sin(qW/2.0) );
     return nominator/(q2*q2*W);
 }
 
diff --git a/Core/SoftParticles/FormFactorSphereUniformRadius.h b/Core/SoftParticles/FormFactorSphereUniformRadius.h
index 8d94eb603ed3b28962b04f881970dd48e62ce559..1e1a5d3d481b412121449b77907b9b3cf363bfbf 100644
--- a/Core/SoftParticles/FormFactorSphereUniformRadius.h
+++ b/Core/SoftParticles/FormFactorSphereUniformRadius.h
@@ -16,7 +16,6 @@
 #ifndef FORMFACTORSPHEREUNIFORMRADIUS_H
 #define FORMFACTORSPHEREUNIFORMRADIUS_H
 
-
 #include "FormFactorFullSphere.h"
 
 //! @class FormFactorSphereUniformRadius
@@ -32,7 +31,7 @@ public:
 
     virtual void accept(ISampleVisitor *visitor) const;
 
-    virtual double getRadius() const;
+    virtual double getRadius() const { return m_mean; }
 
     virtual complex_t evaluate_for_q(const cvector_t q) const;
 
diff --git a/Core/Tools/AttLimits.cpp b/Core/Tools/AttLimits.cpp
index 7565c7dcba8a1f7917a1a7c861c736dc353ca91d..c18b64953e8bd67aee373abf11d2cccb2e15cd74 100644
--- a/Core/Tools/AttLimits.cpp
+++ b/Core/Tools/AttLimits.cpp
@@ -14,7 +14,16 @@
 // ************************************************************************** //
 
 #include "AttLimits.h"
+#include "Numeric.h"
 #include <iomanip>
+#include <iostream>
+
+
+//! Creates an object which can have only positive values (>0., zero is not included)
+AttLimits AttLimits::positive()
+{
+    return lowerLimited(Numeric::double_min);
+}
 
 //! Prints class
 void AttLimits::print(std::ostream& ostr) const
@@ -30,6 +39,20 @@ void AttLimits::print(std::ostream& ostr) const
     }else if(hasLowerAndUpperLimits()) {
         ostr << "lim(" << std::fixed <<std::setprecision(2) << m_lower_limit << "," <<
             std::fixed <<std::setprecision(2) << m_upper_limit << ")";
-
     }
 }
+
+bool AttLimits::isInRange(double value) const
+{
+    if(hasLowerLimit() && value < m_lower_limit) return false;
+    if(hasUpperLimit() && value >= m_upper_limit) return false;
+    return true;
+}
+
+bool AttLimits::operator==(const AttLimits& other) const
+{
+    return (m_has_lower_limit == other.m_has_lower_limit) &&
+            (m_has_upper_limit == other.m_has_upper_limit) &&
+            (m_lower_limit == other.m_lower_limit) &&
+            (m_upper_limit == other.m_upper_limit);
+}
diff --git a/Core/Tools/AttLimits.h b/Core/Tools/AttLimits.h
index 3c01218e7cf9f2ad7e42019cecb59fd8204f30ee..fecf903b6a019bfd85bd6e4db6a0463051e61fa0 100644
--- a/Core/Tools/AttLimits.h
+++ b/Core/Tools/AttLimits.h
@@ -16,9 +16,7 @@
 #ifndef ATTLIMITS_H
 #define ATTLIMITS_H
 
-#include "Numeric.h"
-#include <iostream>
-
+#include <ostream>
 
 //! @class AttLimits
 //! @ingroup fitting
@@ -81,7 +79,7 @@ class BA_CORE_API_ AttLimits
     { return AttLimits(true, false, false, bound_value, 0.); }
 
     //! Creates an object which can have only positive values (>0., zero is not included)
-    static AttLimits positive() { return lowerLimited(Numeric::double_min); }
+    static AttLimits positive();
 
     //! Creates an object which can have only positive values with 0. included
     static AttLimits n_positive() { return lowerLimited(0.); }
@@ -105,7 +103,7 @@ class BA_CORE_API_ AttLimits
     { m.print(ostr); return ostr; }
 
     bool operator==(const AttLimits &other) const;
-    bool operator!=(const AttLimits &other) const;
+    bool operator!=(const AttLimits &other) const { return !(*this == other); }
 
  protected:
     AttLimits(bool has_lower_limit, bool has_upper_limit, bool is_fixed,
@@ -125,25 +123,4 @@ class BA_CORE_API_ AttLimits
     void print(std::ostream& ostr) const;
 };
 
-
-inline bool AttLimits::isInRange(double value) const
-{
-    if(hasLowerLimit() && value < m_lower_limit) return false;
-    if(hasUpperLimit() && value >= m_upper_limit) return false;
-    return true;
-}
-
-inline bool AttLimits::operator==(const AttLimits &other) const
-{
-    return (m_has_lower_limit == other.m_has_lower_limit) &&
-            (m_has_upper_limit == other.m_has_upper_limit) &&
-            (m_lower_limit == other.m_lower_limit) &&
-            (m_upper_limit == other.m_upper_limit);
-}
-
-inline bool AttLimits::operator!=(const AttLimits &other) const
-{
-    return !(*this == other);
-}
-
 #endif // ATTLIMITS_H
diff --git a/Core/Tools/MathFunctions.cpp b/Core/Tools/MathFunctions.cpp
index 63c2dd15e2faf0bc87d3f6726fe45984d9864e4a..398be934ba15369251c12669bc88ecb4f5213fac 100644
--- a/Core/Tools/MathFunctions.cpp
+++ b/Core/Tools/MathFunctions.cpp
@@ -14,6 +14,7 @@
 // ************************************************************************** //
 
 #include "MathFunctions.h"
+#include "Numeric.h"
 #include <gsl/gsl_sf_bessel.h>
 #include <gsl/gsl_sf_erf.h>
 #include <gsl/gsl_sf_expint.h>
diff --git a/Core/Tools/MathFunctions.h b/Core/Tools/MathFunctions.h
index 2b94133d3eb1e24a1ec7d41712299755af3b4bb7..99b09dc0036c6f13f74385591d0a8be35fa7f3ee 100644
--- a/Core/Tools/MathFunctions.h
+++ b/Core/Tools/MathFunctions.h
@@ -17,7 +17,6 @@
 #define MATHFUNCTIONS_H
 
 #include "Complex.h"
-#include "Numeric.h"
 #include "Units.h"
 #include <vector>
 
@@ -79,6 +78,8 @@ namespace MathFunctions
 //  Fourier transform and convolution
 // ************************************************************************** //
 
+    // TODO move elsewhere, and rm #include <vector>
+
     enum EFFTDirection { FORWARD_FFT, BACKWARD_FFT };
 
     // TODO: name these two functions differently (SWIG warning 509)
diff --git a/Core/Vectors/Bin.cpp b/Core/Vectors/Bin.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..51d482a9e031b99b98f94c5c49d6939f111f480b
--- /dev/null
+++ b/Core/Vectors/Bin.cpp
@@ -0,0 +1,34 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      Core/Vectors/Bin.cpp
+//! @brief     Implements structs Bin1D, Bin1DCVector
+//!
+//! @homepage  http://www.bornagainproject.org
+//! @license   GNU General Public License v3 or higher (see COPYING)
+//! @copyright Forschungszentrum Jülich GmbH 2016
+//! @authors   Scientific Computing Group at MLZ Garching
+//! @authors   M. Ganeva, G. Pospelov, W. Van Herck, J. Wuttke
+//
+// ************************************************************************** //
+
+#include "Bin.h"
+
+//! creation on Bin1DKVector from alpha and phi bins
+Bin1DKVector::Bin1DKVector(double wavelength, const Bin1D& alpha_bin, const Bin1D& phi_bin)
+    : m_q_lower(), m_q_upper()
+{
+    m_q_lower = Geometry::vecOfLambdaAlphaPhi(wavelength, alpha_bin.m_lower, phi_bin.m_lower);
+    m_q_upper = Geometry::vecOfLambdaAlphaPhi(wavelength, alpha_bin.m_upper, phi_bin.m_upper);
+}
+
+//! creation on Bin1DCVector from alpha and phi bins
+Bin1DCVector::Bin1DCVector(double wavelength, const Bin1D& alpha_bin, const Bin1D& phi_bin)
+    : m_q_lower(), m_q_upper()
+{
+    m_q_lower = Geometry::vecOfLambdaAlphaPhi(
+        wavelength, alpha_bin.m_lower, phi_bin.m_lower).complex();
+    m_q_upper = Geometry::vecOfLambdaAlphaPhi(
+        wavelength, alpha_bin.m_upper, phi_bin.m_upper).complex();
+}
diff --git a/Core/Vectors/Bin.h b/Core/Vectors/Bin.h
index 819cb9f1415340ba483e0f27e4a5ca1120d3057b..3176884add76ab58ae52decbd0d105ce487cb270 100644
--- a/Core/Vectors/Bin.h
+++ b/Core/Vectors/Bin.h
@@ -16,9 +16,7 @@
 #ifndef BIN_H
 #define BIN_H
 
-#include "Numeric.h"
 #include "Vectors3D.h"
-#include <iostream>
 
 struct BA_CORE_API_ Bin1D
 {
@@ -30,7 +28,6 @@ struct BA_CORE_API_ Bin1D
     double getBinSize() const { return m_upper - m_lower; }
 };
 
-
 //! @class Bin1DKVector
 //! @ingroup tools_internal
 //! @brief An one-dimensional range of kvector_t's
@@ -48,14 +45,6 @@ struct BA_CORE_API_ Bin1DKVector
     kvector_t m_q_upper;  //!< upper bound of the bin
 };
 
-//! creation on Bin1DKVector from alpha and phi bins
-inline Bin1DKVector::Bin1DKVector(double wavelength, const Bin1D& alpha_bin, const Bin1D& phi_bin)
-    : m_q_lower(), m_q_upper()
-{
-    m_q_lower = Geometry::vecOfLambdaAlphaPhi(wavelength, alpha_bin.m_lower, phi_bin.m_lower);
-    m_q_upper = Geometry::vecOfLambdaAlphaPhi(wavelength, alpha_bin.m_upper, phi_bin.m_upper);
-}
-
 //! @class Bin1DCVector
 //! @ingroup tools_internal
 //! @brief An one-dimensional range of cvector_t's
@@ -72,14 +61,4 @@ struct BA_CORE_API_ Bin1DCVector
     cvector_t m_q_upper;  //!< upper bound of the bin
 };
 
-//! creation on Bin1DCVector from alpha and phi bins
-inline Bin1DCVector::Bin1DCVector(double wavelength, const Bin1D& alpha_bin, const Bin1D& phi_bin)
-    : m_q_lower(), m_q_upper()
-{
-    m_q_lower = Geometry::vecOfLambdaAlphaPhi(
-        wavelength, alpha_bin.m_lower, phi_bin.m_lower).complex();
-    m_q_upper = Geometry::vecOfLambdaAlphaPhi(
-        wavelength, alpha_bin.m_upper, phi_bin.m_upper).complex();
-}
-
 #endif // BIN_H
diff --git a/Fit/FitKernel/FitSuiteParameters.cpp b/Fit/FitKernel/FitSuiteParameters.cpp
index 7d11c484d66a75661872469f0e07ffdea9a31aa8..f5e3782416a16941f3346876716f31761471af35 100644
--- a/Fit/FitKernel/FitSuiteParameters.cpp
+++ b/Fit/FitKernel/FitSuiteParameters.cpp
@@ -16,6 +16,9 @@
 #include "FitSuiteParameters.h"
 #include "FitParameterLinked.h"
 #include "MessageService.h"
+#include "Numeric.h"
+#include <cmath>
+#include <iostream>
 
 FitSuiteParameters::FitSuiteParameters()
 {
@@ -26,12 +29,10 @@ FitSuiteParameters::~FitSuiteParameters()
     clear();
 }
 
-
 void FitSuiteParameters::clear()
 {
-    for(parameters_t::iterator it = m_parameters.begin(); it!=m_parameters.end(); ++it) {
+    for(parameters_t::iterator it = m_parameters.begin(); it!=m_parameters.end(); ++it)
         delete (*it);
-    }
     m_parameters.clear();
 }
 
@@ -41,34 +42,36 @@ void FitSuiteParameters::addParameter(const std::string& name, double value, dou
 {
     for(auto par : m_parameters) {
         if( par->getName() == name )
-            throw Exceptions::LogicErrorException("FitSuiteParameters:addtFitParameter() -> Error. "
-                                                  "Existing parameter '"+name+"'");
+            throw Exceptions::LogicErrorException(
+                "FitSuiteParameters:addtFitParameter() -> Error. Existing parameter '"+name+"'");
     }
     m_parameters.push_back(new FitParameterLinked(name, value, step, attlim, error));
 }
 
 //! Returns fit parameter with given name.
-const FitParameter *FitSuiteParameters::getParameter(const std::string& name) const
+const FitParameter* FitSuiteParameters::getParameter(const std::string& name) const
 {
     for(parameters_t::const_iterator it = m_parameters.begin(); it!=m_parameters.end(); ++it) {
-        if( (*it)->getName() == name ) return (*it);
+        if( (*it)->getName() == name )
+            return *it;
     }
     throw Exceptions::LogicErrorException("FitSuiteParameters::getFitParameter() -> "
                                           "Error. No parameter with name '"+name+"'");
 }
 
 
-FitParameter *FitSuiteParameters::getParameter(const std::string& name)
+FitParameter* FitSuiteParameters::getParameter(const std::string& name)
 {
     for(parameters_t::iterator it = m_parameters.begin(); it!=m_parameters.end(); ++it) {
-        if( (*it)->getName() == name ) return (*it);
+        if( (*it)->getName() == name )
+            return *it;
     }
     throw Exceptions::LogicErrorException("FitSuiteParameters::getFitParameter() -> "
                                           "Error. No parameter with name '"+name+"'");
 }
 
 //! Sets values for all defined parameters
-void FitSuiteParameters::setValues(const double *pars_values)
+void FitSuiteParameters::setValues(const double* pars_values)
 {
     if( !valuesAreDifferent(pars_values) ) {
         msglog(MSG::WARNING) << "FitSuiteParameters::setValues() -> Warning! "
@@ -120,47 +123,44 @@ void FitSuiteParameters::setErrors(const std::vector<double>& pars_errors)
              << ", number of parameters expected " << m_parameters.size() << std::endl;
         throw Exceptions::OutOfBoundsException(ostr.str());
     }
-    for(size_t i=0; i<m_parameters.size(); ++i) {
+    for(size_t i=0; i<m_parameters.size(); ++i)
         m_parameters[i]->setError(pars_errors[i]);
-    }
 }
 
 
-std::vector<double > FitSuiteParameters::getValues() const
+std::vector<double> FitSuiteParameters::getValues() const
 {
     std::vector<double > result;
-    for(parameters_t::const_iterator it=m_parameters.begin(); it!=m_parameters.end(); ++it) {
+    for(parameters_t::const_iterator it=m_parameters.begin(); it!=m_parameters.end(); ++it)
         result.push_back((*it)->getValue());
-    }
     return result;
 }
 
-std::vector<double > FitSuiteParameters::getErrors() const
+std::vector<double> FitSuiteParameters::getErrors() const
 {
     std::vector<double > result;
     result.resize(m_parameters.size(), 0.0);
-    for(parameters_t::const_iterator it=m_parameters.begin(); it!=m_parameters.end(); ++it) {
+    for(parameters_t::const_iterator it=m_parameters.begin(); it!=m_parameters.end(); ++it)
         result.push_back((*it)->getError());
-    }
     return result;
 }
 
-FitParameter *FitSuiteParameters::operator[](std::string name)
+FitParameter* FitSuiteParameters::operator[](std::string name)
 {
     return getParameter(name);
 }
 
-const FitParameter *FitSuiteParameters::operator[](std::string name) const
+const FitParameter* FitSuiteParameters::operator[](std::string name) const
 {
     return getParameter(name);
 }
 
-FitParameter *FitSuiteParameters::operator[](size_t index)
+FitParameter* FitSuiteParameters::operator[](size_t index)
 {
     return m_parameters[check_index(index)];
 }
 
-const FitParameter *FitSuiteParameters::operator[](size_t index) const
+const FitParameter* FitSuiteParameters::operator[](size_t index) const
 {
     return m_parameters[check_index(index)];
 }
@@ -169,26 +169,27 @@ size_t FitSuiteParameters::getNfreeParameters() const
 {
     size_t result(0);
     for(parameters_t::const_iterator it=m_parameters.begin(); it!=m_parameters.end(); ++it) {
-        if( !(*it)->isFixed() ) result++;
+        if( !(*it)->isFixed() )
+            result++;
     }
     return result;
 }
 
 //! linking fit parameters with pool parameters
-void FitSuiteParameters::link_to_pool(const ParameterPool *pool)
+void FitSuiteParameters::link_to_pool(const ParameterPool* pool)
 {
     // linking fit parameter with whose pool parameters which match name of fit parameter
     // going through all fit parameters defined
     for(parameters_t::iterator it = m_parameters.begin(); it!= m_parameters.end(); ++it) {
-        FitParameterLinked *par = dynamic_cast<FitParameterLinked *>((*it));
+        FitParameterLinked* par = dynamic_cast<FitParameterLinked*>((*it));
         if( !par ) throw Exceptions::LogicErrorException(
             "FitSuiteParameters::link_to_pool() -> Error! Can't cast to FitParameterLinked.");
         par->addMatchedParametersFromPool(pool);
     }
 }
 
-bool FitSuiteParameters::valuesAreDifferent(const double *pars_values,
-                                             double tolerance_factor) const
+bool FitSuiteParameters::valuesAreDifferent(const double* pars_values,
+                                            double tolerance_factor) const
 {
     size_t index(0);
     for(parameters_t::const_iterator it=m_parameters.begin(); it!=m_parameters.end(); ++it) {
@@ -201,31 +202,26 @@ bool FitSuiteParameters::valuesAreDifferent(const double *pars_values,
 void FitSuiteParameters::printParameters() const
 {
     int npar(0);
-    for(parameters_t::const_iterator it = m_parameters.begin();
-        it!=m_parameters.end(); ++it, ++npar) {
+    for(auto it = m_parameters.begin(); it!=m_parameters.end(); ++it, ++npar)
         std::cout << "   # "<< npar << " " << (*(*it)) << std::endl;
-    }
 }
 
 void FitSuiteParameters::fixAll()
 {
-    for(parameters_t::const_iterator it=m_parameters.begin(); it!=m_parameters.end(); ++it) {
+    for(auto it=m_parameters.begin(); it!=m_parameters.end(); ++it)
         (*it)->setFixed(true);
-    }
 }
 
 void FitSuiteParameters::releaseAll()
 {
-    for(parameters_t::const_iterator it=m_parameters.begin(); it!=m_parameters.end(); ++it) {
+    for(auto it=m_parameters.begin(); it!=m_parameters.end(); ++it)
         (*it)->setFixed(false);
-    }
 }
 
-void FitSuiteParameters::setParametersFixed(const std::vector<std::string> &pars, bool is_fixed)
+void FitSuiteParameters::setParametersFixed(const std::vector<std::string>& pars, bool is_fixed)
 {
-    for(size_t i=0; i<pars.size(); ++i) {
+    for(size_t i=0; i<pars.size(); ++i)
         getParameter(pars[i])->setFixed(is_fixed);
-    }
 }
 
 size_t FitSuiteParameters::check_index(size_t index) const {
diff --git a/GUI/coregui/Models/DistributionItem.cpp b/GUI/coregui/Models/DistributionItem.cpp
index 41943f8daaef8f7c3b681b20e489fa94f577a6b5..f76ad88ae4e9222e31bf97ce58116bf1e88e03f7 100644
--- a/GUI/coregui/Models/DistributionItem.cpp
+++ b/GUI/coregui/Models/DistributionItem.cpp
@@ -17,7 +17,7 @@
 #include "DistributionItem.h"
 #include "Distributions.h"
 #include "GUIHelpers.h"
-
+#include <cmath>
 
 const QString DistributionItem::P_NUMBER_OF_SAMPLES = "Number of samples";
 const QString DistributionItem::P_SIGMA_FACTOR = "Sigma factor";
diff --git a/GUI/coregui/Models/FitParameterItems.cpp b/GUI/coregui/Models/FitParameterItems.cpp
index ad1dcf5a0c4a92137ce9abc732bf21349a59ec54..5c946965195a469670b91c67cde123f3ef0ae6b7 100644
--- a/GUI/coregui/Models/FitParameterItems.cpp
+++ b/GUI/coregui/Models/FitParameterItems.cpp
@@ -19,6 +19,7 @@
 #include "GUIHelpers.h"
 #include "ModelPath.h"
 #include "ParameterTreeItems.h"
+#include <cmath>
 
 namespace
 {
diff --git a/GUI/coregui/Views/PropertyEditor/ComponentEditorPrivate.cpp b/GUI/coregui/Views/PropertyEditor/ComponentEditorPrivate.cpp
index 6109b9d047b02a38a9d9b1272d924f69853e3b7a..3fb9a552c7a8bea004ea946f4c7db79386c0c89e 100644
--- a/GUI/coregui/Views/PropertyEditor/ComponentEditorPrivate.cpp
+++ b/GUI/coregui/Views/PropertyEditor/ComponentEditorPrivate.cpp
@@ -20,6 +20,7 @@
 #include <QComboBox>
 #include <QDebug>
 #include <QString>
+#include <cmath>
 
 ComponentEditorPrivate::ComponentEditorPrivate(ComponentEditorFlags::PresentationType flags, QWidget *parent)
     : m_browser(0), m_manager(0), m_read_only_manager(0)
diff --git a/Tests/Functional/Fit/FitSuite.cpp b/Tests/Functional/Fit/FitSuite.cpp
index a5f5b961a2ea958cefa8024c6fb0133c7a88fb69..4a6b5c3e0d121705c9835fe807393a35785d1078 100644
--- a/Tests/Functional/Fit/FitSuite.cpp
+++ b/Tests/Functional/Fit/FitSuite.cpp
@@ -16,6 +16,7 @@
 #include "IMinimizerTest.h"
 #include "StandardFitsFactory.h"
 #include <memory>
+#include <iostream>
 
 //! The main function of CoreSuite to run functional tests
 int main(int argc, char **argv)
diff --git a/auto/Wrap/doxygen_core.i b/auto/Wrap/doxygen_core.i
index e3b185bcf93cfb3b4122833bd4ba15b57b6384f7..7e88b5dc311db1070e3ff863b0e2493b207da0ff 100644
--- a/auto/Wrap/doxygen_core.i
+++ b/auto/Wrap/doxygen_core.i
@@ -3605,7 +3605,7 @@ Returns a clone of this  ISample object.
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorSphereUniformRadius::getRadius "double FormFactorSphereUniformRadius::getRadius() const
+%feature("docstring")  FormFactorSphereUniformRadius::getRadius "virtual double FormFactorSphereUniformRadius::getRadius() const
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
@@ -7027,38 +7027,22 @@ Calls ISampleVisitor::visit.
 
 %feature("docstring")  InterferenceFunctionRadialParaCrystal::setDomainSize "void InterferenceFunctionRadialParaCrystal::setDomainSize(double size)
 
-Sets size of coherence domain.
-
-Parameters:
------------
-
-size: 
-size in lattice direction 
+Sets size of coherence domain. 
 ";
 
 %feature("docstring")  InterferenceFunctionRadialParaCrystal::getDomainSize "double InterferenceFunctionRadialParaCrystal::getDomainSize() const
 
-Gets size of coherence domain.
-
-Size in lattice direction 
+Returns size of coherence domain. 
 ";
 
 %feature("docstring")  InterferenceFunctionRadialParaCrystal::setKappa "void InterferenceFunctionRadialParaCrystal::setKappa(double kappa)
 
-Sets size-spacing coupling parameter.
-
-Parameters:
------------
-
-kappa: 
-size-spacing coupling parameter 
+Sets size-spacing coupling parameter. 
 ";
 
-%feature("docstring")  InterferenceFunctionRadialParaCrystal::getKappa "double InterferenceFunctionRadialParaCrystal::getKappa() const
+%feature("docstring")  InterferenceFunctionRadialParaCrystal::getKappa "virtual double InterferenceFunctionRadialParaCrystal::getKappa() const
 
-Gets size-spacing coupling parameter.
-
-Size-spacing coupling parameter 
+Gets size-spacing coupling parameter. 
 ";
 
 %feature("docstring")  InterferenceFunctionRadialParaCrystal::evaluate "double InterferenceFunctionRadialParaCrystal::evaluate(const kvector_t q) const
@@ -13073,7 +13057,7 @@ find bin index which is best match for given value
 %feature("docstring")  VariableBinAxis::getBinCenters "std::vector< double > VariableBinAxis::getBinCenters() const 
 ";
 
-%feature("docstring")  VariableBinAxis::getBinBoundaries "std::vector< double > VariableBinAxis::getBinBoundaries() const 
+%feature("docstring")  VariableBinAxis::getBinBoundaries "std::vector<double> VariableBinAxis::getBinBoundaries() const 
 ";
 
 %feature("docstring")  VariableBinAxis::createClippedAxis "VariableBinAxis * VariableBinAxis::createClippedAxis(double left, double right) const
@@ -15016,6 +15000,9 @@ David N. Williams
 // File: BasicVector3D_8h.xml
 
 
+// File: Bin_8cpp.xml
+
+
 // File: Bin_8h.xml
 
 
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index 7a8969179c1b22c57016400526328effc29bbccb..a6db103e9342b1a01b50670bcc911dd8dfcc97fb 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -3770,7 +3770,7 @@ class VariableBinAxis(IAxis):
         """
         getBinBoundaries(VariableBinAxis self) -> vdouble1d_t
 
-        std::vector< double > VariableBinAxis::getBinBoundaries() const 
+        std::vector<double> VariableBinAxis::getBinBoundaries() const 
 
         """
         return _libBornAgainCore.VariableBinAxis_getBinBoundaries(self)
@@ -12009,7 +12009,7 @@ class FormFactorSphereUniformRadius(IFormFactorBorn):
         """
         getRadius(FormFactorSphereUniformRadius self) -> double
 
-        double FormFactorSphereUniformRadius::getRadius() const
+        virtual double FormFactorSphereUniformRadius::getRadius() const
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -16544,13 +16544,7 @@ class InterferenceFunctionRadialParaCrystal(IInterferenceFunction):
 
         void InterferenceFunctionRadialParaCrystal::setDomainSize(double size)
 
-        Sets size of coherence domain.
-
-        Parameters:
-        -----------
-
-        size: 
-        size in lattice direction 
+        Sets size of coherence domain. 
 
         """
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_setDomainSize(self, size)
@@ -16562,9 +16556,7 @@ class InterferenceFunctionRadialParaCrystal(IInterferenceFunction):
 
         double InterferenceFunctionRadialParaCrystal::getDomainSize() const
 
-        Gets size of coherence domain.
-
-        Size in lattice direction 
+        Returns size of coherence domain. 
 
         """
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_getDomainSize(self)
@@ -16576,13 +16568,7 @@ class InterferenceFunctionRadialParaCrystal(IInterferenceFunction):
 
         void InterferenceFunctionRadialParaCrystal::setKappa(double kappa)
 
-        Sets size-spacing coupling parameter.
-
-        Parameters:
-        -----------
-
-        kappa: 
-        size-spacing coupling parameter 
+        Sets size-spacing coupling parameter. 
 
         """
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_setKappa(self, kappa)
@@ -16592,11 +16578,9 @@ class InterferenceFunctionRadialParaCrystal(IInterferenceFunction):
         """
         getKappa(InterferenceFunctionRadialParaCrystal self) -> double
 
-        double InterferenceFunctionRadialParaCrystal::getKappa() const
-
-        Gets size-spacing coupling parameter.
+        virtual double InterferenceFunctionRadialParaCrystal::getKappa() const
 
-        Size-spacing coupling parameter 
+        Gets size-spacing coupling parameter. 
 
         """
         return _libBornAgainCore.InterferenceFunctionRadialParaCrystal_getKappa(self)
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index 3de8a5659f5795c573a7860abade324b081934b9..7bc2400334fed87ed9977618914836ad620d8f12 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -92546,7 +92546,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"VariableBinAxis_getBinBoundaries", _wrap_VariableBinAxis_getBinBoundaries, METH_VARARGS, (char *)"\n"
 		"VariableBinAxis_getBinBoundaries(VariableBinAxis self) -> vdouble1d_t\n"
 		"\n"
-		"std::vector< double > VariableBinAxis::getBinBoundaries() const \n"
+		"std::vector<double> VariableBinAxis::getBinBoundaries() const \n"
 		"\n"
 		""},
 	 { (char *)"VariableBinAxis_createClippedAxis", _wrap_VariableBinAxis_createClippedAxis, METH_VARARGS, (char *)"\n"
@@ -96912,7 +96912,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereUniformRadius_getRadius", _wrap_FormFactorSphereUniformRadius_getRadius, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereUniformRadius_getRadius(FormFactorSphereUniformRadius self) -> double\n"
 		"\n"
-		"double FormFactorSphereUniformRadius::getRadius() const\n"
+		"virtual double FormFactorSphereUniformRadius::getRadius() const\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -99491,13 +99491,7 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		"void InterferenceFunctionRadialParaCrystal::setDomainSize(double size)\n"
 		"\n"
-		"Sets size of coherence domain.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"size: \n"
-		"size in lattice direction \n"
+		"Sets size of coherence domain. \n"
 		"\n"
 		""},
 	 { (char *)"InterferenceFunctionRadialParaCrystal_getDomainSize", _wrap_InterferenceFunctionRadialParaCrystal_getDomainSize, METH_VARARGS, (char *)"\n"
@@ -99505,9 +99499,7 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		"double InterferenceFunctionRadialParaCrystal::getDomainSize() const\n"
 		"\n"
-		"Gets size of coherence domain.\n"
-		"\n"
-		"Size in lattice direction \n"
+		"Returns size of coherence domain. \n"
 		"\n"
 		""},
 	 { (char *)"InterferenceFunctionRadialParaCrystal_setKappa", _wrap_InterferenceFunctionRadialParaCrystal_setKappa, METH_VARARGS, (char *)"\n"
@@ -99515,23 +99507,15 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		"void InterferenceFunctionRadialParaCrystal::setKappa(double kappa)\n"
 		"\n"
-		"Sets size-spacing coupling parameter.\n"
-		"\n"
-		"Parameters:\n"
-		"-----------\n"
-		"\n"
-		"kappa: \n"
-		"size-spacing coupling parameter \n"
+		"Sets size-spacing coupling parameter. \n"
 		"\n"
 		""},
 	 { (char *)"InterferenceFunctionRadialParaCrystal_getKappa", _wrap_InterferenceFunctionRadialParaCrystal_getKappa, METH_VARARGS, (char *)"\n"
 		"InterferenceFunctionRadialParaCrystal_getKappa(InterferenceFunctionRadialParaCrystal self) -> double\n"
 		"\n"
-		"double InterferenceFunctionRadialParaCrystal::getKappa() const\n"
-		"\n"
-		"Gets size-spacing coupling parameter.\n"
+		"virtual double InterferenceFunctionRadialParaCrystal::getKappa() const\n"
 		"\n"
-		"Size-spacing coupling parameter \n"
+		"Gets size-spacing coupling parameter. \n"
 		"\n"
 		""},
 	 { (char *)"InterferenceFunctionRadialParaCrystal_evaluate", _wrap_InterferenceFunctionRadialParaCrystal_evaluate, METH_VARARGS, (char *)"\n"