diff --git a/GUI/coregui/Models/FitParameterItems.cpp b/GUI/coregui/Models/FitParameterItems.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..126f57f19eb139474dd13e6c1f72716b41e8503f
--- /dev/null
+++ b/GUI/coregui/Models/FitParameterItems.cpp
@@ -0,0 +1,53 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      coregui/Models/FitParameterItems.cpp
+//! @brief     Implements class FitParameterItems
+//!
+//! @homepage  http://www.bornagainproject.org
+//! @license   GNU General Public License v3 or higher (see COPYING)
+//! @copyright Forschungszentrum Jülich GmbH 2016
+//! @authors   Scientific Computing Group at MLZ Garching
+//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
+//! @authors   Walter Van Herck, Joachim Wuttke
+//
+// ************************************************************************** //
+
+#include "FitParameterItems.h"
+#include "ComboProperty.h"
+
+FitParameterContainerItem::FitParameterContainerItem()
+    : SessionItem(Constants::FitParameterContainerType)
+{
+    const QString T_DATA = "Data tag";
+    registerTag(T_DATA, 0, -1, QStringList() << Constants::FitParameterType);
+    setDefaultTag(T_DATA);
+}
+
+
+const QString FitParameterItem::P_USE = "Use";
+const QString FitParameterItem::P_INIT = "Starting Value";
+const QString FitParameterItem::P_MIN = "Min";
+const QString FitParameterItem::P_MAX = "Max";
+
+FitParameterItem::FitParameterItem()
+    : SessionItem(Constants::FitParameterType)
+{
+    addProperty(P_USE, true);
+    addProperty(P_INIT, 0.0);
+    addProperty(P_MIN, 0.0);
+    addProperty(P_MAX, 0.0);
+    const QString T_LINK = "Link tag";
+    registerTag(T_LINK, 0, -1, QStringList() << Constants::FitParameterLinkType);
+    setDefaultTag(T_LINK);
+}
+
+const QString FitParameterLinkItem::P_LINK = "Link";
+
+FitParameterLinkItem::FitParameterLinkItem()
+    : SessionItem(Constants::FitParameterLinkType)
+{
+    addProperty(P_LINK, "");
+}
+
diff --git a/GUI/coregui/Models/FitParameterItems.h b/GUI/coregui/Models/FitParameterItems.h
new file mode 100644
index 0000000000000000000000000000000000000000..b96050b8fc3e60035f34137449db2ef149a994f4
--- /dev/null
+++ b/GUI/coregui/Models/FitParameterItems.h
@@ -0,0 +1,48 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      coregui/Models/FitParameterItems.h
+//! @brief     Declares class FitParameterItems
+//!
+//! @homepage  http://www.bornagainproject.org
+//! @license   GNU General Public License v3 or higher (see COPYING)
+//! @copyright Forschungszentrum Jülich GmbH 2016
+//! @authors   Scientific Computing Group at MLZ Garching
+//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
+//! @authors   Walter Van Herck, Joachim Wuttke
+//
+// ************************************************************************** //
+#ifndef FITPARAMETERITEMS_H
+#define FITPARAMETERITEMS_H
+
+#include "SessionItem.h"
+
+class BA_CORE_API_ FitParameterContainerItem : public SessionItem
+{
+
+public:
+    explicit FitParameterContainerItem();
+};
+
+class BA_CORE_API_ FitParameterItem : public SessionItem
+{
+
+public:
+    static const QString P_USE;
+    static const QString P_INIT;
+    static const QString P_MIN;
+    static const QString P_MAX;
+    explicit FitParameterItem();
+};
+
+
+class BA_CORE_API_ FitParameterLinkItem : public SessionItem
+{
+
+public:
+    static const QString P_LINK;
+    explicit FitParameterLinkItem();
+};
+
+#endif
diff --git a/GUI/coregui/Models/FitSuiteItem.cpp b/GUI/coregui/Models/FitSuiteItem.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..72442543e67517194bd33dbfd9b9ef233eeaa606
--- /dev/null
+++ b/GUI/coregui/Models/FitSuiteItem.cpp
@@ -0,0 +1,25 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      coregui/Models/FitSuiteItem.cpp
+//! @brief     Implements class FitSuiteItem
+//!
+//! @homepage  http://www.bornagainproject.org
+//! @license   GNU General Public License v3 or higher (see COPYING)
+//! @copyright Forschungszentrum Jülich GmbH 2016
+//! @authors   Scientific Computing Group at MLZ Garching
+//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
+//! @authors   Walter Van Herck, Joachim Wuttke
+//
+// ************************************************************************** //
+
+#include "FitSuiteItem.h"
+
+const QString FitSuiteItem::T_FIT_PARAMETERS = "Fit parameters container";
+
+FitSuiteItem::FitSuiteItem()
+    : SessionItem(Constants::FitSuiteType)
+{
+    registerTag(T_FIT_PARAMETERS, 1, 1, QStringList() << Constants::FitParameterContainerType);
+}
diff --git a/GUI/coregui/Models/FitSuiteItem.h b/GUI/coregui/Models/FitSuiteItem.h
new file mode 100644
index 0000000000000000000000000000000000000000..74e9ddfb91bb0ac482fcfbac0d10a8b0b4cee543
--- /dev/null
+++ b/GUI/coregui/Models/FitSuiteItem.h
@@ -0,0 +1,30 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      coregui/Models/FitSuiteItem.h
+//! @brief     Declares class FitSuiteItem
+//!
+//! @homepage  http://www.bornagainproject.org
+//! @license   GNU General Public License v3 or higher (see COPYING)
+//! @copyright Forschungszentrum Jülich GmbH 2016
+//! @authors   Scientific Computing Group at MLZ Garching
+//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
+//! @authors   Walter Van Herck, Joachim Wuttke
+//
+// ************************************************************************** //
+
+#ifndef FITSUITEITEM_H
+#define FITSUITEITEM_H
+
+#include "SessionItem.h"
+
+class BA_CORE_API_ FitSuiteItem : public SessionItem
+{
+
+public:
+    static const QString T_FIT_PARAMETERS;
+    explicit FitSuiteItem();
+};
+
+#endif
diff --git a/GUI/coregui/Models/ItemFactory.cpp b/GUI/coregui/Models/ItemFactory.cpp
index 76b6ab1a0e5ef191e5aac476edffbe84c282eadf..fb54e0d621b97d3013f532f277c0e88ad1dde93d 100644
--- a/GUI/coregui/Models/ItemFactory.cpp
+++ b/GUI/coregui/Models/ItemFactory.cpp
@@ -52,6 +52,8 @@
 #include "ObsoleteFitParameterItems.h"
 #include "ParameterTreeItems.h"
 #include "SimulationOptionsItem.h"
+#include "FitParameterItems.h"
+#include "FitSuiteItem.h"
 #include <QDebug>
 
 namespace {
@@ -182,8 +184,13 @@ ItemFactory::ItemMap_t initializeItemMap() {
     result[Constants::ObsoleteMinimizerSettingsType] = &createInstance<ObsoleteMinimizerSettingsItem>;
     result[Constants::ObsoleteInputDataType] = &createInstance<ObsoleteInputDataItem>;
     result[Constants::GroupItemType] = &createInstance<GroupItem>;
+
     result[Constants::ParameterLabelType] = &createInstance<ParameterLabelItem>;
     result[Constants::ParameterType] = &createInstance<ParameterItem>;
+    result[Constants::FitParameterContainerType] = &createInstance<FitParameterContainerItem>;
+    result[Constants::FitParameterType] = &createInstance<FitParameterItem>;
+    result[Constants::FitParameterLinkType] = &createInstance<FitParameterLinkItem>;
+    result[Constants::FitSuiteType] = &createInstance<FitSuiteItem>;
 
     result[Constants::SimulationOptionsType] = &createInstance<SimulationOptionsItem>;
 
diff --git a/GUI/coregui/Models/JobItem.cpp b/GUI/coregui/Models/JobItem.cpp
index 27f68b08fe998ccd7a65c8e3e1c7a7b667c1e294..21ad2d78f71731b0ef47e51cafcc6155527947e5 100644
--- a/GUI/coregui/Models/JobItem.cpp
+++ b/GUI/coregui/Models/JobItem.cpp
@@ -43,6 +43,7 @@ const QString JobItem::T_OUTPUT = "Output Tag";
 const QString JobItem::T_REALDATA = "Real Data Tag";
 const QString JobItem::T_PARAMETER_TREE = "Parameter Tree";
 const QString JobItem::T_SIMULATION_OPTIONS = "Simulation Options";
+const QString JobItem::T_FIT_SUITE = "Fit Suite";
 
 JobItem::JobItem()
     : SessionItem(Constants::JobItemType)
@@ -76,6 +77,7 @@ JobItem::JobItem()
                 << Constants::ParameterType);
     registerTag(T_SIMULATION_OPTIONS, 1, 1, QStringList() << Constants::SimulationOptionsType);
 
+    registerTag(T_FIT_SUITE, 1, 1, QStringList() << Constants::FitSuiteType);
 
     mapper()->setOnChildPropertyChange(
                 [this](SessionItem* item, const QString &name)
diff --git a/GUI/coregui/Models/JobItem.h b/GUI/coregui/Models/JobItem.h
index 8757ba9ad7b3200d0db08bb85357c2ee685299f7..3ba483b3ad20bd06023769336650e91d970382f9 100644
--- a/GUI/coregui/Models/JobItem.h
+++ b/GUI/coregui/Models/JobItem.h
@@ -46,6 +46,7 @@ public:
     static const QString T_REALDATA;
     static const QString T_PARAMETER_TREE;
     static const QString T_SIMULATION_OPTIONS;
+    static const QString T_FIT_SUITE;
     explicit JobItem();
     virtual ~JobItem();
 
diff --git a/GUI/coregui/Models/ParameterModelBuilder.cpp b/GUI/coregui/Models/ParameterModelBuilder.cpp
index b12b66405481d94df7a0d43a859dd752fa813545..1363026e737ed6302f93226496bb034c2fbd7f39 100644
--- a/GUI/coregui/Models/ParameterModelBuilder.cpp
+++ b/GUI/coregui/Models/ParameterModelBuilder.cpp
@@ -37,7 +37,7 @@
 #include <QDebug>
 
 
-void ParameterModelBuilder::createParameterTree(JobItem *item, const QString tag)
+void ParameterModelBuilder::createParameterTree(JobItem *item, const QString &tag)
 {
     SessionItem *container = item->model()->insertNewItem(Constants::ParameterLabelType, item->index(), -1, tag);
     container->setDisplayName("Parameter Tree Container");
diff --git a/GUI/coregui/Models/ParameterModelBuilder.h b/GUI/coregui/Models/ParameterModelBuilder.h
index 045be263e22201b5d23dffcd657ad83c41560871..85370ecb352966b9357efda994588d6460b8a21a 100644
--- a/GUI/coregui/Models/ParameterModelBuilder.h
+++ b/GUI/coregui/Models/ParameterModelBuilder.h
@@ -25,7 +25,7 @@ class SessionItem;
 class ParameterModelBuilder
 {
 public:
-    static void createParameterTree(JobItem *item, const QString tag = QString());
+    static void createParameterTree(JobItem *item, const QString &tag = QString());
 private:
     static void handleItem(SessionItem *tree, SessionItem *source);
 };
diff --git a/GUI/coregui/Models/item_constants.h b/GUI/coregui/Models/item_constants.h
index a14ed167bb3f9891c2d8d397706c81594c584b50..217260c60f89e02df03bffba7a70e606c0fca719 100644
--- a/GUI/coregui/Models/item_constants.h
+++ b/GUI/coregui/Models/item_constants.h
@@ -126,8 +126,13 @@ const ModelType ObsoleteFitParameterLinkType = "ObsoleteFitParameterLink";
 const ModelType ObsoleteFitSelectionType = "ObsoleteFitSelection";
 const ModelType ObsoleteMinimizerSettingsType = "ObsoleteMinimizer Settings";
 const ModelType ObsoleteInputDataType = "Obsolete Input Data";
+
 const ModelType ParameterType = "Parameter";
 const ModelType ParameterLabelType = "Parameter Label";
+const ModelType FitParameterContainerType = "FitParameterContainer";
+const ModelType FitParameterType = "FitParameter";
+const ModelType FitParameterLinkType = "FitParameterLink";
+const ModelType FitSuiteType = "FitSuite";
 
 const ModelType JobItemType = "JobItem";
 const ModelType IntensityDataType = "IntensityData";
diff --git a/GUI/coregui/Views/FitWidgets/FitParametersWidget.cpp b/GUI/coregui/Views/FitWidgets/FitParametersWidget.cpp
index 81b16760ca84030638629961e632a62eb03a965b..350f26956a5efefa5c4daefe5a72c3c8ec292ec4 100644
--- a/GUI/coregui/Views/FitWidgets/FitParametersWidget.cpp
+++ b/GUI/coregui/Views/FitWidgets/FitParametersWidget.cpp
@@ -15,14 +15,66 @@
 // ************************************************************************** //
 
 #include "FitParametersWidget.h"
+#include "JobItem.h"
+#include "JobModel.h"
+#include "FitSuiteItem.h"
+#include "FitParameterItems.h"
 #include <QTreeView>
 #include <QVBoxLayout>
 
 FitParametersWidget::FitParametersWidget(QWidget *parent)
     : QWidget(parent)
     , m_treeView(new QTreeView)
+    , m_jobItem(0)
 {
     QVBoxLayout *layout = new QVBoxLayout;
     layout->addWidget(m_treeView);
     setLayout(layout);
 }
+
+void FitParametersWidget::setItem(JobItem *jobItem)
+{
+    if(jobItem == m_jobItem) {
+        return;
+    }
+
+    else {
+        if(m_jobItem)
+            stop_tracking_job_item();
+
+        m_jobItem = jobItem;
+        if (!m_jobItem) return;
+
+        init_job_item();
+
+    }
+}
+
+//! stop tracking job item
+void FitParametersWidget::stop_tracking_job_item()
+{
+    Q_ASSERT(m_jobItem);
+
+}
+
+//! init job item: create fit containers if necessary, subscribes for item changing
+void FitParametersWidget::init_job_item()
+{
+    SessionItem *fitSuiteItem = m_jobItem->getItem(JobItem::T_FIT_SUITE);
+    if (!fitSuiteItem) {
+        fitSuiteItem = m_jobItem->model()->insertNewItem(
+            Constants::FitSuiteType, m_jobItem->index(), -1, JobItem::T_FIT_SUITE);
+    }
+    Q_ASSERT(fitSuiteItem);
+
+    SessionItem *parsContainerItem = fitSuiteItem->getItem(FitSuiteItem::T_FIT_PARAMETERS);
+    if (!parsContainerItem) {
+        parsContainerItem = fitSuiteItem->model()->insertNewItem(
+            Constants::FitParameterContainerType, fitSuiteItem->index(), -1,
+            FitSuiteItem::T_FIT_PARAMETERS);
+    }
+
+    SessionItem *fitPar = parsContainerItem->model()->insertNewItem(Constants::FitParameterType, parsContainerItem->index());
+    m_treeView->setModel(parsContainerItem->model());
+    m_treeView->setRootIndex(parsContainerItem->index());
+}
diff --git a/GUI/coregui/Views/FitWidgets/FitParametersWidget.h b/GUI/coregui/Views/FitWidgets/FitParametersWidget.h
index 2ad538b7662cd1dc5e708ef02ad4326978f361d8..217f65a0be4bb8ad04481b9ec44cd6c356d8c3eb 100644
--- a/GUI/coregui/Views/FitWidgets/FitParametersWidget.h
+++ b/GUI/coregui/Views/FitWidgets/FitParametersWidget.h
@@ -20,6 +20,7 @@
 #include "WinDllMacros.h"
 #include <QWidget>
 
+class JobItem;
 class QTreeView;
 
 //! The FitParametersWidget class contains a tree view to set fit parameters (fix/release,
@@ -30,9 +31,14 @@ class BA_CORE_API_ FitParametersWidget : public QWidget
     Q_OBJECT
 public:
     FitParametersWidget(QWidget *parent = 0);
+    void setItem(JobItem *jobItem);
 
 private:
+    void stop_tracking_job_item();
+    void init_job_item();
+
     QTreeView *m_treeView;
+    JobItem *m_jobItem;
 };
 
 #endif
diff --git a/GUI/coregui/Views/FitWidgets/TestFitWidgets.cpp b/GUI/coregui/Views/FitWidgets/TestFitWidgets.cpp
index f5c58d68775af8b1e46858d55f18dd5ac2958f90..139ea141f31187b3b458b7df2f30e53c75062e06 100644
--- a/GUI/coregui/Views/FitWidgets/TestFitWidgets.cpp
+++ b/GUI/coregui/Views/FitWidgets/TestFitWidgets.cpp
@@ -18,6 +18,9 @@
 #include "mainwindow.h"
 #include "ModelTuningWidget.h"
 #include "FitParametersWidget.h"
+#include "item_constants.h"
+#include "JobModel.h"
+#include "JobItem.h"
 #include <QVBoxLayout>
 
 TestFitWidgets::TestFitWidgets(MainWindow *mainWindow)
@@ -25,9 +28,21 @@ TestFitWidgets::TestFitWidgets(MainWindow *mainWindow)
     , m_mainWindow(mainWindow)
     , m_tuningWidget(new ModelTuningWidget(mainWindow->jobModel()))
     , m_fitParametersWidget(new FitParametersWidget(this))
+    , m_jobItem(0)
 {
     QHBoxLayout *hlayout = new QHBoxLayout;
     hlayout->addWidget(m_tuningWidget);
     hlayout->addWidget(m_fitParametersWidget);
     setLayout(hlayout);
 }
+
+void TestFitWidgets::showEvent(QShowEvent *)
+{
+    JobItem *jobItem = dynamic_cast<JobItem *>(m_mainWindow->jobModel()->getTopItem(Constants::JobItemType));
+    if(jobItem) {
+        m_jobItem = jobItem;
+        m_tuningWidget->setItem(jobItem);
+        m_fitParametersWidget->setItem(jobItem);
+    }
+
+}
diff --git a/GUI/coregui/Views/FitWidgets/TestFitWidgets.h b/GUI/coregui/Views/FitWidgets/TestFitWidgets.h
index c5fefb6ace66526e8b7b9cab13d7f6a8fe0b30df..b53f860697faba66ff124d6e88a552e69d789904 100644
--- a/GUI/coregui/Views/FitWidgets/TestFitWidgets.h
+++ b/GUI/coregui/Views/FitWidgets/TestFitWidgets.h
@@ -23,6 +23,7 @@
 class MainWindow;
 class ModelTuningWidget;
 class FitParametersWidget;
+class JobItem;
 
 //! TestFitWidgets is a temporary widget (created by mainwindow)
 //! for testing fitting related widgets.
@@ -33,10 +34,13 @@ class BA_CORE_API_ TestFitWidgets : public QWidget
 public:
     TestFitWidgets(MainWindow *mainWindow);
 
+    void showEvent(QShowEvent *);
+
 private:
     MainWindow *m_mainWindow;
     ModelTuningWidget *m_tuningWidget;
     FitParametersWidget *m_fitParametersWidget;
+    JobItem *m_jobItem;
 };
 
 #endif
diff --git a/GUI/coregui/Views/JobWidgets/JobRealTimeWidget.cpp b/GUI/coregui/Views/JobWidgets/JobRealTimeWidget.cpp
index c78d8e1e6a277562a9a64d61af09303259d78108..374c3fc8642f5898f289d1a7092e9fda0d744250 100644
--- a/GUI/coregui/Views/JobWidgets/JobRealTimeWidget.cpp
+++ b/GUI/coregui/Views/JobWidgets/JobRealTimeWidget.cpp
@@ -107,7 +107,7 @@ void JobRealTimeWidget::setItem(JobItem * item)
         //qDebug() << "JobOutputDataWidget::itemClicked() -> creating";
 //        widget = new ModelTuningWidget(m_jobModel->getJobQueueData());
         widget = new ModelTuningWidget(m_jobModel);
-        widget->setCurrentItem(item);
+        widget->setItem(item);
         m_stack->addWidget(widget);
         m_jobItemToTuningWidget[item] = widget;
 
diff --git a/GUI/coregui/Views/JobWidgets/ModelTuningWidget.cpp b/GUI/coregui/Views/JobWidgets/ModelTuningWidget.cpp
index c522f6fb49aa7a2da437a37c2a7bd2dedd0def22..e177983ef9c0d266c15e25ed102d566ffd76f3b3 100644
--- a/GUI/coregui/Views/JobWidgets/ModelTuningWidget.cpp
+++ b/GUI/coregui/Views/JobWidgets/ModelTuningWidget.cpp
@@ -93,7 +93,7 @@ ModelTuningWidget::~ModelTuningWidget()
 {
 }
 
-void ModelTuningWidget::setCurrentItem(JobItem *item)
+void ModelTuningWidget::setItem(JobItem *item)
 {
     if (m_currentJobItem == item) {
         return;
diff --git a/GUI/coregui/Views/JobWidgets/ModelTuningWidget.h b/GUI/coregui/Views/JobWidgets/ModelTuningWidget.h
index dfa5fda876c236ce4b12d2520e0a8ca3c0744604..9912e5b724355139a9e2a80d81a0c136395a95f5 100644
--- a/GUI/coregui/Views/JobWidgets/ModelTuningWidget.h
+++ b/GUI/coregui/Views/JobWidgets/ModelTuningWidget.h
@@ -39,7 +39,7 @@ public:
     ModelTuningWidget(JobModel *jobModel, QWidget *parent = 0);
     virtual ~ModelTuningWidget();
 
-    void setCurrentItem(JobItem *item);
+    void setItem(JobItem *item);
 
 public slots:
     void onCurrentLinkChanged(SessionItem* item);
diff --git a/GUI/coregui/mainwindow/mainwindow.cpp b/GUI/coregui/mainwindow/mainwindow.cpp
index 8135fe2eb3c50c884121b20ca889f0ba82345a0f..5ed6ca418ea0c07c67f88ec8dc088539c84ebbf4 100644
--- a/GUI/coregui/mainwindow/mainwindow.cpp
+++ b/GUI/coregui/mainwindow/mainwindow.cpp
@@ -103,7 +103,7 @@ MainWindow::MainWindow(QWidget *parent)
     m_tabWidget->insertTab(FIT, testView, QIcon(":/images/main_jobqueue.png"), "Test");
     m_tabWidget->insertTab(TESTVIEW, testFitWidgets, QIcon(":/images/main_jobqueue.png"), "TestView");
 
-    m_tabWidget->setCurrentIndex(WELCOME);
+    m_tabWidget->setCurrentIndex(TESTVIEW);
 
     m_progressBar = new Manhattan::ProgressBar(this);
     m_tabWidget->addBottomCornerWidget(m_progressBar);