diff --git a/App/src/StandardSamples.cpp b/App/src/StandardSamples.cpp
index ab99100d6508fb1c96c134df89de690a5fefdb60..11faf9a090647a1f938e9cc43f8d4f4f7cd3bcb1 100644
--- a/App/src/StandardSamples.cpp
+++ b/App/src/StandardSamples.cpp
@@ -542,8 +542,7 @@ ISample *StandardSamples::IsGISAXS9_RotatedPyramid()
 
     Particle *pyramid = new Particle(n_particle, new FormFactorPyramid(5*Units::nanometer, 5*Units::nanometer, Units::deg2rad(54.73)) );
 
-    Geometry::Transform3D *transform = new Geometry::Transform3D();
-    *transform = Geometry::RotateZ3D(angle_around_z);
+    Geometry::Transform3D *transform = new Geometry::RotateZ3D(angle_around_z);
 
     ParticleDecoration particle_decoration;
 
diff --git a/Core/Algorithms/inc/DWBADiffuseReflection.h b/Core/Algorithms/inc/DWBADiffuseReflection.h
index 211300bb54b282633a5e36feb0a2cb2cc75a9e2b..f9f13aa27616973585daf5cc19de9cd116ec306e 100644
--- a/Core/Algorithms/inc/DWBADiffuseReflection.h
+++ b/Core/Algorithms/inc/DWBADiffuseReflection.h
@@ -43,9 +43,9 @@ private:
 
     void diffuse_crosscorr();
 
-    complex_t get_refractive_term(int ilayer);
+    complex_t get_refractive_term(size_t ilayer);
 
-    complex_t get_sum4terms(int ilayer);
+    complex_t get_sum4terms(size_t ilayer);
 
     const MultiLayer *m_sample;
     OpticalFresnel::MultiLayerCoeff_t m_fcoeff_i;
diff --git a/Core/Algorithms/inc/MultiLayerRoughnessDWBASimulation.h b/Core/Algorithms/inc/MultiLayerRoughnessDWBASimulation.h
index 56976d2b5f6e7087e2fe1d80d09ce2c8ba12de3d..5e03a5eddb62947415c5738e0ac7836df3435468 100644
--- a/Core/Algorithms/inc/MultiLayerRoughnessDWBASimulation.h
+++ b/Core/Algorithms/inc/MultiLayerRoughnessDWBASimulation.h
@@ -34,7 +34,7 @@ public:
 
     // set T and R functions for given layer
 //    void setTAndRFunctions(int i, const IDoubleToComplexFunction &T_function, const IDoubleToComplexFunction &R_function);
-    void setReflectionTransmissionFunction(int i_layer, const IDoubleToPairOfComplexMap &RT_function);
+    void setReflectionTransmissionFunction(size_t i_layer, const IDoubleToPairOfComplexMap &RT_function);
 
     // evaluate
     virtual double evaluate(const cvector_t &k_i, const cvector_t &k_f, double alpha_i, double alpha_f);
@@ -43,8 +43,8 @@ protected:
     MultiLayerRoughnessDWBASimulation(const MultiLayerRoughnessDWBASimulation &);
     MultiLayerRoughnessDWBASimulation &operator=(const MultiLayerRoughnessDWBASimulation &);
 
-    complex_t get_refractive_term(int ilayer);
-    complex_t get_sum4terms(int ilayer, const cvector_t &k_i, const cvector_t &k_f, double alpha_i, double alpha_f);
+    complex_t get_refractive_term(size_t ilayer);
+    complex_t get_sum4terms(size_t ilayer, const cvector_t &k_i, const cvector_t &k_f, double alpha_i, double alpha_f);
 
 //    std::vector<IDoubleToComplexFunction *> mp_T_function;
 //    std::vector<IDoubleToComplexFunction *> mp_R_function;
diff --git a/Core/Algorithms/src/ChiSquaredFrequency.cpp b/Core/Algorithms/src/ChiSquaredFrequency.cpp
index c8e96667893f53f00db7a2fb09e9e889a6ea6550..ab240e486832477cced7d8aa4d31acfca707d93b 100644
--- a/Core/Algorithms/src/ChiSquaredFrequency.cpp
+++ b/Core/Algorithms/src/ChiSquaredFrequency.cpp
@@ -72,7 +72,7 @@ void ChiSquaredFrequency::initWeights()
     size_t rank = mp_simulation_ft->getRank();
     int *n_dims = new int[rank];
     for (size_t i=0; i<rank; ++i) {
-        n_dims[i] = mp_simulation_ft->getAxis(i)->getSize();
+        n_dims[i] = (int)mp_simulation_ft->getAxis(i)->getSize();
     }
     mp_weights->setAxisSizes(rank, n_dims);
     delete n_dims;
diff --git a/Core/Algorithms/src/DWBADiffuseReflection.cpp b/Core/Algorithms/src/DWBADiffuseReflection.cpp
index b20ffd54df724a18175c18209a29a4391485b1d1..0b9f81af0c360eb532bd689c2feb50448fa4968e 100644
--- a/Core/Algorithms/src/DWBADiffuseReflection.cpp
+++ b/Core/Algorithms/src/DWBADiffuseReflection.cpp
@@ -78,7 +78,7 @@ void DWBADiffuseReflection::diffuse_crosscorr()
 }
 
 
-complex_t DWBADiffuseReflection::get_refractive_term(int ilayer)
+complex_t DWBADiffuseReflection::get_refractive_term(size_t ilayer)
 {
     complex_t n1 = m_sample->getLayer(ilayer)->getRefractiveIndex();
     complex_t n2 = m_sample->getLayer(ilayer+1)->getRefractiveIndex();
@@ -86,7 +86,7 @@ complex_t DWBADiffuseReflection::get_refractive_term(int ilayer)
 }
 
 
-complex_t DWBADiffuseReflection::get_sum4terms(int ilayer)
+complex_t DWBADiffuseReflection::get_sum4terms(size_t ilayer)
 {
     double sigma2 = -0.5*std::pow(m_sample->getLayerBottomInterface(ilayer)->getRoughness()->getSigma(), 2);
     complex_t term1 = m_fcoeff_i[ilayer+1].T * m_fcoeff_f[ilayer+1].T * std::exp( sigma2*m_qz1 );
diff --git a/Core/Algorithms/src/GISASExperiment.cpp b/Core/Algorithms/src/GISASExperiment.cpp
index fad8a1c0a437f059a31733e2235f747eee92e003..d90b1aa58ca2d902d01e80964c89915ca1d6534f 100644
--- a/Core/Algorithms/src/GISASExperiment.cpp
+++ b/Core/Algorithms/src/GISASExperiment.cpp
@@ -336,7 +336,7 @@ int GISASExperiment::findClosestIndex(const NamedVector<double> *p_axis, double
     for (size_t i=1; i<p_axis->getSize(); ++i) {
         double new_diff = std::abs(value-(*p_axis)[i]);
         if (new_diff > smallest_diff) break;
-        result = i;
+        result = (int)i;
         smallest_diff = new_diff;
     }
     return result;
diff --git a/Core/Algorithms/src/MaskCoordinateFunction.cpp b/Core/Algorithms/src/MaskCoordinateFunction.cpp
index f87d79eaf5c3d3a6b830660ea94254e121218ad5..b3e118398440e8393d922ee7944d004cf511b43a 100644
--- a/Core/Algorithms/src/MaskCoordinateFunction.cpp
+++ b/Core/Algorithms/src/MaskCoordinateFunction.cpp
@@ -21,14 +21,12 @@ bool MaskCoordinateFunction::isMasked(size_t rank, const int* coordinates) const
     if (rank != m_rank) {
         throw LogicErrorException("Mask function must have same rank as data structure");
     }
-    switch (m_invert)
-    {
-    case true:
+    if (m_invert) {
         return !isInStandardMaskedArea(coordinates);
-    case false:
+    }
+    else {
         return isInStandardMaskedArea(coordinates);
     }
-    throw LogicErrorException("Invalid instruction point");
 }
 
 bool MaskCoordinateFunction::isInStandardMaskedArea(const int* coordinates) const
diff --git a/Core/Algorithms/src/MultiLayerRoughnessDWBASimulation.cpp b/Core/Algorithms/src/MultiLayerRoughnessDWBASimulation.cpp
index 4384bc8239cb9052220828cb23ef57fe9779902f..2b3011d9d64645d359aa8cc04c0dcb43f36b0838 100644
--- a/Core/Algorithms/src/MultiLayerRoughnessDWBASimulation.cpp
+++ b/Core/Algorithms/src/MultiLayerRoughnessDWBASimulation.cpp
@@ -15,7 +15,7 @@ MultiLayerRoughnessDWBASimulation::~MultiLayerRoughnessDWBASimulation()
     delete mp_multi_layer;
 }
 
-void MultiLayerRoughnessDWBASimulation::setReflectionTransmissionFunction(int i_layer, const IDoubleToPairOfComplexMap &RT_function)
+void MultiLayerRoughnessDWBASimulation::setReflectionTransmissionFunction(size_t i_layer, const IDoubleToPairOfComplexMap &RT_function)
 {
     delete mp_RT_function[i_layer];
     mp_RT_function[i_layer] = RT_function.clone();
@@ -80,14 +80,14 @@ double MultiLayerRoughnessDWBASimulation::evaluate(const cvector_t &k_i, const c
     return (autocorr+crosscorr.real())*k_i.mag2().real()/16./M_PI;
 }
 
-complex_t MultiLayerRoughnessDWBASimulation::get_refractive_term(int ilayer)
+complex_t MultiLayerRoughnessDWBASimulation::get_refractive_term(size_t ilayer)
 {
     complex_t n1 = mp_multi_layer->getLayer(ilayer)->getRefractiveIndex();
     complex_t n2 = mp_multi_layer->getLayer(ilayer+1)->getRefractiveIndex();
     return n1*n1-n2*n2;
 }
 
-complex_t MultiLayerRoughnessDWBASimulation::get_sum4terms(int ilayer, const cvector_t &k_i, const cvector_t &k_f,
+complex_t MultiLayerRoughnessDWBASimulation::get_sum4terms(size_t ilayer, const cvector_t &k_i, const cvector_t &k_f,
         double alpha_i, double alpha_f)
 {
     complex_t qz1 =  k_i.z() + k_f.z();
diff --git a/Core/Algorithms/src/OpticalFresnel.cpp b/Core/Algorithms/src/OpticalFresnel.cpp
index b5f9ce821fe48c7a0c305586e76bdf60c1aee6fb..8a8988b76c39edb748fec2047027e8c7b9a98403 100644
--- a/Core/Algorithms/src/OpticalFresnel.cpp
+++ b/Core/Algorithms/src/OpticalFresnel.cpp
@@ -119,7 +119,7 @@ void OpticalFresnel::calculateX(const MultiLayer &sample, MultiLayerCoeff_t &coe
 {
     // ratio of amplitudes of outgoing and incoming waves
     coeff[coeff.size()-1].X = complex_t(0, 0);
-    for(int i=coeff.size()-2; i>=0; --i) {
+    for(int i=(int)coeff.size()-2; i>=0; --i) {
         double z = sample.getLayerBottomZ(i);
         coeff[i].X = std::exp(complex_t(0,-2)*coeff[i].kz*z) *
             (coeff[i].r + coeff[i+1].X*std::exp(complex_t(0,2)*coeff[i+1].kz*z) ) /
@@ -131,7 +131,7 @@ void OpticalFresnel::calculateX2(const MultiLayer &sample, MultiLayerCoeff_t &co
 {
     // ratio of amplitudes of outgoing and incoming waves in alternative conventions
     coeff[coeff.size()-1].X = complex_t(0, 0);
-    for(int i=coeff.size()-2; i>=0; --i) {
+    for(int i=(int)coeff.size()-2; i>=0; --i) {
         // first check for infinity
         if(std::abs(coeff[i].r*coeff[i+1].X + complex_t(1,0)) < Numeric::double_epsilon) {
             throw DivisionByZeroException("Division by zer during calculation of X_i");
diff --git a/Core/FormFactors/inc/IFormFactor.h b/Core/FormFactors/inc/IFormFactor.h
index fa28a520dc1eaafb0e6a3571064915f5ead485d4..946391ca888bee70a8ba6749f62ee4e8df7eca75 100644
--- a/Core/FormFactors/inc/IFormFactor.h
+++ b/Core/FormFactors/inc/IFormFactor.h
@@ -149,7 +149,7 @@ protected:
     virtual double getVolume() const;
 private:
     double bigRadialPart(double qR, void *params) const;
-    double bigZPart(double qH2, void *params) const;
+    double bigZPart(double qH2) const;
 };
 
 inline complex_t IFormFactorBorn::evaluate(const cvector_t &k_i, const cvector_t &k_f, double alpha_i, double alpha_f) const
@@ -179,8 +179,8 @@ inline complex_t IFormFactorBorn::evaluateForLargeBins(const cvector_t& q) const
     complex_t z_phase = std::exp(complex_t(0.0, 1.0)*qzH2);
 
     // modulus of the height of the particle
-    double z_average_intensity = (bigZPart(qzH2_d + effective_bin_size_h/2.0, (void *)0)
-            - bigZPart(qzH2_d - effective_bin_size_h/2.0, (void *)0))/effective_bin_size_h;
+    double z_average_intensity = (bigZPart(qzH2_d + effective_bin_size_h/2.0)
+            - bigZPart(qzH2_d - effective_bin_size_h/2.0))/effective_bin_size_h;
     double z_modulus = std::sqrt(z_average_intensity);
 
     // modulus of the radial part
diff --git a/Core/FormFactors/src/IFormFactor.cpp b/Core/FormFactors/src/IFormFactor.cpp
index 3c9c5dbfc82b5d6cfc2cbe2506ae36f53411cddb..6d36b8ff68c990dccd1da8c1ebe6f6cbdd1da85f 100644
--- a/Core/FormFactors/src/IFormFactor.cpp
+++ b/Core/FormFactors/src/IFormFactor.cpp
@@ -3,17 +3,15 @@
 double IFormFactorBorn::bigRadialPart(double qR, void *params) const
 {
     (void)params;
-    static double a = 1.0/4.0;
+    static double a = 1.0;
     static double b = std::sqrt(M_PI/3.0/std::sqrt(3.0));
 
     return a/(1.0 + std::pow(std::abs(b*qR),3.0));
 }
 
-double IFormFactorBorn::bigZPart(double qH2, void* params) const
+double IFormFactorBorn::bigZPart(double qH2) const
 {
-    (void)params;
     if (qH2<Numeric::double_epsilon) return qH2;
     double qH = 2.0*qH2;
     return (qH*MathFunctions::Si(qH) + std::cos(qH) - 1.0)/qH;
 }
-
diff --git a/Core/Samples/inc/InterferenceFunction2DParaCrystal.h b/Core/Samples/inc/InterferenceFunction2DParaCrystal.h
index 4da321a940ba7ed4f3695e152373068dc35bf5d6..128908e006d0c1ce8950f42ed9d7418ffa718bdd 100644
--- a/Core/Samples/inc/InterferenceFunction2DParaCrystal.h
+++ b/Core/Samples/inc/InterferenceFunction2DParaCrystal.h
@@ -78,8 +78,4 @@ private:
 
 };
 
-double wrapFunctionForGSL(double xi, void* p_unary_function);
-
-
-
 #endif /* INTERFERENCEFUNCTION2DPARACRYSTAL_H_ */
diff --git a/Core/Samples/inc/MultiLayer.h b/Core/Samples/inc/MultiLayer.h
index 336e9e1568d08c7c7ecac23d84edf3c12127d694..6e36b81cedd8222b013e0fd17e108c530338ee2a 100644
--- a/Core/Samples/inc/MultiLayer.h
+++ b/Core/Samples/inc/MultiLayer.h
@@ -89,7 +89,7 @@ public:
     //double getCrossCorrFun(const kvector_t &k, int j, int k) const;
 
     //! fourier transform of the correlation function of roughnesses between the interfaces
-    double getCrossCorrSpectralFun(const kvector_t &kvec, int j, int k) const;
+    double getCrossCorrSpectralFun(const kvector_t &kvec, size_t j, size_t k) const;
 
     //! change thickness of layer
     void setLayerThickness(size_t i_layer, double thickness);
diff --git a/Core/Samples/src/ISample.cpp b/Core/Samples/src/ISample.cpp
index ab5acf903402e289f61de260a51c6ed45e037d63..467bf9749f6a69f991aba265ceab2a4e84ee3daf 100644
--- a/Core/Samples/src/ISample.cpp
+++ b/Core/Samples/src/ISample.cpp
@@ -45,7 +45,7 @@ void ISample::print_structure()
         {
             ISample *smp = it.get_current();
             if(smp) {
-                int nlevel = it.get_level();
+                int nlevel = (int)it.get_level();
                 for(int i=0; i<nlevel; i++) std::cout << "... ";
                 std::cout << (*smp) << std::endl;
             } else {
diff --git a/Core/Samples/src/InterferenceFunction2DParaCrystal.cpp b/Core/Samples/src/InterferenceFunction2DParaCrystal.cpp
index c6d125ef60f023c16f27c220539a8959ea10269f..ea8b696826cddbfedfadcdd128af58a9e020773f 100644
--- a/Core/Samples/src/InterferenceFunction2DParaCrystal.cpp
+++ b/Core/Samples/src/InterferenceFunction2DParaCrystal.cpp
@@ -50,7 +50,7 @@ double InterferenceFunction2DParaCrystal::evaluate(const cvector_t &q) const
     if (m_integrate_xi) {
         MemberFunctionIntegrator<InterferenceFunction2DParaCrystal>::mem_function p_member_function = &InterferenceFunction2DParaCrystal::interferenceForXi;
         MemberFunctionIntegrator<InterferenceFunction2DParaCrystal> integrator(p_member_function, this);
-        result = integrator.integrate(0.0, M_PI, (void*)0);
+        result = integrator.integrate(0.0, M_PI, (void*)0)/M_PI;
    }
     else {
         result = interferenceForXi(m_xi, (void*)0);
diff --git a/Core/Samples/src/MultiLayer.cpp b/Core/Samples/src/MultiLayer.cpp
index 1046a3a70c41c66b52173d40b66811aff1d9166b..8c0ff2a4b161be4f7646619631f7a23720248e3e 100644
--- a/Core/Samples/src/MultiLayer.cpp
+++ b/Core/Samples/src/MultiLayer.cpp
@@ -157,7 +157,7 @@ void MultiLayer::addLayer(const Layer &layer)
 //! Fourier transform of the correlation function of roughnesses between the interfaces
 //! j,k - indexes of layers in multilayer whose bottom interfaces we are considering
 /* ************************************************************************* */
-double MultiLayer::getCrossCorrSpectralFun(const kvector_t &kvec, int j, int k) const
+double MultiLayer::getCrossCorrSpectralFun(const kvector_t &kvec, size_t j, size_t k) const
 {
     if(m_crossCorrLength == 0) return 0.0;
     double z_j = getLayerBottomZ(j);
diff --git a/Core/Tools/inc/FitSuiteObjects.h b/Core/Tools/inc/FitSuiteObjects.h
index 68633005a095872bd412db7fd7073c9efd1a360d..be10e41257ec33279ca71c31f6a7915c5a9f3fdf 100644
--- a/Core/Tools/inc/FitSuiteObjects.h
+++ b/Core/Tools/inc/FitSuiteObjects.h
@@ -51,23 +51,23 @@ public:
     double getChiSquaredValue();
 
     //! get experiment
-    const Experiment *getExperiment(int i_item = 0) const { return m_fit_objects[check_index(i_item)]->getExperiment(); }
+    const Experiment *getExperiment(size_t i_item = 0) const { return m_fit_objects[check_index(i_item)]->getExperiment(); }
 
     //! get real data
-    const OutputData<double> * getRealData(int i_item = 0) const { return m_fit_objects[check_index(i_item)]->getRealData(); }
+    const OutputData<double> * getRealData(size_t i_item = 0) const { return m_fit_objects[check_index(i_item)]->getRealData(); }
     //! set real data
-    void setRealData(const OutputData<double > &real_data, int i_item = 0) { m_fit_objects[check_index(i_item)]->setRealData(real_data);}
+    void setRealData(const OutputData<double > &real_data, size_t i_item = 0) { m_fit_objects[check_index(i_item)]->setRealData(real_data);}
 
     //! get chi2 module
-    const IChiSquaredModule *getChiSquaredModule(int i_item = 0) const { return m_fit_objects[check_index(i_item)]->getChiSquaredModule(); }
-    IChiSquaredModule *getChiSquaredModule(int i_item = 0) { return m_fit_objects[check_index(i_item)]->getChiSquaredModule(); }
+    const IChiSquaredModule *getChiSquaredModule(size_t i_item = 0) const { return m_fit_objects[check_index(i_item)]->getChiSquaredModule(); }
+    IChiSquaredModule *getChiSquaredModule(size_t i_item = 0) { return m_fit_objects[check_index(i_item)]->getChiSquaredModule(); }
 
     //! get simulated data
-    const OutputData<double> * getSimulatedData(int i_item = 0) const { return m_fit_objects[check_index(i_item)]->getSimulatedData(); }
+    const OutputData<double> * getSimulatedData(size_t i_item = 0) const { return m_fit_objects[check_index(i_item)]->getSimulatedData(); }
 
     //! get fit object
-    const FitObject *getObject(int i_item = 0) const { return m_fit_objects[check_index(i_item)]; }
-    FitObject *getObject(int i_item = 0) { return m_fit_objects[check_index(i_item)]; }
+    const FitObject *getObject(size_t i_item = 0) const { return m_fit_objects[check_index(i_item)]; }
+    FitObject *getObject(size_t i_item = 0) { return m_fit_objects[check_index(i_item)]; }
 private:
     //! disabled copy constructor and assignment operator
     FitSuiteObjects &operator=(const FitSuiteObjects &);
diff --git a/Core/Tools/inc/FitSuiteParameters.h b/Core/Tools/inc/FitSuiteParameters.h
index 68bb87874bb05550200f054c593574dc0b819862..b01a856f736e6c83b5f20660fac46201125dfd31 100644
--- a/Core/Tools/inc/FitSuiteParameters.h
+++ b/Core/Tools/inc/FitSuiteParameters.h
@@ -63,8 +63,8 @@ public:
     const_iterator end() const { return m_parameters.end(); }
 
     //! access to parameters
-    const FitParameter *operator[](int index) const { return m_parameters[check_index(index)]; }
-    FitParameter *operator[](int index) { return m_parameters[check_index(index)]; }
+    const FitParameter *operator[](size_t index) const { return m_parameters[check_index(index)]; }
+    FitParameter *operator[](size_t index) { return m_parameters[check_index(index)]; }
     const FitParameter *operator[](std::string name) const { return getParameter(name); }
     FitParameter *operator[](std::string name) { return getParameter(name); }
 
diff --git a/Core/Tools/inc/MathFunctions.h b/Core/Tools/inc/MathFunctions.h
index ab376bdc67a484a5c36aa2889a3ac60e0b417018..469a78eebbfcaa6ae9c06ad30361d6ac5fcf86d6 100644
--- a/Core/Tools/inc/MathFunctions.h
+++ b/Core/Tools/inc/MathFunctions.h
@@ -76,9 +76,6 @@ complex_t FastCos(const complex_t &x);
 //! simultaneous complex sine and cosine calculations
 void FastSinCos(const complex_t &x, complex_t &xsin, complex_t &xcos);
 
-//! numerical integration
-double Integrate1D(gsl_function *p_function, double start, double end);
-
 } // Namespace MathFunctions
 
 inline double MathFunctions::GenerateNormalRandom(double average, double std_dev)
diff --git a/Core/Tools/inc/MemberFunctionIntegrator.h b/Core/Tools/inc/MemberFunctionIntegrator.h
index e046c903c72e0b3687269cca153a1112248d309a..0a34f32da5905c6272bab8fac8dafeb374fc4b7e 100644
--- a/Core/Tools/inc/MemberFunctionIntegrator.h
+++ b/Core/Tools/inc/MemberFunctionIntegrator.h
@@ -53,7 +53,7 @@ template<class C> MemberFunctionIntegrator<C>::MemberFunctionIntegrator(
 {
 }
 
-template<class C> inline double MemberFunctionIntegrator<C>::integrate(
+template<class C> double MemberFunctionIntegrator<C>::integrate(
         double lmin, double lmax, void* params)
 {
     CallBackHolder cb = { mp_object, m_member_function, params };
diff --git a/Core/Tools/inc/NamedVector.h b/Core/Tools/inc/NamedVector.h
index 7386f4f546a71b046cb5feb8d6f9da5559f973f9..69070a8a9397da4f9843b2c8592a6543e15e81f0 100644
--- a/Core/Tools/inc/NamedVector.h
+++ b/Core/Tools/inc/NamedVector.h
@@ -103,7 +103,7 @@ template <class T> NamedVector<T>* NamedVector<T>::clone() const
 template <class T> void NamedVector<T>::initElements(T start, T end, size_t size)
 {
 	T step = size>1 ? (end - start)/(size-1) : end;
-    for (size_t i=0; i<size; ++i)
+    for (int i=0; i<size; ++i)
     {
         push_back(start + step*i);
     }
diff --git a/Core/Tools/inc/OutputData.h b/Core/Tools/inc/OutputData.h
index 38b139bafc152887a1308d33c4a7ad24d5c28bc3..ce1dc0b90ec42e17df156cbae26b32377491085f 100644
--- a/Core/Tools/inc/OutputData.h
+++ b/Core/Tools/inc/OutputData.h
@@ -382,9 +382,9 @@ template<class T> std::vector<int> OutputData<T>::toCoordinates(size_t index) co
     size_t remainder = index;
     std::vector<int> result;
     result.resize(mp_ll_data->getRank());
-    for (size_t i=0; i<mp_ll_data->getRank(); ++i)
+    for (int i=0; i<mp_ll_data->getRank(); ++i)
     {
-        result[mp_ll_data->getRank()-1-i] = remainder % m_value_axes[mp_ll_data->getRank()-1-i]->getSize();
+        result[mp_ll_data->getRank()-1-i] = (int)(remainder % m_value_axes[mp_ll_data->getRank()-1-i]->getSize());
         remainder /= m_value_axes[mp_ll_data->getRank()-1-i]->getSize();
     }
     return result;
@@ -509,7 +509,7 @@ template <class T> void OutputData<T>::allocate()
     size_t rank = m_value_axes.size();
     int *dims =  new int[rank];
     for (size_t i=0; i<rank; ++i) {
-        dims[i] = getAxis(i)->getSize();
+        dims[i] = (int)getAxis(i)->getSize();
     }
     mp_ll_data = new LLData<T>(rank, dims);
     T default_value = T();
diff --git a/Core/Tools/inc/StochasticSampledParameter.h b/Core/Tools/inc/StochasticSampledParameter.h
index 7ca414d887be95392c0008e67816b36672fc4a18..3084c47285446868111bebc9d234d6de99868b4c 100644
--- a/Core/Tools/inc/StochasticSampledParameter.h
+++ b/Core/Tools/inc/StochasticSampledParameter.h
@@ -25,9 +25,9 @@ class StochasticSampledParameter : public StochasticParameter<double>
 {
 public:
     //! constructor with nbins, xmin, xmax
-    StochasticSampledParameter(const StochasticParameter<double> &par, int nbins, double xmin, double xmax);
+    StochasticSampledParameter(const StochasticParameter<double> &par, size_t nbins, double xmin, double xmax);
     //! constructor with nbin and nfwhm to derive xmin and xmax
-    StochasticSampledParameter(const StochasticParameter<double> &par, int nbins, int nfwhm=3);
+    StochasticSampledParameter(const StochasticParameter<double> &par, size_t nbins, int nfwhm=3);
     virtual ~StochasticSampledParameter();
 
     //! return radom value of stochastic parameter
@@ -47,7 +47,7 @@ public:
     }
 
     //! return probability value for given bin
-    double probabilityBinDensity(int ibin) const { return m_stochastic_parameter->probabilityDensity(getBinValue(ibin)); }
+    double probabilityBinDensity(size_t ibin) const { return m_stochastic_parameter->probabilityDensity(getBinValue(ibin)); }
 
     //! return number of bins
     size_t getNbins() const { return m_nbins; }
diff --git a/Core/Tools/src/Convolve.cpp b/Core/Tools/src/Convolve.cpp
index 26885f456d4efa186e678fb9d244ebf1de867c58..aecdbc9638f30a4e878ffad89a3be23047207f34 100644
--- a/Core/Tools/src/Convolve.cpp
+++ b/Core/Tools/src/Convolve.cpp
@@ -83,10 +83,10 @@ void MathFunctions::Convolve::fftconvolve(const double2d_t &source, const double
         setMode(FFTW_LINEAR_SAME);
     }
 
-    size_t h_src = source.size();
-    size_t w_src = (source.size() ? source[0].size() : 0);
-    size_t h_kernel = kernel.size();
-    size_t w_kernel = (kernel.size() ? kernel[0].size() : 0);
+    int h_src = (int)source.size();
+    int w_src = (int)(source.size() ? source[0].size() : 0);
+    int h_kernel = (int)kernel.size();
+    int w_kernel = (kernel.size() ? (int)kernel[0].size() : 0);
 
     // initialisation
     init(h_src, w_src, h_kernel, w_kernel);
diff --git a/Core/Tools/src/FitSuite.cpp b/Core/Tools/src/FitSuite.cpp
index 5c197e2710b0c1b21112448d7f1f2a3ef6000fab..b2319d506a6e25874538bbe1502ce1de19b57d44 100644
--- a/Core/Tools/src/FitSuite.cpp
+++ b/Core/Tools/src/FitSuite.cpp
@@ -81,11 +81,11 @@ void FitSuite::link_fit_parameters()
 void FitSuite::minimize()
 {
     // initializing minimizer with fcn function belonging to given class
-    m_minimizer->setFunction( std::bind1st(std::mem_fun(&FitSuite::functionToMinimize), this), m_fit_parameters.size() );
+    m_minimizer->setFunction( std::bind1st(std::mem_fun(&FitSuite::functionToMinimize), this), (int)m_fit_parameters.size() );
 
     // propagating local fit parameters to the minimizer's internal list of parameters
     for(size_t i_par = 0; i_par<m_fit_parameters.size(); i_par++) {
-        m_minimizer->setVariable(i_par, m_fit_parameters[i_par] );
+        m_minimizer->setVariable((int)i_par, m_fit_parameters[i_par] );
     }
     if( m_fit_parameters.size() != m_minimizer->getNumberOfVariables())  std::cout << "FitSuite::minimize() -> Warning. Something unexpected" << std::endl;
 
diff --git a/Core/Tools/src/MathFunctions.cpp b/Core/Tools/src/MathFunctions.cpp
index b66ff2281fb45ad6122064991d69a5d83efd06d5..9d51463d18a3a9b1c7cb361ff06fa703f0b5eb12 100644
--- a/Core/Tools/src/MathFunctions.cpp
+++ b/Core/Tools/src/MathFunctions.cpp
@@ -53,10 +53,10 @@ std::vector<complex_t > MathFunctions::FastFourierTransform(const std::vector<co
     switch (ftCase)
     {
         case MathFunctions::ForwardFFT:
-            plan = fftw_plan_dft_1d( npx, ftData, ftResult, FFTW_FORWARD, FFTW_ESTIMATE );
+            plan = fftw_plan_dft_1d( (int)npx, ftData, ftResult, FFTW_FORWARD, FFTW_ESTIMATE );
             break;
         case MathFunctions::BackwardFFT:
-            plan = fftw_plan_dft_1d( npx, ftData, ftResult, FFTW_BACKWARD, FFTW_ESTIMATE );
+            plan = fftw_plan_dft_1d( (int)npx, ftData, ftResult, FFTW_BACKWARD, FFTW_ESTIMATE );
             scale = 1./double(npx);
             break;
         default:
@@ -190,13 +190,3 @@ std::vector<complex_t> MathFunctions::ConvolveFFT(const std::vector<double> &sig
     std::vector<complex_t > result = MathFunctions::FastFourierTransform(fft_prod, MathFunctions::BackwardFFT);
     return result;
 }
-
-double MathFunctions::Integrate1D(gsl_function *p_function, double start,
-        double end)
-{
-    gsl_integration_workspace *ws = gsl_integration_workspace_alloc(200);
-    double result, error;
-    gsl_integration_qag(p_function, start, end, 1e-10, 1e-8, 50, 1, ws, &result, &error);
-    gsl_integration_workspace_free(ws);
-    return result;
-}
diff --git a/Core/Tools/src/OutputDataFunctions.cpp b/Core/Tools/src/OutputDataFunctions.cpp
index f73c13fb13d59cff2aa9da8d91d2bcc1d06c0505..f8bd5dd00cbe8fe592c0dd0931adf67e253011b2 100644
--- a/Core/Tools/src/OutputDataFunctions.cpp
+++ b/Core/Tools/src/OutputDataFunctions.cpp
@@ -68,7 +68,7 @@ void OutputDataFunctions::fourierTransform(const OutputData<double>& source, Out
     //  initialize temporary arrays
     double *input = fftw_alloc_real(total_real_size);
     fftw_complex *output = fftw_alloc_complex(total_complex_size);
-    fftw_plan plan = fftw_plan_dft_r2c(rank, n_real_dims, input, output, FFTW_ESTIMATE);
+    fftw_plan plan = fftw_plan_dft_r2c((int)rank, n_real_dims, input, output, FFTW_ESTIMATE);
     source.fillRawDataArray(input);
 
     // execute the plan
@@ -112,7 +112,7 @@ void OutputDataFunctions::fourierTransformR(const OutputData<complex_t>& source,
     //  initialize temporary arrays
     double *output = fftw_alloc_real(total_real_size);
     fftw_complex *input = fftw_alloc_complex(total_complex_size);
-    fftw_plan plan = fftw_plan_dft_c2r(rank, n_real_dims, input, output, FFTW_ESTIMATE);
+    fftw_plan plan = fftw_plan_dft_c2r((int)rank, n_real_dims, input, output, FFTW_ESTIMATE);
     complex_t *input2 = new complex_t[total_complex_size];
     source.fillRawDataArray(input2);
     toFftw3Array(input2, total_complex_size, input);
@@ -214,7 +214,7 @@ OutputData<double> *OutputDataFunctions::sliceAccrossOneAxis(const OutputData<do
             sliced_data->addAxis(axis->clone());
         } else {
             fixed_axis = axis;
-            fixed_axis_index = i_axis;
+            fixed_axis_index = (int)i_axis;
         }
     }
 
@@ -257,9 +257,9 @@ OutputData<double> *OutputDataFunctions::selectRangeOnOneAxis(const OutputData<d
         throw LogicErrorException("OutputDataFunctions::selectRangeOnOneAxis() -> Error! Axis range xmax<xmin. ");
     }
 
-    int selected_axis_index = data.getAxisIndex(selected_axis_name);
-    int nbin1 = selected_axis->findClosestIndex(axis_value1);
-    int nbin2 = selected_axis->findClosestIndex(axis_value2);
+    size_t selected_axis_index = data.getAxisIndex(selected_axis_name);
+    size_t nbin1 = selected_axis->findClosestIndex(axis_value1);
+    size_t nbin2 = selected_axis->findClosestIndex(axis_value2);
     double x1 = (*selected_axis)[nbin1];
     double x2 = (*selected_axis)[nbin2];
 
diff --git a/Core/Tools/src/StochasticSampledParameter.cpp b/Core/Tools/src/StochasticSampledParameter.cpp
index 2327b27963748b303c3746f41a3a31ab1004d3b6..8dec209b1e8080390c47d1637e3f4fcf68a4def5 100644
--- a/Core/Tools/src/StochasticSampledParameter.cpp
+++ b/Core/Tools/src/StochasticSampledParameter.cpp
@@ -3,7 +3,7 @@
 
 
 
-StochasticSampledParameter::StochasticSampledParameter(const StochasticParameter<double> &par, int nbins, double xmin, double xmax) :
+StochasticSampledParameter::StochasticSampledParameter(const StochasticParameter<double> &par, size_t nbins, double xmin, double xmax) :
     StochasticParameter<double>(0)
   , m_stochastic_parameter(par.clone())
   , m_nbins(nbins)
@@ -14,7 +14,7 @@ StochasticSampledParameter::StochasticSampledParameter(const StochasticParameter
 }
 
 
-StochasticSampledParameter::StochasticSampledParameter(const StochasticParameter<double> &par, int nbins, int nfwhm) :
+StochasticSampledParameter::StochasticSampledParameter(const StochasticParameter<double> &par, size_t nbins, int nfwhm) :
     StochasticParameter<double>(0)
   , m_stochastic_parameter(par.clone())
   , m_nbins(nbins)
diff --git a/XCode_GISASFW.xcodeproj/project.pbxproj b/XCode_GISASFW.xcodeproj/project.pbxproj
index af290b66b4dc9cce72b7ef5a572a08fe909f8db5..049b33c194aed384108043c843d313e2ca3b4d28 100644
--- a/XCode_GISASFW.xcodeproj/project.pbxproj
+++ b/XCode_GISASFW.xcodeproj/project.pbxproj
@@ -67,10 +67,8 @@
 		62224878160CB853008205AC /* Convolve.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6222230B160CB745008205AC /* Convolve.cpp */; };
 		62224879160CB853008205AC /* DoubleToComplexInterpolatingFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6222230C160CB745008205AC /* DoubleToComplexInterpolatingFunction.cpp */; };
 		6222487A160CB853008205AC /* Exceptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6222230D160CB745008205AC /* Exceptions.cpp */; };
-		6222487B160CB853008205AC /* FitMultiParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6222230E160CB745008205AC /* FitMultiParameter.cpp */; };
 		6222487C160CB853008205AC /* FitParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6222230F160CB745008205AC /* FitParameter.cpp */; };
 		6222487D160CB853008205AC /* IFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62222310160CB745008205AC /* IFactory.cpp */; };
-		6222487E160CB853008205AC /* INamed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62222311160CB745008205AC /* INamed.cpp */; };
 		6222487F160CB853008205AC /* ISingleton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62222312160CB745008205AC /* ISingleton.cpp */; };
 		62224880160CB853008205AC /* MathFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62222313160CB745008205AC /* MathFunctions.cpp */; };
 		62224881160CB853008205AC /* OutputData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62222314160CB745008205AC /* OutputData.cpp */; };
@@ -93,7 +91,6 @@
 		62224896160CC1E6008205AC /* TestConvolution.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6222222F160CB745008205AC /* TestConvolution.cpp */; };
 		62224897160CC1E6008205AC /* TestDetectorResolution.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62222230160CB745008205AC /* TestDetectorResolution.cpp */; };
 		62224898160CC1E6008205AC /* TestDiffuseReflection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62222231160CB745008205AC /* TestDiffuseReflection.cpp */; };
-		62224899160CC1E6008205AC /* TestFittingModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62222232160CB745008205AC /* TestFittingModule.cpp */; };
 		6222489A160CC1E6008205AC /* TestFormFactor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62222233160CB745008205AC /* TestFormFactor.cpp */; };
 		6222489B160CC1E6008205AC /* TestFresnelCoeff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62222234160CB745008205AC /* TestFresnelCoeff.cpp */; };
 		6222489C160CC1E6008205AC /* TestIsGISAXS1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62222235160CB745008205AC /* TestIsGISAXS1.cpp */; };
@@ -150,6 +147,28 @@
 		627C2FDA160B515D004C1B11 /* libGISASFW.Core.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 627C2F07160B4F98004C1B11 /* libGISASFW.Core.dylib */; };
 		627C3032160B69D7004C1B11 /* libfftw3.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 627C3031160B69D7004C1B11 /* libfftw3.3.dylib */; };
 		62BD93501619D05D0008A768 /* ParticleCoreShell.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62BD934F1619D05D0008A768 /* ParticleCoreShell.cpp */; };
+		62CC09711665047E00A5B720 /* ChiSquaredFrequency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC096B1665047E00A5B720 /* ChiSquaredFrequency.cpp */; };
+		62CC09721665047E00A5B720 /* FTDistributions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC096C1665047E00A5B720 /* FTDistributions.cpp */; };
+		62CC09731665047E00A5B720 /* IChiSquaredModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC096D1665047E00A5B720 /* IChiSquaredModule.cpp */; };
+		62CC09741665047E00A5B720 /* Mask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC096E1665047E00A5B720 /* Mask.cpp */; };
+		62CC09751665047E00A5B720 /* MaskCoordinateFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC096F1665047E00A5B720 /* MaskCoordinateFunction.cpp */; };
+		62CC09761665047E00A5B720 /* ResolutionFunction2DSimple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC09701665047E00A5B720 /* ResolutionFunction2DSimple.cpp */; };
+		62CC09781665049900A5B720 /* IFormFactor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC09771665049900A5B720 /* IFormFactor.cpp */; };
+		62CC097B166504C100A5B720 /* InterferenceFunction2DParaCrystal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC097A166504C100A5B720 /* InterferenceFunction2DParaCrystal.cpp */; };
+		62CC098D166504E700A5B720 /* FitObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC0986166504E700A5B720 /* FitObject.cpp */; };
+		62CC098E166504E700A5B720 /* FitParameterLinked.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC0987166504E700A5B720 /* FitParameterLinked.cpp */; };
+		62CC098F166504E700A5B720 /* FitSuiteObjects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC0988166504E700A5B720 /* FitSuiteObjects.cpp */; };
+		62CC0990166504E700A5B720 /* FitSuiteParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC0989166504E700A5B720 /* FitSuiteParameters.cpp */; };
+		62CC0991166504E700A5B720 /* FitSuiteStrategy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC098A166504E700A5B720 /* FitSuiteStrategy.cpp */; };
+		62CC0992166504E700A5B720 /* OutputDataFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC098C166504E700A5B720 /* OutputDataFunctions.cpp */; };
+		62CC09A41665055E00A5B720 /* TestFittingBenchmark.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC099C1665055E00A5B720 /* TestFittingBenchmark.cpp */; };
+		62CC09A51665055E00A5B720 /* TestFittingModule1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC099D1665055E00A5B720 /* TestFittingModule1.cpp */; };
+		62CC09A61665055E00A5B720 /* TestFittingModule2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC099E1665055E00A5B720 /* TestFittingModule2.cpp */; };
+		62CC09A71665055E00A5B720 /* TestFittingModule3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC099F1665055E00A5B720 /* TestFittingModule3.cpp */; };
+		62CC09A81665055E00A5B720 /* TestFourier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC09A01665055E00A5B720 /* TestFourier.cpp */; };
+		62CC09A91665055E00A5B720 /* TestIsGISAXS4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC09A11665055E00A5B720 /* TestIsGISAXS4.cpp */; };
+		62CC09AA1665055E00A5B720 /* TestIsGISAXS8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC09A21665055E00A5B720 /* TestIsGISAXS8.cpp */; };
+		62CC09AB1665055E00A5B720 /* TestIsGISAXS12.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62CC09A31665055E00A5B720 /* TestIsGISAXS12.cpp */; };
 		62EA737B1628422200656B41 /* FitSuite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62EA73741628422200656B41 /* FitSuite.cpp */; };
 		62EA737C1628422200656B41 /* IObserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62EA73751628422200656B41 /* IObserver.cpp */; };
 		62EA737D1628422200656B41 /* IParameterized.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62EA73761628422200656B41 /* IParameterized.cpp */; };
@@ -220,7 +239,6 @@
 		622221F4160CB745008205AC /* TestConvolution.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestConvolution.h; sourceTree = "<group>"; };
 		622221F5160CB745008205AC /* TestDetectorResolution.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestDetectorResolution.h; sourceTree = "<group>"; };
 		622221F6160CB745008205AC /* TestDiffuseReflection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestDiffuseReflection.h; sourceTree = "<group>"; };
-		622221F7160CB745008205AC /* TestFittingModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestFittingModule.h; sourceTree = "<group>"; };
 		622221F8160CB745008205AC /* TestFormFactor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestFormFactor.h; sourceTree = "<group>"; };
 		622221F9160CB745008205AC /* TestFresnelCoeff.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestFresnelCoeff.h; sourceTree = "<group>"; };
 		622221FA160CB745008205AC /* TestIsGISAXS1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestIsGISAXS1.h; sourceTree = "<group>"; };
@@ -245,7 +263,6 @@
 		6222222F160CB745008205AC /* TestConvolution.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TestConvolution.cpp; sourceTree = "<group>"; };
 		62222230160CB745008205AC /* TestDetectorResolution.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TestDetectorResolution.cpp; sourceTree = "<group>"; };
 		62222231160CB745008205AC /* TestDiffuseReflection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TestDiffuseReflection.cpp; sourceTree = "<group>"; };
-		62222232160CB745008205AC /* TestFittingModule.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TestFittingModule.cpp; sourceTree = "<group>"; };
 		62222233160CB745008205AC /* TestFormFactor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TestFormFactor.cpp; sourceTree = "<group>"; };
 		62222234160CB745008205AC /* TestFresnelCoeff.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TestFresnelCoeff.cpp; sourceTree = "<group>"; };
 		62222235160CB745008205AC /* TestIsGISAXS1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TestIsGISAXS1.cpp; sourceTree = "<group>"; };
@@ -413,7 +430,6 @@
 		622222F4160CB745008205AC /* Coordinate3D.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Coordinate3D.h; sourceTree = "<group>"; };
 		622222F5160CB745008205AC /* DoubleToComplexInterpolatingFunction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DoubleToComplexInterpolatingFunction.h; sourceTree = "<group>"; };
 		622222F7160CB745008205AC /* Exceptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Exceptions.h; sourceTree = "<group>"; };
-		622222F8160CB745008205AC /* FitMultiParameter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FitMultiParameter.h; sourceTree = "<group>"; };
 		622222F9160CB745008205AC /* FitParameter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FitParameter.h; sourceTree = "<group>"; };
 		622222FA160CB745008205AC /* IDoubleToComplexFunction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IDoubleToComplexFunction.h; sourceTree = "<group>"; };
 		622222FB160CB745008205AC /* IFactory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IFactory.h; sourceTree = "<group>"; };
@@ -434,10 +450,8 @@
 		6222230B160CB745008205AC /* Convolve.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Convolve.cpp; sourceTree = "<group>"; };
 		6222230C160CB745008205AC /* DoubleToComplexInterpolatingFunction.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DoubleToComplexInterpolatingFunction.cpp; sourceTree = "<group>"; };
 		6222230D160CB745008205AC /* Exceptions.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Exceptions.cpp; sourceTree = "<group>"; };
-		6222230E160CB745008205AC /* FitMultiParameter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FitMultiParameter.cpp; sourceTree = "<group>"; };
 		6222230F160CB745008205AC /* FitParameter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FitParameter.cpp; sourceTree = "<group>"; };
 		62222310160CB745008205AC /* IFactory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = IFactory.cpp; sourceTree = "<group>"; };
-		62222311160CB745008205AC /* INamed.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = INamed.cpp; sourceTree = "<group>"; };
 		62222312160CB745008205AC /* ISingleton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ISingleton.cpp; sourceTree = "<group>"; };
 		62222313160CB745008205AC /* MathFunctions.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MathFunctions.cpp; sourceTree = "<group>"; };
 		62222314160CB745008205AC /* OutputData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OutputData.cpp; sourceTree = "<group>"; };
@@ -1056,6 +1070,56 @@
 		627C3031160B69D7004C1B11 /* libfftw3.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libfftw3.3.dylib; path = ../../../../../../opt/local/lib/libfftw3.3.dylib; sourceTree = "<group>"; };
 		62AE01631619C72E00A83353 /* ParticleCoreShell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleCoreShell.h; sourceTree = "<group>"; };
 		62BD934F1619D05D0008A768 /* ParticleCoreShell.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParticleCoreShell.cpp; sourceTree = "<group>"; };
+		62CC09631665046C00A5B720 /* ChiSquaredFrequency.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChiSquaredFrequency.h; sourceTree = "<group>"; };
+		62CC09641665046C00A5B720 /* FTDistributions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FTDistributions.h; sourceTree = "<group>"; };
+		62CC09651665046C00A5B720 /* IChiSquaredModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IChiSquaredModule.h; sourceTree = "<group>"; };
+		62CC09661665046C00A5B720 /* IResolutionFunction2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IResolutionFunction2D.h; sourceTree = "<group>"; };
+		62CC09671665046C00A5B720 /* Mask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Mask.h; sourceTree = "<group>"; };
+		62CC09681665046C00A5B720 /* MaskCoordinateFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MaskCoordinateFunction.h; sourceTree = "<group>"; };
+		62CC09691665046C00A5B720 /* ResolutionFunction2DSimple.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResolutionFunction2DSimple.h; sourceTree = "<group>"; };
+		62CC096A1665046C00A5B720 /* ThreadInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadInfo.h; sourceTree = "<group>"; };
+		62CC096B1665047E00A5B720 /* ChiSquaredFrequency.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ChiSquaredFrequency.cpp; sourceTree = "<group>"; };
+		62CC096C1665047E00A5B720 /* FTDistributions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FTDistributions.cpp; sourceTree = "<group>"; };
+		62CC096D1665047E00A5B720 /* IChiSquaredModule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IChiSquaredModule.cpp; sourceTree = "<group>"; };
+		62CC096E1665047E00A5B720 /* Mask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Mask.cpp; sourceTree = "<group>"; };
+		62CC096F1665047E00A5B720 /* MaskCoordinateFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MaskCoordinateFunction.cpp; sourceTree = "<group>"; };
+		62CC09701665047E00A5B720 /* ResolutionFunction2DSimple.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResolutionFunction2DSimple.cpp; sourceTree = "<group>"; };
+		62CC09771665049900A5B720 /* IFormFactor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IFormFactor.cpp; sourceTree = "<group>"; };
+		62CC0979166504B600A5B720 /* InterferenceFunction2DParaCrystal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InterferenceFunction2DParaCrystal.h; sourceTree = "<group>"; };
+		62CC097A166504C100A5B720 /* InterferenceFunction2DParaCrystal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InterferenceFunction2DParaCrystal.cpp; sourceTree = "<group>"; };
+		62CC097C166504D600A5B720 /* AttLimits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AttLimits.h; sourceTree = "<group>"; };
+		62CC097D166504D600A5B720 /* FitObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FitObject.h; sourceTree = "<group>"; };
+		62CC097E166504D600A5B720 /* FitParameterLinked.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FitParameterLinked.h; sourceTree = "<group>"; };
+		62CC097F166504D600A5B720 /* FitSuiteObjects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FitSuiteObjects.h; sourceTree = "<group>"; };
+		62CC0980166504D600A5B720 /* FitSuiteParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FitSuiteParameters.h; sourceTree = "<group>"; };
+		62CC0981166504D600A5B720 /* FitSuiteStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FitSuiteStrategy.h; sourceTree = "<group>"; };
+		62CC0982166504D600A5B720 /* LLData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LLData.h; sourceTree = "<group>"; };
+		62CC0983166504D600A5B720 /* MemberFunctionIntegrator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemberFunctionIntegrator.h; sourceTree = "<group>"; };
+		62CC0984166504D600A5B720 /* OutputDataFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OutputDataFunctions.h; sourceTree = "<group>"; };
+		62CC0985166504D600A5B720 /* OutputDataIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OutputDataIterator.h; sourceTree = "<group>"; };
+		62CC0986166504E700A5B720 /* FitObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FitObject.cpp; sourceTree = "<group>"; };
+		62CC0987166504E700A5B720 /* FitParameterLinked.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FitParameterLinked.cpp; sourceTree = "<group>"; };
+		62CC0988166504E700A5B720 /* FitSuiteObjects.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FitSuiteObjects.cpp; sourceTree = "<group>"; };
+		62CC0989166504E700A5B720 /* FitSuiteParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FitSuiteParameters.cpp; sourceTree = "<group>"; };
+		62CC098A166504E700A5B720 /* FitSuiteStrategy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FitSuiteStrategy.cpp; sourceTree = "<group>"; };
+		62CC098B166504E700A5B720 /* OutputData.cpp.orig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = OutputData.cpp.orig; sourceTree = "<group>"; };
+		62CC098C166504E700A5B720 /* OutputDataFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OutputDataFunctions.cpp; sourceTree = "<group>"; };
+		62CC09941665053C00A5B720 /* TestFittingBenchmark.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestFittingBenchmark.h; sourceTree = "<group>"; };
+		62CC09951665053C00A5B720 /* TestFittingModule1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestFittingModule1.h; sourceTree = "<group>"; };
+		62CC09961665053C00A5B720 /* TestFittingModule2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestFittingModule2.h; sourceTree = "<group>"; };
+		62CC09971665053C00A5B720 /* TestFittingModule3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestFittingModule3.h; sourceTree = "<group>"; };
+		62CC09981665053C00A5B720 /* TestFourier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestFourier.h; sourceTree = "<group>"; };
+		62CC09991665053C00A5B720 /* TestIsGISAXS4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestIsGISAXS4.h; sourceTree = "<group>"; };
+		62CC099A1665053C00A5B720 /* TestIsGISAXS8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestIsGISAXS8.h; sourceTree = "<group>"; };
+		62CC099B1665053C00A5B720 /* TestIsGISAXS12.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestIsGISAXS12.h; sourceTree = "<group>"; };
+		62CC099C1665055E00A5B720 /* TestFittingBenchmark.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestFittingBenchmark.cpp; sourceTree = "<group>"; };
+		62CC099D1665055E00A5B720 /* TestFittingModule1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestFittingModule1.cpp; sourceTree = "<group>"; };
+		62CC099E1665055E00A5B720 /* TestFittingModule2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestFittingModule2.cpp; sourceTree = "<group>"; };
+		62CC099F1665055E00A5B720 /* TestFittingModule3.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestFittingModule3.cpp; sourceTree = "<group>"; };
+		62CC09A01665055E00A5B720 /* TestFourier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestFourier.cpp; sourceTree = "<group>"; };
+		62CC09A11665055E00A5B720 /* TestIsGISAXS4.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestIsGISAXS4.cpp; sourceTree = "<group>"; };
+		62CC09A21665055E00A5B720 /* TestIsGISAXS8.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestIsGISAXS8.cpp; sourceTree = "<group>"; };
+		62CC09A31665055E00A5B720 /* TestIsGISAXS12.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestIsGISAXS12.cpp; sourceTree = "<group>"; };
 		62EA736B1628421000656B41 /* FitSuite.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FitSuite.h; sourceTree = "<group>"; };
 		62EA736C1628421000656B41 /* IMinimizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IMinimizer.h; sourceTree = "<group>"; };
 		62EA736D1628421000656B41 /* IObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IObserver.h; sourceTree = "<group>"; };
@@ -1178,6 +1242,14 @@
 		622221E9160CB745008205AC /* inc */ = {
 			isa = PBXGroup;
 			children = (
+				62CC09941665053C00A5B720 /* TestFittingBenchmark.h */,
+				62CC09951665053C00A5B720 /* TestFittingModule1.h */,
+				62CC09961665053C00A5B720 /* TestFittingModule2.h */,
+				62CC09971665053C00A5B720 /* TestFittingModule3.h */,
+				62CC09981665053C00A5B720 /* TestFourier.h */,
+				62CC09991665053C00A5B720 /* TestIsGISAXS4.h */,
+				62CC099A1665053C00A5B720 /* TestIsGISAXS8.h */,
+				62CC099B1665053C00A5B720 /* TestIsGISAXS12.h */,
 				62F3A3B5162D99D5007FEE73 /* FitSuiteHelper.h */,
 				62F3A3B6162D99D5007FEE73 /* ROOTMinimizer.h */,
 				62F3A3B7162D99D5007FEE73 /* TreeEventStructure.h */,
@@ -1197,7 +1269,6 @@
 				622221F4160CB745008205AC /* TestConvolution.h */,
 				622221F5160CB745008205AC /* TestDetectorResolution.h */,
 				622221F6160CB745008205AC /* TestDiffuseReflection.h */,
-				622221F7160CB745008205AC /* TestFittingModule.h */,
 				622221F8160CB745008205AC /* TestFormFactor.h */,
 				622221F9160CB745008205AC /* TestFresnelCoeff.h */,
 				622221FA160CB745008205AC /* TestIsGISAXS1.h */,
@@ -1217,6 +1288,14 @@
 		62222224160CB745008205AC /* src */ = {
 			isa = PBXGroup;
 			children = (
+				62CC099C1665055E00A5B720 /* TestFittingBenchmark.cpp */,
+				62CC099D1665055E00A5B720 /* TestFittingModule1.cpp */,
+				62CC099E1665055E00A5B720 /* TestFittingModule2.cpp */,
+				62CC099F1665055E00A5B720 /* TestFittingModule3.cpp */,
+				62CC09A01665055E00A5B720 /* TestFourier.cpp */,
+				62CC09A11665055E00A5B720 /* TestIsGISAXS4.cpp */,
+				62CC09A21665055E00A5B720 /* TestIsGISAXS8.cpp */,
+				62CC09A31665055E00A5B720 /* TestIsGISAXS12.cpp */,
 				62F3A3B8162D99E4007FEE73 /* FitSuiteHelper.cpp */,
 				62F3A3B9162D99E4007FEE73 /* ROOTMinimizer.cpp */,
 				62F3A3BA162D99E4007FEE73 /* TreeEventStructure.cpp */,
@@ -1236,7 +1315,6 @@
 				6222222F160CB745008205AC /* TestConvolution.cpp */,
 				62222230160CB745008205AC /* TestDetectorResolution.cpp */,
 				62222231160CB745008205AC /* TestDiffuseReflection.cpp */,
-				62222232160CB745008205AC /* TestFittingModule.cpp */,
 				62222233160CB745008205AC /* TestFormFactor.cpp */,
 				62222234160CB745008205AC /* TestFresnelCoeff.cpp */,
 				62222235160CB745008205AC /* TestIsGISAXS1.cpp */,
@@ -1280,6 +1358,14 @@
 		62222245160CB745008205AC /* inc */ = {
 			isa = PBXGroup;
 			children = (
+				62CC09631665046C00A5B720 /* ChiSquaredFrequency.h */,
+				62CC09641665046C00A5B720 /* FTDistributions.h */,
+				62CC09651665046C00A5B720 /* IChiSquaredModule.h */,
+				62CC09661665046C00A5B720 /* IResolutionFunction2D.h */,
+				62CC09671665046C00A5B720 /* Mask.h */,
+				62CC09681665046C00A5B720 /* MaskCoordinateFunction.h */,
+				62CC09691665046C00A5B720 /* ResolutionFunction2DSimple.h */,
+				62CC096A1665046C00A5B720 /* ThreadInfo.h */,
 				62EA73821628425600656B41 /* ISampleBuilder.h */,
 				62222246160CB745008205AC /* Beam.h */,
 				62222247160CB745008205AC /* ChiSquaredModule.h */,
@@ -1309,6 +1395,12 @@
 		6222225C160CB745008205AC /* src */ = {
 			isa = PBXGroup;
 			children = (
+				62CC096B1665047E00A5B720 /* ChiSquaredFrequency.cpp */,
+				62CC096C1665047E00A5B720 /* FTDistributions.cpp */,
+				62CC096D1665047E00A5B720 /* IChiSquaredModule.cpp */,
+				62CC096E1665047E00A5B720 /* Mask.cpp */,
+				62CC096F1665047E00A5B720 /* MaskCoordinateFunction.cpp */,
+				62CC09701665047E00A5B720 /* ResolutionFunction2DSimple.cpp */,
 				6222225D160CB745008205AC /* Beam.cpp */,
 				6222225E160CB745008205AC /* ChiSquaredModule.cpp */,
 				6222225F160CB745008205AC /* ConvolutionDetectorResolution.cpp */,
@@ -1369,6 +1461,7 @@
 		62222285160CB745008205AC /* src */ = {
 			isa = PBXGroup;
 			children = (
+				62CC09771665049900A5B720 /* IFormFactor.cpp */,
 				6218B465161B2577007FFA5C /* FormFactorParallelepiped.cpp */,
 				62222286160CB745008205AC /* FormFactorCrystal.cpp */,
 				62222287160CB745008205AC /* FormFactorCylinder.cpp */,
@@ -1474,6 +1567,7 @@
 		622222B8160CB745008205AC /* inc */ = {
 			isa = PBXGroup;
 			children = (
+				62CC0979166504B600A5B720 /* InterferenceFunction2DParaCrystal.h */,
 				62AE01631619C72E00A83353 /* ParticleCoreShell.h */,
 				622222B9160CB745008205AC /* Crystal.h */,
 				622222BA160CB745008205AC /* DiffuseParticleInfo.h */,
@@ -1510,6 +1604,7 @@
 		622222D9160CB745008205AC /* src */ = {
 			isa = PBXGroup;
 			children = (
+				62CC097A166504C100A5B720 /* InterferenceFunction2DParaCrystal.cpp */,
 				62BD934F1619D05D0008A768 /* ParticleCoreShell.cpp */,
 				622222DA160CB745008205AC /* Crystal.cpp */,
 				622222DB160CB745008205AC /* DiffuseParticleInfo.cpp */,
@@ -1549,6 +1644,16 @@
 		622222F2160CB745008205AC /* inc */ = {
 			isa = PBXGroup;
 			children = (
+				62CC097C166504D600A5B720 /* AttLimits.h */,
+				62CC097D166504D600A5B720 /* FitObject.h */,
+				62CC097E166504D600A5B720 /* FitParameterLinked.h */,
+				62CC097F166504D600A5B720 /* FitSuiteObjects.h */,
+				62CC0980166504D600A5B720 /* FitSuiteParameters.h */,
+				62CC0981166504D600A5B720 /* FitSuiteStrategy.h */,
+				62CC0982166504D600A5B720 /* LLData.h */,
+				62CC0983166504D600A5B720 /* MemberFunctionIntegrator.h */,
+				62CC0984166504D600A5B720 /* OutputDataFunctions.h */,
+				62CC0985166504D600A5B720 /* OutputDataIterator.h */,
 				62F7B50B162C63BF008B8E1D /* DoubleToComplexMap.h */,
 				62EA736B1628421000656B41 /* FitSuite.h */,
 				62EA736C1628421000656B41 /* IMinimizer.h */,
@@ -1565,7 +1670,6 @@
 				622222F4160CB745008205AC /* Coordinate3D.h */,
 				622222F5160CB745008205AC /* DoubleToComplexInterpolatingFunction.h */,
 				622222F7160CB745008205AC /* Exceptions.h */,
-				622222F8160CB745008205AC /* FitMultiParameter.h */,
 				622222F9160CB745008205AC /* FitParameter.h */,
 				622222FA160CB745008205AC /* IDoubleToComplexFunction.h */,
 				622222FB160CB745008205AC /* IFactory.h */,
@@ -1590,6 +1694,13 @@
 		6222230A160CB745008205AC /* src */ = {
 			isa = PBXGroup;
 			children = (
+				62CC0986166504E700A5B720 /* FitObject.cpp */,
+				62CC0987166504E700A5B720 /* FitParameterLinked.cpp */,
+				62CC0988166504E700A5B720 /* FitSuiteObjects.cpp */,
+				62CC0989166504E700A5B720 /* FitSuiteParameters.cpp */,
+				62CC098A166504E700A5B720 /* FitSuiteStrategy.cpp */,
+				62CC098B166504E700A5B720 /* OutputData.cpp.orig */,
+				62CC098C166504E700A5B720 /* OutputDataFunctions.cpp */,
 				62EA73741628422200656B41 /* FitSuite.cpp */,
 				62EA73751628422200656B41 /* IObserver.cpp */,
 				62EA73761628422200656B41 /* IParameterized.cpp */,
@@ -1602,10 +1713,8 @@
 				6222230B160CB745008205AC /* Convolve.cpp */,
 				6222230C160CB745008205AC /* DoubleToComplexInterpolatingFunction.cpp */,
 				6222230D160CB745008205AC /* Exceptions.cpp */,
-				6222230E160CB745008205AC /* FitMultiParameter.cpp */,
 				6222230F160CB745008205AC /* FitParameter.cpp */,
 				62222310160CB745008205AC /* IFactory.cpp */,
-				62222311160CB745008205AC /* INamed.cpp */,
 				62222312160CB745008205AC /* ISingleton.cpp */,
 				62222313160CB745008205AC /* MathFunctions.cpp */,
 				62222314160CB745008205AC /* OutputData.cpp */,
@@ -68404,7 +68513,6 @@
 				62224896160CC1E6008205AC /* TestConvolution.cpp in Sources */,
 				62224897160CC1E6008205AC /* TestDetectorResolution.cpp in Sources */,
 				62224898160CC1E6008205AC /* TestDiffuseReflection.cpp in Sources */,
-				62224899160CC1E6008205AC /* TestFittingModule.cpp in Sources */,
 				6222489A160CC1E6008205AC /* TestFormFactor.cpp in Sources */,
 				6222489B160CC1E6008205AC /* TestFresnelCoeff.cpp in Sources */,
 				6222489C160CC1E6008205AC /* TestIsGISAXS1.cpp in Sources */,
@@ -68427,6 +68535,14 @@
 				62F3A3BB162D99E4007FEE73 /* FitSuiteHelper.cpp in Sources */,
 				62F3A3BC162D99E4007FEE73 /* ROOTMinimizer.cpp in Sources */,
 				62F3A3BD162D99E4007FEE73 /* TreeEventStructure.cpp in Sources */,
+				62CC09A41665055E00A5B720 /* TestFittingBenchmark.cpp in Sources */,
+				62CC09A51665055E00A5B720 /* TestFittingModule1.cpp in Sources */,
+				62CC09A61665055E00A5B720 /* TestFittingModule2.cpp in Sources */,
+				62CC09A71665055E00A5B720 /* TestFittingModule3.cpp in Sources */,
+				62CC09A81665055E00A5B720 /* TestFourier.cpp in Sources */,
+				62CC09A91665055E00A5B720 /* TestIsGISAXS4.cpp in Sources */,
+				62CC09AA1665055E00A5B720 /* TestIsGISAXS8.cpp in Sources */,
+				62CC09AB1665055E00A5B720 /* TestIsGISAXS12.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -68495,10 +68611,8 @@
 				62224878160CB853008205AC /* Convolve.cpp in Sources */,
 				62224879160CB853008205AC /* DoubleToComplexInterpolatingFunction.cpp in Sources */,
 				6222487A160CB853008205AC /* Exceptions.cpp in Sources */,
-				6222487B160CB853008205AC /* FitMultiParameter.cpp in Sources */,
 				6222487C160CB853008205AC /* FitParameter.cpp in Sources */,
 				6222487D160CB853008205AC /* IFactory.cpp in Sources */,
-				6222487E160CB853008205AC /* INamed.cpp in Sources */,
 				6222487F160CB853008205AC /* ISingleton.cpp in Sources */,
 				62224880160CB853008205AC /* MathFunctions.cpp in Sources */,
 				62224881160CB853008205AC /* OutputData.cpp in Sources */,
@@ -68515,6 +68629,20 @@
 				62EA737F1628422200656B41 /* OutputDataReader.cpp in Sources */,
 				62EA73801628422200656B41 /* OutputDataWriter.cpp in Sources */,
 				62EA73811628422200656B41 /* ParameterPool.cpp in Sources */,
+				62CC09711665047E00A5B720 /* ChiSquaredFrequency.cpp in Sources */,
+				62CC09721665047E00A5B720 /* FTDistributions.cpp in Sources */,
+				62CC09731665047E00A5B720 /* IChiSquaredModule.cpp in Sources */,
+				62CC09741665047E00A5B720 /* Mask.cpp in Sources */,
+				62CC09751665047E00A5B720 /* MaskCoordinateFunction.cpp in Sources */,
+				62CC09761665047E00A5B720 /* ResolutionFunction2DSimple.cpp in Sources */,
+				62CC09781665049900A5B720 /* IFormFactor.cpp in Sources */,
+				62CC097B166504C100A5B720 /* InterferenceFunction2DParaCrystal.cpp in Sources */,
+				62CC098D166504E700A5B720 /* FitObject.cpp in Sources */,
+				62CC098E166504E700A5B720 /* FitParameterLinked.cpp in Sources */,
+				62CC098F166504E700A5B720 /* FitSuiteObjects.cpp in Sources */,
+				62CC0990166504E700A5B720 /* FitSuiteParameters.cpp in Sources */,
+				62CC0991166504E700A5B720 /* FitSuiteStrategy.cpp in Sources */,
+				62CC0992166504E700A5B720 /* OutputDataFunctions.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -68794,7 +68922,11 @@
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				GTEST_INCLUDE = "$(SRCROOT)/ThirdParty/gtest/gtest-1.6.0/include";
 				GTEST_LIB = "$(SRCROOT)/lib";
-				HEADER_SEARCH_PATHS = "${GTEST_INCLUDE}";
+				HEADER_SEARCH_PATHS = (
+					"${GTEST_INCLUDE}",
+					/opt/local/include,
+					/opt/local/include/boost,
+				);
 				LIBRARY_SEARCH_PATHS = (
 					"$(inherited)",
 					"${GTEST_LIB}",
@@ -68826,7 +68958,11 @@
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				GTEST_INCLUDE = "$(SRCROOT)/ThirdParty/gtest/gtest-1.6.0/include";
 				GTEST_LIB = "$(SRCROOT)/lib";
-				HEADER_SEARCH_PATHS = "${GTEST_INCLUDE}";
+				HEADER_SEARCH_PATHS = (
+					"${GTEST_INCLUDE}",
+					/opt/local/include,
+					/opt/local/include/boost,
+				);
 				LIBRARY_SEARCH_PATHS = (
 					"$(inherited)",
 					"${GTEST_LIB}",