diff --git a/Core/Algorithms/inc/Experiment.h b/Core/Algorithms/inc/Experiment.h
index 6e99ffddfdeeac2c5483a310be137a8a16af0cf9..99e62d6c94177a2ff93c3097f2852209a337c3ed 100644
--- a/Core/Algorithms/inc/Experiment.h
+++ b/Core/Algorithms/inc/Experiment.h
@@ -55,31 +55,16 @@ public:
 
     const OutputData<double>* getOutputData() const;
 
-    Beam getBeam() const
-    {
-        return m_instrument.getBeam();
-    }
-
-    void setBeam(Beam beam)
-    {
-        m_instrument.setBeam(beam);
-    }
-
-    Detector getDetector() const
-    {
-        return m_instrument.getDetector();
-    }
+    //! get the instrument containing beam and detector information
+    Instrument &getInstrument() { return m_instrument; }
+    const Instrument &getInstrument() const { return m_instrument; }
 
+    //! set beam parameters from here (forwarded to Instrument)
     void setBeamParameters(double lambda, double alpha_i, double phi_i);
 
+    //! set beam intensity from here (forwarded to Instrument)
     void setBeamIntensity(double intensity);
 
-    //! add parameters from local pool to external pool and call recursion over direct children
-    virtual std::string addParametersToExternalPool(std::string path, ParameterPool *external_pool, int copy_number=-1) const;
-
-    //! set the program options
-    void setProgramOptions(ProgramOptions *p_options) { mp_options = p_options; }
-
     //! set detector parameters using axes of output data
     void setDetectorParameters(const OutputData<double > &output_data);
 
@@ -91,6 +76,12 @@ public:
         m_sim_params = sim_params;
     }
 
+    //! set the program options
+    void setProgramOptions(ProgramOptions *p_options) { mp_options = p_options; }
+
+    //! add parameters from local pool to external pool and call recursion over direct children
+    virtual std::string addParametersToExternalPool(std::string path, ParameterPool *external_pool, int copy_number=-1) const;
+
 protected:
     Experiment(const Experiment &other);
 
diff --git a/Core/Algorithms/src/DWBASimulation.cpp b/Core/Algorithms/src/DWBASimulation.cpp
index 69d8b502ecdfa04de8bef947b78578b75c393469..41de1807d25b0db7260754d82c60e16132763285 100644
--- a/Core/Algorithms/src/DWBASimulation.cpp
+++ b/Core/Algorithms/src/DWBASimulation.cpp
@@ -19,7 +19,7 @@ void DWBASimulation::init(const Experiment& experiment)
         mp_experiment = experiment.clone();
     }
     m_dwba_intensity.clear();
-    Detector detector = experiment.getDetector();
+    Detector detector = experiment.getInstrument().getDetector();
     size_t detector_dimension = detector.getDimension();
     for (size_t dim=0; dim<detector_dimension; ++dim) {
         m_dwba_intensity.addAxis(detector.getAxis(dim));
@@ -27,7 +27,7 @@ void DWBASimulation::init(const Experiment& experiment)
     if (experiment.getOutputData()->getMask()) {
         m_dwba_intensity.setMask(*experiment.getOutputData()->getMask());
     }
-    Beam beam = experiment.getBeam();
+    Beam beam = experiment.getInstrument().getBeam();
     m_ki = beam.getCentralK();
     kvector_t ki_real(m_ki.x().real(), m_ki.y().real(), m_ki.z().real());
     m_alpha_i = std::asin(ki_real.z()/ki_real.mag());
diff --git a/Core/Algorithms/src/StrategyBuilder.cpp b/Core/Algorithms/src/StrategyBuilder.cpp
index abf0252c9d0017c4569f8618812261f8877d4509..f70c18e217494b7e0d376a455f0fae3df2ed8a14 100644
--- a/Core/Algorithms/src/StrategyBuilder.cpp
+++ b/Core/Algorithms/src/StrategyBuilder.cpp
@@ -107,7 +107,7 @@ void LayerDecoratorStrategyBuilder::collectInterferenceFunctions()
 
 double LayerDecoratorStrategyBuilder::getWavelength()
 {
-    cvector_t ki = mp_experiment->getBeam().getCentralK();
+    cvector_t ki = mp_experiment->getInstrument().getBeam().getCentralK();
     kvector_t ki_real(ki.x().real(), ki.y().real(), ki.z().real());
     return 2.0*M_PI/ki_real.mag();
 }
diff --git a/Tests/UnitTests/TestCore/ExperimentTest.h b/Tests/UnitTests/TestCore/ExperimentTest.h
index 495089b8ccfa5b227b8efa2121ea7ad15b8d42aa..3ad0e1ad219ba3df00c1307effdd50b17f31bed5 100644
--- a/Tests/UnitTests/TestCore/ExperimentTest.h
+++ b/Tests/UnitTests/TestCore/ExperimentTest.h
@@ -50,33 +50,17 @@ TEST_F(ExperimentTest, ExperimentInitialState)
     EXPECT_EQ( NULL, emptyExperiment.getSample());
     EXPECT_EQ( size_t(1), emptyExperiment.getOutputData()->getAllocatedSize());
     EXPECT_EQ( size_t(0), emptyExperiment.getOutputData()->getNdimensions());
-    EXPECT_TRUE(emptyExperiment.getOutputData()->getNdimensions() == emptyExperiment.getDetector().getDimension() );
-    EXPECT_EQ( double(1), emptyExperiment.getBeam().getIntensity());
+    EXPECT_TRUE(emptyExperiment.getOutputData()->getNdimensions() == emptyExperiment.getInstrument().getDetectorDimension() );
 }
 
 
 TEST_F(ExperimentTest, ExperimentConstruction)
 {
-    double lambda(1), alpha(1), phi(1);
-    double k = 2.*M_PI/lambda;
-    double x = k*std::cos(alpha) * std::cos(phi);
-    double y = k*std::cos(alpha) * std::sin(phi);
-    double z = k*std::sin(alpha);
-    constructedExperiment.setBeamParameters(lambda, alpha, phi);
-    EXPECT_DOUBLE_EQ(x, constructedExperiment.getBeam().getCentralK().x().real() );
-    EXPECT_DOUBLE_EQ(0, constructedExperiment.getBeam().getCentralK().x().imag() );
-    EXPECT_DOUBLE_EQ(y, constructedExperiment.getBeam().getCentralK().y().real() );
-    EXPECT_DOUBLE_EQ(0, constructedExperiment.getBeam().getCentralK().y().imag() );
-    EXPECT_DOUBLE_EQ(z, constructedExperiment.getBeam().getCentralK().z().real() );
-    EXPECT_DOUBLE_EQ(0, constructedExperiment.getBeam().getCentralK().z().imag() );
-
     EXPECT_FALSE( constructedExperiment.getOutputData()->hasSameShape(test_data));
     constructedExperiment.setDetectorParameters(test_data);
     EXPECT_TRUE( constructedExperiment.getOutputData()->hasSameShape(test_data));
     EXPECT_EQ( double(0), constructedExperiment.getOutputData()->totalSum());
 
-    constructedExperiment.setBeamIntensity(10);
-    EXPECT_EQ( double(10), constructedExperiment.getBeam().getIntensity());
     constructedExperiment.normalize();
     EXPECT_EQ( double(0), constructedExperiment.getOutputData()->totalSum());
 
@@ -100,8 +84,8 @@ TEST_F(ExperimentTest, ExperimentInitialStateOfClone)
     EXPECT_EQ( NULL, emptyClonedExperiment->getSample());
     EXPECT_EQ( size_t(1), emptyClonedExperiment->getOutputData()->getAllocatedSize());
     EXPECT_EQ( size_t(0), emptyClonedExperiment->getOutputData()->getNdimensions());
-    EXPECT_TRUE(emptyClonedExperiment->getOutputData()->getNdimensions() == emptyClonedExperiment->getDetector().getDimension() );
-    EXPECT_EQ( double(1), emptyClonedExperiment->getBeam().getIntensity());
+    EXPECT_TRUE(emptyClonedExperiment->getOutputData()->getNdimensions() == emptyClonedExperiment->getInstrument().getDetector().getDimension() );
+    EXPECT_EQ( double(1), emptyClonedExperiment->getInstrument().getIntensity());
     delete emptyClonedExperiment;
 }
 
@@ -115,14 +99,12 @@ TEST_F(ExperimentTest, ExperimentClone)
     delete originalExperiment;
 
     EXPECT_TRUE( clonedExperiment->getOutputData()->hasSameShape(test_data));
-    EXPECT_EQ( double(10), clonedExperiment->getBeam().getIntensity());
+    EXPECT_EQ( double(10), clonedExperiment->getInstrument().getIntensity());
     EXPECT_TRUE( NULL == clonedExperiment->getSample());
     clonedExperiment->runExperiment();
     EXPECT_FALSE( NULL == clonedExperiment->getSample());
 
     delete clonedExperiment;
-
-
 }
 
 
diff --git a/Tests/UnitTests/TestCore/GISASExperimentTest.h b/Tests/UnitTests/TestCore/GISASExperimentTest.h
index 5a840b86bdec225ab6fb719a8f2cbb16c9838ad9..fc4eea37ca1794b13b722cf1333d024b0c61ce86 100644
--- a/Tests/UnitTests/TestCore/GISASExperimentTest.h
+++ b/Tests/UnitTests/TestCore/GISASExperimentTest.h
@@ -49,9 +49,9 @@ TEST_F(GISASExperimentTest, GISASExperimentInitialState)
     EXPECT_EQ( NULL, emptyExperiment.getSample());
     EXPECT_EQ( size_t(10000), emptyExperiment.getOutputData()->getAllocatedSize());
     EXPECT_EQ( size_t(2), emptyExperiment.getOutputData()->getNdimensions());
-    EXPECT_TRUE(emptyExperiment.getOutputData()->getNdimensions() == emptyExperiment.getDetector().getDimension() );
-    EXPECT_TRUE(std::string(NDetector2d::PHI_AXIS_NAME) == emptyExperiment.getDetector().getAxis(0).getName());
-    EXPECT_TRUE(std::string(NDetector2d::ALPHA_AXIS_NAME) == emptyExperiment.getDetector().getAxis(1).getName());
+    EXPECT_TRUE(emptyExperiment.getOutputData()->getNdimensions() == emptyExperiment.getInstrument().getDetectorDimension() );
+    EXPECT_TRUE(std::string(NDetector2d::PHI_AXIS_NAME) == emptyExperiment.getInstrument().getDetector().getAxis(0).getName());
+    EXPECT_TRUE(std::string(NDetector2d::ALPHA_AXIS_NAME) == emptyExperiment.getInstrument().getDetector().getAxis(1).getName());
 }
 
 
@@ -61,8 +61,8 @@ TEST_F(GISASExperimentTest, GISASExperimentInitialStateOfClone)
     EXPECT_EQ( NULL, emptyClonedExperiment->getSample());
     EXPECT_EQ( size_t(10000), emptyClonedExperiment->getOutputData()->getAllocatedSize());
     EXPECT_EQ( size_t(2), emptyClonedExperiment->getOutputData()->getNdimensions());
-    EXPECT_TRUE(emptyClonedExperiment->getOutputData()->getNdimensions() == emptyClonedExperiment->getDetector().getDimension() );
-    EXPECT_EQ( double(1), emptyClonedExperiment->getBeam().getIntensity());
+    EXPECT_TRUE(emptyClonedExperiment->getOutputData()->getNdimensions() == emptyClonedExperiment->getInstrument().getDetector().getDimension() );
+    EXPECT_EQ( double(1), emptyClonedExperiment->getInstrument().getIntensity());
     delete emptyClonedExperiment;
 }
 
@@ -76,7 +76,7 @@ TEST_F(GISASExperimentTest, GISASExperimentClone)
     delete originalExperiment;
 
     EXPECT_TRUE( clonedExperiment->getOutputData()->hasSameShape(test_data));
-    EXPECT_EQ( double(10), clonedExperiment->getBeam().getIntensity());
+    EXPECT_EQ( double(10), clonedExperiment->getInstrument().getIntensity());
     EXPECT_TRUE( NULL == clonedExperiment->getSample());
 
     delete clonedExperiment;
diff --git a/Tests/UnitTests/TestCore/InstrumentTest.h b/Tests/UnitTests/TestCore/InstrumentTest.h
new file mode 100644
index 0000000000000000000000000000000000000000..462fc4b75bc82b34a22afadf5133e3b8c16ae5ca
--- /dev/null
+++ b/Tests/UnitTests/TestCore/InstrumentTest.h
@@ -0,0 +1,64 @@
+#ifndef INSTRUMENTTEST_H_
+#define INSTRUMENTTEST_H_
+
+#include "Instrument.h"
+
+class InstrumentTest : public ::testing::Test
+{
+protected:
+    InstrumentTest();
+    virtual ~InstrumentTest();
+
+    Instrument m_instrument;
+    OutputData<double> m_data;
+};
+
+
+InstrumentTest::InstrumentTest()
+{
+    m_data.addAxis(NDetector2d::PHI_AXIS_NAME, 10, 0., 10.);
+    m_data.addAxis("theta_f", 20, 0., 20.);
+}
+
+InstrumentTest::~InstrumentTest()
+{
+}
+
+TEST_F(InstrumentTest, InstrumentInitialState)
+{
+    EXPECT_EQ( double(1), m_instrument.getBeam().getIntensity());
+}
+
+
+TEST_F(InstrumentTest, BeamManipulation)
+{
+    double lambda(1), alpha(1), phi(1);
+    double k = 2.*M_PI/lambda;
+    double x = k*std::cos(alpha) * std::cos(phi);
+    double y = k*std::cos(alpha) * std::sin(phi);
+    double z = k*std::sin(alpha);
+    m_instrument.setBeamParameters(lambda, alpha, phi);
+    EXPECT_DOUBLE_EQ(x, m_instrument.getBeam().getCentralK().x().real() );
+    EXPECT_DOUBLE_EQ(0, m_instrument.getBeam().getCentralK().x().imag() );
+    EXPECT_DOUBLE_EQ(y, m_instrument.getBeam().getCentralK().y().real() );
+    EXPECT_DOUBLE_EQ(0, m_instrument.getBeam().getCentralK().y().imag() );
+    EXPECT_DOUBLE_EQ(z, m_instrument.getBeam().getCentralK().z().real() );
+    EXPECT_DOUBLE_EQ(0, m_instrument.getBeam().getCentralK().z().imag() );
+
+    EXPECT_FALSE( m_instrument.getDetectorDimension()==2 );
+    m_instrument.matchDetectorParameters(m_data);
+    EXPECT_TRUE( m_instrument.getDetectorDimension()==2 );
+    //TODO: add axes check
+
+    m_instrument.setBeamIntensity(10);
+    EXPECT_EQ( double(10), m_instrument.getIntensity());
+}
+
+TEST_F(InstrumentTest, InstrumentClone)
+{
+    Instrument clone(m_instrument);
+    EXPECT_EQ( size_t(0), clone.getDetectorDimension() );
+    EXPECT_EQ( double(1), clone.getIntensity() );
+}
+
+#endif /* INSTRUMENTTEST_H_ */
diff --git a/Tests/UnitTests/TestCore/TestCore.pro b/Tests/UnitTests/TestCore/TestCore.pro
index bcd6bdbb6a4fa23425a017caeaacf70f83a522fe..555f05fe3a64229d9129c9e39b6bf4defe05f848 100644
--- a/Tests/UnitTests/TestCore/TestCore.pro
+++ b/Tests/UnitTests/TestCore/TestCore.pro
@@ -14,18 +14,19 @@ SOURCES += main.cpp
 HEADERS += \
     AxisDoubleTest.h \
     BeamTest.h \
+    ChiSquaredModuleTest.h \
+    CVectorTest.h \
     DetectorTest.h \
     ExperimentTest.h \
+    GISASExperimentTest.h \
+    InstrumentTest.h \
+    IParameterizedTest.h \
+    KVectorTest.h \
     MaskTest.h \
     OutputDataTest.h \
     OutputDataIteratorTest.h \
-    GISASExperimentTest.h \
-    ChiSquaredModuleTest.h \
-    RealParameterWrapperTest.h \
-    IParameterizedTest.h \
     ParameterPoolTest.h \
-    KVectorTest.h \
-    CVectorTest.h
+    RealParameterWrapperTest.h \
 
 OBJECTS_DIR = obj
 
diff --git a/Tests/UnitTests/TestCore/TestCore.pro.user b/Tests/UnitTests/TestCore/TestCore.pro.user
index 182b70b0666ab1aa4c543ba02de5f83086e43fc6..5243081e5d6ca209b171a4c0ed9e78f6a8dbb6f6 100644
--- a/Tests/UnitTests/TestCore/TestCore.pro.user
+++ b/Tests/UnitTests/TestCore/TestCore.pro.user
@@ -1,16 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by Qt Creator 2.4.1, 2012-04-13T16:28:24. -->
+<!-- Written by Qt Creator 2.6.2, 2013-02-15T11:16:44. -->
 <qtcreator>
  <data>
   <variable>ProjectExplorer.Project.ActiveTarget</variable>
-  <value type="int">0</value>
+  <value type="int">-1</value>
  </data>
  <data>
   <variable>ProjectExplorer.Project.EditorSettings</variable>
   <valuemap type="QVariantMap">
    <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
    <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
    <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
     <value type="QString" key="language">Cpp</value>
     <valuemap type="QVariantMap" key="value">
@@ -24,9 +25,10 @@
     </valuemap>
    </valuemap>
    <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
-   <value type="QByteArray" key="EditorConfiguration.Codec">System</value>
+   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
    <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
    <value type="int" key="EditorConfiguration.IndentSize">4</value>
+   <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
    <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
    <value type="int" key="EditorConfiguration.PaddingMode">1</value>
    <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
@@ -46,220 +48,16 @@
   <variable>ProjectExplorer.Project.PluginSettings</variable>
   <valuemap type="QVariantMap"/>
  </data>
- <data>
-  <variable>ProjectExplorer.Project.Target.0</variable>
-  <valuemap type="QVariantMap">
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Target.DesktopTarget</value>
-   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
-   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
-   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
-    <value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-macos-generic-mach_o-64bit./usr/bin/gdb</value>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
-      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
-     </valuemap>
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
-     </valuemap>
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 4.8.0 for GCC (Qt SDK) Debug</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
-    <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/Users/pospelov/nest/development/git/GISASFW/UnitTests/TestCore</value>
-    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">5</value>
-    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
-   </valuemap>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
-    <value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-macos-generic-mach_o-64bit./usr/bin/gdb</value>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
-      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
-     </valuemap>
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
-     </valuemap>
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 4.8.0 for GCC (Qt SDK) Release</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
-    <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/Users/pospelov/nest/development/git/GISASFW/UnitTests/TestCore</value>
-    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">5</value>
-    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
-   </valuemap>
-   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">No deployment</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
-   </valuemap>
-   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
-    <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
-    <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
-    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
-    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
-    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
-    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
-    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
-    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
-    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
-    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
-     <value type="int">0</value>
-     <value type="int">1</value>
-     <value type="int">2</value>
-     <value type="int">3</value>
-     <value type="int">4</value>
-     <value type="int">5</value>
-     <value type="int">6</value>
-     <value type="int">7</value>
-     <value type="int">8</value>
-     <value type="int">9</value>
-     <value type="int">10</value>
-     <value type="int">11</value>
-     <value type="int">12</value>
-     <value type="int">13</value>
-     <value type="int">14</value>
-    </valuelist>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
-     <value type="int">0</value>
-     <value type="int">1</value>
-     <value type="int">2</value>
-     <value type="int">3</value>
-     <value type="int">4</value>
-     <value type="int">5</value>
-     <value type="int">6</value>
-     <value type="int">7</value>
-     <value type="int">8</value>
-     <value type="int">9</value>
-     <value type="int">10</value>
-     <value type="int">11</value>
-     <value type="int">12</value>
-     <value type="int">13</value>
-     <value type="int">14</value>
-    </valuelist>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">TestCore</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration</value>
-    <value type="int" key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase">2</value>
-    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
-    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">TestCore.pro</value>
-    <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
-    <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">true</value>
-    <valuelist type="QVariantList" key="Qt4ProjectManager.Qt4RunConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
-    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
-    <value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value>
-   </valuemap>
-   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
-  </valuemap>
- </data>
  <data>
   <variable>ProjectExplorer.Project.TargetCount</variable>
-  <value type="int">1</value>
+  <value type="int">0</value>
  </data>
  <data>
   <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
-  <value type="QString">{c1c720d9-01f4-4ab8-8c70-81f8dd0baa7e}</value>
+  <value type="QString">{3d0c9af8-0e2f-45cd-a5b0-a3c87e345188}</value>
  </data>
  <data>
   <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
-  <value type="int">10</value>
+  <value type="int">12</value>
  </data>
 </qtcreator>
diff --git a/Tests/UnitTests/TestCore/main.cpp b/Tests/UnitTests/TestCore/main.cpp
index 155fc2b65d3058d59e2115b0d72d515391282ad7..7b53a00567a72054ad1f488a9d6f588b85c0ad08 100644
--- a/Tests/UnitTests/TestCore/main.cpp
+++ b/Tests/UnitTests/TestCore/main.cpp
@@ -3,11 +3,12 @@
 #include "AxisDoubleTest.h"
 #include "BeamTest.h"
 #include "ChiSquaredModuleTest.h"
+#include "CVectorTest.h"
 #include "DetectorTest.h"
 #include "ExperimentTest.h"
 #include "GISASExperimentTest.h"
+#include "InstrumentTest.h"
 #include "IParameterizedTest.h"
-#include "CVectorTest.h"
 #include "KVectorTest.h"
 #include "MaskTest.h"
 #include "OutputDataIteratorTest.h"