diff --git a/GUI/coregui/mainwindow/mainwindow.cpp b/GUI/coregui/mainwindow/mainwindow.cpp
index 5e4041161f598e6f2893c2b5fa41cd6fbb61d2dd..0e0c18ee1a36d6755b99c2eab81e2c311fdd3c1a 100644
--- a/GUI/coregui/mainwindow/mainwindow.cpp
+++ b/GUI/coregui/mainwindow/mainwindow.cpp
@@ -29,21 +29,29 @@
 #include "GUI/coregui/mainwindow/tooltipdatabase.h"
 #include "GUI/coregui/utils/GUIHelpers.h"
 #include "GUI/coregui/utils/hostosinfo.h"
+#include "QBoxLayout"
+#include "QButtonGroup"
+#include "QPushButton"
+#include "QStackedLayout"
+#include "QStatusBar"
+#include "QToolButton"
 #include <QAction>
 #include <QApplication>
 #include <QCloseEvent>
 #include <QMessageBox>
 #include <QProgressBar>
 #include <QSettings>
-#include <qt-manhattan-style/fancytabwidget.h>
 #include <qt-manhattan-style/stylehelper.h>
 
 MainWindow* MainWindow::s_instance = nullptr;
 
 MainWindow::MainWindow()
     : Manhattan::FancyMainWindow(nullptr)
-    , m_tabWidget(new Manhattan::FancyTabWidget(this))
     , m_progressBar(new QProgressBar)
+    , m_viewSelectionButtons(new QButtonGroup(this))
+    , m_viewSelectionButtonsLayout(new QVBoxLayout)
+    , m_viewsStack(new QStackedLayout)
+    , m_statusBar(new QStatusBar)
     , m_applicationModels(new ApplicationModels(this))
     , m_projectManager(new ProjectManager(this))
     , m_actionManager(new ActionManager(this))
@@ -56,13 +64,46 @@ MainWindow::MainWindow()
     , m_simulationView(0)
     , m_jobView(0)
     , m_sessionModelView(0) {
+
     s_instance = this;
+
+    QWidget* centralWidget = new QWidget(this);
+    QHBoxLayout* mainLayout = new QHBoxLayout(centralWidget);
+
+    m_viewSelectionButtonsLayout->setMargin(0);
+    m_viewSelectionButtonsLayout->setSpacing(0);
+
+    auto fillerButton = createViewSelectionButton();
+    fillerButton->setMinimumSize(5, 5);
+    fillerButton->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
+    fillerButton->setEnabled(false);
+    m_viewSelectionButtonsLayout->insertWidget(-1, fillerButton);
+
+    connect(m_viewSelectionButtons, QOverload<int>::of(&QButtonGroup::buttonClicked),
+            [&](int index) { m_viewsStack->setCurrentIndex(index); });
+
+    m_statusBar->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Fixed);
+
+    QVBoxLayout* vlayout = new QVBoxLayout;
+    vlayout->setMargin(0);
+    vlayout->setSpacing(0);
+    vlayout->addLayout(m_viewsStack);
+    vlayout->addWidget(m_statusBar);
+
+    mainLayout->addLayout(m_viewSelectionButtonsLayout);
+    mainLayout->addLayout(vlayout);
+
+    setCentralWidget(centralWidget);
+
     initApplication();
     readSettings();
     initProgressBar();
     initViews();
     initConnections();
 
+    ASSERT(m_viewSelectionButtons->button(ViewId::WELCOME) != nullptr);
+    m_viewSelectionButtons->button(ViewId::WELCOME)->setChecked(true);
+
     //    m_applicationModels->createTestSample();
     //    m_applicationModels->createTestJob();
     //    m_applicationModels->createTestRealData();
@@ -105,7 +146,7 @@ QProgressBar* MainWindow::progressBar() {
 }
 
 QStatusBar* MainWindow::statusBar() {
-    return m_tabWidget->statusBar();
+    return m_statusBar;
 }
 
 ProjectManager* MainWindow::projectManager() {
@@ -117,7 +158,7 @@ UpdateNotifier* MainWindow::updateNotifier() {
 }
 
 void MainWindow::onFocusRequest(int index) {
-    m_tabWidget->setCurrentIndex(index);
+    m_viewSelectionButtons->button(index)->click();
 }
 
 void MainWindow::openRecentProject() {
@@ -135,27 +176,18 @@ void MainWindow::onRunSimulationShortcut() {
     m_simulationView->onRunSimulationShortcut();
 }
 
-//! Inserts/removes developers SessionModelView on the left fancy tabbar.
-//! This SessionModelView will be known for the tab under MAXVIEWCOUNT id (so it is the last one)
+//! Inserts/removes developers SessionModelView on the left tabbar.
 void MainWindow::onSessionModelViewActive(bool isActive) {
-    if (isActive) {
-        if (m_sessionModelView)
-            return;
-        m_sessionModelView = new SessionModelView(this);
-        m_tabWidget->insertTab(MAXVIEWCOUNT, m_sessionModelView,
-                               QIcon(":/images/main_sessionmodel.svg"), "Models");
-    } else {
-        if (!m_sessionModelView)
-            return;
+    auto btn = m_viewSelectionButtons->button(ViewId::SESSIONMODEL);
+    ASSERT(btn != nullptr);
+    if (btn == nullptr)
+        return;
 
-        if (m_tabWidget->currentIndex() == MAXVIEWCOUNT)
-            m_tabWidget->setCurrentIndex(WELCOME);
+    if (!isActive && m_viewsStack->currentIndex() == SESSIONMODEL)
+        m_viewSelectionButtons->buttons().first()->click();
 
-        m_tabWidget->removeTab(MAXVIEWCOUNT);
-        delete m_sessionModelView;
-        m_sessionModelView = 0;
-        m_tabWidget->update();
-    }
+    btn->setEnabled(isActive);
+    btn->setVisible(isActive);
 }
 
 void MainWindow::closeEvent(QCloseEvent* event) {
@@ -196,7 +228,7 @@ void MainWindow::initProgressBar() {
     m_progressBar->setTextVisible(false);
     m_progressBar->setFixedHeight(10);
     m_progressBar->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Fixed);
-    m_tabWidget->addBottomCornerWidget(m_progressBar);
+    m_viewSelectionButtonsLayout->addWidget(m_progressBar);
 }
 
 void MainWindow::initViews() {
@@ -206,38 +238,34 @@ void MainWindow::initViews() {
     m_importDataView = new ImportDataView(this);
     m_simulationView = new SimulationView(this);
     m_jobView = new JobView(this);
+    m_sessionModelView = new SessionModelView(this);
 
-    m_tabWidget->insertTab(WELCOME, m_welcomeView, QIcon(":/images/main_welcomeview.svg"),
-                           "Welcome");
-    m_tabWidget->setTabToolTip(WELCOME, "Switch to Welcome View");
+    addView(ViewId::WELCOME, QIcon(":/images/main_welcomeview.svg"), "Welcome",
+            "Switch to Welcome View", m_welcomeView);
 
-    m_tabWidget->insertTab(INSTRUMENT, m_instrumentView, QIcon(":/images/main_instrumentview.svg"),
-                           "Instrument");
-    m_tabWidget->setTabToolTip(INSTRUMENT, "Define the beam and the detector");
+    addView(ViewId::INSTRUMENT, QIcon(":/images/main_instrumentview.svg"), "Instrument",
+            "Define the beam and the  detector", m_instrumentView);
 
-    m_tabWidget->insertTab(SAMPLE, m_sampleView, QIcon(":/images/main_sampleview.svg"), "Sample");
-    m_tabWidget->setTabToolTip(SAMPLE, "Build the sample");
+    addView(ViewId::SAMPLE, QIcon(":/images/main_sampleview.svg"), "Sample", "Build the sample",
+            m_sampleView);
 
-    m_tabWidget->insertTab(IMPORT, m_importDataView, QIcon(":/images/main_importview.svg"), "Data");
-    m_tabWidget->setTabToolTip(IMPORT, "Import intensity data to fit");
+    addView(ViewId::IMPORT, QIcon(":/images/main_importview.svg"), "Data",
+            "Import intensity data to fit", m_importDataView);
 
-    m_tabWidget->insertTab(SIMULATION, m_simulationView, QIcon(":/images/main_simulationview.svg"),
-                           "Simulation");
-    m_tabWidget->setTabToolTip(SIMULATION, "Run simulation");
+    addView(ViewId::SIMULATION, QIcon(":/images/main_simulationview.svg"), "Simulation",
+            "Run simulation", m_simulationView);
 
-    m_tabWidget->insertTab(JOB, m_jobView, QIcon(":/images/main_jobview.svg"), "Jobs");
-    m_tabWidget->setTabToolTip(
-        JOB, "Switch to see job results, tune parameters real time,\nfit the data");
+    addView(ViewId::JOB, QIcon(":/images/main_jobview.svg"), "Jobs",
+            "Switch to see job results, tune parameters real time,\nfit the data", m_jobView);
 
-    m_tabWidget->setCurrentIndex(WELCOME);
+    addView(ViewId::SESSIONMODEL, QIcon(":/images/main_sessionmodel.svg"), "Models", "",
+            m_sessionModelView);
 
     // enabling technical view
     QSettings settings;
     settings.beginGroup(Constants::S_SESSIONMODELVIEW);
     onSessionModelViewActive(settings.value(Constants::S_VIEWISACTIVE, false).toBool());
     settings.endGroup();
-
-    setCentralWidget(m_tabWidget);
 }
 
 void MainWindow::readSettings() {
@@ -264,3 +292,45 @@ void MainWindow::writeSettings() {
 void MainWindow::initConnections() {
     connect(m_jobView, &JobView::focusRequest, this, &MainWindow::onFocusRequest);
 }
+
+void MainWindow::addView(ViewId id, const QIcon& icon, const QString& title, const QString& tooltip,
+                         QWidget* view) {
+    QToolButton* btn = createViewSelectionButton();
+    m_viewSelectionButtonsLayout->insertWidget(id, btn);
+
+    btn->setFixedSize(70, 70); // TODO: check with High-DPI devices!
+    btn->setText(title);
+    btn->setToolTip(tooltip);
+    btn->setIcon(icon);
+    m_viewSelectionButtons->addButton(btn, id);
+
+    m_viewsStack->insertWidget(id, view);
+}
+
+QToolButton* MainWindow::createViewSelectionButton() const {
+
+    const QString viewSelectionButtonStyle =
+        "QToolButton { border: none; color: white; background-color: qlineargradient(x1: 0, "
+        "y1: 0, x2: 1, y2: 0, stop : 0 #153b4c, stop : 1 #347a9c);}        "
+        "QToolButton:pressed { "
+        " color: black; background-color: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 "
+        "#97a8b0, stop: "
+        "1 #dae7ed); }"
+        "QToolButton:hover { "
+        " color: white; background-color: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 "
+        "#254b5c, stop: 1 #448aac); }"
+        "QToolButton:checked { "
+        " color: black; background-color: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 "
+        "#97a8b0, stop: "
+        "1 #dae7ed);"
+        "} ";
+
+    QToolButton* btn = new QToolButton;
+
+    btn->setCheckable(true);
+    btn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
+    btn->setIconSize({50, 50}); // TODO: check with High-DPI devices!
+    btn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
+    btn->setStyleSheet(viewSelectionButtonStyle);
+    return btn;
+}
diff --git a/GUI/coregui/mainwindow/mainwindow.h b/GUI/coregui/mainwindow/mainwindow.h
index 7eee888290e96a3adaeaeede5e75fd2a5a28526b..d313f3a25e132ab29ea41cfa63021b6e121bb86b 100644
--- a/GUI/coregui/mainwindow/mainwindow.h
+++ b/GUI/coregui/mainwindow/mainwindow.h
@@ -17,10 +17,6 @@
 
 #include <qt-manhattan-style/fancymainwindow.h>
 
-namespace Manhattan {
-class FancyTabWidget;
-} // namespace Manhattan
-
 class WelcomeView;
 class InstrumentView;
 class SampleView;
@@ -39,13 +35,19 @@ class ProjectManager;
 class ActionManager;
 class ToolTipDataBase;
 class UpdateNotifier;
+
 class QProgressBar;
+class QButtonGroup;
+class QStackedLayout;
+class QStatusBar;
+class QToolButton;
+class QVBoxLayout;
 
 class MainWindow : public Manhattan::FancyMainWindow {
     Q_OBJECT
 
 public:
-    enum ETabViewId { WELCOME, INSTRUMENT, SAMPLE, IMPORT, SIMULATION, JOB, MAXVIEWCOUNT };
+    enum ViewId { WELCOME, INSTRUMENT, SAMPLE, IMPORT, SIMULATION, JOB, SESSIONMODEL };
 
     explicit MainWindow();
     ~MainWindow();
@@ -83,9 +85,15 @@ private:
     void readSettings();
     void writeSettings();
     void initConnections();
+    void addView(ViewId id, const QIcon& icon, const QString& title, const QString& tooltip,
+                 QWidget* view);
+    QToolButton* createViewSelectionButton() const;
 
-    Manhattan::FancyTabWidget* m_tabWidget;
     QProgressBar* m_progressBar;
+    QButtonGroup* m_viewSelectionButtons;
+    QStackedLayout* m_viewsStack;
+    QVBoxLayout* m_viewSelectionButtonsLayout;
+    QStatusBar* m_statusBar;
 
     ApplicationModels* m_applicationModels;
     ProjectManager* m_projectManager;