diff --git a/Applications/ApplicationsLib/ProjectData.cpp b/Applications/ApplicationsLib/ProjectData.cpp
index 08fe824de30f6a6d85184d8a4009107582da6c1e..4e6d2d880ff4a64b49f0bcaaa426eb225a3c5006 100644
--- a/Applications/ApplicationsLib/ProjectData.cpp
+++ b/Applications/ApplicationsLib/ProjectData.cpp
@@ -24,8 +24,6 @@
 
 #include "BaseLib/Algorithm.h"
 #include "BaseLib/FileTools.h"
-// include due to the forward declaration in ProcessVariable.h
-#include "BaseLib/TimeInterval.h"
 
 #include "GeoLib/GEOObjects.h"
 #include "MathLib/Curve/CreatePiecewiseLinearCurve.h"
diff --git a/Applications/CLI/ogs.cpp b/Applications/CLI/ogs.cpp
index 5d2e729dafa17acebf24da0f63d1b242d61edfbe..76fdc683bbb5082705f5b3ed225f8c9f404b2a3c 100644
--- a/Applications/CLI/ogs.cpp
+++ b/Applications/CLI/ogs.cpp
@@ -33,16 +33,12 @@
 #include "BaseLib/FileTools.h"
 #include "BaseLib/RunTime.h"
 #include "BaseLib/TemplateLogogFormatterSuppressedGCC.h"
- // include due to the forward declaration in ProcessVariable.h
-#include "BaseLib/TimeInterval.h"
 
 #include "Applications/ApplicationsLib/LinearSolverLibrarySetup.h"
 #include "Applications/ApplicationsLib/LogogSetup.h"
 #include "Applications/ApplicationsLib/ProjectData.h"
 #include "Applications/ApplicationsLib/TestDefinition.h"
 #include "Applications/InSituLib/Adaptor.h"
- // include due to the forward declaration in ProcessVariable.h
-#include "ProcessLib/DeactivatedSubdomain.h"
 #include "ProcessLib/UncoupledProcessesTimeLoop.h"
 
 #include "NumLib/NumericsConfig.h"
diff --git a/ProcessLib/DeactivatedSubdomain.cpp b/ProcessLib/DeactivatedSubdomain.cpp
index da8c9eeef3cc53f52eceba7d2a25e2baac5a2ac8..30ee2680aab795f2b3c10bf850caccecc5e2af75 100644
--- a/ProcessLib/DeactivatedSubdomain.cpp
+++ b/ProcessLib/DeactivatedSubdomain.cpp
@@ -16,7 +16,6 @@
 
 #include "BaseLib/ConfigTree.h"
 #include "BaseLib/Error.h"
-#include "BaseLib/TimeInterval.h"
 
 #include "MeshLib/MeshEditing/DuplicateMeshComponents.h"
 #include "MeshLib/Mesh.h"
diff --git a/ProcessLib/DeactivatedSubdomain.h b/ProcessLib/DeactivatedSubdomain.h
index ca9bc013cf8728f94f55cd2c1e652ae7664b86bb..9f53af7847c34b2ec6203349e43671a6bb6f93eb 100644
--- a/ProcessLib/DeactivatedSubdomain.h
+++ b/ProcessLib/DeactivatedSubdomain.h
@@ -17,10 +17,14 @@
 #include <string>
 #include <vector>
 
+// TimeInterval cannot be forwardly declared because that
+// std::unique_ptr<BaseLib::TimeInterval> type member requires its full
+// definition (see https://stackoverflow.com/a/6089065).
+#include "BaseLib/TimeInterval.h"
+
 namespace BaseLib
 {
 class ConfigTree;
-class TimeInterval;
 }  // namespace BaseLib
 
 namespace MeshLib
@@ -51,7 +55,7 @@ struct DeactivatedSubdomain
 
     bool includesTimeOf(double const t) const;
 
-    std::unique_ptr<BaseLib::TimeInterval const> time_interval;
+    std::unique_ptr<BaseLib::TimeInterval const> const time_interval;
 
     /// The material IDs of the deactivated the subdomains
     std::vector<int> const materialIDs;
diff --git a/ProcessLib/ProcessVariable.cpp b/ProcessLib/ProcessVariable.cpp
index 6785d6af58f67373ae4f4412f7c309dc7296b794..6771982aeeb1ae2315cb2b3fbb87f14a1b0442bd 100644
--- a/ProcessLib/ProcessVariable.cpp
+++ b/ProcessLib/ProcessVariable.cpp
@@ -26,7 +26,6 @@
 #include "ProcessLib/BoundaryCondition/BoundaryCondition.h"
 #include "ProcessLib/BoundaryCondition/CreateBoundaryCondition.h"
 #include "ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.h"
-#include "ProcessLib/DeactivatedSubdomain.h"
 #include "ProcessLib/SourceTerms/CreateSourceTerm.h"
 #include "ProcessLib/SourceTerms/SourceTerm.h"
 #include "ProcessLib/Utils/ProcessUtils.h"
@@ -119,9 +118,9 @@ ProcessVariable::ProcessVariable(
                   _shapefunction_order);
 
     // Boundary conditions
-    //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions}
     if (auto bcs_config =
-            config.getConfigSubtreeOptional("boundary_conditions"))
+        //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions}
+        config.getConfigSubtreeOptional("boundary_conditions"))
     {
         for (
             auto bc_config :
diff --git a/ProcessLib/ProcessVariable.h b/ProcessLib/ProcessVariable.h
index 0474db4f53de38ad81727f18d174703e1c44b1a8..890db1c2770f92a2790aad5e9423f282e3371072 100644
--- a/ProcessLib/ProcessVariable.h
+++ b/ProcessLib/ProcessVariable.h
@@ -15,6 +15,11 @@
 #include "ProcessLib/Parameter/Parameter.h"
 #include "ProcessLib/SourceTerms/SourceTermConfig.h"
 
+// DeactivatedSubdomain cannot be forwardly declared because that
+// std::unique_ptr<DeactivatedSubdomain> type member requires its full
+// definition (see https://stackoverflow.com/a/6089065).
+#include "ProcessLib/DeactivatedSubdomain.h"
+
 namespace MeshLib
 {
 class Mesh;
@@ -35,8 +40,6 @@ class Process;
 
 namespace ProcessLib
 {
-struct DeactivatedSubdomain;
-
 /// A named process variable. Its properties includes the mesh, and the initial
 /// and boundary conditions as well as the source terms.
 class ProcessVariable