diff --git a/App/App.pro b/App/App.pro
index 14ce8db084505b9bfc27fd9da8fb72bfb21604a3..ebff3b07df6d217d296777534dc1e28b6ea3a68d 100644
--- a/App/App.pro
+++ b/App/App.pro
@@ -7,6 +7,7 @@ QT      -= core gui
 
 SOURCES += \
     src/main.cpp \
+    src/IFunctionalTest.cpp \
     src/TestFresnelCoeff.cpp \
     src/DrawHelper.cpp \
     src/TestFormFactor.cpp \
@@ -22,6 +23,7 @@ SOURCES += \
     src/TestConvolution.cpp
 
 HEADERS += \
+    inc/IFunctionalTest.h \
     inc/DrawHelper.h \
     inc/TestFresnelCoeff.h \
     inc/App.h \
@@ -38,8 +40,8 @@ HEADERS += \
     inc/IsGISAXSTools.h \
     inc/TestConvolution.h
 
-INCLUDEPATH += ./inc
-DEPENDPATH += ./inc
+INCLUDEPATH += ./inc ../Core/Algorithms/inc ../Core/Samples/inc ../Core/Tools/inc
+DEPENDPATH += ./inc ../Core/Algorithms/inc ../Core/Samples/inc ../Core/Tools/inc
 
 OBJECTS_DIR = obj
 
diff --git a/Core/inc/IFunctionalTest.h b/App/inc/IFunctionalTest.h
similarity index 100%
rename from Core/inc/IFunctionalTest.h
rename to App/inc/IFunctionalTest.h
diff --git a/Core/src/IFunctionalTest.cpp b/App/src/IFunctionalTest.cpp
similarity index 100%
rename from Core/src/IFunctionalTest.cpp
rename to App/src/IFunctionalTest.cpp
diff --git a/Core/inc/DWBADiffuseReflection.h b/Core/Algorithms/inc/DWBADiffuseReflection.h
similarity index 100%
rename from Core/inc/DWBADiffuseReflection.h
rename to Core/Algorithms/inc/DWBADiffuseReflection.h
diff --git a/Core/inc/DWBAFormFactor.h b/Core/Algorithms/inc/DWBAFormFactor.h
similarity index 100%
rename from Core/inc/DWBAFormFactor.h
rename to Core/Algorithms/inc/DWBAFormFactor.h
diff --git a/Core/inc/DWBAFormFactorConstZ.h b/Core/Algorithms/inc/DWBAFormFactorConstZ.h
similarity index 100%
rename from Core/inc/DWBAFormFactorConstZ.h
rename to Core/Algorithms/inc/DWBAFormFactorConstZ.h
diff --git a/Core/inc/ISimulation.h b/Core/Algorithms/inc/ISimulation.h
similarity index 100%
rename from Core/inc/ISimulation.h
rename to Core/Algorithms/inc/ISimulation.h
diff --git a/Core/inc/OpticalFresnel.h b/Core/Algorithms/inc/OpticalFresnel.h
similarity index 100%
rename from Core/inc/OpticalFresnel.h
rename to Core/Algorithms/inc/OpticalFresnel.h
diff --git a/Core/src/DWBADiffuseReflection.cpp b/Core/Algorithms/src/DWBADiffuseReflection.cpp
similarity index 100%
rename from Core/src/DWBADiffuseReflection.cpp
rename to Core/Algorithms/src/DWBADiffuseReflection.cpp
diff --git a/Core/src/DWBAFormFactor.cpp b/Core/Algorithms/src/DWBAFormFactor.cpp
similarity index 100%
rename from Core/src/DWBAFormFactor.cpp
rename to Core/Algorithms/src/DWBAFormFactor.cpp
diff --git a/Core/src/DWBAFormFactorConstZ.cpp b/Core/Algorithms/src/DWBAFormFactorConstZ.cpp
similarity index 100%
rename from Core/src/DWBAFormFactorConstZ.cpp
rename to Core/Algorithms/src/DWBAFormFactorConstZ.cpp
diff --git a/Core/src/OpticalFresnel.cpp b/Core/Algorithms/src/OpticalFresnel.cpp
similarity index 100%
rename from Core/src/OpticalFresnel.cpp
rename to Core/Algorithms/src/OpticalFresnel.cpp
diff --git a/Core/Core.pro b/Core/Core.pro
index 479af4b3630821463d5282cdf39593c38b655d49..cf198f30a53ff65b131fedf4427b0e72e1141822 100644
--- a/Core/Core.pro
+++ b/Core/Core.pro
@@ -10,82 +10,83 @@ QT      -= core gui
 QMAKE_EXTENSION_SHLIB = so
 
 SOURCES += \
-    src/NanoParticle.cpp \
-    src/Layer.cpp \
-    src/HomogeneousMaterial.cpp \
-    src/MultiLayer.cpp \
-    src/LayerRoughness.cpp \
-    src/Exceptions.cpp \
-    src/ISample.cpp \
-    src/IAlgorithm.cpp \
-    src/ISimulation.cpp \
-    src/OutputData.cpp \
-    src/OpticalFresnel.cpp \
-    src/IRoughness.cpp \
-    src/LayerInterface.cpp \
-    src/IMaterial.cpp \
-    src/MaterialManager.cpp \
-    src/StochasticGaussian.cpp \
-    src/MathFunctions.cpp \
-    src/FormFactorCylinder.cpp \
-    src/Types.cpp \
-    src/DoubleToComplexInterpolatingFunction.cpp \
-    src/DWBAFormFactor.cpp \
-    src/ISingleton.cpp \
-    src/IFunctionalTest.cpp \
-    src/IFactory.cpp \
-    src/DWBADiffuseReflection.cpp \
-    src/NanoParticleDecorator.cpp \
-    src/InterferenceFunction1DParaCrystal.cpp \
-    src/Convolve.cpp \
-    src/INamed.cpp \
-    src/ICompositeSample.cpp \
-    src/ICompositeIterator.cpp
+    Algorithms/src/DWBADiffuseReflection.cpp \
+    Algorithms/src/DWBAFormFactor.cpp \
+    Algorithms/src/DWBAFormFactorConstZ.cpp \
+    Algorithms/src/OpticalFresnel.cpp \
+    \
+    Samples/src/FormFactorCylinder.cpp \
+    Samples/src/HomogeneousMaterial.cpp \
+    Samples/src/ICompositeIterator.cpp \
+    Samples/src/ICompositeSample.cpp \
+    Samples/src/IMaterial.cpp \
+    Samples/src/InterferenceFunction1DParaCrystal.cpp \
+    Samples/src/IRoughness.cpp \
+    Samples/src/ISample.cpp \
+    Samples/src/Layer.cpp \
+    Samples/src/LayerInterface.cpp \
+    Samples/src/LayerRoughness.cpp \
+    Samples/src/MaterialManager.cpp \
+    Samples/src/MultiLayer.cpp \
+    Samples/src/NanoParticle.cpp \
+    Samples/src/NanoParticleDecorator.cpp \
+    \
+    Tools/src/Convolve.cpp \
+    Tools/src/DoubleToComplexInterpolatingFunction.cpp \
+    Tools/src/Exceptions.cpp \
+    Tools/src/IFactory.cpp \
+    Tools/src/INamed.cpp \
+    Tools/src/ISingleton.cpp \
+    Tools/src/MathFunctions.cpp \
+    Tools/src/OutputData.cpp \
+    Tools/src/StochasticGaussian.cpp \
+    Tools/src/Types.cpp
 
 HEADERS += \
-    inc/ISample.h \
-    inc/NanoParticle.h \
-    inc/Layer.h \
-    inc/IMaterial.h \
-    inc/HomogeneousMaterial.h \
-    inc/MultiLayer.h \
-    inc/LayerRoughness.h \
-    inc/Exceptions.h \
-    inc/IAlgorithm.h \
-    inc/Types.h \
-    inc/ISimulation.h \
-    inc/OutputData.h \
-    inc/NamedVector.h \
-    inc/OpticalFresnel.h \
-    inc/IRoughness.h \
-    inc/LayerInterface.h \
-    inc/MaterialManager.h \
-    inc/IStochasticParameter.h \
-    inc/StochasticGaussian.h \
-    inc/MathFunctions.h \
-    inc/IFormFactor.h \
-    inc/FormFactorCylinder.h \
-    inc/StochasticDiracDelta.h \
-    inc/IDoubleToComplexFunction.h \
-    inc/DoubleToComplexInterpolatingFunction.h \
-    inc/DWBAFormFactor.h \
-    inc/Units.h \
-    inc/ISingleton.h \
-    inc/IFunctionalTest.h \
-    inc/IFactory.h \
-    inc/Numeric.h \
-    inc/DWBADiffuseReflection.h \
-    inc/NanoParticleDecorator.h \
-    inc/IDispersalState.h \
-    inc/IInterferenceFunction.h \
-    inc/InterferenceFunction1DParaCrystal.h \
-    inc/Convolve.h \
-    inc/INamed.h \
-    inc/ICompositeSample.h \
-    inc/ICompositeIterator.h
+    Algorithms/inc/DWBADiffuseReflection.h \
+    Algorithms/inc/DWBAFormFactor.h \
+    Algorithms/inc/DWBAFormFactorConstZ.h \
+    Algorithms/inc/ISimulation.h \
+    Algorithms/inc/OpticalFresnel.h \
+    \
+    Samples/inc/FormFactorCylinder.h \
+    Samples/inc/HomogeneousMaterial.h \
+    Samples/inc/ICompositeIterator.h \
+    Samples/inc/ICompositeSample.h \
+    Samples/inc/IDispersalState.h \
+    Samples/inc/IFormFactor.h \
+    Samples/inc/IInterferenceFunction.h \
+    Samples/inc/IMaterial.h \
+    Samples/inc/InterferenceFunction1DParaCrystal.h \
+    Samples/inc/IRoughness.h \
+    Samples/inc/ISample.h \
+    Samples/inc/Layer.h \
+    Samples/inc/LayerInterface.h \
+    Samples/inc/LayerRoughness.h \
+    Samples/inc/MaterialManager.h \
+    Samples/inc/MultiLayer.h \
+    Samples/inc/NanoParticle.h \
+    Samples/inc/NanoParticleDecorator.h \
+    \
+    Tools/inc/Convolve.h \
+    Tools/inc/DoubleToComplexInterpolatingFunction.h \
+    Tools/inc/Exceptions.h \
+    Tools/inc/IDoubleToComplexFunction.h \
+    Tools/inc/IFactory.h \
+    Tools/inc/INamed.h \
+    Tools/inc/ISingleton.h \
+    Tools/inc/IStochasticParameter.h \
+    Tools/inc/MathFunctions.h \
+    Tools/inc/NamedVector.h \
+    Tools/inc/Numeric.h \
+    Tools/inc/OutputData.h \
+    Tools/inc/StochasticDiracDelta.h \
+    Tools/inc/StochasticGaussian.h \
+    Tools/inc/Types.h \
+    Tools/inc/Units.h
 
-INCLUDEPATH += ./inc
-DEPENDPATH += ./inc
+INCLUDEPATH += ./Algorithms/inc ./Samples/inc ./Tools/inc
+DEPENDPATH += ./Algorithms/inc ./Samples/inc ./Tools/inc
 
 OBJECTS_DIR = obj
 
@@ -110,9 +111,9 @@ INSTALLS += target
 # only when it appears at the beginning of QMAKE_DISTCLEAN variable
 # i.e. the order below is important
 #QMAKE_DISTCLEAN += -r $$includes.path
-QMAKE_DISTCLEAN += $$MYPREFIX/inc/ScattCore
+#QMAKE_DISTCLEAN += $$MYPREFIX/inc/ScattCore
 QMAKE_DISTCLEAN += $$target.path/$(TARGET)
 
 
-QMAKE_POST_LINK = (make install; mkdir -p $$MYPREFIX/inc; ln -sf $$PWD/inc $$MYPREFIX/inc/ScattCore)
+QMAKE_POST_LINK = (make install)
 
diff --git a/Core/inc/FormFactorCylinder.h b/Core/Samples/inc/FormFactorCylinder.h
similarity index 100%
rename from Core/inc/FormFactorCylinder.h
rename to Core/Samples/inc/FormFactorCylinder.h
diff --git a/Core/inc/HomogeneousMaterial.h b/Core/Samples/inc/HomogeneousMaterial.h
similarity index 100%
rename from Core/inc/HomogeneousMaterial.h
rename to Core/Samples/inc/HomogeneousMaterial.h
diff --git a/Core/inc/ICompositeIterator.h b/Core/Samples/inc/ICompositeIterator.h
similarity index 100%
rename from Core/inc/ICompositeIterator.h
rename to Core/Samples/inc/ICompositeIterator.h
diff --git a/Core/inc/ICompositeSample.h b/Core/Samples/inc/ICompositeSample.h
similarity index 100%
rename from Core/inc/ICompositeSample.h
rename to Core/Samples/inc/ICompositeSample.h
diff --git a/Core/inc/IDispersalState.h b/Core/Samples/inc/IDispersalState.h
similarity index 100%
rename from Core/inc/IDispersalState.h
rename to Core/Samples/inc/IDispersalState.h
diff --git a/Core/inc/IFormFactor.h b/Core/Samples/inc/IFormFactor.h
similarity index 100%
rename from Core/inc/IFormFactor.h
rename to Core/Samples/inc/IFormFactor.h
diff --git a/Core/inc/IInterferenceFunction.h b/Core/Samples/inc/IInterferenceFunction.h
similarity index 100%
rename from Core/inc/IInterferenceFunction.h
rename to Core/Samples/inc/IInterferenceFunction.h
diff --git a/Core/inc/IMaterial.h b/Core/Samples/inc/IMaterial.h
similarity index 100%
rename from Core/inc/IMaterial.h
rename to Core/Samples/inc/IMaterial.h
diff --git a/Core/inc/IRoughness.h b/Core/Samples/inc/IRoughness.h
similarity index 100%
rename from Core/inc/IRoughness.h
rename to Core/Samples/inc/IRoughness.h
diff --git a/Core/inc/ISample.h b/Core/Samples/inc/ISample.h
similarity index 100%
rename from Core/inc/ISample.h
rename to Core/Samples/inc/ISample.h
diff --git a/Core/inc/InterferenceFunction1DParaCrystal.h b/Core/Samples/inc/InterferenceFunction1DParaCrystal.h
similarity index 100%
rename from Core/inc/InterferenceFunction1DParaCrystal.h
rename to Core/Samples/inc/InterferenceFunction1DParaCrystal.h
diff --git a/Core/inc/Layer.h b/Core/Samples/inc/Layer.h
similarity index 100%
rename from Core/inc/Layer.h
rename to Core/Samples/inc/Layer.h
diff --git a/Core/inc/LayerInterface.h b/Core/Samples/inc/LayerInterface.h
similarity index 100%
rename from Core/inc/LayerInterface.h
rename to Core/Samples/inc/LayerInterface.h
diff --git a/Core/inc/LayerRoughness.h b/Core/Samples/inc/LayerRoughness.h
similarity index 100%
rename from Core/inc/LayerRoughness.h
rename to Core/Samples/inc/LayerRoughness.h
diff --git a/Core/inc/MaterialManager.h b/Core/Samples/inc/MaterialManager.h
similarity index 93%
rename from Core/inc/MaterialManager.h
rename to Core/Samples/inc/MaterialManager.h
index 72f3c789b1eb11a1f8e585ce92f3097cfcc6090f..2a8aeefdf581e12f14d829f4a2dd70a2451c9244 100644
--- a/Core/inc/MaterialManager.h
+++ b/Core/Samples/inc/MaterialManager.h
@@ -27,8 +27,8 @@
 //! @class MaterialManager
 //! @brief Manager of materials used in simulatiom.
 //!
-//! It is a singleton which provide common and unique interface for
-//! material creation and access. No thread safeness.
+//! It is a singleton which provides common and unique interface for
+//! material creation and access. No thread safety.
 //- -------------------------------------------------------------------
 class MaterialManager: public ISingleton<MaterialManager>
 {
diff --git a/Core/inc/MultiLayer.h b/Core/Samples/inc/MultiLayer.h
similarity index 100%
rename from Core/inc/MultiLayer.h
rename to Core/Samples/inc/MultiLayer.h
diff --git a/Core/inc/NanoParticle.h b/Core/Samples/inc/NanoParticle.h
similarity index 100%
rename from Core/inc/NanoParticle.h
rename to Core/Samples/inc/NanoParticle.h
diff --git a/Core/inc/NanoParticleDecorator.h b/Core/Samples/inc/NanoParticleDecorator.h
similarity index 100%
rename from Core/inc/NanoParticleDecorator.h
rename to Core/Samples/inc/NanoParticleDecorator.h
diff --git a/Core/src/FormFactorCylinder.cpp b/Core/Samples/src/FormFactorCylinder.cpp
similarity index 100%
rename from Core/src/FormFactorCylinder.cpp
rename to Core/Samples/src/FormFactorCylinder.cpp
diff --git a/Core/src/HomogeneousMaterial.cpp b/Core/Samples/src/HomogeneousMaterial.cpp
similarity index 100%
rename from Core/src/HomogeneousMaterial.cpp
rename to Core/Samples/src/HomogeneousMaterial.cpp
diff --git a/Core/src/ICompositeIterator.cpp b/Core/Samples/src/ICompositeIterator.cpp
similarity index 100%
rename from Core/src/ICompositeIterator.cpp
rename to Core/Samples/src/ICompositeIterator.cpp
diff --git a/Core/src/ICompositeSample.cpp b/Core/Samples/src/ICompositeSample.cpp
similarity index 100%
rename from Core/src/ICompositeSample.cpp
rename to Core/Samples/src/ICompositeSample.cpp
diff --git a/Core/src/IMaterial.cpp b/Core/Samples/src/IMaterial.cpp
similarity index 100%
rename from Core/src/IMaterial.cpp
rename to Core/Samples/src/IMaterial.cpp
diff --git a/Core/src/IRoughness.cpp b/Core/Samples/src/IRoughness.cpp
similarity index 100%
rename from Core/src/IRoughness.cpp
rename to Core/Samples/src/IRoughness.cpp
diff --git a/Core/src/ISample.cpp b/Core/Samples/src/ISample.cpp
similarity index 100%
rename from Core/src/ISample.cpp
rename to Core/Samples/src/ISample.cpp
diff --git a/Core/src/InterferenceFunction1DParaCrystal.cpp b/Core/Samples/src/InterferenceFunction1DParaCrystal.cpp
similarity index 100%
rename from Core/src/InterferenceFunction1DParaCrystal.cpp
rename to Core/Samples/src/InterferenceFunction1DParaCrystal.cpp
diff --git a/Core/src/Layer.cpp b/Core/Samples/src/Layer.cpp
similarity index 100%
rename from Core/src/Layer.cpp
rename to Core/Samples/src/Layer.cpp
diff --git a/Core/src/LayerInterface.cpp b/Core/Samples/src/LayerInterface.cpp
similarity index 100%
rename from Core/src/LayerInterface.cpp
rename to Core/Samples/src/LayerInterface.cpp
diff --git a/Core/src/LayerRoughness.cpp b/Core/Samples/src/LayerRoughness.cpp
similarity index 100%
rename from Core/src/LayerRoughness.cpp
rename to Core/Samples/src/LayerRoughness.cpp
diff --git a/Core/src/MaterialManager.cpp b/Core/Samples/src/MaterialManager.cpp
similarity index 100%
rename from Core/src/MaterialManager.cpp
rename to Core/Samples/src/MaterialManager.cpp
diff --git a/Core/src/MultiLayer.cpp b/Core/Samples/src/MultiLayer.cpp
similarity index 100%
rename from Core/src/MultiLayer.cpp
rename to Core/Samples/src/MultiLayer.cpp
diff --git a/Core/src/NanoParticle.cpp b/Core/Samples/src/NanoParticle.cpp
similarity index 100%
rename from Core/src/NanoParticle.cpp
rename to Core/Samples/src/NanoParticle.cpp
diff --git a/Core/src/NanoParticleDecorator.cpp b/Core/Samples/src/NanoParticleDecorator.cpp
similarity index 100%
rename from Core/src/NanoParticleDecorator.cpp
rename to Core/Samples/src/NanoParticleDecorator.cpp
diff --git a/Core/inc/Convolve.h b/Core/Tools/inc/Convolve.h
similarity index 100%
rename from Core/inc/Convolve.h
rename to Core/Tools/inc/Convolve.h
diff --git a/Core/inc/DoubleToComplexInterpolatingFunction.h b/Core/Tools/inc/DoubleToComplexInterpolatingFunction.h
similarity index 100%
rename from Core/inc/DoubleToComplexInterpolatingFunction.h
rename to Core/Tools/inc/DoubleToComplexInterpolatingFunction.h
diff --git a/Core/inc/Exceptions.h b/Core/Tools/inc/Exceptions.h
similarity index 100%
rename from Core/inc/Exceptions.h
rename to Core/Tools/inc/Exceptions.h
diff --git a/Core/inc/IDoubleToComplexFunction.h b/Core/Tools/inc/IDoubleToComplexFunction.h
similarity index 100%
rename from Core/inc/IDoubleToComplexFunction.h
rename to Core/Tools/inc/IDoubleToComplexFunction.h
diff --git a/Core/inc/IFactory.h b/Core/Tools/inc/IFactory.h
similarity index 100%
rename from Core/inc/IFactory.h
rename to Core/Tools/inc/IFactory.h
diff --git a/Core/inc/INamed.h b/Core/Tools/inc/INamed.h
similarity index 100%
rename from Core/inc/INamed.h
rename to Core/Tools/inc/INamed.h
diff --git a/Core/inc/ISingleton.h b/Core/Tools/inc/ISingleton.h
similarity index 100%
rename from Core/inc/ISingleton.h
rename to Core/Tools/inc/ISingleton.h
diff --git a/Core/inc/IStochasticParameter.h b/Core/Tools/inc/IStochasticParameter.h
similarity index 100%
rename from Core/inc/IStochasticParameter.h
rename to Core/Tools/inc/IStochasticParameter.h
diff --git a/Core/inc/MathFunctions.h b/Core/Tools/inc/MathFunctions.h
similarity index 100%
rename from Core/inc/MathFunctions.h
rename to Core/Tools/inc/MathFunctions.h
diff --git a/Core/inc/NamedVector.h b/Core/Tools/inc/NamedVector.h
similarity index 100%
rename from Core/inc/NamedVector.h
rename to Core/Tools/inc/NamedVector.h
diff --git a/Core/inc/Numeric.h b/Core/Tools/inc/Numeric.h
similarity index 100%
rename from Core/inc/Numeric.h
rename to Core/Tools/inc/Numeric.h
diff --git a/Core/inc/OutputData.h b/Core/Tools/inc/OutputData.h
similarity index 100%
rename from Core/inc/OutputData.h
rename to Core/Tools/inc/OutputData.h
diff --git a/Core/inc/StochasticDiracDelta.h b/Core/Tools/inc/StochasticDiracDelta.h
similarity index 100%
rename from Core/inc/StochasticDiracDelta.h
rename to Core/Tools/inc/StochasticDiracDelta.h
diff --git a/Core/inc/StochasticGaussian.h b/Core/Tools/inc/StochasticGaussian.h
similarity index 100%
rename from Core/inc/StochasticGaussian.h
rename to Core/Tools/inc/StochasticGaussian.h
diff --git a/Core/inc/Types.h b/Core/Tools/inc/Types.h
similarity index 100%
rename from Core/inc/Types.h
rename to Core/Tools/inc/Types.h
diff --git a/Core/inc/Units.h b/Core/Tools/inc/Units.h
similarity index 100%
rename from Core/inc/Units.h
rename to Core/Tools/inc/Units.h
diff --git a/Core/src/Convolve.cpp b/Core/Tools/src/Convolve.cpp
similarity index 100%
rename from Core/src/Convolve.cpp
rename to Core/Tools/src/Convolve.cpp
diff --git a/Core/src/DoubleToComplexInterpolatingFunction.cpp b/Core/Tools/src/DoubleToComplexInterpolatingFunction.cpp
similarity index 100%
rename from Core/src/DoubleToComplexInterpolatingFunction.cpp
rename to Core/Tools/src/DoubleToComplexInterpolatingFunction.cpp
diff --git a/Core/src/Exceptions.cpp b/Core/Tools/src/Exceptions.cpp
similarity index 100%
rename from Core/src/Exceptions.cpp
rename to Core/Tools/src/Exceptions.cpp
diff --git a/Core/src/IFactory.cpp b/Core/Tools/src/IFactory.cpp
similarity index 100%
rename from Core/src/IFactory.cpp
rename to Core/Tools/src/IFactory.cpp
diff --git a/Core/src/INamed.cpp b/Core/Tools/src/INamed.cpp
similarity index 100%
rename from Core/src/INamed.cpp
rename to Core/Tools/src/INamed.cpp
diff --git a/Core/src/ISingleton.cpp b/Core/Tools/src/ISingleton.cpp
similarity index 100%
rename from Core/src/ISingleton.cpp
rename to Core/Tools/src/ISingleton.cpp
diff --git a/Core/src/MathFunctions.cpp b/Core/Tools/src/MathFunctions.cpp
similarity index 100%
rename from Core/src/MathFunctions.cpp
rename to Core/Tools/src/MathFunctions.cpp
diff --git a/Core/src/OutputData.cpp b/Core/Tools/src/OutputData.cpp
similarity index 100%
rename from Core/src/OutputData.cpp
rename to Core/Tools/src/OutputData.cpp
diff --git a/Core/src/StochasticGaussian.cpp b/Core/Tools/src/StochasticGaussian.cpp
similarity index 100%
rename from Core/src/StochasticGaussian.cpp
rename to Core/Tools/src/StochasticGaussian.cpp
diff --git a/Core/src/Types.cpp b/Core/Tools/src/Types.cpp
similarity index 100%
rename from Core/src/Types.cpp
rename to Core/Tools/src/Types.cpp
diff --git a/Core/inc/IAlgorithm.h b/Core/inc/IAlgorithm.h
deleted file mode 100644
index d768e2b308d4572f5357cff08c742942a1857888..0000000000000000000000000000000000000000
--- a/Core/inc/IAlgorithm.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef IALGORITHM_H
-#define IALGORITHM_H
-// ********************************************************************
-// * The BornAgain project                                            *
-// * Simulation of neutron and x-ray scattering at grazing incidence  *
-// *                                                                  *
-// * LICENSE AND DISCLAIMER                                           *
-// * Lorem ipsum dolor sit amet, consectetur adipiscing elit.  Mauris *
-// * eget quam orci. Quisque  porta  varius  dui,  quis  posuere nibh *
-// * mollis quis. Mauris commodo rhoncus porttitor.                   *
-// ********************************************************************
-//! @file   IAlgorithm.h
-//! @brief  Definition of IAlgorithm
-//! @author Scientific Computing Group at FRM II
-//! @date   01.04.2012
-
-
-class IAlgorithm
-{
-public:
-  virtual ~IAlgorithm() {}
-
-  virtual void execute();
-};
-
-#endif // IALGORITHM_H
-
diff --git a/Core/inc/InterferenceFunction2DParaCrystal.h b/Core/inc/InterferenceFunction2DParaCrystal.h
deleted file mode 100644
index 667d196c45da074db2cb5ee1ec4dc9ddaaf08338..0000000000000000000000000000000000000000
--- a/Core/inc/InterferenceFunction2DParaCrystal.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef INTERFERENCEFUNCTION2DPARACRYSTAL_H_
-#define INTERFERENCEFUNCTION2DPARACRYSTAL_H_
-// ********************************************************************
-// * The BornAgain project                                            *
-// * Simulation of neutron and x-ray scattering at grazing incidence  *
-// *                                                                  *
-// * LICENSE AND DISCLAIMER                                           *
-// * Lorem ipsum dolor sit amet, consectetur adipiscing elit.  Mauris *
-// * eget quam orci. Quisque  porta  varius  dui,  quis  posuere nibh *
-// * mollis quis. Mauris commodo rhoncus porttitor.                   *
-// ********************************************************************
-//! @file   InterferenceFunction2DParaCrystal.h
-//! @brief  Definition of InterferenceFunction2DParaCrystal class
-//! @author herck
-//! @date   18.06.2012
-
-#include "IInterferenceFunction.h"
-
-class InterferenceFunction2DParaCrystal : public IInterferenceFunction
-{
-
-};
-
-
-
-#endif /* INTERFERENCEFUNCTION2DPARACRYSTAL_H_ */
diff --git a/Core/src/IAlgorithm.cpp b/Core/src/IAlgorithm.cpp
deleted file mode 100644
index 693e98df03388d08c927e536f36ca512919b22b2..0000000000000000000000000000000000000000
--- a/Core/src/IAlgorithm.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "IAlgorithm.h"
-#include "Exceptions.h"
-
-
-void IAlgorithm::execute()
-{
-    throw NotImplementedException("This algorithm can't tun.");
-}
diff --git a/Core/src/ISimulation.cpp b/Core/src/ISimulation.cpp
deleted file mode 100644
index 7c4fdb641ff36d5918439de8c24f6d14640eb466..0000000000000000000000000000000000000000
--- a/Core/src/ISimulation.cpp
+++ /dev/null
@@ -1 +0,0 @@
-#include "ISimulation.h"
diff --git a/IsGISAXS_examples/ex-10/reflectivity.inp b/IsGISAXS_examples/ex-10/reflectivity.inp
new file mode 100755
index 0000000000000000000000000000000000000000..d89b2ff8381e453e24ec972ca375c0e6efa6af5f
--- /dev/null
+++ b/IsGISAXS_examples/ex-10/reflectivity.inp
@@ -0,0 +1,74 @@
+##########################################
+#   GISAXS SIMULATIONS : INPUT PARAMETERS   
+###########################################
+
+# Base filename
+reflectivity
+############################  Framework and beam  parameters ############################################
+# Framework   Diffuse,  Multilayer, Number of index slices, Polarization 
+   DWBA         LMA         0             25               ss 
+# Beam Wavelenght  :  Lambda(nm),  Wl_distribution,  Sigma_Wl/Wl,  Wl_min(nm), Wl_max(nm), nWl,  xWl
+                      0.1            none               0.3           0.08         0.12     20    3
+# Beam Alpha_i     :  Alpha_i(deg), Ai_distribution, Sigma_Ai(deg), Ai_min(deg), Ai_max(deg), nAi, xAi
+                       0.2            none           0.1         0.15              0.25    30   2
+# Beam 2Theta_i     :  2Theta_i(deg), Ti_distribution, Sigma_Ti(deg), Ti_min(deg), Ti_max(deg), nTi, XTi
+                         0              none             0.5            -0.5            0.5      10   2
+# Substrate :  n-delta_S,   n-beta_S,   Layer thickness(nm), n-delta_L,   n-beta_L,  RMS roughness(nm) 
+	         5.E-06        2.e-8         0.                6.E-05          2.e-8          0.
+# Particle : n-delta_I,     n-beta_I,     Depth(nm),  n-delta_SH,   n-beta_SH        
+            5.E-05          2.e-8         0         8.E-04          2.e-8
+################################# Grid parameters ######################################################
+# Ewald mode
+  T
+# Output angle (deg) :   Two theta min-max, Alphaf min-max,  n(1),   n(2)				
+                             -2     0       0.001    3           1       400
+# Output q(nm-1) :  Qx min-max, Qy min-max, Qz min-max,  n(1), n(2), n(3)
+                     -1  1      -1   1      -2   0         200   200    1
+##################################   Particle parameters #################################################
+# Number of different particle types
+1
+# Particle type,     Probability
+cylinder                1
+# Geometrical parameters : Base angle (deg),  Height ratio, Flattening,  FS-radii/R
+	                       54.73           1.		          1.          0.8    0.8
+# Shell thicknesses (nm) : dR,   dH,  dW
+                           0    0     0
+# H_uncoupled, W_uncoupled
+       T         T
+# Size of particle	: Radius(nm), R_distribution, SigmaR/R,	Rmin(nm), Rmax(nm), nR, xR
+                          0.00000001          none            0.25       0.1        11      150   6
+# Height aspect ratio	: Height/R,   H_distribution, SigmaH/H,    Hmin/R,  Hmax/R,   nH, xH,   rho_H
+                           1           none            0.1          0.1        11      25   2    0
+# Width aspect ratio	: Width/R,   W_distribution, SigmaW/W,    Wmin/R,    Wmax/R,   nW, xW,   rho_W
+                            2          none              0.4        1         300      15   2     0
+# Orientation of particle : Zeta(deg), Z_distribution, SigmaZ(deg), Zmin(deg), Zmax(deg),	nZ, xZ
+                             0          none       20.            0             120     30   2
+##################################### Lattice parameters #################################################
+# Lattice type
+          1DDL 
+#  Interference function :    Peak position D(nm),   w(nm), Statistics,  Eta_Voigt, Size-Distance coupling, Cut-off
+                               20                     7      gau	      0.5            0            10000000
+# Pair correlation function :   Density(nm-2), D1(nm),  Hard core coverage, CxR
+                                   0.007         25          0.3             1.  
+# Lattice parameters : L(1)(nm), L(2)(nm), Angle(deg,  Xi_fixed 
+                        10       10          90.           F
+                       Xi(deg), Xi_distribution, SigmaXi(deg), Ximin(deg),  Ximax(deg), nXi, xXi
+                        0           gate          20           0.            240.       3      -2
+                       Domain sizes DL(nm), DL_distribution, SigmaDL/DL, DLmin(nm), DLmax(nm), nDL, XDL
+                         20000   20000        none         0.2  0.2   200  200   10000  10000   10 10 -2 -2
+# Imperfect lattice :  Rod description,  Rod shape,  
+                        rec_ellip         cau cau
+                       Correlation lenghts(nm),  Rod orientation(deg)
+                         3000        1000            0   90                
+# Paracrystal :    Probability description
+                        ellip
+                   Disorder factors w(nm), DL-statistical distribution and rod orientation (deg)
+                       0.5  0.5   0.5  0.5
+                       cau   cau   cau   cau
+                        0   90     0    90
+# Pattern  :     Regular pattern content,   Number of particles per pattern
+	                      F                          2	
+                 Positions xp/L, Debye-Waller factors B11/L1 B22/L1 B12/L1 
+                   0.    0.     0.     0.   0.
+                   0.5  0.5     0.     0.   0.
+          
diff --git a/IsGISAXS_examples/ex-10/reflectivity2.inp b/IsGISAXS_examples/ex-10/reflectivity2.inp
new file mode 100644
index 0000000000000000000000000000000000000000..f50ac9efdfd231cfdc639664dbae128a115d5244
--- /dev/null
+++ b/IsGISAXS_examples/ex-10/reflectivity2.inp
@@ -0,0 +1,74 @@
+##########################################
+#   GISAXS SIMULATIONS : INPUT PARAMETERS   
+###########################################
+
+# Base filename
+reflectivity
+############################  Framework and beam  parameters ############################################
+# Framework   Diffuse,  Multilayer, Number of index slices, Polarization 
+   DWBA         LMA         0             25               ss 
+# Beam Wavelenght  :  Lambda(nm),  Wl_distribution,  Sigma_Wl/Wl,  Wl_min(nm), Wl_max(nm), nWl,  xWl
+                      0.1            none               0.3           0.08         0.12     20    3
+# Beam Alpha_i     :  Alpha_i(deg), Ai_distribution, Sigma_Ai(deg), Ai_min(deg), Ai_max(deg), nAi, xAi
+                       0.2            none           0.1         0.15              0.25    30   2
+# Beam 2Theta_i     :  2Theta_i(deg), Ti_distribution, Sigma_Ti(deg), Ti_min(deg), Ti_max(deg), nTi, XTi
+                         0              none             0.5            -0.5            0.5      10   2
+# Substrate :  n-delta_S,   n-beta_S,   Layer thickness(nm), n-delta_L,   n-beta_L,  RMS roughness(nm) 
+	         5.E-06        2.e-8         0.                6.E-05          2.e-8          0.
+# Particle : n-delta_I,     n-beta_I,     Depth(nm),  n-delta_SH,   n-beta_SH        
+            5.E-05          2.e-8         0         8.E-04          2.e-8
+################################# Grid parameters ######################################################
+# Ewald mode
+  T
+# Output angle (deg) :   Two theta min-max, Alphaf min-max,  n(1),   n(2)				
+                             0.      2      0    2           100      100
+# Output q(nm-1) :  Qx min-max, Qy min-max, Qz min-max,  n(1), n(2), n(3)
+                     -1  1      -1   1      -2   0         200   200    1
+##################################   Particle parameters #################################################
+# Number of different particle types
+1
+# Particle type,     Probability
+cylinder                1
+# Geometrical parameters : Base angle (deg),  Height ratio, Flattening,  FS-radii/R
+	                       54.73           1.		          1.          0.8    0.8
+# Shell thicknesses (nm) : dR,   dH,  dW
+                           0    0     0
+# H_uncoupled, W_uncoupled
+       T         T
+# Size of particle	: Radius(nm), R_distribution, SigmaR/R,	Rmin(nm), Rmax(nm), nR, xR
+                          5          none            0.25       0.1        11      150   6
+# Height aspect ratio	: Height/R,   H_distribution, SigmaH/H,    Hmin/R,  Hmax/R,   nH, xH,   rho_H
+                           1           none            0.1          0.1        11      25   2    0
+# Width aspect ratio	: Width/R,   W_distribution, SigmaW/W,    Wmin/R,    Wmax/R,   nW, xW,   rho_W
+                            2          none              0.4        1         300      15   2     0
+# Orientation of particle : Zeta(deg), Z_distribution, SigmaZ(deg), Zmin(deg), Zmax(deg),	nZ, xZ
+                             0          none       20.            0             120     30   2
+##################################### Lattice parameters #################################################
+# Lattice type
+          1DDL 
+#  Interference function :    Peak position D(nm),   w(nm), Statistics,  Eta_Voigt, Size-Distance coupling, Cut-off
+                               20                     7      gau	      0.5            0            10000000
+# Pair correlation function :   Density(nm-2), D1(nm),  Hard core coverage, CxR
+                                   0.007         25          0.3             1.  
+# Lattice parameters : L(1)(nm), L(2)(nm), Angle(deg,  Xi_fixed 
+                        10       10          90.           F
+                       Xi(deg), Xi_distribution, SigmaXi(deg), Ximin(deg),  Ximax(deg), nXi, xXi
+                        0           gate          20           0.            240.       3      -2
+                       Domain sizes DL(nm), DL_distribution, SigmaDL/DL, DLmin(nm), DLmax(nm), nDL, XDL
+                         20000   20000        none         0.2  0.2   200  200   10000  10000   10 10 -2 -2
+# Imperfect lattice :  Rod description,  Rod shape,  
+                        rec_ellip         cau cau
+                       Correlation lenghts(nm),  Rod orientation(deg)
+                         3000        1000            0   90                
+# Paracrystal :    Probability description
+                        ellip
+                   Disorder factors w(nm), DL-statistical distribution and rod orientation (deg)
+                       0.5  0.5   0.5  0.5
+                       cau   cau   cau   cau
+                        0   90     0    90
+# Pattern  :     Regular pattern content,   Number of particles per pattern
+	                      F                          2	
+                 Positions xp/L, Debye-Waller factors B11/L1 B22/L1 B12/L1 
+                   0.    0.     0.     0.   0.
+                   0.5  0.5     0.     0.   0.
+          
diff --git a/ThirdParty/gtest/gtest.pro b/ThirdParty/gtest/gtest.pro
index 39ed062bca175be5e5fcb79146afac6e3fb2e8e4..e5d0f2832824145c8767fe1359cfd80a49552d29 100644
--- a/ThirdParty/gtest/gtest.pro
+++ b/ThirdParty/gtest/gtest.pro
@@ -24,7 +24,7 @@ OBJECTS_DIR = obj
 ###############################################################################
 # Installing library into dedicated directory at the end of compilation
 ###############################################################################
-MYPREFIX = $$PWD/../.. # place to install library and headers
+MYPREFIX = $$PWD/../.. # place to install library
 target.path = $$MYPREFIX/lib
 INSTALLS += target
 ##includes.files = $$mygtest/include/gtest/*.h
@@ -37,7 +37,6 @@ INSTALLS += target
 # i.e. the order below is important
 #QMAKE_DISTCLEAN += -r $$includes.path/gtest
 QMAKE_DISTCLEAN += $$target.path/$(TARGET)
-QMAKE_DISTCLEAN += $$MYPREFIX/inc/gtest
 
-QMAKE_POST_LINK = (make install; ln -sf $$PWD/$$mygtest/include/gtest $$MYPREFIX/inc/gtest)
+QMAKE_POST_LINK = (make install)
 
diff --git a/UnitTests/TestCore/TestCore.pro b/UnitTests/TestCore/TestCore.pro
index fd36de9c3d151db5573e9965ad4aa6bf93535d9d..c507ace530a8432640112cfe0102553a09571f5c 100644
--- a/UnitTests/TestCore/TestCore.pro
+++ b/UnitTests/TestCore/TestCore.pro
@@ -14,6 +14,9 @@ HEADERS += \
 
 OBJECTS_DIR = obj
 
+INCLUDEPATH += ../../Core/Algorithms/inc ../../Core/Samples/inc ../../Core/Tools/inc ../../ThirdParty/gtest/include
+DEPENDPATH += ../../Core/Algorithms/inc ../../Core/Samples/inc ../../Core/Tools/inc ../../ThirdParty/gtest/include
+
 
 ###############################################################################
 # generating package dependency flags
@@ -21,11 +24,11 @@ OBJECTS_DIR = obj
 MY_DEPENDENCY_LIB = gtest ScattCore
 MY_DEPENDENCY_DEST =$$PWD/../..
 SONAME = so
-INCLUDEPATH += $${MY_DEPENDENCY_DEST}/inc
+# INCLUDEPATH += $${MY_DEPENDENCY_DEST}/inc
 for(dep, MY_DEPENDENCY_LIB) {
     LIBS += $${MY_DEPENDENCY_DEST}/lib/lib$${dep}.$${SONAME}
     PRE_TARGETDEPS += $${MY_DEPENDENCY_DEST}/lib/lib$${dep}.$${SONAME}
-    INCLUDEPATH += $${MY_DEPENDENCY_DEST}/inc/$${dep}
+#    INCLUDEPATH += $${MY_DEPENDENCY_DEST}/inc/$${dep}
 }