diff --git a/Applications/ApplicationsLib/ProjectData.cpp b/Applications/ApplicationsLib/ProjectData.cpp
index 03c1e746cbfdc15a8996beb97fa7f7dbaff9c3bb..eb72469ef05839bf115124352d748b1b2f37c6b1 100644
--- a/Applications/ApplicationsLib/ProjectData.cpp
+++ b/Applications/ApplicationsLib/ProjectData.cpp
@@ -28,7 +28,7 @@
 
 // FileIO
 #include "GeoLib/IO/XmlIO/Boost/BoostXmlGmlInterface.h"
-#include "FileIO/readMeshFromFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
 
 #include "BaseLib/ConfigTree.h"
 
diff --git a/Applications/DataExplorer/DataView/SaveMeshDialog.cpp b/Applications/DataExplorer/DataView/SaveMeshDialog.cpp
index b9cb8baae1395a683109e965b38292c3946fa066..9f85e600ce46790a35a6082df5aa490ed19eb58f 100644
--- a/Applications/DataExplorer/DataView/SaveMeshDialog.cpp
+++ b/Applications/DataExplorer/DataView/SaveMeshDialog.cpp
@@ -21,9 +21,8 @@
 #include "logog/include/logog.hpp"
 
 #include "FileIO/VtkIO/VtuInterface.h"
-#include "Legacy/MeshIO.h"
-
-#include "Mesh.h"
+#include "MeshLib/IO/Legacy/MeshIO.h"
+#include "MeshLib/Mesh.h"
 #include "OGSError.h"
 #include "LastSavedFileDirectory.h"
 
diff --git a/Applications/DataExplorer/mainwindow.cpp b/Applications/DataExplorer/mainwindow.cpp
index ed176d126a436a7a0724e408e33a5a135f6e40f9..41c0e5117e4f8563af898ab32efa4acb38cc5a56 100644
--- a/Applications/DataExplorer/mainwindow.cpp
+++ b/Applications/DataExplorer/mainwindow.cpp
@@ -62,8 +62,8 @@
 // FileIO includes
 #include "FileIO/FEFLOWInterface.h"
 #include "FileIO/GMSInterface.h"
-#include "FileIO/Legacy/MeshIO.h"
-#include "FileIO/readMeshFromFile.h"
+#include "MeshLib/IO/Legacy/MeshIO.h"
+#include "MeshLib/IO/readMeshFromFile.h"
 #include "FileIO/GMSHInterface.h"
 #include "FileIO/TetGenInterface.h"
 #include "FileIO/PetrelInterface.h"
diff --git a/Applications/Utils/FileConverter/CMakeLists.txt b/Applications/Utils/FileConverter/CMakeLists.txt
index 87c973d1842df4a3c12df04b704e69aeae53ea9f..fa0cf5285820dbb0d024e74fb9225fffa3da739e 100644
--- a/Applications/Utils/FileConverter/CMakeLists.txt
+++ b/Applications/Utils/FileConverter/CMakeLists.txt
@@ -22,7 +22,7 @@ if (QT4_FOUND)
 endif () # QT4_FOUND
 
 add_executable(generateMatPropsFromMatID generateMatPropsFromMatID.cpp )
-target_link_libraries(generateMatPropsFromMatID FileIO)
+target_link_libraries(generateMatPropsFromMatID MeshLib FileIO)
 ADD_VTK_DEPENDENCY(generateMatPropsFromMatID)
 set_target_properties(generateMatPropsFromMatID
 	PROPERTIES FOLDER Utilities)
diff --git a/Applications/Utils/FileConverter/FEFLOW2OGS.cpp b/Applications/Utils/FileConverter/FEFLOW2OGS.cpp
index 9c5b6a4698bf8fd194d8af03ea1047dcaf9fad4b..2c79202d0f725c0e36062faf8c48e255b8bb4d4b 100644
--- a/Applications/Utils/FileConverter/FEFLOW2OGS.cpp
+++ b/Applications/Utils/FileConverter/FEFLOW2OGS.cpp
@@ -25,8 +25,8 @@
 #include "BaseLib/LogogSimpleFormatter.h"
 
 // FileIO
-#include "FileIO/writeMeshToFile.h"
-#include "FileIO/Legacy/MeshIO.h"
+#include "MeshLib/IO/writeMeshToFile.h"
+#include "MeshLib/IO/Legacy/MeshIO.h"
 #include "FileIO/FEFLOWInterface.h"
 #include "FileIO/VtkIO/VtuInterface.h"
 
diff --git a/Applications/Utils/FileConverter/GMSH2OGS.cpp b/Applications/Utils/FileConverter/GMSH2OGS.cpp
index d6ec2921d87c79d23eeb28dee31f416ad579feaf..e929e748e950353a774732d76c76afd0a018463f 100644
--- a/Applications/Utils/FileConverter/GMSH2OGS.cpp
+++ b/Applications/Utils/FileConverter/GMSH2OGS.cpp
@@ -32,7 +32,7 @@
 
 // FileIO
 #include "FileIO/GMSHInterface.h"
-#include "FileIO/Legacy/MeshIO.h"
+#include "MeshLib/IO/Legacy/MeshIO.h"
 #include "FileIO/VtkIO/VtuInterface.h"
 
 // MeshLib
diff --git a/Applications/Utils/FileConverter/OGS2VTK.cpp b/Applications/Utils/FileConverter/OGS2VTK.cpp
index 47a07295103bddb4f8bc00e3a05f0f47309369a5..5ea64c3821054823bee95c16ce4bb5f3e65c8b75 100644
--- a/Applications/Utils/FileConverter/OGS2VTK.cpp
+++ b/Applications/Utils/FileConverter/OGS2VTK.cpp
@@ -25,7 +25,7 @@
 
 // FileIO
 #include "FileIO/VtkIO/VtuInterface.h"
-#include "readMeshFromFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
 
 // MeshLib
 #include "Mesh.h"
diff --git a/Applications/Utils/FileConverter/VTK2OGS.cpp b/Applications/Utils/FileConverter/VTK2OGS.cpp
index 458b41a1702d46fcf42d5ef599e8921e43e86da9..62042672bce2b123df439046b7b07fc5e5534b24 100644
--- a/Applications/Utils/FileConverter/VTK2OGS.cpp
+++ b/Applications/Utils/FileConverter/VTK2OGS.cpp
@@ -25,10 +25,9 @@
 
 // FileIO
 #include "FileIO/VtkIO/VtuInterface.h"
-#include "Legacy/MeshIO.h"
 
-// MeshLib
-#include "Mesh.h"
+#include "MeshLib/Mesh.h"
+#include "MeshLib/IO/Legacy/MeshIO.h"
 
 int main (int argc, char* argv[])
 {
diff --git a/Applications/Utils/FileConverter/generateMatPropsFromMatID.cpp b/Applications/Utils/FileConverter/generateMatPropsFromMatID.cpp
index 4a90b0c630bf9215b2ed9af837446ad8d21ac933..f8cc533ada43d48977c8affa100492c68c331506 100644
--- a/Applications/Utils/FileConverter/generateMatPropsFromMatID.cpp
+++ b/Applications/Utils/FileConverter/generateMatPropsFromMatID.cpp
@@ -23,8 +23,8 @@
 
 #include "BaseLib/FileTools.h"
 
-#include "FileIO/readMeshFromFile.h"
-#include "FileIO/writeMeshToFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
+#include "MeshLib/IO/writeMeshToFile.h"
 
 #include "MeshLib/Mesh.h"
 #include "MeshLib/Elements/Element.h"
diff --git a/Applications/Utils/MeshEdit/AddTopLayer.cpp b/Applications/Utils/MeshEdit/AddTopLayer.cpp
index 38d3a9b9b929e4e8e01e0cf4a557851a99b2fc0b..10ef79cf0b9b9ad4ccf33a519812c35252674419 100644
--- a/Applications/Utils/MeshEdit/AddTopLayer.cpp
+++ b/Applications/Utils/MeshEdit/AddTopLayer.cpp
@@ -18,8 +18,8 @@
 
 #include "BaseLib/FileTools.h"
 
-#include "FileIO/readMeshFromFile.h"
-#include "FileIO/writeMeshToFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
+#include "MeshLib/IO/writeMeshToFile.h"
 
 #include "MeshLib/Mesh.h"
 #include "MeshLib/MeshEditing/AddLayerToMesh.h"
diff --git a/Applications/Utils/MeshEdit/CMakeLists.txt b/Applications/Utils/MeshEdit/CMakeLists.txt
index 480cd80039387328ac1b7f1b5a8b9dfb370027b3..2405214193b61e1307a42e40aa9186d24df86466 100644
--- a/Applications/Utils/MeshEdit/CMakeLists.txt
+++ b/Applications/Utils/MeshEdit/CMakeLists.txt
@@ -9,78 +9,78 @@ include_directories(
 )
 
 add_executable(moveMeshNodes moveMeshNodes.cpp)
-target_link_libraries(moveMeshNodes FileIO)
+target_link_libraries(moveMeshNodes MeshLib FileIO)
 ADD_VTK_DEPENDENCY(moveMeshNodes)
 set_target_properties(moveMeshNodes PROPERTIES FOLDER Utilities)
 
 add_executable(MapGeometryToMeshSurface
 	MapGeometryToMeshSurface.cpp )
-target_link_libraries(MapGeometryToMeshSurface FileIO MeshGeoToolsLib)
+target_link_libraries(MapGeometryToMeshSurface MeshLib MeshGeoToolsLib)
 ADD_VTK_DEPENDENCY(MapGeometryToMeshSurface)
 set_target_properties(MapGeometryToMeshSurface PROPERTIES FOLDER Utilities)
 
 add_executable(removeMeshElements removeMeshElements.cpp)
-target_link_libraries(removeMeshElements FileIO)
+target_link_libraries(removeMeshElements MeshLib FileIO)
 ADD_VTK_DEPENDENCY(removeMeshElements)
 set_target_properties(removeMeshElements PROPERTIES FOLDER Utilities)
 
 add_executable(NodeReordering NodeReordering.cpp)
-target_link_libraries(NodeReordering FileIO)
+target_link_libraries(NodeReordering MeshLib FileIO)
 ADD_VTK_DEPENDENCY(NodeReordering)
 set_target_properties(NodeReordering PROPERTIES FOLDER Utilities)
 
 add_executable(MoveMesh MoveMesh.cpp)
-target_link_libraries(MoveMesh FileIO)
+target_link_libraries(MoveMesh MeshLib FileIO)
 ADD_VTK_DEPENDENCY(MoveMesh)
 set_target_properties(MoveMesh PROPERTIES FOLDER Utilities)
 
 add_executable(appendLinesAlongPolyline appendLinesAlongPolyline.cpp)
-target_link_libraries(appendLinesAlongPolyline FileIO MeshGeoToolsLib)
+target_link_libraries(appendLinesAlongPolyline GeoLib MeshLib MeshGeoToolsLib FileIO)
 ADD_VTK_DEPENDENCY(appendLinesAlongPolyline)
 set_target_properties(appendLinesAlongPolyline PROPERTIES FOLDER Utilities)
 
 add_executable(editMaterialID editMaterialID.cpp)
-target_link_libraries(editMaterialID FileIO)
+target_link_libraries(editMaterialID MeshLib)
 ADD_VTK_DEPENDENCY(editMaterialID)
 set_target_properties(editMaterialID PROPERTIES FOLDER Utilities)
 
 add_executable(checkMesh checkMesh.cpp)
-target_link_libraries(checkMesh FileIO)
+target_link_libraries(checkMesh MeshLib FileIO)
 ADD_VTK_DEPENDENCY(checkMesh)
 set_target_properties(checkMesh PROPERTIES FOLDER Utilities)
 
 add_executable(reviseMesh reviseMesh.cpp)
-target_link_libraries (reviseMesh FileIO)
+target_link_libraries (reviseMesh MeshLib)
 ADD_VTK_DEPENDENCY(reviseMesh)
 set_target_properties(reviseMesh PROPERTIES FOLDER Utilities)
 
 add_executable(ResetPropertiesInPolygonalRegion
 	ResetPropertiesInPolygonalRegion.cpp)
-target_link_libraries(ResetPropertiesInPolygonalRegion FileIO)
+target_link_libraries(ResetPropertiesInPolygonalRegion MeshLib GeoLib FileIO)
 set_target_properties(ResetPropertiesInPolygonalRegion
 	PROPERTIES FOLDER Utilities)
 
 add_executable(AddTopLayer AddTopLayer.cpp)
-target_link_libraries(AddTopLayer FileIO)
+target_link_libraries(AddTopLayer MeshLib FileIO)
 set_target_properties(AddTopLayer PROPERTIES FOLDER Utilities)
 
 add_executable(createLayeredMeshFromRasters createLayeredMeshFromRasters.cpp)
-target_link_libraries(createLayeredMeshFromRasters FileIO)
+target_link_libraries(createLayeredMeshFromRasters MeshLib GeoLib FileIO)
 set_target_properties(createLayeredMeshFromRasters PROPERTIES FOLDER Utilities)
 
 add_executable(CreateBoundaryConditionsAlongPolylines
 	CreateBoundaryConditionsAlongPolylines.cpp )
-target_link_libraries(CreateBoundaryConditionsAlongPolylines FileIO MeshGeoToolsLib)
+target_link_libraries(CreateBoundaryConditionsAlongPolylines MeshLib FileIO MeshGeoToolsLib)
 ADD_VTK_DEPENDENCY(CreateBoundaryConditionsAlongPolylines)
 set_target_properties(CreateBoundaryConditionsAlongPolylines
 	PROPERTIES FOLDER Utilities)
 
 add_executable(queryMesh queryMesh.cpp)
-target_link_libraries(queryMesh FileIO)
+target_link_libraries(queryMesh MeshLib)
 set_target_properties(queryMesh PROPERTIES FOLDER Utilities)
 
 add_executable(ExtractSurface ExtractSurface.cpp)
-target_link_libraries(ExtractSurface FileIO MeshLib)
+target_link_libraries(ExtractSurface MeshLib)
 set_target_properties(ExtractSurface PROPERTIES FOLDER Utilities)
 
 ####################
diff --git a/Applications/Utils/MeshEdit/CreateBoundaryConditionsAlongPolylines.cpp b/Applications/Utils/MeshEdit/CreateBoundaryConditionsAlongPolylines.cpp
index ee6fc9f94b1afe1670f799926cda2260fc91247f..fd6d0a910faa48656061fec8e6f97fbd7a26fd43 100644
--- a/Applications/Utils/MeshEdit/CreateBoundaryConditionsAlongPolylines.cpp
+++ b/Applications/Utils/MeshEdit/CreateBoundaryConditionsAlongPolylines.cpp
@@ -26,8 +26,8 @@
 #include "BaseLib/FileTools.h"
 
 // FileIO
-#include "FileIO/readMeshFromFile.h"
-#include "FileIO/writeMeshToFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
+#include "MeshLib/IO/writeMeshToFile.h"
 
 // GeoLib
 #include "GeoLib/GEOObjects.h"
diff --git a/Applications/Utils/MeshEdit/ExtractSurface.cpp b/Applications/Utils/MeshEdit/ExtractSurface.cpp
index 3b1875eba4025a30e846fcb3ea1d129423a077e4..b5156c88257d32ce678fa2601d3939242ecd0e19 100644
--- a/Applications/Utils/MeshEdit/ExtractSurface.cpp
+++ b/Applications/Utils/MeshEdit/ExtractSurface.cpp
@@ -20,8 +20,8 @@
 #include "BaseLib/StringTools.h"
 #include "BaseLib/FileTools.h"
 
-#include "FileIO/readMeshFromFile.h"
-#include "FileIO/writeMeshToFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
+#include "MeshLib/IO/writeMeshToFile.h"
 
 #include "MathLib/Vector3.h"
 
diff --git a/Applications/Utils/MeshEdit/MapGeometryToMeshSurface.cpp b/Applications/Utils/MeshEdit/MapGeometryToMeshSurface.cpp
index d0e6a88a6644c525ddea6911ac32237586b7c03b..2d7beaffcc58a7df1645d41d2dabd22b4eb31014 100644
--- a/Applications/Utils/MeshEdit/MapGeometryToMeshSurface.cpp
+++ b/Applications/Utils/MeshEdit/MapGeometryToMeshSurface.cpp
@@ -23,7 +23,7 @@
 #include "BaseLib/LogogSimpleFormatter.h"
 
 // FileIO
-#include "FileIO/readMeshFromFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
 #include "GeoLib/IO/XmlIO/Boost/BoostXmlGmlInterface.h"
 
 // GeoLib
diff --git a/Applications/Utils/MeshEdit/MoveMesh.cpp b/Applications/Utils/MeshEdit/MoveMesh.cpp
index 474a4b3af3c9541645439f7fac1ee5da302811e7..2d739f8898f0b2898a3c783474a20e604579c60c 100644
--- a/Applications/Utils/MeshEdit/MoveMesh.cpp
+++ b/Applications/Utils/MeshEdit/MoveMesh.cpp
@@ -22,7 +22,7 @@
 #include "LogogSimpleFormatter.h"
 
 // FileIO
-#include "readMeshFromFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
 #include "FileIO/VtkIO/VtuInterface.h"
 
 // GeoLib
diff --git a/Applications/Utils/MeshEdit/NodeReordering.cpp b/Applications/Utils/MeshEdit/NodeReordering.cpp
index 2d152f061aa553679e402d452dba8ecd231cffbb..cd7cfcec029322795ef19ac5be39e0450d0e055c 100644
--- a/Applications/Utils/MeshEdit/NodeReordering.cpp
+++ b/Applications/Utils/MeshEdit/NodeReordering.cpp
@@ -18,8 +18,8 @@
 
 #include "Applications/ApplicationsLib/LogogSetup.h"
 
-#include "FileIO/readMeshFromFile.h"
-#include "FileIO/writeMeshToFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
+#include "MeshLib/IO/writeMeshToFile.h"
 
 #include "MeshLib/Mesh.h"
 #include "MeshLib/Elements/Element.h"
diff --git a/Applications/Utils/MeshEdit/ResetPropertiesInPolygonalRegion.cpp b/Applications/Utils/MeshEdit/ResetPropertiesInPolygonalRegion.cpp
index f0305bfb3928e88a62db000f7c673a760d9ad24b..8a4b12cd710f1e3053c78ea0f541725347a669ef 100644
--- a/Applications/Utils/MeshEdit/ResetPropertiesInPolygonalRegion.cpp
+++ b/Applications/Utils/MeshEdit/ResetPropertiesInPolygonalRegion.cpp
@@ -22,8 +22,8 @@
 #include "Applications/ApplicationsLib/LogogSetup.h"
 
 // FileIO
-#include "FileIO/readMeshFromFile.h"
-#include "FileIO/writeMeshToFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
+#include "MeshLib/IO/writeMeshToFile.h"
 
 // GeoLib
 #include "GeoLib/GEOObjects.h"
diff --git a/Applications/Utils/MeshEdit/appendLinesAlongPolyline.cpp b/Applications/Utils/MeshEdit/appendLinesAlongPolyline.cpp
index 4fb4c529d2b193fc076a501dac06486aed4c2e22..3f5a77b4a4cdda0c89d0be14c48be7677b746ca3 100644
--- a/Applications/Utils/MeshEdit/appendLinesAlongPolyline.cpp
+++ b/Applications/Utils/MeshEdit/appendLinesAlongPolyline.cpp
@@ -21,8 +21,8 @@
 #include "PolylineVec.h"
 
 // FileIO
-#include "Legacy/MeshIO.h"
-#include "readMeshFromFile.h"
+#include "MeshLib/IO/Legacy/MeshIO.h"
+#include "MeshLib/IO/readMeshFromFile.h"
 #include "GeoLib/IO/XmlIO/Boost/BoostXmlGmlInterface.h"
 
 // MeshLib
diff --git a/Applications/Utils/MeshEdit/checkMesh.cpp b/Applications/Utils/MeshEdit/checkMesh.cpp
index dffe85af3beb457e2dbf27361179e2896fdbffb6..2c0d2a4ad1f15d47fa950592d32a9d1a59a71c19 100644
--- a/Applications/Utils/MeshEdit/checkMesh.cpp
+++ b/Applications/Utils/MeshEdit/checkMesh.cpp
@@ -27,8 +27,8 @@
 #include "MeshLib/MeshInformation.h"
 #include "MeshLib/MeshQuality/MeshValidation.h"
 
-#include "FileIO/readMeshFromFile.h"
-#include "FileIO/Legacy/MeshIO.h"
+#include "MeshLib/IO/readMeshFromFile.h"
+#include "MeshLib/IO/Legacy/MeshIO.h"
 
 int main(int argc, char *argv[])
 {
diff --git a/Applications/Utils/MeshEdit/createLayeredMeshFromRasters.cpp b/Applications/Utils/MeshEdit/createLayeredMeshFromRasters.cpp
index a2d40078ea8aeff10095910c31af8ce04e2608b0..1a862c4b1f23567f06a61c76bdf206eb60a97e45 100644
--- a/Applications/Utils/MeshEdit/createLayeredMeshFromRasters.cpp
+++ b/Applications/Utils/MeshEdit/createLayeredMeshFromRasters.cpp
@@ -22,9 +22,9 @@
 
 #include "BaseLib/FileTools.h"
 
-#include "FileIO/readMeshFromFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
 #include "FileIO/AsciiRasterInterface.h"
-#include "FileIO/writeMeshToFile.h"
+#include "MeshLib/IO/writeMeshToFile.h"
 
 #include "MeshLib/Mesh.h"
 #include "MeshLib/MeshGenerators/MeshLayerMapper.h"
diff --git a/Applications/Utils/MeshEdit/editMaterialID.cpp b/Applications/Utils/MeshEdit/editMaterialID.cpp
index 1d3e2b81945a7ca36dbf49309df70cbc3a9a77d7..2bd20f26fec1f1b1d3294ef8a693936d34d6f71a 100644
--- a/Applications/Utils/MeshEdit/editMaterialID.cpp
+++ b/Applications/Utils/MeshEdit/editMaterialID.cpp
@@ -16,9 +16,9 @@
 #include "BaseLib/LogogSimpleFormatter.h"
 
 // FileIO
-#include "FileIO/Legacy/MeshIO.h"
-#include "FileIO/readMeshFromFile.h"
-#include "FileIO/writeMeshToFile.h"
+#include "MeshLib/IO/Legacy/MeshIO.h"
+#include "MeshLib/IO/readMeshFromFile.h"
+#include "MeshLib/IO/writeMeshToFile.h"
 
 // MeshLib
 #include "MeshLib/Mesh.h"
diff --git a/Applications/Utils/MeshEdit/moveMeshNodes.cpp b/Applications/Utils/MeshEdit/moveMeshNodes.cpp
index 4cdf5919793def9cab51e30f61b14d810d867962..9eec00b25cdd13301a9f3157e8fd7b723bd3361b 100644
--- a/Applications/Utils/MeshEdit/moveMeshNodes.cpp
+++ b/Applications/Utils/MeshEdit/moveMeshNodes.cpp
@@ -5,8 +5,8 @@
 
 #include "logog/include/logog.hpp"
 #include "LogogSimpleFormatter.h"
-#include "readMeshFromFile.h"
-#include "Legacy/MeshIO.h"
+#include "MeshLib/IO/readMeshFromFile.h"
+#include "MeshLib/IO/Legacy/MeshIO.h"
 #include "AABB.h"
 #include "Mesh.h"
 #include "MeshLib/Node.h"
diff --git a/Applications/Utils/MeshEdit/queryMesh.cpp b/Applications/Utils/MeshEdit/queryMesh.cpp
index 9db2929a8563e370d0937426728ad8f204f85dc4..390023f60d37e3e38974693a33e77cc28f7ea988 100644
--- a/Applications/Utils/MeshEdit/queryMesh.cpp
+++ b/Applications/Utils/MeshEdit/queryMesh.cpp
@@ -23,7 +23,7 @@
 #include "MeshLib/Elements/Element.h"
 #include "MeshLib/Mesh.h"
 
-#include "FileIO/readMeshFromFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
 
 int main(int argc, char *argv[])
 {
diff --git a/Applications/Utils/MeshEdit/removeMeshElements.cpp b/Applications/Utils/MeshEdit/removeMeshElements.cpp
index 0b47d87f5feeaaa47bda2de7d7d110e8df6b81c0..cf39ae618830f9cee8c5e9002ef0db43e50d9b53 100644
--- a/Applications/Utils/MeshEdit/removeMeshElements.cpp
+++ b/Applications/Utils/MeshEdit/removeMeshElements.cpp
@@ -18,8 +18,8 @@
 
 #include "Applications/ApplicationsLib/LogogSetup.h"
 
-#include "FileIO/readMeshFromFile.h"
-#include "FileIO/writeMeshToFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
+#include "MeshLib/IO/writeMeshToFile.h"
 
 #include "MeshLib/Mesh.h"
 #include "MeshLib/Node.h"
diff --git a/Applications/Utils/MeshEdit/reviseMesh.cpp b/Applications/Utils/MeshEdit/reviseMesh.cpp
index 2223573e53ae50d18f372301442c9d85e6388c6e..7ac9b23213cb9763f235b63df09b7b680ea102cb 100644
--- a/Applications/Utils/MeshEdit/reviseMesh.cpp
+++ b/Applications/Utils/MeshEdit/reviseMesh.cpp
@@ -23,8 +23,8 @@
 #include "MeshLib/Mesh.h"
 #include "MeshLib/MeshEditing/MeshRevision.h"
 
-#include "FileIO/readMeshFromFile.h"
-#include "FileIO/writeMeshToFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
+#include "MeshLib/IO/writeMeshToFile.h"
 
 int main(int argc, char *argv[])
 {
diff --git a/Applications/Utils/MeshGeoTools/ComputeSurfaceNodeIDsInPolygonalRegion.cpp b/Applications/Utils/MeshGeoTools/ComputeSurfaceNodeIDsInPolygonalRegion.cpp
index dc9f326ed08aac972fcaf9f6b7c084dc035f38e3..3a0a631d3b666b85a271be288a6542e4e14cb089 100644
--- a/Applications/Utils/MeshGeoTools/ComputeSurfaceNodeIDsInPolygonalRegion.cpp
+++ b/Applications/Utils/MeshGeoTools/ComputeSurfaceNodeIDsInPolygonalRegion.cpp
@@ -21,7 +21,7 @@
 #include "BaseLib/StringTools.h"
 #include "BaseLib/FileTools.h"
 
-#include "FileIO/readMeshFromFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
 
 #include "GeoLib/GEOObjects.h"
 #include "GeoLib/Polygon.h"
diff --git a/Applications/Utils/ModelPreparation/CMakeLists.txt b/Applications/Utils/ModelPreparation/CMakeLists.txt
index 8475b547d35f9992c51ddb7d93145d87cf133be3..af65454a39f8f404d9cba8515bd706b11a52a2b0 100644
--- a/Applications/Utils/ModelPreparation/CMakeLists.txt
+++ b/Applications/Utils/ModelPreparation/CMakeLists.txt
@@ -1,7 +1,6 @@
 add_executable(ComputeNodeAreasFromSurfaceMesh ComputeNodeAreasFromSurfaceMesh.cpp)
 set_target_properties(ComputeNodeAreasFromSurfaceMesh PROPERTIES FOLDER Utilities)
 target_link_libraries(ComputeNodeAreasFromSurfaceMesh
-	FileIO
 	MeshLib
 	MathLib
 	${OGS_VTK_REQUIRED_LIBS}
diff --git a/Applications/Utils/ModelPreparation/ComputeNodeAreasFromSurfaceMesh.cpp b/Applications/Utils/ModelPreparation/ComputeNodeAreasFromSurfaceMesh.cpp
index 1bbf8febdd1396d2101e69479df8d8c47b4e4f4c..547b342a77f5454c00a90701b4bf54fd8c4c2ab1 100644
--- a/Applications/Utils/ModelPreparation/ComputeNodeAreasFromSurfaceMesh.cpp
+++ b/Applications/Utils/ModelPreparation/ComputeNodeAreasFromSurfaceMesh.cpp
@@ -20,7 +20,7 @@
 
 #include "BaseLib/FileTools.h"
 
-#include "FileIO/readMeshFromFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
 
 #include "MeshLib/Mesh.h"
 #include "MeshLib/Node.h"
diff --git a/Applications/Utils/OGSFileConverter/OGSFileConverter.cpp b/Applications/Utils/OGSFileConverter/OGSFileConverter.cpp
index 9708c1c265bdcef3bb540e5414f9f48d9ed704d5..b01df66cd6371673de98c7221692a1595939b94f 100644
--- a/Applications/Utils/OGSFileConverter/OGSFileConverter.cpp
+++ b/Applications/Utils/OGSFileConverter/OGSFileConverter.cpp
@@ -30,8 +30,7 @@
 #include "GeoLib/IO/Legacy/OGSIOVer4.h"
 #include "GeoLib/IO/XmlIO/Qt/XmlGmlInterface.h"
 
-// mesh
-#include "Legacy/MeshIO.h"
+#include "MeshLib/IO/Legacy/MeshIO.h"
 #include "FileIO/VtkIO/VtuInterface.h"
 
 OGSFileConverter::OGSFileConverter(QWidget* parent)
diff --git a/Applications/Utils/SimpleMeshCreation/CMakeLists.txt b/Applications/Utils/SimpleMeshCreation/CMakeLists.txt
index 48014d88540c8a0369ec2300481704c6a820bd22..29c11e6717385acc7621723a24c99e9fa821d13a 100644
--- a/Applications/Utils/SimpleMeshCreation/CMakeLists.txt
+++ b/Applications/Utils/SimpleMeshCreation/CMakeLists.txt
@@ -2,7 +2,7 @@
 include_directories(
 	${CMAKE_SOURCE_DIR}/BaseLib
 	${CMAKE_SOURCE_DIR}/FileIO
-	${CMAKE_SOURCE_DIR}/FileIO/Legacy
+	${CMAKE_SOURCE_DIR}/MeshLib/IO/Legacy
 	${CMAKE_SOURCE_DIR}/GeoLib
 	${CMAKE_SOURCE_DIR}/MathLib
 	${CMAKE_SOURCE_DIR}/MeshLib
@@ -12,13 +12,13 @@ include_directories(
 if(OGS_BUILD_GUI)
 	add_executable(createMeshElemPropertiesFromASCRaster createMeshElemPropertiesFromASCRaster.cpp)
 	set_target_properties(createMeshElemPropertiesFromASCRaster PROPERTIES FOLDER Utilities)
-	target_link_libraries(createMeshElemPropertiesFromASCRaster FileIO)
+	target_link_libraries(createMeshElemPropertiesFromASCRaster MeshLib)
 	ADD_VTK_DEPENDENCY(createMeshElemPropertiesFromASCRaster)
 endif() # OGS_BUILD_GUI (VtkVis-target is existing)
 
 
 add_executable(generateStructuredMesh generateStructuredMesh.cpp)
-target_link_libraries(generateStructuredMesh FileIO)
+target_link_libraries(generateStructuredMesh MeshLib)
 set_target_properties(generateStructuredMesh PROPERTIES FOLDER Utilities)
 
 ####################
diff --git a/Applications/Utils/SimpleMeshCreation/createMeshElemPropertiesFromASCRaster.cpp b/Applications/Utils/SimpleMeshCreation/createMeshElemPropertiesFromASCRaster.cpp
index 5139ebbc5bbf3601eb48519fe50338c584b30bb8..05c43c5803e5d29498b482e3f4a5e76474093668 100644
--- a/Applications/Utils/SimpleMeshCreation/createMeshElemPropertiesFromASCRaster.cpp
+++ b/Applications/Utils/SimpleMeshCreation/createMeshElemPropertiesFromASCRaster.cpp
@@ -21,8 +21,8 @@
 #include "BaseLib/quicksort.h"
 #include "BaseLib/FileTools.h"
 
-#include "FileIO/readMeshFromFile.h"
-#include "FileIO/writeMeshToFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
+#include "MeshLib/IO/writeMeshToFile.h"
 #include "FileIO/AsciiRasterInterface.h"
 
 #include "GeoLib/Raster.h"
diff --git a/Applications/Utils/SimpleMeshCreation/generateStructuredMesh.cpp b/Applications/Utils/SimpleMeshCreation/generateStructuredMesh.cpp
index 77f1d5123e5c76f11af6ec846f2340f8e38b7de8..57190bb8cc163e92f2abc0abc9d99aa40ec233f8 100644
--- a/Applications/Utils/SimpleMeshCreation/generateStructuredMesh.cpp
+++ b/Applications/Utils/SimpleMeshCreation/generateStructuredMesh.cpp
@@ -29,7 +29,7 @@
 #include "MeshLib/MeshEnums.h"
 #include "MeshLib/MeshGenerators/MeshGenerator.h"
 
-#include "FileIO/writeMeshToFile.h"
+#include "MeshLib/IO/writeMeshToFile.h"
 
 namespace
 {
diff --git a/FileIO/CMakeLists.txt b/FileIO/CMakeLists.txt
index 6517d71039b46b759d635904495660f735aedf79..d17e3e076310044e313c28dacb46bbbb95dcd9b9 100644
--- a/FileIO/CMakeLists.txt
+++ b/FileIO/CMakeLists.txt
@@ -9,14 +9,10 @@ set(SOURCES
 	GMSHInterface.cpp
 	PetrelInterface.h
 	PetrelInterface.cpp
-	readMeshFromFile.h
-	readMeshFromFile.cpp
 	TetGenInterface.h
 	TetGenInterface.cpp
 	TINInterface.h
 	TINInterface.cpp
-	writeMeshToFile.h
-	writeMeshToFile.cpp
 )
 if(Shapelib_FOUND)
 	list(APPEND SOURCES SHPInterface.h SHPInterface.cpp)
diff --git a/FileIO/XmlIO/Qt/XmlGspInterface.cpp b/FileIO/XmlIO/Qt/XmlGspInterface.cpp
index 4c5c038fa5583142f6229cbf36c569c3454bf707..b37349f29081ccef198b75f85fe4eeb0c522fffd 100644
--- a/FileIO/XmlIO/Qt/XmlGspInterface.cpp
+++ b/FileIO/XmlIO/Qt/XmlGspInterface.cpp
@@ -28,8 +28,8 @@
 #include "BaseLib/FileFinder.h"
 #include "BaseLib/IO/Writer.h"
 
-#include "FileIO/Legacy/MeshIO.h"
-#include "FileIO/readMeshFromFile.h"
+#include "MeshLib/IO/Legacy/MeshIO.h"
+#include "MeshLib/IO/readMeshFromFile.h"
 #include "MeshLib/Mesh.h"
 
 #include <QFile>
diff --git a/MeshGeoToolsLib/GeoMapper.cpp b/MeshGeoToolsLib/GeoMapper.cpp
index a84be65a97907e9a92f430bcac39ece6fa3377ab..989b10f2b63b971df744a4639bfd33a9c806b473 100644
--- a/MeshGeoToolsLib/GeoMapper.cpp
+++ b/MeshGeoToolsLib/GeoMapper.cpp
@@ -20,7 +20,7 @@
 #include <logog/include/logog.hpp>
 
 #include "FileIO/AsciiRasterInterface.h"
-#include "FileIO/readMeshFromFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
 
 #include "GeoLib/AABB.h"
 #include "GeoLib/AnalyticalGeometry.h"
diff --git a/MeshLib/CMakeLists.txt b/MeshLib/CMakeLists.txt
index 32e897425607d972344a56ad144b8c5331ee8f70..433ce5977024b55c56f5f6c6d6a1009e9aa993fc 100644
--- a/MeshLib/CMakeLists.txt
+++ b/MeshLib/CMakeLists.txt
@@ -10,9 +10,11 @@ GET_SOURCE_FILES(SOURCES_ELEMENTS Elements)
 GET_SOURCE_FILES(SOURCES_EDITING MeshEditing)
 GET_SOURCE_FILES(SOURCES_GENERATORS MeshGenerators)
 GET_SOURCE_FILES(SOURCES_SEARCH MeshSearch)
+GET_SOURCE_FILES(SOURCES_IO IO)
+GET_SOURCE_FILES(SOURCES_IO_LEGACY IO/Legacy)
 
 GET_SOURCE_FILES(SOURCES_QUALITY MeshQuality)
-set(SOURCES ${SOURCES_MESHLIB} ${SOURCES_ELEMENTS} ${SOURCES_EDITING} ${SOURCES_GENERATORS} ${SOURCES_QUALITY} ${SOURCES_SEARCH})
+set(SOURCES ${SOURCES_MESHLIB} ${SOURCES_ELEMENTS} ${SOURCES_EDITING} ${SOURCES_GENERATORS} ${SOURCES_QUALITY} ${SOURCES_SEARCH} ${SOURCES_IO} ${SOURCES_IO_LEGACY})
 
 # Create the library
 add_library(MeshLib STATIC ${SOURCES})
diff --git a/FileIO/Legacy/MeshIO.cpp b/MeshLib/IO/Legacy/MeshIO.cpp
similarity index 100%
rename from FileIO/Legacy/MeshIO.cpp
rename to MeshLib/IO/Legacy/MeshIO.cpp
diff --git a/FileIO/Legacy/MeshIO.h b/MeshLib/IO/Legacy/MeshIO.h
similarity index 99%
rename from FileIO/Legacy/MeshIO.h
rename to MeshLib/IO/Legacy/MeshIO.h
index 257f49802454579e1e2d9f6fe1932183b85d10b3..4599290b930b63e249b04e5251b9703d3cfb0b28 100644
--- a/FileIO/Legacy/MeshIO.h
+++ b/MeshLib/IO/Legacy/MeshIO.h
@@ -73,4 +73,3 @@ private:
 } /* namespace FileIO */
 
 #endif /* MESHIO_H_ */
-
diff --git a/FileIO/readMeshFromFile.cpp b/MeshLib/IO/readMeshFromFile.cpp
similarity index 97%
rename from FileIO/readMeshFromFile.cpp
rename to MeshLib/IO/readMeshFromFile.cpp
index d70dc5557b4be7ec6c26e4467d639f048b094d40..27764c04da53488a98d527311e254cf75d95e062 100644
--- a/FileIO/readMeshFromFile.cpp
+++ b/MeshLib/IO/readMeshFromFile.cpp
@@ -30,7 +30,7 @@
 
 #include "MeshLib/Mesh.h"
 
-#include "FileIO/Legacy/MeshIO.h"
+#include "MeshLib/IO/Legacy/MeshIO.h"
 #include "FileIO/VtkIO/VtuInterface.h"
 
 #ifdef USE_PETSC
diff --git a/FileIO/readMeshFromFile.h b/MeshLib/IO/readMeshFromFile.h
similarity index 100%
rename from FileIO/readMeshFromFile.h
rename to MeshLib/IO/readMeshFromFile.h
diff --git a/FileIO/writeMeshToFile.cpp b/MeshLib/IO/writeMeshToFile.cpp
similarity index 92%
rename from FileIO/writeMeshToFile.cpp
rename to MeshLib/IO/writeMeshToFile.cpp
index c3286dcaaa1f86b0cd9bf76d48ff4a4503da1b2e..fedee7ff01cc25bd2f6c78824f5de8b2e1a17c47 100644
--- a/FileIO/writeMeshToFile.cpp
+++ b/MeshLib/IO/writeMeshToFile.cpp
@@ -15,8 +15,8 @@
 
 #include "MeshLib/Mesh.h"
 
-#include "Legacy/MeshIO.h"
-#include "VtkIO/VtuInterface.h"
+#include "MeshLib/IO/Legacy/MeshIO.h"
+#include "FileIO/VtkIO/VtuInterface.h"
 
 namespace FileIO
 {
diff --git a/FileIO/writeMeshToFile.h b/MeshLib/IO/writeMeshToFile.h
similarity index 100%
rename from FileIO/writeMeshToFile.h
rename to MeshLib/IO/writeMeshToFile.h
diff --git a/SimpleTests/MeshTests/MeshRead.cpp b/SimpleTests/MeshTests/MeshRead.cpp
index 018e0fbdabae68ca883d37387da9f92440c884f6..43ab8b1dc047a74c1d42a5f6fa1d6d60e015712b 100644
--- a/SimpleTests/MeshTests/MeshRead.cpp
+++ b/SimpleTests/MeshTests/MeshRead.cpp
@@ -21,7 +21,7 @@
 #include "BaseLib/StringTools.h"
 #include "BaseLib/FileTools.h"
 
-#include "FileIO/readMeshFromFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
 
 #include "MeshLib/Node.h"
 #include "MeshLib/Elements/Element.h"
diff --git a/SimpleTests/MeshTests/MeshSearchTest.cpp b/SimpleTests/MeshTests/MeshSearchTest.cpp
index d59f661e3bdc04472cdced742de4db11637f71f7..c6efa7eee0c0cc46a957888a4574959aee2d7761 100644
--- a/SimpleTests/MeshTests/MeshSearchTest.cpp
+++ b/SimpleTests/MeshTests/MeshSearchTest.cpp
@@ -16,7 +16,7 @@
 #include "BaseLib/MemWatch.h"
 #include "BaseLib/RunTime.h"
 
-#include "FileIO/Legacy/MeshIO.h"
+#include "MeshLib/IO/Legacy/MeshIO.h"
 
 #include "GeoLib/Grid.h"
 
diff --git a/Tests/FileIO/TestTetGenInterface.cpp b/Tests/FileIO/TestTetGenInterface.cpp
index c6f042ae4f8b623764f7cfee54bd1e061afcdb9e..cd39f06a01f3b9bb2ca89e7e85a28cb0d8dd85fb 100644
--- a/Tests/FileIO/TestTetGenInterface.cpp
+++ b/Tests/FileIO/TestTetGenInterface.cpp
@@ -19,7 +19,7 @@
 #include "gtest/gtest.h"
 
 #include "BaseLib/BuildInfo.h"
-#include "FileIO/readMeshFromFile.h"
+#include "MeshLib/IO/readMeshFromFile.h"
 #include "FileIO/TetGenInterface.h"
 #include "GeoLib/GEOObjects.h"
 #include "MeshLib/Mesh.h"