diff --git a/Applications/ApplicationsLib/ProjectData.cpp b/Applications/ApplicationsLib/ProjectData.cpp
index fc71924b38c7740bae5f0df4fb53f23dec048fd7..9df0b36d7b47e90c0d8c124804b6af13c6a98d56 100644
--- a/Applications/ApplicationsLib/ProjectData.cpp
+++ b/Applications/ApplicationsLib/ProjectData.cpp
@@ -33,7 +33,7 @@
 
 #include "UncoupledProcessesTimeLoop.h"
 
-#include "ProcessLib/GroundwaterFlowProcess-fwd.h"
+#include "ProcessLib/GroundwaterFlow/GroundwaterFlowProcess-fwd.h"
 
 
 namespace detail
@@ -170,7 +170,8 @@ void ProjectData::buildProcesses()
 			// several meshes. Then we have to assign the referenced mesh
 			// here.
 			_processes.emplace_back(
-				ProcessLib::createGroundwaterFlowProcess<GlobalSetupType>(
+				ProcessLib::GroundwaterFlow::
+				createGroundwaterFlowProcess<GlobalSetupType>(
 				    *_mesh_vec[0], *nl_slv, std::move(time_disc),
 				    _process_variables, _parameters, pc));
 		}
diff --git a/ProcessLib/CMakeLists.txt b/ProcessLib/CMakeLists.txt
index d9c60892dc0031b347a11b4ee421f989d4835e92..64e8b6308c2658fe8d251a187f90f876cc2fda1b 100644
--- a/ProcessLib/CMakeLists.txt
+++ b/ProcessLib/CMakeLists.txt
@@ -1,7 +1,10 @@
 include(${PROJECT_SOURCE_DIR}/scripts/cmake/OGSEnabledElements.cmake)
 
 # Source files
-GET_SOURCE_FILES(SOURCES)
+APPEND_SOURCE_FILES(SOURCES)
+
+add_subdirectory(GroundwaterFlow)
+APPEND_SOURCE_FILES(SOURCES GroundwaterFlow)
 
 add_library(ProcessLib STATIC ${SOURCES})
 
diff --git a/ProcessLib/GroundwaterFlow/CMakeLists.txt b/ProcessLib/GroundwaterFlow/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/ProcessLib/GroundwaterFlowFEM.h b/ProcessLib/GroundwaterFlow/GroundwaterFlowFEM.h
similarity index 98%
rename from ProcessLib/GroundwaterFlowFEM.h
rename to ProcessLib/GroundwaterFlow/GroundwaterFlowFEM.h
index a601559c42d348c3b601ed3b699cb3ad240d64e9..c0bf5c107b96ec82874060b35bc68007db53b84e 100644
--- a/ProcessLib/GroundwaterFlowFEM.h
+++ b/ProcessLib/GroundwaterFlow/GroundwaterFlowFEM.h
@@ -14,10 +14,8 @@
 
 #include "NumLib/Fem/FiniteElement/TemplateIsoparametric.h"
 #include "NumLib/Fem/ShapeMatrixPolicy.h"
-
-#include "Parameter.h"
-#include "ProcessUtil.h"
-
+#include "ProcessLib/Parameter.h"
+#include "ProcessLib/ProcessUtil.h"
 
 namespace ProcessLib
 {
diff --git a/ProcessLib/GroundwaterFlowProcess-fwd.h b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess-fwd.h
similarity index 77%
rename from ProcessLib/GroundwaterFlowProcess-fwd.h
rename to ProcessLib/GroundwaterFlow/GroundwaterFlowProcess-fwd.h
index 7f147f4954227ced243359e01c8b400f3c8cdfdb..57c6516da9fb9009409dd88ca5dafafb4437b869 100644
--- a/ProcessLib/GroundwaterFlowProcess-fwd.h
+++ b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess-fwd.h
@@ -11,8 +11,8 @@
 #define PROCESS_LIB_GROUNDWATERFLOWPROCESS_FWD_H_
 
 #include "GroundwaterFlowProcess.h"
-#include "NumericsConfig.h"
+#include "ProcessLib/NumericsConfig.h"
 
-extern template class ProcessLib::GroundwaterFlowProcess<GlobalSetupType>;
+extern template class ProcessLib::GroundwaterFlow::GroundwaterFlowProcess<GlobalSetupType>;
 
 #endif  // PROCESS_LIB_GROUNDWATERFLOWPROCESS_FWD_H_
diff --git a/ProcessLib/GroundwaterFlowProcess.cpp b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.cpp
similarity index 88%
rename from ProcessLib/GroundwaterFlowProcess.cpp
rename to ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.cpp
index 46df0f284b768855a8e1bdd3c7ffa5f89ec8e095..2646e636596c94d0be64bf7e96d8ae3c6e70920f 100644
--- a/ProcessLib/GroundwaterFlowProcess.cpp
+++ b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.cpp
@@ -10,9 +10,10 @@
 #include "GroundwaterFlowProcess-fwd.h"
 #include "GroundwaterFlowProcess.h"
 
-namespace ProcessLib
-{
+namespace ProcessLib {
+namespace GroundwaterFlow {
 
 template class GroundwaterFlowProcess<GlobalSetupType>;
 
-}   // namespace ProcessLib
+}
+}
diff --git a/ProcessLib/GroundwaterFlowProcess.h b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h
similarity index 98%
rename from ProcessLib/GroundwaterFlowProcess.h
rename to ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h
index 7ed8b26636988a7a95058267416aa7861b279ddb..d38420d6ec209ba044c3ea30ec4a5bb09e7b1876 100644
--- a/ProcessLib/GroundwaterFlowProcess.h
+++ b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h
@@ -12,13 +12,11 @@
 
 #include <cassert>
 
-#include <boost/optional.hpp>
-
 #include "AssemblerLib/LocalAssemblerBuilder.h"
 #include "AssemblerLib/LocalDataInitializer.h"
+#include "ProcessLib/Process.h"
 
 #include "GroundwaterFlowFEM.h"
-#include "Process.h"
 
 namespace MeshLib
 {
@@ -30,6 +28,9 @@ namespace MeshLib
 namespace ProcessLib
 {
 
+namespace GroundwaterFlow
+{
+
 template<typename GlobalSetup>
 class GroundwaterFlowProcess final
         : public Process<GlobalSetup>
@@ -192,6 +193,8 @@ createGroundwaterFlowProcess(
             hydraulic_conductivity
     }};
 }
+
+}   // namespace GroundwaterFlow
 }   // namespace ProcessLib
 
 #endif  // PROCESS_LIB_GROUNDWATERFLOWPROCESS_H_