diff --git a/FileIO/ImportFileTypes.h b/FileIO/ImportFileTypes.h
index 84cdfc099de29016189c133e6bf85b19bbebea8f..82b5ef38d0e4e6638dd0d1bc5774c88897bab02f 100644
--- a/FileIO/ImportFileTypes.h
+++ b/FileIO/ImportFileTypes.h
@@ -24,6 +24,9 @@ public:
 
 	enum type {
 		OGS = 0,
+		OGS_GEO,
+		OGS_STN,
+		OGS_MSH,
 		FEFLOW,
 		GMS,
 		GMSH,
@@ -43,6 +46,9 @@ public:
 		else if (t==ImportFileType::GMSH) return "GMSH";
 		else if (t==ImportFileType::NETCDF) return "NetCDF";
 		else if (t==ImportFileType::OGS) return "OGS";
+		else if (t==ImportFileType::OGS_GEO) return "OGS geometry";
+		else if (t==ImportFileType::OGS_STN) return "OGS station list";
+		else if (t==ImportFileType::OGS_MSH) return "OGS mesh";
 		else if (t==ImportFileType::PETREL) return "Petrel";
 		else if((t==ImportFileType::RASTER) || (t==ImportFileType::POLYRASTER)) return "Raster";
 		else if (t==ImportFileType::SHAPE) return "Shape";
@@ -63,6 +69,12 @@ public:
 			return "NetCDF files (*.nc)";
 		else if (t==ImportFileType::OGS)
 			return "OpenGeosys files (*.gsp *.gml *.vtu *.stn);;GeoSys legacy files (*.gli *.msh);;GeoSys FEM Conditions (*.cnd *.bc *.ic *.st);;All files (* *.*)";
+		else if (t==ImportFileType::OGS_GEO)
+			return "OpenGeosys files (*.gml *.gli)";
+		else if (t==ImportFileType::OGS_STN)
+			return "OpenGeosys files (*.stn)";
+		else if (t==ImportFileType::OGS_MSH)
+			return "OpenGeosys files (*.vtu *.msh)";
 		else if (t==ImportFileType::PETREL)
 			return "Petrel files (*)";
 		else if (t==ImportFileType::RASTER)
diff --git a/Gui/DataView/GeoTabWidget.cpp b/Gui/DataView/GeoTabWidget.cpp
index 03912716d55494579beb8b431044740f2bea9a7d..8e22b64da8eac95d1e94ddedcb36dcd015231cbc 100644
--- a/Gui/DataView/GeoTabWidget.cpp
+++ b/Gui/DataView/GeoTabWidget.cpp
@@ -16,4 +16,10 @@ GeoTabWidget::GeoTabWidget( QWidget* parent /*= 0*/ )
 	: QWidget(parent)
 {
 	setupUi(this);
+
+	connect(this->openGeoPushButton, SIGNAL(clicked()), this->treeView, SLOT(addGeometry()));
+	connect(this->saveGeoPushButton, SIGNAL(clicked()), this->treeView, SLOT(writeToFile()));
+	connect(this->removeGeoPushButton, SIGNAL(clicked()), this->treeView, SLOT(removeGeometry()));
+	connect(this->treeView, SIGNAL(enableSaveButton(bool)), this, SLOT(enableSaveButton(bool)));
+	connect(this->treeView, SIGNAL(enableRemoveButton(bool)), this, SLOT(enableRemoveButton(bool)));
 }
diff --git a/Gui/DataView/GeoTabWidget.h b/Gui/DataView/GeoTabWidget.h
index 21697d1f497fc1bae7bd1636d13edf14d5d52fe9..bf763204625cd2892fa35c584bf70adb258aa224 100644
--- a/Gui/DataView/GeoTabWidget.h
+++ b/Gui/DataView/GeoTabWidget.h
@@ -26,6 +26,11 @@ public:
 	GeoTabWidget(QWidget* parent = 0);
 
 private:
+
+private slots:
+	void enableSaveButton(bool enable) { this->saveGeoPushButton->setEnabled(enable); };
+	void enableRemoveButton(bool enable) { this->removeGeoPushButton->setEnabled(enable); };
+
 };
 
 #endif // GEOTABWIDGET_H
diff --git a/Gui/DataView/GeoTabWidgetBase.ui b/Gui/DataView/GeoTabWidgetBase.ui
index 6dce56723bf7bd20c03ef8b6b9e300a44b40e023..e556afe7731fc88040b074aa3b6c9fd75b3fcbe9 100644
--- a/Gui/DataView/GeoTabWidgetBase.ui
+++ b/Gui/DataView/GeoTabWidgetBase.ui
@@ -17,6 +17,125 @@
    <property name="margin">
     <number>2</number>
    </property>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QPushButton" name="openGeoPushButton">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>24</width>
+         <height>24</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>24</width>
+         <height>24</height>
+        </size>
+       </property>
+       <property name="toolTip">
+        <string>Open geometry...</string>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+       <property name="icon">
+        <iconset resource="../Img/icons.qrc">
+         <normaloff>:/Images/open-icon.png</normaloff>:/Images/open-icon.png</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="saveGeoPushButton">
+       <property name="enabled">
+        <bool>false</bool>
+       </property>
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>24</width>
+         <height>24</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>24</width>
+         <height>24</height>
+        </size>
+       </property>
+       <property name="toolTip">
+        <string>Save geometry...</string>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+       <property name="icon">
+        <iconset resource="../Img/icons.qrc">
+         <normaloff>:/Images/save-icon.png</normaloff>:/Images/save-icon.png</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="removeGeoPushButton">
+       <property name="enabled">
+        <bool>false</bool>
+       </property>
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>24</width>
+         <height>24</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>24</width>
+         <height>24</height>
+        </size>
+       </property>
+       <property name="toolTip">
+        <string>Remove geometry</string>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+       <property name="icon">
+        <iconset resource="../Img/icons.qrc">
+         <normaloff>:/Images/delete-icon.png</normaloff>:/Images/delete-icon.png</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
    <item>
     <widget class="GeoTreeView" name="treeView"/>
    </item>
@@ -29,6 +148,8 @@
    <header>GeoTreeView.h</header>
   </customwidget>
  </customwidgets>
- <resources/>
+ <resources>
+  <include location="../Img/icons.qrc"/>
+ </resources>
  <connections/>
 </ui>
diff --git a/Gui/DataView/GeoTreeView.cpp b/Gui/DataView/GeoTreeView.cpp
index 99400ced283f2c77bd6311a33da74c13a398171a..e0253d2e73ac10fc2fc4b1fe081733591cb9b701 100644
--- a/Gui/DataView/GeoTreeView.cpp
+++ b/Gui/DataView/GeoTreeView.cpp
@@ -11,6 +11,7 @@
 
 #include <QFileDialog>
 #include <QMenu>
+#include <QSettings>
 #include <iostream>
 
 #include "GeoObjectListItem.h"
@@ -18,7 +19,7 @@
 #include "GeoTreeModel.h"
 #include "GeoTreeView.h"
 #include "OGSError.h"
-
+#include "ImportFileTypes.h"
 
 GeoTreeView::GeoTreeView(QWidget* parent) : QTreeView(parent)
 {
@@ -49,9 +50,20 @@ void GeoTreeView::selectionChanged( const QItemSelection &selected,
 
 		const GeoObjectListItem* list_item = dynamic_cast<GeoObjectListItem*>(tree_item->parentItem());
 		if (list_item)
+		{
+			emit enableSaveButton(false);
+			emit enableRemoveButton(false);
 			emit geoItemSelected(list_item->vtkSource(), tree_item->row());
+		}
 		else
+		{
+			emit enableRemoveButton(true);
 			emit removeGeoItemSelection();
+			if (!idx.parent().isValid())
+				emit enableSaveButton(true);
+			else
+				emit enableSaveButton(false);
+		}
 	}
 	//emit itemSelectionChanged(selected, deselected);
 	//return QTreeView::selectionChanged(selected, deselected);
@@ -121,17 +133,17 @@ void GeoTreeView::contextMenuEvent( QContextMenuEvent* event )
 		{
 			if (item->child(0)->data(0).toString().compare("Points") == 0) // clumsy way to find out
 			{
-				QAction* saveAction = menu.addAction("Save geometry...");
+				//QAction* saveAction = menu.addAction("Save geometry...");
 				QAction* mapAction = menu.addAction("Map geometry...");
 				QAction* addCNDAction = menu.addAction("Load FEM Conditions...");
 				//QAction* saveCondAction    = menu.addAction("Save FEM conditions...");
 				menu.addSeparator();
-				QAction* removeAction = menu.addAction("Remove geometry");
-				connect(saveAction, SIGNAL(triggered()), this, SLOT(writeToFile()));
+				//QAction* removeAction = menu.addAction("Remove geometry");
+				//connect(saveAction, SIGNAL(triggered()), this, SLOT(writeToFile()));
 				connect(mapAction, SIGNAL(triggered()), this, SLOT(mapGeometry()));
 				connect(addCNDAction, SIGNAL(triggered()), this, SLOT(loadFEMConditions()));
 				//connect(saveCondAction, SIGNAL(triggered()), this, SLOT(saveFEMConditions()));
-				connect(removeAction, SIGNAL(triggered()), this, SLOT(removeList()));
+				//connect(removeAction, SIGNAL(triggered()), this, SLOT(removeList()));
 			}
 		}
 	}
@@ -146,17 +158,26 @@ void GeoTreeView::connectPolylines()
 	emit requestLineEditDialog(item->data(0).toString().toStdString());
 }
 
-void GeoTreeView::removeList()
+void GeoTreeView::addGeometry()
 {
-	TreeItem* item = static_cast<GeoTreeModel*>(model())->getItem(
-	        this->selectionModel()->currentIndex());
+	emit openGeometryFile(ImportFileType::OGS_GEO);
+}
 
-	GeoObjectListItem* list = dynamic_cast<GeoObjectListItem*>(item);
-	if (list)
-		emit listRemoved((item->parentItem()->data(
-		                          0).toString()).toStdString(), list->getType());
+void GeoTreeView::removeGeometry()
+{
+	QModelIndex index (this->selectionModel()->currentIndex());
+	if (!index.isValid())
+		OGSError::box("No geometry selected.");
 	else
-		emit listRemoved((item->data(0).toString()).toStdString(), GeoLib::INVALID);
+	{
+		TreeItem* item = static_cast<GeoTreeModel*>(model())->getItem(index);
+		GeoObjectListItem* list = dynamic_cast<GeoObjectListItem*>(item);
+		if (list)
+			emit listRemoved((item->parentItem()->data(
+									  0).toString()).toStdString(), list->getType());
+		else
+			emit listRemoved((item->data(0).toString()).toStdString(), GeoLib::INVALID);
+	}
 }
 
 void GeoTreeView::setElementAsCondition(bool set_on_points)
@@ -189,13 +210,18 @@ void GeoTreeView::mapGeometry()
 
 void GeoTreeView::writeToFile() const
 {
-	TreeItem* item = static_cast<GeoTreeModel*>(model())->getItem(
-	        this->selectionModel()->currentIndex());
-	QString gliName = item->data(0).toString();
-	QString fileName = QFileDialog::getSaveFileName(NULL,
-						"Save geometry as", gliName, "GeoSys geometry file (*.gml)");
-	if (!fileName.isEmpty())
-		emit saveToFileRequested(gliName, fileName);
+	QModelIndex index (this->selectionModel()->currentIndex());
+	if (!index.isValid())
+		OGSError::box("No geometry selected.");
+	else
+	{
+		TreeItem* item = static_cast<GeoTreeModel*>(model())->getItem(index);
+		QString geoName = item->data(0).toString();
+		QString fileName = QFileDialog::getSaveFileName(NULL,
+							"Save geometry as", geoName, "GeoSys geometry file (*.gml)");
+		if (!fileName.isEmpty())
+			emit saveToFileRequested(geoName, fileName);
+	}
 }
 
 void GeoTreeView::loadFEMConditions()
diff --git a/Gui/DataView/GeoTreeView.h b/Gui/DataView/GeoTreeView.h
index 2e00a7f5d5d7fa21d2ca9b00c0d7cd3a37c233a7..437f930af14ffdc93204da016e3bda5520816755 100644
--- a/Gui/DataView/GeoTreeView.h
+++ b/Gui/DataView/GeoTreeView.h
@@ -13,6 +13,7 @@
 #define GEOTREEVIEW_H
 
 #include "GeoType.h"
+
 #include <QContextMenuEvent>
 #include <QTreeView>
 
@@ -48,6 +49,7 @@ private:
 	void setElementAsCondition(bool set_on_points = false);
 
 private slots:
+	void addGeometry();
 	/// Allows to add FEM Conditions to a process
 	void loadFEMConditions();
 	void on_Clicked(QModelIndex idx);
@@ -61,17 +63,20 @@ private slots:
 	/// Saves a geometry in a file.
 	void writeToFile() const;
 	/// Removes a whole geometry or parts of it.
-	void removeList();
+	void removeGeometry();
 	/// Saves FEM Conditions associated with the given geometry
 	//void saveFEMConditions();
 
 signals:
+	void enableSaveButton(bool);
+	void enableRemoveButton(bool);
 	void geoItemSelected(const vtkPolyDataAlgorithm*, int);
 	void geometryMappingRequested(const std::string&);
 	void removeGeoItemSelection();
 	//void itemSelectionChanged(const QItemSelection & selected, const QItemSelection & deselected);
 	void listRemoved(std::string name, GeoLib::GEOTYPE);
 	void loadFEMCondFileRequested(std::string);
+	void openGeometryFile(int);
 	void saveToFileRequested(QString, QString) const;
 	void requestCondSetupDialog(const std::string&, const GeoLib::GEOTYPE, const std::size_t, bool on_points);
 	void requestLineEditDialog(const std::string&);
diff --git a/Gui/DataView/MshTabWidget.cpp b/Gui/DataView/MshTabWidget.cpp
index bcaf875c830d276527c1862e1022affa66745e6f..f4e8ade653fdac538f62c88c7a97b5f7e31661a8 100644
--- a/Gui/DataView/MshTabWidget.cpp
+++ b/Gui/DataView/MshTabWidget.cpp
@@ -17,8 +17,10 @@ MshTabWidget::MshTabWidget( QWidget* parent /*= 0*/ )
 {
 	setupUi(this);
 
-	connect(this->addMeshPushButton, SIGNAL(clicked()), this->treeView, SLOT(addMeshAction()));
-	connect(this->saveMeshPushButton, SIGNAL(clicked()), this->treeView, SLOT(writeMeshToFile()));
+	connect(this->addMeshPushButton, SIGNAL(clicked()), this->treeView, SLOT(addMesh()));
+	connect(this->saveMeshPushButton, SIGNAL(clicked()), this->treeView, SLOT(writeToFile()));
 	connect(this->removeMeshPushButton, SIGNAL(clicked()), this->treeView, SLOT(removeMesh()));
 	//connect(this->clearAllPushButton, SIGNAL(clicked()), this->treeView, SLOT(removeAllMeshes()));
+	connect(this->treeView, SIGNAL(enableSaveButton(bool)), this, SLOT(enableSaveButton(bool)));
+	connect(this->treeView, SIGNAL(enableRemoveButton(bool)), this, SLOT(enableRemoveButton(bool)));
 }
diff --git a/Gui/DataView/MshTabWidget.h b/Gui/DataView/MshTabWidget.h
index 71b411d416260b3a32f8c3ae9bf38fc68a23902e..7bf3a2b200cb8ea922940de71265d9d6fc43ff84 100644
--- a/Gui/DataView/MshTabWidget.h
+++ b/Gui/DataView/MshTabWidget.h
@@ -24,6 +24,10 @@ class MshTabWidget : public QWidget, public Ui_MshTabWidgetBase
 
 public:
 	MshTabWidget(QWidget* parent = 0);
+
+private slots:
+	void enableSaveButton(bool enable) { this->saveMeshPushButton->setEnabled(enable); };
+	void enableRemoveButton(bool enable) { this->removeMeshPushButton->setEnabled(enable); };
 };
 
 #endif // MSHTABWIDGET_H
diff --git a/Gui/DataView/MshTabWidgetBase.ui b/Gui/DataView/MshTabWidgetBase.ui
index 4cc6999aba6c7128257a970f68ae11c1ea6e9f63..17885a9659558791dd419958834ffa1e53f32e2b 100644
--- a/Gui/DataView/MshTabWidgetBase.ui
+++ b/Gui/DataView/MshTabWidgetBase.ui
@@ -21,58 +21,103 @@
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <widget class="QPushButton" name="addMeshPushButton">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
        <property name="minimumSize">
         <size>
-         <width>50</width>
-         <height>0</height>
+         <width>24</width>
+         <height>24</height>
         </size>
        </property>
        <property name="maximumSize">
         <size>
-         <width>50</width>
-         <height>16777215</height>
+         <width>24</width>
+         <height>24</height>
         </size>
        </property>
+       <property name="toolTip">
+        <string>Open mesh...</string>
+       </property>
        <property name="text">
-        <string>Add</string>
+        <string/>
+       </property>
+       <property name="icon">
+        <iconset resource="../Img/icons.qrc">
+         <normaloff>:/Images/open-icon.png</normaloff>:/Images/open-icon.png</iconset>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QPushButton" name="saveMeshPushButton">
+       <property name="enabled">
+        <bool>false</bool>
+       </property>
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
        <property name="minimumSize">
         <size>
-         <width>50</width>
-         <height>0</height>
+         <width>24</width>
+         <height>24</height>
         </size>
        </property>
        <property name="maximumSize">
         <size>
-         <width>50</width>
-         <height>16777215</height>
+         <width>24</width>
+         <height>24</height>
         </size>
        </property>
+       <property name="toolTip">
+        <string>Save mesh...</string>
+       </property>
        <property name="text">
-        <string>Save</string>
+        <string/>
+       </property>
+       <property name="icon">
+        <iconset resource="../Img/icons.qrc">
+         <normaloff>:/Images/save-icon.png</normaloff>:/Images/save-icon.png</iconset>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QPushButton" name="removeMeshPushButton">
+       <property name="enabled">
+        <bool>false</bool>
+       </property>
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
        <property name="minimumSize">
         <size>
-         <width>50</width>
-         <height>0</height>
+         <width>24</width>
+         <height>24</height>
         </size>
        </property>
        <property name="maximumSize">
         <size>
-         <width>50</width>
-         <height>16777215</height>
+         <width>24</width>
+         <height>24</height>
         </size>
        </property>
+       <property name="toolTip">
+        <string>Remove mesh</string>
+       </property>
        <property name="text">
-        <string>Remove</string>
+        <string/>
+       </property>
+       <property name="icon">
+        <iconset resource="../Img/icons.qrc">
+         <normaloff>:/Images/delete-icon.png</normaloff>:/Images/delete-icon.png</iconset>
        </property>
       </widget>
      </item>
@@ -136,6 +181,8 @@
    <header>MshView.h</header>
   </customwidget>
  </customwidgets>
- <resources/>
+ <resources>
+  <include location="../Img/icons.qrc"/>
+ </resources>
  <connections/>
 </ui>
diff --git a/Gui/DataView/MshView.cpp b/Gui/DataView/MshView.cpp
index a56acffb0751753ccd8f10744085b32f2f5da807..be9b29eb7652648449a947240d0619eaa2a94c85 100644
--- a/Gui/DataView/MshView.cpp
+++ b/Gui/DataView/MshView.cpp
@@ -15,6 +15,7 @@
 #include "MshItem.h"
 #include "MshModel.h"
 #include "OGSError.h"
+#include "ImportFileTypes.h"
 #include <QHeaderView>
 
 #include "VtkMeshSource.h"
@@ -49,25 +50,32 @@ void MshView::updateView()
 		resizeColumnToContents(i);
 }
 
-void MshView::addMeshAction()
+void MshView::selectionChanged( const QItemSelection &selected, const QItemSelection &deselected )
 {
-	QSettings settings;
-	QString fileName =
-	        QFileDialog::getOpenFileName(this, "Select mesh file", settings.value(
-	                                             "lastOpenedFileDirectory").toString(),
-	                                     "OpenGeosys mesh files (*.vtu *.msh);;All files (* *.*)");
-	if (!fileName.isEmpty())
+	Q_UNUSED(deselected);
+	if (!selected.isEmpty())
 	{
-		std::string name = fileName.toStdString();
-		FileIO::MeshIO meshIO;
-		MeshLib::Mesh* msh = meshIO.loadMeshFromFile(name);
-		if (msh)
+		const QModelIndex idx = *(selected.indexes().begin());
+		const TreeItem* tree_item = static_cast<TreeModel*>(this->model())->getItem(idx);
+
+		const MshItem* list_item = dynamic_cast<const MshItem*>(tree_item);
+		if (list_item)
 		{
-			static_cast<MshModel*>(this->model())->addMesh(msh);
-			QDir dir = QDir(fileName);
-			settings.setValue("lastOpenedFileDirectory", dir.absolutePath());
+			emit enableSaveButton(true);
+			emit enableRemoveButton(true);
+		}
+		else
+		{
+			emit enableSaveButton(false);
+			emit enableRemoveButton(false);
 		}
 	}
+	//emit itemSelectionChanged(selected, deselected);
+	//return QTreeView::selectionChanged(selected, deselected);
+}
+void MshView::addMesh()
+{
+	emit openMeshFile(ImportFileType::OGS_MSH);
 }
 
 void MshView::removeMesh()
@@ -131,7 +139,7 @@ void MshView::openMshEditDialog()
 	meshEdit.exec();
 }
 
-int MshView::writeMeshToFile() const
+int MshView::writeToFile() const
 {
 	QModelIndex index = this->selectionModel()->currentIndex();
 
@@ -201,12 +209,6 @@ void MshView::checkMeshQuality ()
 }
 
 /*
-   void DataView::selectionChanged( const QItemSelection &selected, const QItemSelection &deselected )
-   {
-    emit itemSelectionChanged(selected, deselected);
-    return QTreeView::selectionChanged(selected, deselected);
-   }
-
    void DataView::selectionChangedFromOutside( const QItemSelection &selected, const QItemSelection &deselected )
    {
     QItemSelectionModel* selModel = this->selectionModel();
diff --git a/Gui/DataView/MshView.h b/Gui/DataView/MshView.h
index 356437b8b9b0064bb1425147fd967e62dd3d6dbc..b03c0db719e57ac45725780b7491161b8e59f0e5 100644
--- a/Gui/DataView/MshView.h
+++ b/Gui/DataView/MshView.h
@@ -42,9 +42,8 @@ public slots:
 	void updateView();
 
 protected slots:
-	/// Is called when the selection of this view changes. Emits a the signal
-	/// itemSelectionChanged()
-	//void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
+	/// Is called when the selection of this view changes. 
+	void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
 
 	/// Selects items without sending signals.
 	//void selectionChangedFromOutside(const QItemSelection &selected,
@@ -61,7 +60,7 @@ private slots:
 	void openMshEditDialog();
 
 	/// Adds a new mesh.
-	void addMeshAction();
+	void addMesh();
 
 	void addDIRECTSourceTerms();
 
@@ -74,7 +73,7 @@ private slots:
 	//void removeAllMeshes();
 
 	/// Calls the FileDialog to save a mesh to a file.
-	int writeMeshToFile() const;
+	int writeToFile() const;
 
 	/**
 	 * checks the mesh quality
@@ -82,6 +81,9 @@ private slots:
 	void checkMeshQuality();
 
 signals:
+	void enableSaveButton(bool);
+	void enableRemoveButton(bool);
+	void openMeshFile(int);
 	void qualityCheckRequested(VtkMeshSource*);
 	void requestCondSetupDialog(const std::string&, const GeoLib::GEOTYPE, const std::size_t, bool on_points);
 	void requestMeshRemoval(const QModelIndex&);
@@ -91,7 +93,7 @@ signals:
 /*
     void itemSelectionChanged(const QItemSelection &selected,
         const QItemSelection &deselected);
-    void itemSelectionChangedFromOutside(const QItemSelection &selected,
+    //void itemSelectionChangedFromOutside(const QItemSelection &selected,
         const QItemSelection &deselected);
  */
 };
diff --git a/Gui/DataView/StationTabWidget.cpp b/Gui/DataView/StationTabWidget.cpp
index a159b1fd5871f7bfb6a1e969f569e1025845b773..3a08a342d4eb6208d8c0cd17318b18e6772e9ee1 100644
--- a/Gui/DataView/StationTabWidget.cpp
+++ b/Gui/DataView/StationTabWidget.cpp
@@ -16,4 +16,10 @@ StationTabWidget::StationTabWidget( QWidget* parent /*= 0*/ )
 	: QWidget(parent)
 {
 	setupUi(this);
+
+	connect(this->openStnPushButton, SIGNAL(clicked()), this->treeView, SLOT(addStationList()));
+	connect(this->saveStnPushButton, SIGNAL(clicked()), this->treeView, SLOT(writeToFile()));
+	connect(this->removeStnPushButton, SIGNAL(clicked()), this->treeView, SLOT(removeStationList()));
+	connect(this->treeView, SIGNAL(enableSaveButton(bool)), this, SLOT(enableSaveButton(bool)));
+	connect(this->treeView, SIGNAL(enableRemoveButton(bool)), this, SLOT(enableRemoveButton(bool)));
 }
diff --git a/Gui/DataView/StationTabWidget.h b/Gui/DataView/StationTabWidget.h
index 093e6316842b60f3fc2ae955e6be1dcc9c784772..2ca5c415133c801aaf3e36621af5bfd40497b82a 100644
--- a/Gui/DataView/StationTabWidget.h
+++ b/Gui/DataView/StationTabWidget.h
@@ -26,6 +26,10 @@ public:
 	StationTabWidget(QWidget* parent = 0);
 
 private:
+
+private slots:
+	void enableSaveButton(bool enable) { this->saveStnPushButton->setEnabled(enable); };
+	void enableRemoveButton(bool enable) { this->removeStnPushButton->setEnabled(enable); };
 };
 
 #endif // STATIONTABWIDGET_H
diff --git a/Gui/DataView/StationTabWidgetBase.ui b/Gui/DataView/StationTabWidgetBase.ui
index d1badedab01a12f4430238d2899b82b53f60fe6a..fa44ece4953a4731e366eed65a30569ef39f841e 100644
--- a/Gui/DataView/StationTabWidgetBase.ui
+++ b/Gui/DataView/StationTabWidgetBase.ui
@@ -17,6 +17,125 @@
    <property name="margin">
     <number>2</number>
    </property>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QPushButton" name="openStnPushButton">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>24</width>
+         <height>24</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>24</width>
+         <height>24</height>
+        </size>
+       </property>
+       <property name="toolTip">
+        <string>Open observation sites...</string>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+       <property name="icon">
+        <iconset resource="../Img/icons.qrc">
+         <normaloff>:/Images/open-icon.png</normaloff>:/Images/open-icon.png</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="saveStnPushButton">
+       <property name="enabled">
+        <bool>false</bool>
+       </property>
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>24</width>
+         <height>24</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>24</width>
+         <height>24</height>
+        </size>
+       </property>
+       <property name="toolTip">
+        <string>Save observation sites...</string>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+       <property name="icon">
+        <iconset resource="../Img/icons.qrc">
+         <normaloff>:/Images/save-icon.png</normaloff>:/Images/save-icon.png</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="removeStnPushButton">
+       <property name="enabled">
+        <bool>false</bool>
+       </property>
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>24</width>
+         <height>24</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>24</width>
+         <height>24</height>
+        </size>
+       </property>
+       <property name="toolTip">
+        <string>Remove observation sites</string>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+       <property name="icon">
+        <iconset resource="../Img/icons.qrc">
+         <normaloff>:/Images/delete-icon.png</normaloff>:/Images/delete-icon.png</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
    <item>
     <widget class="StationTreeView" name="treeView"/>
    </item>
@@ -29,6 +148,8 @@
    <header>StationTreeView.h</header>
   </customwidget>
  </customwidgets>
- <resources/>
+ <resources>
+  <include location="../Img/icons.qrc"/>
+ </resources>
  <connections/>
 </ui>
diff --git a/Gui/DataView/StationTreeView.cpp b/Gui/DataView/StationTreeView.cpp
index 2cb476f23697fbe040c5ae2aa6eae15e4efd97f5..979fac8f734e88c05fd749c5736b41da7701a21e 100644
--- a/Gui/DataView/StationTreeView.cpp
+++ b/Gui/DataView/StationTreeView.cpp
@@ -22,6 +22,7 @@
 #include "StationTreeModel.h"
 #include "StationTreeView.h"
 #include "StratWindow.h"
+#include "ImportFileTypes.h"
 
 StationTreeView::StationTreeView(QWidget* parent) : QTreeView(parent)
 {
@@ -37,16 +38,29 @@ void StationTreeView::updateView()
 	setColumnWidth(2,50);
 }
 
-void StationTreeView::on_Clicked(QModelIndex idx)
-{
-	qDebug("%d, %d",idx.parent().row(), idx.row());
-}
-
 void StationTreeView::selectionChanged( const QItemSelection &selected,
                                         const QItemSelection &deselected )
 {
-	emit itemSelectionChanged(selected, deselected);
-	return QTreeView::selectionChanged(selected, deselected);
+	Q_UNUSED(deselected);
+	if (!selected.isEmpty())
+	{
+		const QModelIndex idx = *(selected.indexes().begin());
+		const TreeItem* tree_item = static_cast<TreeModel*>(this->model())->getItem(idx);
+
+		const ModelTreeItem* list_item = dynamic_cast<const ModelTreeItem*>(tree_item);
+		if (list_item->getItem())
+		{
+			emit enableSaveButton(true);
+			emit enableRemoveButton(true);
+		}
+		else
+		{
+			emit enableRemoveButton(false);
+			emit enableSaveButton(false);
+		}
+	}
+	//emit itemSelectionChanged(selected, deselected);
+	//return QTreeView::selectionChanged(selected, deselected);
 }
 
 void StationTreeView::selectionChangedFromOutside( const QItemSelection &selected,
@@ -76,14 +90,14 @@ void StationTreeView::contextMenuEvent( QContextMenuEvent* event )
 		QMenu menu;
 		QAction* propertyAction = menu.addAction("Display list properties...");
 		QAction* exportAction   = menu.addAction("Export to GMS...");
-		QAction* saveAction   = menu.addAction("Save to file...");
+		//QAction* saveAction   = menu.addAction("Save to file...");
 		menu.addSeparator();
-		QAction* removeAction   = menu.addAction("Remove station list");
+		//QAction* removeAction   = menu.addAction("Remove station list");
 
 		connect(propertyAction, SIGNAL(triggered()), this, SLOT(showPropertiesDialog()));
 		connect(exportAction,   SIGNAL(triggered()), this, SLOT(exportList()));
-		connect(saveAction,   SIGNAL(triggered()), this, SLOT(saveList()));
-		connect(removeAction,   SIGNAL(triggered()), this, SLOT(removeStationList()));
+		//connect(saveAction,   SIGNAL(triggered()), this, SLOT(saveList()));
+		//connect(removeAction,   SIGNAL(triggered()), this, SLOT(removeStationList()));
 		menu.exec(event->globalPos());
 	}
 	// The current index refers to a station object
@@ -138,14 +152,24 @@ void StationTreeView::displayStratigraphy()
 	stratView->show();
 }
 
-void StationTreeView::saveList()
+void StationTreeView::addStationList()
 {
-	TreeItem* item = static_cast<StationTreeModel*>(model())->getItem(
-	        this->selectionModel()->currentIndex());
-	QString listName = item->data(0).toString();
-	QString fileName = QFileDialog::getSaveFileName(this, "Save station list", "","*.stn");
-	if (!fileName.isEmpty())
-		emit stationListSaved(listName, fileName);
+	emit openStationListFile(ImportFileType::OGS_STN);
+}
+
+void StationTreeView::writeToFile()
+{
+	QModelIndex index (this->selectionModel()->currentIndex());
+	if (!index.isValid())
+		OGSError::box("No station list selected.");
+	else
+	{
+		TreeItem* item = static_cast<StationTreeModel*>(model())->getItem(index);
+		QString listName = item->data(0).toString();
+		QString fileName = QFileDialog::getSaveFileName(this, "Save station list", "","*.stn");
+		if (!fileName.isEmpty())
+			emit stationListSaved(listName, fileName);
+	}
 }
 
 void StationTreeView::exportList()
@@ -188,9 +212,14 @@ void StationTreeView::exportStation()
 
 void StationTreeView::removeStationList()
 {
-	TreeItem* item = static_cast<StationTreeModel*>(model())->getItem(
-	        this->selectionModel()->currentIndex());
-	emit stationListRemoved((item->data(0).toString()).toStdString());
+	QModelIndex index (this->selectionModel()->currentIndex());
+	if (!index.isValid())
+		OGSError::box("No station list selected.");
+	else
+	{
+		TreeItem* item = static_cast<StationTreeModel*>(model())->getItem(index);
+		emit stationListRemoved((item->data(0).toString()).toStdString());
+	}
 }
 
 void StationTreeView::showPropertiesDialog()
diff --git a/Gui/DataView/StationTreeView.h b/Gui/DataView/StationTreeView.h
index 47fe2a6422935eed16e5455553de805642226428..78a10b3e37a272421e37ad3232b8320d668eecc9 100644
--- a/Gui/DataView/StationTreeView.h
+++ b/Gui/DataView/StationTreeView.h
@@ -52,18 +52,21 @@ private:
 	void writeStratigraphiesAsImages(QString listName);
 
 private slots:
-	void on_Clicked(QModelIndex idx);
+	void addStationList();
 	void displayStratigraphy();
 	void exportList();
 	void exportStation();
 	void removeStationList();
-	void saveList();
+	void writeToFile();
 	void showPropertiesDialog();
 	void showDiagramPrefsDialog();
 
 signals:
+	void enableSaveButton(bool);
+	void enableRemoveButton(bool);
 	void itemSelectionChanged(const QItemSelection & selected,
 	                          const QItemSelection & deselected);
+	void openStationListFile(int);
 	void propertiesDialogRequested(std::string name);
 	void stationListExportRequested(std::string listName, std::string fileName);
 	void stationListRemoved(std::string name);
diff --git a/Gui/Img/delete-icon.png b/Gui/Img/delete-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..253482309d9ec26559fc2bf435e9afdea6158bec
Binary files /dev/null and b/Gui/Img/delete-icon.png differ
diff --git a/Gui/Img/icons.qrc b/Gui/Img/icons.qrc
index 9992a4241c77b456cf7914dc25633517abea7685..29045b759cf1c44de22b8f48fa188abc6bef9566 100644
--- a/Gui/Img/icons.qrc
+++ b/Gui/Img/icons.qrc
@@ -1,5 +1,9 @@
 <RCC>
   <qresource prefix="Images">
+    <file>refresh-icon.png</file>
+    <file>delete-icon.png</file>
+    <file>open-icon.png</file>
+    <file>save-icon.png</file>
     <file>icon_glass_active.png</file>
     <file>icon_hlight_active.png</file>
     <file>icon_persp_active.png</file>
diff --git a/Gui/Img/open-icon.png b/Gui/Img/open-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..ff530540af800bdf778d99a4f1688527574a6150
Binary files /dev/null and b/Gui/Img/open-icon.png differ
diff --git a/Gui/Img/oxygen.icons b/Gui/Img/oxygen.icons
new file mode 100644
index 0000000000000000000000000000000000000000..c27544e010fc3fe5e3816527aef5ba0d14bad08c
--- /dev/null
+++ b/Gui/Img/oxygen.icons
@@ -0,0 +1 @@
+http://www.iconarchive.com/show/oxygen-icons-by-oxygen-icons.org.html
\ No newline at end of file
diff --git a/Gui/Img/refresh-icon.png b/Gui/Img/refresh-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..f0abac679939bd59d71d556a11cfde6dacc9550f
Binary files /dev/null and b/Gui/Img/refresh-icon.png differ
diff --git a/Gui/Img/save-icon.png b/Gui/Img/save-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..46e5e207b0883491221e6cfbca66982df3f66087
Binary files /dev/null and b/Gui/Img/save-icon.png differ
diff --git a/Gui/VtkAct/VtkCustomInteractorStyle.cpp b/Gui/VtkAct/VtkCustomInteractorStyle.cpp
index 3e7988fbd92d730ba8c253f57f7f52421fcc96d3..4596fbb44aff667c9b039c3c6bc82ddc511f4e59 100644
--- a/Gui/VtkAct/VtkCustomInteractorStyle.cpp
+++ b/Gui/VtkAct/VtkCustomInteractorStyle.cpp
@@ -177,10 +177,7 @@ void VtkCustomInteractorStyle::OnLeftButtonDown()
 			          << " cells in the selection." << std::endl;
 
 			// check if the underlying object is a mesh and if so, send a signal to the element model for display of information about the picked element.
-			vtkAlgorithm* data_set =
-			        picker->GetActor()->GetMapper()->GetInputConnection(0,
-			                                                            0)->GetProducer()
-			        ->GetInputConnection(0,0)->GetProducer();
+			vtkAlgorithm* data_set = picker->GetActor()->GetMapper()->GetInputConnection(0, 0)->GetProducer()->GetInputConnection(0,0)->GetProducer();
 			VtkMeshSource* source = dynamic_cast<VtkMeshSource*>(data_set);
 			if (source)
 				emit elementPicked(source->GetMesh(), picker->GetCellId());
diff --git a/Gui/VtkVis/VtkAlgorithmProperties.cpp b/Gui/VtkVis/VtkAlgorithmProperties.cpp
index f5840196c2936b05326bf2f1e1d18a54bf95ed7d..88d7f84bcde2fe4325e2e8a95ccf85da5bc00c1a 100644
--- a/Gui/VtkVis/VtkAlgorithmProperties.cpp
+++ b/Gui/VtkVis/VtkAlgorithmProperties.cpp
@@ -51,18 +51,23 @@ vtkLookupTable* VtkAlgorithmProperties::GetLookupTable(const QString& array_name
 		return NULL;
 }
 
+void VtkAlgorithmProperties::RemoveLookupTable(const QString& array_name)
+{
+	std::map<QString, vtkLookupTable*>::iterator it = _lut.find(array_name);
+	if (it != _lut.end())
+	{
+		it->second->Delete();
+		_lut.erase(it);
+	}
+}
+
 void VtkAlgorithmProperties::SetLookUpTable(const QString &array_name, vtkLookupTable* lut)
 {
 	lut->Build();
 
 	if (array_name.length() > 0)
 	{
-		std::map<QString, vtkLookupTable*>::iterator it = _lut.find(array_name);
-		if (it != _lut.end())
-		{
-			it->second->Delete();
-			_lut.erase(it);
-		}
+		this->RemoveLookupTable(array_name);
 		_lut.insert( std::pair<QString, vtkLookupTable*>(array_name, lut) );
 		_activeAttributeName = array_name;
 	}
diff --git a/Gui/VtkVis/VtkAlgorithmProperties.h b/Gui/VtkVis/VtkAlgorithmProperties.h
index 1a31365dda057078f2299604ece89940f3eae108..6330aacc12c36c7e5ca4b50fb9d06c31dfcbe27b 100644
--- a/Gui/VtkVis/VtkAlgorithmProperties.h
+++ b/Gui/VtkVis/VtkAlgorithmProperties.h
@@ -154,6 +154,9 @@ public:
 	/// @brief Returns the colour lookup table (if one has been assigned).
 	vtkLookupTable* GetLookupTable(const QString& array_name);
 
+	/// @brief Removes the lookup table for the given scalar.
+	void RemoveLookupTable(const QString& array_name);
+
 	/// @brief Sets a colour lookup table for the given scalar array of the VtkVisPipelineItem.
 	void SetLookUpTable(const QString &array_name, vtkLookupTable* lut);
 
diff --git a/Gui/VtkVis/VtkVisTabWidget.cpp b/Gui/VtkVis/VtkVisTabWidget.cpp
index 280fb057417ed77e70cac23050db2ff9cbdae77c..3940caf52c492c9746601794bb5d8249d6c8ba6c 100644
--- a/Gui/VtkVis/VtkVisTabWidget.cpp
+++ b/Gui/VtkVis/VtkVisTabWidget.cpp
@@ -18,6 +18,7 @@
 
 #include <vtkActor.h>
 #include <vtkImageChangeInformation.h>
+#include <vtkLookupTable.h>
 #include <vtkProperty.h>
 #include <vtkTransform.h>
 #include <vtkTransformFilter.h>
@@ -55,6 +56,14 @@ VtkVisTabWidget::VtkVisTabWidget( QWidget* parent /*= 0*/ )
 	        this, SLOT(SetActiveAttributeOnItem(const QString &)));
 }
 
+void VtkVisTabWidget::on_arrayResetPushButton_clicked()
+{
+	VtkAlgorithmProperties* props = _item->getVtkProperties();
+	const QString selected_array_name = this->activeScalarComboBox->currentText();
+	props->RemoveLookupTable(selected_array_name);
+	_item->SetActiveAttribute(selected_array_name);
+}
+
 void VtkVisTabWidget::setActiveItem( VtkVisPipelineItem* item )
 {
 	if (item)
@@ -131,25 +140,6 @@ void VtkVisTabWidget::setActiveItem( VtkVisPipelineItem* item )
 
 		this->buildProportiesDialog(item);
 
-		//
-		///* Integrating colour tables into property-window (test!) */
-		//VtkStationSource* test = dynamic_cast<VtkStationSource*>(_item->algorithm());
-		//if (test)
-		//{
-		//	std::map<std::string, GeoLib::Color> colors = test->getColorLookupTable();
-		//	if (!colors.empty())
-		//	{
-		//		ColorTableModel* ctm = new ColorTableModel(colors);
-		//		ColorTableView* ctv = new ColorTableView();
-		//		ctv->setModel(ctm);
-		//		ctv->setItemDelegate(new ColorTableViewDelegate);
-		//		vbox->addWidget(ctv);
-		//		ctv->resizeRowsToContents();
-		//	}
-		//}
-
-		/**/
-
 		emit requestViewUpdate();
 	}
 	else
@@ -335,8 +325,7 @@ void VtkVisTabWidget::buildProportiesDialog(VtkVisPipelineItem* item)
 				foreach (QVariant variant, values)
 				valuesAsString.push_back(variant.toString());
 
-				vectorEdit = new VtkAlgorithmPropertyVectorEdit(valuesAsString,
-				                                                key,
+				vectorEdit = new VtkAlgorithmPropertyVectorEdit(valuesAsString, key,
 				                                                values.front().type(),
 				                                                algProps);
 				connect(vectorEdit, SIGNAL(editingFinished()), this,
@@ -355,9 +344,22 @@ void VtkVisTabWidget::buildScalarArrayComboBox(VtkVisPipelineItem* item)
 	this->activeScalarComboBox->clear();
 	this->activeScalarComboBox->insertItems(0, dataSetAttributesList);
 	this->activeScalarComboBox->blockSignals(false);
+	QString active_array_name = item->GetActiveAttribute();
 	QList<QString>::iterator it = dataSetAttributesList.begin();
-	if (item->GetActiveAttribute().count() == 0)
+	if (active_array_name.length() == 0)
 		item->SetActiveAttribute(*it);
+	else
+	{
+		unsigned nArrays (dataSetAttributesList.size());
+		int idx(0);
+		for (it=dataSetAttributesList.begin(); it!=dataSetAttributesList.end(); ++it)
+			if (active_array_name.compare((*it).right((*it).length()-2))==0) 
+			{
+				this->activeScalarComboBox->setCurrentIndex(idx);
+				break;
+			}
+			else idx++;
+	}
 }
 
 void VtkVisTabWidget::SetActiveAttributeOnItem( const QString &name )
diff --git a/Gui/VtkVis/VtkVisTabWidget.h b/Gui/VtkVis/VtkVisTabWidget.h
index 10e7061348cd2021c80b99c61552f7b42424eb1c..24196144fabace8013a0e3aa5641e67c0244b54e 100644
--- a/Gui/VtkVis/VtkVisTabWidget.h
+++ b/Gui/VtkVis/VtkVisTabWidget.h
@@ -34,6 +34,7 @@ protected slots:
 	/// Updates the property panels to show informations on the given VtkVisPipelineItem.
 	void setActiveItem(VtkVisPipelineItem* item);
 
+	void on_arrayResetPushButton_clicked();
 	void on_diffuseColorPickerButton_colorPicked(QColor color);
 	void on_visibleEdgesCheckBox_stateChanged(int state);
 	void on_edgeColorPickerButton_colorPicked(QColor color);
diff --git a/Gui/VtkVis/VtkVisTabWidgetBase.ui b/Gui/VtkVis/VtkVisTabWidgetBase.ui
index 5bad5ace50b77877336788fc9cc91a94414b79fb..cd1c2f1a71a5d5fc0b8b6333286ef470cc36dad9 100644
--- a/Gui/VtkVis/VtkVisTabWidgetBase.ui
+++ b/Gui/VtkVis/VtkVisTabWidgetBase.ui
@@ -65,7 +65,7 @@
           <property name="margin">
            <number>3</number>
           </property>
-          <item row="0" column="1">
+          <item row="0" column="1" colspan="2">
            <widget class="ColorPickerPushButton" name="diffuseColorPickerButton">
             <property name="text">
              <string>(255,255,255)</string>
@@ -86,7 +86,7 @@
             </property>
            </widget>
           </item>
-          <item row="3" column="1">
+          <item row="3" column="1" colspan="2">
            <widget class="ColorPickerPushButton" name="edgeColorPickerButton">
             <property name="text">
              <string>(255, 255, 255)</string>
@@ -100,7 +100,7 @@
             </property>
            </widget>
           </item>
-          <item row="4" column="1">
+          <item row="4" column="1" colspan="2">
            <widget class="QValueTooltipSlider" name="opacitySlider">
             <property name="maximum">
              <number>100</number>
@@ -123,6 +123,35 @@
             </property>
            </widget>
           </item>
+          <item row="1" column="2">
+           <widget class="QPushButton" name="arrayResetPushButton">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>24</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>24</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+            <property name="icon">
+             <iconset resource="../Img/icons.qrc">
+              <normaloff>:/Images/refresh-icon.png</normaloff>:/Images/refresh-icon.png</iconset>
+            </property>
+           </widget>
+          </item>
          </layout>
         </widget>
        </item>
@@ -375,6 +404,8 @@
    <header>QValueTooltipSlider.h</header>
   </customwidget>
  </customwidgets>
- <resources/>
+ <resources>
+  <include location="../Img/icons.qrc"/>
+ </resources>
  <connections/>
 </ui>
diff --git a/Gui/mainwindow.cpp b/Gui/mainwindow.cpp
index 431134a13ac21252f36255f9a8312673848de4a2..c034f2797541af9a927ade4b2a3e997e654265f0 100644
--- a/Gui/mainwindow.cpp
+++ b/Gui/mainwindow.cpp
@@ -140,6 +140,8 @@ MainWindow::MainWindow(QWidget* parent /* = 0*/)
 	_vtkVisPipeline = new VtkVisPipeline(visualizationWidget->renderer());
 
 	// station model connects
+	connect(stationTabWidget->treeView, SIGNAL(openStationListFile(int)),
+	        this, SLOT(open(int)));
 	connect(stationTabWidget->treeView, SIGNAL(stationListExportRequested(std::string, std::string)),
 	        this, SLOT(exportBoreholesToGMS(std::string, std::string))); // export Stationlist to GMS
 	connect(stationTabWidget->treeView, SIGNAL(stationListRemoved(std::string)), _geoModels,
@@ -152,6 +154,8 @@ MainWindow::MainWindow(QWidget* parent /* = 0*/)
 	        this, SLOT(showDiagramPrefsDialog(QModelIndex &))); // connect treeview to diagramview
 
 	// geo model connects
+	connect(geoTabWidget->treeView, SIGNAL(openGeometryFile(int)),
+        this, SLOT(open(int)));
 	connect(geoTabWidget->treeView, SIGNAL(listRemoved(std::string, GeoLib::GEOTYPE)),
 	        _geoModels, SLOT(removeGeometry(std::string, GeoLib::GEOTYPE)));
 	connect(geoTabWidget->treeView, SIGNAL(geometryMappingRequested(const std::string&)),
@@ -179,6 +183,8 @@ MainWindow::MainWindow(QWidget* parent /* = 0*/)
 
 
 	// Setup connections for mesh models to GUI
+	connect(mshTabWidget->treeView, SIGNAL(openMeshFile(int)),
+        this, SLOT(open(int)));
 	connect(mshTabWidget->treeView, SIGNAL(requestMeshRemoval(const QModelIndex &)),
 	        _meshModels, SLOT(removeMesh(const QModelIndex &)));
 	connect(mshTabWidget->treeView, SIGNAL(requestMeshRemoval(const QModelIndex &)),
@@ -487,7 +493,7 @@ void MainWindow::loadFile(ImportFileType::type t, const QString &fileName)
 	QFileInfo fi(fileName);
 	std::string base = fi.absoluteDir().absoluteFilePath(fi.completeBaseName()).toStdString();
 
-	if (t == ImportFileType::OGS)
+	if (t == ImportFileType::OGS || t == ImportFileType::OGS_GEO || t == ImportFileType::OGS_STN || t == ImportFileType::OGS_MSH)
 	{
 		if (fi.suffix().toLower() == "gli")
 		{
diff --git a/Gui/mainwindow.ui b/Gui/mainwindow.ui
index e056d6667eef8030a5d0943a60aa75c635844742..f965c4eb1e35a93b5f7947b3c2fb70c7f207ef9b 100644
--- a/Gui/mainwindow.ui
+++ b/Gui/mainwindow.ui
@@ -231,6 +231,9 @@
    </attribute>
    <widget class="QWidget" name="dockWidgetContents_5">
     <layout class="QHBoxLayout" name="horizontalLayout">
+     <property name="margin">
+      <number>1</number>
+     </property>
      <item>
       <widget class="GeoTabWidget" name="geoTabWidget" native="true">
        <property name="enabled">
diff --git a/MeshLib/MeshQuality/MeshQualityChecker.cpp b/MeshLib/MeshQuality/MeshQualityChecker.cpp
index 83fad02943f17e26d7cdbe5b0db4fb56d7cdbc56..e51f4461e738fe33d6bc95585add36b04569f7cf 100644
--- a/MeshLib/MeshQuality/MeshQualityChecker.cpp
+++ b/MeshLib/MeshQuality/MeshQualityChecker.cpp
@@ -18,7 +18,7 @@
 namespace MeshLib
 {
 MeshQualityChecker::MeshQualityChecker(Mesh const* const mesh) :
-	_min (-1.0), _max (-1.0), _mesh (mesh)
+	_min (std::numeric_limits<double>::max()), _max (std::numeric_limits<double>::min()), _mesh (mesh)
 {
 	if (_mesh)
 		_mesh_quality_measure.resize (_mesh->getNElements(), -1.0);
diff --git a/MeshLib/MeshQuality/MeshQualityVolume.cpp b/MeshLib/MeshQuality/MeshQualityVolume.cpp
index 4f16e76c9f071e24c4638c70ce5faac8a3954051..41239a466ea8e905bf46d5bbeb52695f3dae105d 100644
--- a/MeshLib/MeshQuality/MeshQualityVolume.cpp
+++ b/MeshLib/MeshQuality/MeshQualityVolume.cpp
@@ -37,7 +37,7 @@ void MeshQualityVolume::check()
 		    || elem_type == MshElemType::TRIANGLE
 		    || elem_type == MshElemType::QUAD)
 		{
-            _mesh_quality_measure[k] = -1.0;
+            _mesh_quality_measure[k] = 0.0;
             continue;
         }