diff --git a/Applications/ApplicationsLib/CMakeLists.txt b/Applications/ApplicationsLib/CMakeLists.txt
index d9025f2aa8c899bc07400064d7494638643747bd..95d7537a72efc716143736815781c6312d7cfb77 100644
--- a/Applications/ApplicationsLib/CMakeLists.txt
+++ b/Applications/ApplicationsLib/CMakeLists.txt
@@ -6,7 +6,7 @@ set(LIB_SOURCES ${SOURCES_APPLICATIONSLIB})
 add_library(ApplicationsLib ${LIB_SOURCES})
 
 target_link_libraries(ApplicationsLib
-    PUBLIC BaseLib GeoLib NumLib ProcessLib logog
+    PUBLIC BaseLib GeoLib Processes logog
     PRIVATE MathLib MeshLib
 )
 
diff --git a/Applications/Utils/PostProcessing/CMakeLists.txt b/Applications/Utils/PostProcessing/CMakeLists.txt
index f93930ff17929979648c268678cc767c1a807518..ee3f47121bf1c9de0741bdc9c1a66726b6f4da50 100644
--- a/Applications/Utils/PostProcessing/CMakeLists.txt
+++ b/Applications/Utils/PostProcessing/CMakeLists.txt
@@ -1,6 +1,6 @@
 
 add_executable(postLIE postLIE.cpp)
-target_link_libraries(postLIE MeshLib ProcessLib)
+target_link_libraries(postLIE MeshLib LIE)
 set_target_properties(postLIE PROPERTIES FOLDER Utilities)
 
 ####################
diff --git a/ProcessLib/CMakeLists.txt b/ProcessLib/CMakeLists.txt
index 4e7fa3bb398dd833b32eb2c2cec03a3b691d27ef..4ee0f5cc41ded1b23a261ea78b31f747f18a995e 100644
--- a/ProcessLib/CMakeLists.txt
+++ b/ProcessLib/CMakeLists.txt
@@ -1,5 +1,41 @@
 include(${PROJECT_SOURCE_DIR}/scripts/cmake/OGSEnabledElements.cmake)
 
+add_subdirectory(ComponentTransport)
+add_subdirectory(GroundwaterFlow)
+add_subdirectory(HT)
+add_subdirectory(HeatConduction)
+add_subdirectory(HydroMechanics)
+add_subdirectory(LiquidFlow)
+add_subdirectory(LIE)
+add_subdirectory(PhaseField)
+add_subdirectory(RichardsComponentTransport)
+add_subdirectory(RichardsFlow)
+add_subdirectory(SmallDeformation)
+add_subdirectory(TES)
+add_subdirectory(ThermalTwoPhaseFlowWithPP)
+add_subdirectory(ThermoMechanics)
+add_subdirectory(TwoPhaseFlowWithPP)
+add_subdirectory(TwoPhaseFlowWithPrho)
+
+add_library(Processes INTERFACE)
+target_link_libraries(Processes INTERFACE
+    ComponentTransport
+    GroundwaterFlow
+    HT
+    HeatConduction
+    HydroMechanics
+    LiquidFlow
+    LIE
+    PhaseField
+    RichardsComponentTransport
+    RichardsFlow
+    SmallDeformation
+    TES
+    ThermalTwoPhaseFlowWithPP
+    ThermoMechanics
+    TwoPhaseFlowWithPP
+    TwoPhaseFlowWithPrho)
+
 APPEND_SOURCE_FILES(SOURCES)
 APPEND_SOURCE_FILES(SOURCES BoundaryCondition)
 APPEND_SOURCE_FILES(SOURCES CalculateSurfaceFlux)
@@ -8,29 +44,6 @@ APPEND_SOURCE_FILES(SOURCES Parameter)
 APPEND_SOURCE_FILES(SOURCES SourceTerms)
 APPEND_SOURCE_FILES(SOURCES Utils)
 
-APPEND_SOURCE_FILES(SOURCES ComponentTransport)
-APPEND_SOURCE_FILES(SOURCES Deformation)
-APPEND_SOURCE_FILES(SOURCES GroundwaterFlow)
-APPEND_SOURCE_FILES(SOURCES HT)
-APPEND_SOURCE_FILES(SOURCES HeatConduction)
-APPEND_SOURCE_FILES(SOURCES HydroMechanics)
-APPEND_SOURCE_FILES(SOURCES LIE/BoundaryCondition)
-APPEND_SOURCE_FILES(SOURCES LIE/Common)
-APPEND_SOURCE_FILES(SOURCES LIE/HydroMechanics)
-APPEND_SOURCE_FILES(SOURCES LIE/HydroMechanics/LocalAssembler)
-APPEND_SOURCE_FILES(SOURCES LIE/SmallDeformation)
-APPEND_SOURCE_FILES(SOURCES LIE/SmallDeformation/LocalAssembler)
-APPEND_SOURCE_FILES(SOURCES LiquidFlow)
-APPEND_SOURCE_FILES(SOURCES PhaseField)
-APPEND_SOURCE_FILES(SOURCES RichardsComponentTransport)
-APPEND_SOURCE_FILES(SOURCES RichardsFlow)
-APPEND_SOURCE_FILES(SOURCES SmallDeformation)
-APPEND_SOURCE_FILES(SOURCES TES)
-APPEND_SOURCE_FILES(SOURCES ThermalTwoPhaseFlowWithPP)
-APPEND_SOURCE_FILES(SOURCES ThermoMechanics)
-APPEND_SOURCE_FILES(SOURCES TwoPhaseFlowWithPP)
-APPEND_SOURCE_FILES(SOURCES TwoPhaseFlowWithPrho)
-
 add_library(ProcessLib ${SOURCES})
 
 target_link_libraries(ProcessLib
@@ -51,22 +64,3 @@ endif()
 if(OGS_USE_PCH)
     cotire(ProcessLib)
 endif()
-
-### Tests ###
-include(ComponentTransport/Tests.cmake)
-include(GroundwaterFlow/Tests.cmake)
-include(HeatConduction/Tests.cmake)
-include(HT/Tests.cmake)
-include(HydroMechanics/Tests.cmake)
-include(LIE/HydroMechanics/Tests.cmake)
-include(LIE/SmallDeformation/Tests.cmake)
-include(LiquidFlow/Tests.cmake)
-include(PhaseField/Tests.cmake)
-include(RichardsFlow/Tests.cmake)
-include(RichardsComponentTransport/Tests.cmake)
-include(SmallDeformation/Tests.cmake)
-include(TES/Tests.cmake)
-include(ThermoMechanics/Tests.cmake)
-include(TwoPhaseFlowWithPP/Tests.cmake)
-include(TwoPhaseFlowWithPrho/Tests.cmake)
-include(ThermalTwoPhaseFlowWithPP/Tests.cmake)
diff --git a/ProcessLib/ComponentTransport/CMakeLists.txt b/ProcessLib/ComponentTransport/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8fd79d9b1acdd7ef422b1ca15d234a69a81e2f43
--- /dev/null
+++ b/ProcessLib/ComponentTransport/CMakeLists.txt
@@ -0,0 +1,9 @@
+APPEND_SOURCE_FILES(SOURCES)
+
+add_library(ComponentTransport ${SOURCES})
+
+target_link_libraries(ComponentTransport
+    PUBLIC ProcessLib
+)
+
+include(Tests.cmake)
diff --git a/ProcessLib/GroundwaterFlow/CMakeLists.txt b/ProcessLib/GroundwaterFlow/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..df390e0d3eb922ee60e7eada6e81030f5611cc75
--- /dev/null
+++ b/ProcessLib/GroundwaterFlow/CMakeLists.txt
@@ -0,0 +1,9 @@
+APPEND_SOURCE_FILES(SOURCES)
+
+add_library(GroundwaterFlow ${SOURCES})
+
+target_link_libraries(GroundwaterFlow
+    PUBLIC ProcessLib
+)
+
+include(Tests.cmake)
diff --git a/ProcessLib/HT/CMakeLists.txt b/ProcessLib/HT/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ad8493534eb3cca53d2e250622ab4dd20527979a
--- /dev/null
+++ b/ProcessLib/HT/CMakeLists.txt
@@ -0,0 +1,6 @@
+APPEND_SOURCE_FILES(SOURCES)
+
+add_library(HT ${SOURCES})
+target_link_libraries(HT PUBLIC ProcessLib)
+
+include(Tests.cmake)
diff --git a/ProcessLib/HeatConduction/CMakeLists.txt b/ProcessLib/HeatConduction/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dab843c36936b496ac542151d58b0bee9bba62d0
--- /dev/null
+++ b/ProcessLib/HeatConduction/CMakeLists.txt
@@ -0,0 +1,6 @@
+APPEND_SOURCE_FILES(SOURCES)
+
+add_library(HeatConduction ${SOURCES})
+target_link_libraries(HeatConduction PUBLIC ProcessLib)
+
+include(Tests.cmake)
diff --git a/ProcessLib/HydroMechanics/CMakeLists.txt b/ProcessLib/HydroMechanics/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5ac96f99ae46a70289f338fe283b9e69000ce676
--- /dev/null
+++ b/ProcessLib/HydroMechanics/CMakeLists.txt
@@ -0,0 +1,6 @@
+APPEND_SOURCE_FILES(SOURCES)
+
+add_library(HydroMechanics ${SOURCES})
+target_link_libraries(HydroMechanics PUBLIC ProcessLib)
+
+include(Tests.cmake)
diff --git a/ProcessLib/LIE/CMakeLists.txt b/ProcessLib/LIE/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0e236b03b9bdd93d77c72367fca750e6ea7eaa78
--- /dev/null
+++ b/ProcessLib/LIE/CMakeLists.txt
@@ -0,0 +1,12 @@
+APPEND_SOURCE_FILES(SOURCES BoundaryCondition)
+APPEND_SOURCE_FILES(SOURCES Common)
+APPEND_SOURCE_FILES(SOURCES HydroMechanics)
+APPEND_SOURCE_FILES(SOURCES HydroMechanics/LocalAssembler)
+APPEND_SOURCE_FILES(SOURCES SmallDeformation)
+APPEND_SOURCE_FILES(SOURCES SmallDeformation/LocalAssembler)
+
+add_library(LIE ${SOURCES})
+target_link_libraries(LIE PUBLIC ProcessLib)
+
+include(HydroMechanics/Tests.cmake)
+include(SmallDeformation/Tests.cmake)
diff --git a/ProcessLib/LiquidFlow/CMakeLists.txt b/ProcessLib/LiquidFlow/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9324f6ac3968d233646c5020e1baacb953a77261
--- /dev/null
+++ b/ProcessLib/LiquidFlow/CMakeLists.txt
@@ -0,0 +1,6 @@
+APPEND_SOURCE_FILES(SOURCES)
+
+add_library(LiquidFlow ${SOURCES})
+target_link_libraries(LiquidFlow PUBLIC ProcessLib)
+
+include(Tests.cmake)
diff --git a/ProcessLib/PhaseField/CMakeLists.txt b/ProcessLib/PhaseField/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6a541ed532b9c8effa95aaa7e48b0aecd7578807
--- /dev/null
+++ b/ProcessLib/PhaseField/CMakeLists.txt
@@ -0,0 +1,6 @@
+APPEND_SOURCE_FILES(SOURCES)
+
+add_library(PhaseField ${SOURCES})
+target_link_libraries(PhaseField PUBLIC ProcessLib)
+
+include(Tests.cmake)
diff --git a/ProcessLib/RichardsComponentTransport/CMakeLists.txt b/ProcessLib/RichardsComponentTransport/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8a8a9ec2f7387119efc9f9afd565cc67773b16b0
--- /dev/null
+++ b/ProcessLib/RichardsComponentTransport/CMakeLists.txt
@@ -0,0 +1,6 @@
+APPEND_SOURCE_FILES(SOURCES)
+
+add_library(RichardsComponentTransport ${SOURCES})
+target_link_libraries(RichardsComponentTransport PUBLIC ProcessLib)
+
+include(Tests.cmake)
diff --git a/ProcessLib/RichardsFlow/CMakeLists.txt b/ProcessLib/RichardsFlow/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b7647cf90fff76a1564890a9895321886a3a1022
--- /dev/null
+++ b/ProcessLib/RichardsFlow/CMakeLists.txt
@@ -0,0 +1,6 @@
+APPEND_SOURCE_FILES(SOURCES)
+
+add_library(RichardsFlow ${SOURCES})
+target_link_libraries(RichardsFlow PUBLIC ProcessLib)
+
+include(Tests.cmake)
diff --git a/ProcessLib/SmallDeformation/CMakeLists.txt b/ProcessLib/SmallDeformation/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..341d2ebe76bcb28a0ba5d6e2525b4238037dfad3
--- /dev/null
+++ b/ProcessLib/SmallDeformation/CMakeLists.txt
@@ -0,0 +1,6 @@
+APPEND_SOURCE_FILES(SOURCES)
+
+add_library(SmallDeformation ${SOURCES})
+target_link_libraries(SmallDeformation PUBLIC ProcessLib)
+
+include(Tests.cmake)
diff --git a/ProcessLib/TES/CMakeLists.txt b/ProcessLib/TES/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1a80afc2301c369c5da58add44c738f9c4a81bba
--- /dev/null
+++ b/ProcessLib/TES/CMakeLists.txt
@@ -0,0 +1,6 @@
+APPEND_SOURCE_FILES(SOURCES)
+
+add_library(TES ${SOURCES})
+target_link_libraries(TES PUBLIC ProcessLib)
+
+include(Tests.cmake)
diff --git a/ProcessLib/ThermalTwoPhaseFlowWithPP/CMakeLists.txt b/ProcessLib/ThermalTwoPhaseFlowWithPP/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..141baacb34495aa9cfe60f12be64f48c24d9f3bd
--- /dev/null
+++ b/ProcessLib/ThermalTwoPhaseFlowWithPP/CMakeLists.txt
@@ -0,0 +1,6 @@
+APPEND_SOURCE_FILES(SOURCES)
+
+add_library(ThermalTwoPhaseFlowWithPP ${SOURCES})
+target_link_libraries(ThermalTwoPhaseFlowWithPP PUBLIC ProcessLib)
+
+include(Tests.cmake)
diff --git a/ProcessLib/ThermoMechanics/CMakeLists.txt b/ProcessLib/ThermoMechanics/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3d6de7a861c2ef241da4b3909ef487afbcdd4317
--- /dev/null
+++ b/ProcessLib/ThermoMechanics/CMakeLists.txt
@@ -0,0 +1,6 @@
+APPEND_SOURCE_FILES(SOURCES)
+
+add_library(ThermoMechanics ${SOURCES})
+target_link_libraries(ThermoMechanics PUBLIC ProcessLib)
+
+include(Tests.cmake)
diff --git a/ProcessLib/TwoPhaseFlowWithPP/CMakeLists.txt b/ProcessLib/TwoPhaseFlowWithPP/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1a186fc256b2915b1edd11010fc25a258ee59042
--- /dev/null
+++ b/ProcessLib/TwoPhaseFlowWithPP/CMakeLists.txt
@@ -0,0 +1,6 @@
+APPEND_SOURCE_FILES(SOURCES)
+
+add_library(TwoPhaseFlowWithPP ${SOURCES})
+target_link_libraries(TwoPhaseFlowWithPP PUBLIC ProcessLib)
+
+include(Tests.cmake)
diff --git a/ProcessLib/TwoPhaseFlowWithPrho/CMakeLists.txt b/ProcessLib/TwoPhaseFlowWithPrho/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cc04858fe350127b814597e8f24afbc4b992704e
--- /dev/null
+++ b/ProcessLib/TwoPhaseFlowWithPrho/CMakeLists.txt
@@ -0,0 +1,6 @@
+APPEND_SOURCE_FILES(SOURCES)
+
+add_library(TwoPhaseFlowWithPrho ${SOURCES})
+target_link_libraries(TwoPhaseFlowWithPrho PUBLIC ProcessLib)
+
+include(Tests.cmake)
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index d3b242552b9afa1e7f8cd4dca9cd9f99047bc015..9be123f0799c9959aa27e9d31b6f17fd270ef37e 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -38,6 +38,7 @@ target_link_libraries(testrunner
     ApplicationsLib
     ApplicationsFileIO
     GTest
+    LIE
     MeshGeoToolsLib
     MaterialLib
     MeshLib