diff --git a/MaterialLib/CMakeLists.txt b/MaterialLib/CMakeLists.txt
index 3aa2d4822778e6418ab945dde0ef7e6d301afaa8..3b1e47b060a26f7f23139743d003f4e2cc317d1d 100644
--- a/MaterialLib/CMakeLists.txt
+++ b/MaterialLib/CMakeLists.txt
@@ -16,6 +16,8 @@ append_source_files(SOURCES Fluid/WaterVaporProperties)
 
 append_source_files(SOURCES MPL)
 append_source_files(SOURCES MPL/Properties)
+append_source_files(SOURCES MPL/Properties/CapillaryPressureSaturation)
+append_source_files(SOURCES MPL/Properties/RelativePermeability)
 append_source_files(SOURCES MPL/Components)
 append_source_files(SOURCES MPL/Utils)
 
diff --git a/MaterialLib/MPL/Properties/CreateSaturationBrooksCorey.cpp b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationBrooksCorey.cpp
similarity index 100%
rename from MaterialLib/MPL/Properties/CreateSaturationBrooksCorey.cpp
rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationBrooksCorey.cpp
diff --git a/MaterialLib/MPL/Properties/CreateSaturationBrooksCorey.h b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationBrooksCorey.h
similarity index 100%
rename from MaterialLib/MPL/Properties/CreateSaturationBrooksCorey.h
rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationBrooksCorey.h
diff --git a/MaterialLib/MPL/Properties/CreateSaturationLiakopoulos.cpp b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationLiakopoulos.cpp
similarity index 100%
rename from MaterialLib/MPL/Properties/CreateSaturationLiakopoulos.cpp
rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationLiakopoulos.cpp
diff --git a/MaterialLib/MPL/Properties/CreateSaturationLiakopoulos.h b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationLiakopoulos.h
similarity index 100%
rename from MaterialLib/MPL/Properties/CreateSaturationLiakopoulos.h
rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationLiakopoulos.h
diff --git a/MaterialLib/MPL/Properties/CreateSaturationVanGenuchten.cpp b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationVanGenuchten.cpp
similarity index 100%
rename from MaterialLib/MPL/Properties/CreateSaturationVanGenuchten.cpp
rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationVanGenuchten.cpp
diff --git a/MaterialLib/MPL/Properties/CreateSaturationVanGenuchten.h b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationVanGenuchten.h
similarity index 100%
rename from MaterialLib/MPL/Properties/CreateSaturationVanGenuchten.h
rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationVanGenuchten.h
diff --git a/MaterialLib/MPL/Properties/SaturationBrooksCorey.cpp b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationBrooksCorey.cpp
similarity index 100%
rename from MaterialLib/MPL/Properties/SaturationBrooksCorey.cpp
rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationBrooksCorey.cpp
diff --git a/MaterialLib/MPL/Properties/SaturationBrooksCorey.h b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationBrooksCorey.h
similarity index 100%
rename from MaterialLib/MPL/Properties/SaturationBrooksCorey.h
rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationBrooksCorey.h
diff --git a/MaterialLib/MPL/Properties/SaturationLiakopoulos.cpp b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationLiakopoulos.cpp
similarity index 97%
rename from MaterialLib/MPL/Properties/SaturationLiakopoulos.cpp
rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationLiakopoulos.cpp
index 304243c4fd16069a5586ef150bbadfc88df3e00f..cb71c908b4546d94d768125113af42862d55e747 100644
--- a/MaterialLib/MPL/Properties/SaturationLiakopoulos.cpp
+++ b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationLiakopoulos.cpp
@@ -12,7 +12,8 @@
  *
  */
 
-#include "MaterialLib/MPL/Properties/SaturationLiakopoulos.h"
+#include "SaturationLiakopoulos.h"
+
 #include "MaterialLib/MPL/Medium.h"
 #include "MathLib/MathTools.h"
 
diff --git a/MaterialLib/MPL/Properties/SaturationLiakopoulos.h b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationLiakopoulos.h
similarity index 100%
rename from MaterialLib/MPL/Properties/SaturationLiakopoulos.h
rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationLiakopoulos.h
diff --git a/MaterialLib/MPL/Properties/SaturationVanGenuchten.cpp b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationVanGenuchten.cpp
similarity index 100%
rename from MaterialLib/MPL/Properties/SaturationVanGenuchten.cpp
rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationVanGenuchten.cpp
diff --git a/MaterialLib/MPL/Properties/SaturationVanGenuchten.h b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationVanGenuchten.h
similarity index 67%
rename from MaterialLib/MPL/Properties/SaturationVanGenuchten.h
rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationVanGenuchten.h
index cbaff22c6ab6cff2ff07d012b67a2db36cc5ab5b..07ffd95c53feaf14a792fbb0a51bedf789d6722d 100644
--- a/MaterialLib/MPL/Properties/SaturationVanGenuchten.h
+++ b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationVanGenuchten.h
@@ -15,20 +15,44 @@ namespace MaterialPropertyLib
 class Medium;
 class Phase;
 class Component;
-
-/// The van Genuchten soil characteristics function.
-///
-/// This property must be a medium property, it computes the saturation of the
-/// wetting phase as function of capillary pressure.
+/**
+ *   \brief The van Genuchten capillary pressure model:
+ *
+ *   \f[p_c(S)=p_b (S_e^{-1/m}-1)^{1-m}\f]
+ *   with
+ *   \f[S_e=\frac{S-S_r}{S_{\mbox{max}}-S_r}\f]
+ *   where
+ *    \f{eqnarray*}{
+ *       &p_b&            \mbox{ entry pressure,}\\
+ *       &S_r&            \mbox{ residual saturation,}\\
+ *       &S_{\mbox{max}}& \mbox{ maximum saturation,}\\
+ *       &m \in [0,1) &        \mbox{ exponent.}\\
+ *    \f}
+ *
+ *    Note in some expressions, a parameter of \f$n\f$ is introduced, where
+ *     \f[n=1/(1-m)\f].
+ *
+ *    If \f$\alpha\f$ instead of \f$p_b\f$ is available, \f$p_b\f$ can
+ * be calculated
+ * as
+ *    \f[p_b=\rho g/\alpha\f].
+ *
+ *  If the capillary pressure is known, the saturation can be
+ *  obtained by this model with
+ *  \f[S(p_c)=\left \{
+ *  \begin{array}{1}
+ *   S_{\mbox{max}},\, p_c < 0,\\
+ *    \left( \left(\dfrac{p_c}{p_b}\right)^{\frac{1}{1-m}} +1\right)^{-m}
+ *     (S_{\mbox{max}}-S_r) +S_r,\, p_c  \geq 0
+      \end{array}
+ *   \right.
+ * \f].
+ *
+ *   class SaturationVanGenuchten handles the computations associated
+ *    with  \f$S(p_c)\f$.
+ */
 class SaturationVanGenuchten final : public Property
 {
-private:
-    Medium* _medium = nullptr;
-    double const _S_L_res;
-    double const _S_L_max;
-    double const _m;
-    double const _p_b;
-
 public:
     SaturationVanGenuchten(double const residual_liquid_saturation,
                            double const residual_gas_saturation,
@@ -63,5 +87,12 @@ public:
                              ParameterLib::SpatialPosition const& /*pos*/,
                              double const /*t*/,
                              double const /*dt*/) const override;
+
+private:
+    Medium* _medium = nullptr;
+    double const _S_L_res;
+    double const _S_L_max;
+    double const _m;
+    double const _p_b;
 };
 }  // namespace MaterialPropertyLib
diff --git a/MaterialLib/MPL/Properties/CreateProperties.h b/MaterialLib/MPL/Properties/CreateProperties.h
index d850f25e3c760587ed162bd29e77db89d55337d2..bd5ded9c85eae08858b2cd629a76d6de0017cc5f 100644
--- a/MaterialLib/MPL/Properties/CreateProperties.h
+++ b/MaterialLib/MPL/Properties/CreateProperties.h
@@ -11,6 +11,10 @@
  */
 #pragma once
 
+#include "CapillaryPressureSaturation/CreateSaturationBrooksCorey.h"
+#include "CapillaryPressureSaturation/CreateSaturationLiakopoulos.h"
+#include "CapillaryPressureSaturation/CreateSaturationVanGenuchten.h"
+
 #include "CreateBishopsPowerLaw.h"
 #include "CreateBishopsSaturationCutoff.h"
 #include "CreateConstant.h"
@@ -22,11 +26,11 @@
 #include "CreateParameterProperty.h"
 #include "CreatePermeabilityOrthotropicPowerLaw.h"
 #include "CreatePorosityFromMassBalance.h"
-#include "CreateRelPermBrooksCorey.h"
-#include "CreateRelPermLiakopoulos.h"
-#include "CreateRelPermVanGenuchten.h"
-#include "CreateSaturationBrooksCorey.h"
+#include "CapillaryPressureSaturation/CreateSaturationBrooksCorey.h"
 #include "CreateSaturationDependentSwelling.h"
-#include "CreateSaturationLiakopoulos.h"
-#include "CreateSaturationVanGenuchten.h"
+#include "CapillaryPressureSaturation/CreateSaturationLiakopoulos.h"
+#include "CapillaryPressureSaturation/CreateSaturationVanGenuchten.h"
 #include "CreateTransportPorosityFromMassBalance.h"
+#include "RelativePermeability/CreateRelPermBrooksCorey.h"
+#include "RelativePermeability/CreateRelPermLiakopoulos.h"
+#include "RelativePermeability/CreateRelPermVanGenuchten.h"
diff --git a/MaterialLib/MPL/Properties/Properties.h b/MaterialLib/MPL/Properties/Properties.h
index 7680ddec571b93bfd1b228d565ec78d8ed097d02..3278ea9a98f18c791d1cfe1ecd09b0c5e6a80658 100644
--- a/MaterialLib/MPL/Properties/Properties.h
+++ b/MaterialLib/MPL/Properties/Properties.h
@@ -14,6 +14,9 @@
 #include "BishopsPowerLaw.h"
 #include "BishopsSaturationCutoff.h"
 #include "Constant.h"
+#include "CapillaryPressureSaturation/SaturationBrooksCorey.h"
+#include "CapillaryPressureSaturation/SaturationLiakopoulos.h"
+#include "CapillaryPressureSaturation/SaturationVanGenuchten.h"
 #include "CurveProperty.h"
 #include "DupuitPermeability.h"
 #include "ExponentialProperty.h"
@@ -21,11 +24,9 @@
 #include "LinearProperty.h"
 #include "ParameterProperty.h"
 #include "PorosityFromMassBalance.h"
-#include "RelPermBrooksCorey.h"
-#include "RelPermLiakopoulos.h"
-#include "RelPermVanGenuchten.h"
-#include "SaturationBrooksCorey.h"
+#include "RelativePermeability/RelPermBrooksCorey.h"
+#include "RelativePermeability/RelPermLiakopoulos.h"
+#include "RelativePermeability/RelPermVanGenuchten.h"
+
 #include "SaturationDependentSwelling.h"
-#include "SaturationLiakopoulos.h"
-#include "SaturationVanGenuchten.h"
 #include "TransportPorosityFromMassBalance.h"
diff --git a/MaterialLib/MPL/Properties/CreateRelPermBrooksCorey.cpp b/MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermBrooksCorey.cpp
similarity index 100%
rename from MaterialLib/MPL/Properties/CreateRelPermBrooksCorey.cpp
rename to MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermBrooksCorey.cpp
diff --git a/MaterialLib/MPL/Properties/CreateRelPermBrooksCorey.h b/MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermBrooksCorey.h
similarity index 100%
rename from MaterialLib/MPL/Properties/CreateRelPermBrooksCorey.h
rename to MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermBrooksCorey.h
diff --git a/MaterialLib/MPL/Properties/CreateRelPermLiakopoulos.cpp b/MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermLiakopoulos.cpp
similarity index 100%
rename from MaterialLib/MPL/Properties/CreateRelPermLiakopoulos.cpp
rename to MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermLiakopoulos.cpp
diff --git a/MaterialLib/MPL/Properties/CreateRelPermLiakopoulos.h b/MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermLiakopoulos.h
similarity index 100%
rename from MaterialLib/MPL/Properties/CreateRelPermLiakopoulos.h
rename to MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermLiakopoulos.h
diff --git a/MaterialLib/MPL/Properties/CreateRelPermVanGenuchten.cpp b/MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermVanGenuchten.cpp
similarity index 100%
rename from MaterialLib/MPL/Properties/CreateRelPermVanGenuchten.cpp
rename to MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermVanGenuchten.cpp
diff --git a/MaterialLib/MPL/Properties/CreateRelPermVanGenuchten.h b/MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermVanGenuchten.h
similarity index 100%
rename from MaterialLib/MPL/Properties/CreateRelPermVanGenuchten.h
rename to MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermVanGenuchten.h
diff --git a/MaterialLib/MPL/Properties/RelPermBrooksCorey.cpp b/MaterialLib/MPL/Properties/RelativePermeability/RelPermBrooksCorey.cpp
similarity index 98%
rename from MaterialLib/MPL/Properties/RelPermBrooksCorey.cpp
rename to MaterialLib/MPL/Properties/RelativePermeability/RelPermBrooksCorey.cpp
index 1023b585e12f39ae9afb9c83baf0968c33a43471..136b54bf8272dca748ec52317f64a3ac2c0565fe 100644
--- a/MaterialLib/MPL/Properties/RelPermBrooksCorey.cpp
+++ b/MaterialLib/MPL/Properties/RelativePermeability/RelPermBrooksCorey.cpp
@@ -12,12 +12,13 @@
  *
  */
 
-#include "MaterialLib/MPL/Properties/RelPermBrooksCorey.h"
-#include "MaterialLib/MPL/Medium.h"
+#include "RelPermBrooksCorey.h"
 
 #include <algorithm>
 #include <cmath>
 
+#include "MaterialLib/MPL/Medium.h"
+
 namespace MaterialPropertyLib
 {
 RelPermBrooksCorey::RelPermBrooksCorey(
diff --git a/MaterialLib/MPL/Properties/RelPermBrooksCorey.h b/MaterialLib/MPL/Properties/RelativePermeability/RelPermBrooksCorey.h
similarity index 100%
rename from MaterialLib/MPL/Properties/RelPermBrooksCorey.h
rename to MaterialLib/MPL/Properties/RelativePermeability/RelPermBrooksCorey.h
diff --git a/MaterialLib/MPL/Properties/RelPermLiakopoulos.cpp b/MaterialLib/MPL/Properties/RelativePermeability/RelPermLiakopoulos.cpp
similarity index 98%
rename from MaterialLib/MPL/Properties/RelPermLiakopoulos.cpp
rename to MaterialLib/MPL/Properties/RelativePermeability/RelPermLiakopoulos.cpp
index fd59bd66f875a3a5cf67a819e0f50aea5d4ee01b..db6677073e267850bb24ac798bcacb8018cec5f5 100644
--- a/MaterialLib/MPL/Properties/RelPermLiakopoulos.cpp
+++ b/MaterialLib/MPL/Properties/RelativePermeability/RelPermLiakopoulos.cpp
@@ -11,12 +11,13 @@
  *
  */
 
-#include "MaterialLib/MPL/Properties/RelPermLiakopoulos.h"
-#include "MaterialLib/MPL/Medium.h"
+#include "RelPermLiakopoulos.h"
 
 #include <algorithm>
 #include <cmath>
 
+#include "MaterialLib/MPL/Medium.h"
+
 namespace MaterialPropertyLib
 {
 /**
diff --git a/MaterialLib/MPL/Properties/RelPermLiakopoulos.h b/MaterialLib/MPL/Properties/RelativePermeability/RelPermLiakopoulos.h
similarity index 100%
rename from MaterialLib/MPL/Properties/RelPermLiakopoulos.h
rename to MaterialLib/MPL/Properties/RelativePermeability/RelPermLiakopoulos.h
diff --git a/MaterialLib/MPL/Properties/RelPermVanGenuchten.cpp b/MaterialLib/MPL/Properties/RelativePermeability/RelPermVanGenuchten.cpp
similarity index 100%
rename from MaterialLib/MPL/Properties/RelPermVanGenuchten.cpp
rename to MaterialLib/MPL/Properties/RelativePermeability/RelPermVanGenuchten.cpp
diff --git a/MaterialLib/MPL/Properties/RelPermVanGenuchten.h b/MaterialLib/MPL/Properties/RelativePermeability/RelPermVanGenuchten.h
similarity index 100%
rename from MaterialLib/MPL/Properties/RelPermVanGenuchten.h
rename to MaterialLib/MPL/Properties/RelativePermeability/RelPermVanGenuchten.h
diff --git a/Tests/MaterialLib/TestMPLRelPermBrooksCorey.cpp b/Tests/MaterialLib/TestMPLRelPermBrooksCorey.cpp
index ef6a7cc65edc84fdee3284a61f2496b2b8150aaf..cbc94cf535d5676e6361863641e9a66057a87f64 100644
--- a/Tests/MaterialLib/TestMPLRelPermBrooksCorey.cpp
+++ b/Tests/MaterialLib/TestMPLRelPermBrooksCorey.cpp
@@ -15,7 +15,7 @@
 #include "Tests/TestTools.h"
 
 #include "MaterialLib/MPL/Medium.h"
-#include "MaterialLib/MPL/Properties/RelPermBrooksCorey.h"
+#include "MaterialLib/MPL/Properties/RelativePermeability/RelPermBrooksCorey.h"
 
 TEST(MaterialPropertyLib, RelPermBrooksCorey)
 {
diff --git a/Tests/MaterialLib/TestMPLRelPermLiakopoulos.cpp b/Tests/MaterialLib/TestMPLRelPermLiakopoulos.cpp
index d4e089d0202d1dd29f99810a15793ac4ba67d48e..87c314c722370572a94fcaa56fdfaf1018ffec64 100644
--- a/Tests/MaterialLib/TestMPLRelPermLiakopoulos.cpp
+++ b/Tests/MaterialLib/TestMPLRelPermLiakopoulos.cpp
@@ -15,7 +15,7 @@
 #include "Tests/TestTools.h"
 
 #include "MaterialLib/MPL/Medium.h"
-#include "MaterialLib/MPL/Properties/RelPermLiakopoulos.h"
+#include "MaterialLib/MPL/Properties/RelativePermeability/RelPermLiakopoulos.h"
 
 TEST(MaterialPropertyLib, RelPermLiakopoulos)
 {
diff --git a/Tests/MaterialLib/TestMPLRelPermVanGenuchten.cpp b/Tests/MaterialLib/TestMPLRelPermVanGenuchten.cpp
index c4bd061fccfa5225f619048e975005dcfd25348d..af74c52fcba797e26cd279d1abdd89ef60f3482d 100644
--- a/Tests/MaterialLib/TestMPLRelPermVanGenuchten.cpp
+++ b/Tests/MaterialLib/TestMPLRelPermVanGenuchten.cpp
@@ -10,7 +10,7 @@
 #include <gtest/gtest.h>
 
 #include "MaterialLib/MPL/Medium.h"
-#include "MaterialLib/MPL/Properties/RelPermVanGenuchten.h"
+#include "MaterialLib/MPL/Properties/RelativePermeability/RelPermVanGenuchten.h"
 #include "TestMPL.h"
 #include "Tests/TestTools.h"
 
diff --git a/Tests/MaterialLib/TestMPLSaturationBrooksCorey.cpp b/Tests/MaterialLib/TestMPLSaturationBrooksCorey.cpp
index 0e05921695dfeadd94dca2caf684f89303003624..4dfa8a9f92f826d9c32fc995ed0672749531ec5d 100644
--- a/Tests/MaterialLib/TestMPLSaturationBrooksCorey.cpp
+++ b/Tests/MaterialLib/TestMPLSaturationBrooksCorey.cpp
@@ -15,7 +15,7 @@
 #include "Tests/TestTools.h"
 
 #include "MaterialLib/MPL/Medium.h"
-#include "MaterialLib/MPL/Properties/SaturationBrooksCorey.h"
+#include "MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationBrooksCorey.h"
 
 TEST(MaterialPropertyLib, SaturationBrooksCorey)
 {
diff --git a/Tests/MaterialLib/TestMPLSaturationLiakopoulos.cpp b/Tests/MaterialLib/TestMPLSaturationLiakopoulos.cpp
index 2fc3f0a2a75765cd3d408d0f3810d488730af5f2..f64b1c560bb728c879655cdfa6718ab8886f4d6a 100644
--- a/Tests/MaterialLib/TestMPLSaturationLiakopoulos.cpp
+++ b/Tests/MaterialLib/TestMPLSaturationLiakopoulos.cpp
@@ -15,7 +15,7 @@
 #include "Tests/TestTools.h"
 
 #include "MaterialLib/MPL/Medium.h"
-#include "MaterialLib/MPL/Properties/SaturationLiakopoulos.h"
+#include "MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationLiakopoulos.h"
 
 TEST(MaterialPropertyLib, SaturationLiakopoulos)
 {
diff --git a/Tests/MaterialLib/TestMPLSaturationVanGenuchten.cpp b/Tests/MaterialLib/TestMPLSaturationVanGenuchten.cpp
index d4c6365fa34a70a126a7d2492fbb54e475189b65..824f1b84742850c7a0b05bed134951b076091d81 100644
--- a/Tests/MaterialLib/TestMPLSaturationVanGenuchten.cpp
+++ b/Tests/MaterialLib/TestMPLSaturationVanGenuchten.cpp
@@ -10,7 +10,7 @@
 #include <gtest/gtest.h>
 
 #include "MaterialLib/MPL/Medium.h"
-#include "MaterialLib/MPL/Properties/SaturationVanGenuchten.h"
+#include "MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationVanGenuchten.h"
 #include "TestMPL.h"
 #include "Tests/TestTools.h"