diff --git a/Gui/mainwindow.cpp b/Gui/mainwindow.cpp
index 11c6ea15f2909a50d093ac79e7f181ea86acb6a7..9c92aeb90a23877a8444aa69d708882e16e73848 100644
--- a/Gui/mainwindow.cpp
+++ b/Gui/mainwindow.cpp
@@ -127,8 +127,6 @@ MainWindow::MainWindow(QWidget* parent /* = 0*/)
 	setupUi(this);
 
 	// Setup various models
-	_geoModels = new GEOModels();
-	_project.setGEOObjects(_geoModels);
 	_meshModels = new MshModel(_project);
 	_elementModel = new ElementTreeModel();
 	_processModel = new ProcessModel(_project);
diff --git a/OGS/ProjectData.cpp b/OGS/ProjectData.cpp
index 2f5bc5f3713f946141d14a0647fa9f42d1e972f5..2eade0df63e3f19b20acbaf9010a1a5f6d5e810c 100644
--- a/OGS/ProjectData.cpp
+++ b/OGS/ProjectData.cpp
@@ -13,13 +13,21 @@
  */
 
 #include "ProjectData.h"
+
+// BaseLib
 #include "StringTools.h"
 
 #include "Mesh.h"
 
 ProjectData::ProjectData()
-: _geoObjects (NULL)
-{}
+:
+#ifdef OGS_BUILD_GUI
+	_geoObjects(new GEOModels())
+#else
+	_geoObjects(new GeoLib::GEOObjects())
+#endif
+{
+}
 
 ProjectData::~ProjectData()
 {
diff --git a/OGS/ProjectData.h b/OGS/ProjectData.h
index 5d4e5436ac481cccc3976d9092f56e7fb9362ea1..57b14e8e1ce685b5e20b6d5c22a5957c9f297a9a 100644
--- a/OGS/ProjectData.h
+++ b/OGS/ProjectData.h
@@ -19,6 +19,9 @@
 #include "FEMEnums.h"
 #include "GEOObjects.h"
 
+// Gui/DataView
+#include "Gui/DataView/GEOModels.h"
+
 namespace MeshLib {
 	class Mesh;
 }
@@ -44,9 +47,6 @@ public:
 	// Returns the GEOObjects containing all points, polylines and surfaces
 	GeoLib::GEOObjects* getGEOObjects() { return _geoObjects; }
 
-	// Returns the GEOObjects containing all points, polylines and surfaces
-	void setGEOObjects(GeoLib::GEOObjects* geo_objects) { _geoObjects = geo_objects; }
-
 	//** Mesh functionality **//
 
 	/// Adds a new mesh
@@ -106,7 +106,11 @@ public:
 								  FEMCondition::CondType cond_type = FEMCondition::UNSPECIFIED);
 
 private:
-	GeoLib::GEOObjects* _geoObjects;
+#ifdef OGS_BUILD_GUI
+	GEOModels *_geoObjects;
+#else
+	GeoLib::GEOObjects *_geoObjects;
+#endif
 	std::vector<MeshLib::Mesh*> _msh_vec;
 	std::vector<ProcessInfo*> _pcs_vec;
 	std::vector<FEMCondition*> _cond_vec;
diff --git a/Tests/FileIO/TestXmlGmlReader.cpp b/Tests/FileIO/TestXmlGmlReader.cpp
index 872ab65b68a3f3a46cd22e52f5f7ec904ed3eb80..6327e29a2330e8a9b6e0be2bc1364ba1a73e314d 100644
--- a/Tests/FileIO/TestXmlGmlReader.cpp
+++ b/Tests/FileIO/TestXmlGmlReader.cpp
@@ -32,8 +32,7 @@ TEST(FileIO, XmlGmlWriterTest)
 	std::string test_data_file(std::string(SOURCEPATH).append("/Tests/FileIO/xmlgmltestdata.gml"));
 
 	ProjectData project;
-	GeoLib::GEOObjects* geo_objects = new GeoLib::GEOObjects;
-	project.setGEOObjects(geo_objects);
+	GeoLib::GEOObjects* geo_objects (project.getGEOObjects());
 
 	//setup test data
 	std::string geo_name("TestData");
@@ -94,8 +93,7 @@ TEST(FileIO, XmlGmlReaderTest)
 	std::string geo_name("TestData");
 
 	ProjectData project;
-	GeoLib::GEOObjects* geo_objects = new GeoLib::GEOObjects;
-	project.setGEOObjects(geo_objects);
+	GeoLib::GEOObjects* geo_objects (project.getGEOObjects());
 	
 	const std::string schemaName(std::string(SOURCEPATH).append("/FileIO/OpenGeoSysGLI.xsd"));
 	FileIO::XmlGmlInterface xml(&project, schemaName);
diff --git a/Utils/FileConverter/ConvertSHPToGLI.cpp b/Utils/FileConverter/ConvertSHPToGLI.cpp
index f3474e8333f518be21c002c21f0d3b777a485de7..9509bed6bf343cf9f281f36297deabceec1b9881 100644
--- a/Utils/FileConverter/ConvertSHPToGLI.cpp
+++ b/Utils/FileConverter/ConvertSHPToGLI.cpp
@@ -82,7 +82,8 @@ void convertPoints (DBFHandle dbf_handle,
 		}
 	}
 
-	GeoLib::GEOObjects* geo_objs (new GeoLib::GEOObjects());
+	ProjectData* project_data (new ProjectData);
+	GeoLib::GEOObjects* geo_objs (project_data->getGEOObjects());
 	if (station)
 		geo_objs->addStationVec(points, points_group_name);
 	else
@@ -93,8 +94,7 @@ void convertPoints (DBFHandle dbf_handle,
 		schema_name = "OpenGeoSysSTN.xsd";
 	else
 		schema_name = "OpenGeoSysGLI.xsd";
-	ProjectData* project_data (new ProjectData);
-	project_data->setGEOObjects (geo_objs);
+
 	if (station) {
 		FileIO::XmlStnInterface xml (project_data, schema_name);
 		xml.setNameForExport(points_group_name);
diff --git a/Utils/FileConverter/generateBCFromPolyline.cpp b/Utils/FileConverter/generateBCFromPolyline.cpp
index 08864ed905334e0f8f65ca25ea418324ca19d02f..4d0108d9e79ec46d9dc5404ac436c44ca9aca89c 100644
--- a/Utils/FileConverter/generateBCFromPolyline.cpp
+++ b/Utils/FileConverter/generateBCFromPolyline.cpp
@@ -37,11 +37,11 @@ int main (int argc, char* argv[])
 		std::endl;
 		return -1;
 	}
-	GeoLib::GEOObjects* geo_objs (new GeoLib::GEOObjects);
+
 	std::string schema_name(
 	        "/home/fischeth/workspace/OGS-FirstFloor/sources/FileIO/OpenGeoSysGLI.xsd");
 	ProjectData* project_data (new ProjectData);
-	project_data->setGEOObjects (geo_objs);
+	GeoLib::GEOObjects* geo_objs (project_data->getGEOObjects());
 	FileIO::XmlGmlInterface xml(project_data, schema_name);
 	std::string fname (argv[1]);
 	xml.readFile(QString::fromStdString (fname));
diff --git a/Utils/FileConverter/generateBCandGLI.cpp b/Utils/FileConverter/generateBCandGLI.cpp
index c05c03b0423e9dbfcc06b9adc4080097744fcd0b..50ad2db4a0f34134eef8b2bf988b92dc1805e26c 100644
--- a/Utils/FileConverter/generateBCandGLI.cpp
+++ b/Utils/FileConverter/generateBCandGLI.cpp
@@ -36,9 +36,8 @@ int main (int argc, char* argv[])
 		std::cout << "Usage: " << argv[0] << " gml-file" << std::endl;
 		return -1;
 	}
-	GeoLib::GEOObjects* geo_objs (new GeoLib::GEOObjects);
 	ProjectData* project_data (new ProjectData);
-	project_data->setGEOObjects (geo_objs);
+	GeoLib::GEOObjects* geo_objs(project_data->getGEOObjects ());
 	std::string schema_name(
 	        "/home/fischeth/workspace/OGS-FirstFloor/sources/FileIO/OpenGeoSysGLI.xsd");
 	FileIO::XmlGmlInterface xml(project_data, schema_name);