diff --git a/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h b/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h
index d7a984a2b459381adbe634e467e54fbf15fca344..b872373d1f438b6c67a984b4a9219fad8c299853 100644
--- a/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h
+++ b/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h
@@ -160,9 +160,9 @@ void LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>::
         // Compute viscosity:
         const double mu = _material_properties.getViscosity(p, _temperature);
 
-        LaplacianGravityVelocityCalculator
-                  ::calculateVelocity(_darcy_velocities, local_p_vec, sm, perm,
-                                      ip, mu, rho_g, _gravitational_axis_id);
+        LaplacianGravityVelocityCalculator::calculateVelocity(
+            _darcy_velocities, local_p_vec, sm, perm, ip, mu, rho_g,
+            _gravitational_axis_id);
     }
 }
 
diff --git a/ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.cpp b/ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.cpp
index f3d335e43d13bcbba7efe44a52a25293de73f153..325ef7de4a712e122530c7430760b39df1954a9a 100644
--- a/ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.cpp
+++ b/ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.cpp
@@ -24,6 +24,10 @@
 #include "MaterialLib/Fluid/FluidProperty.h"
 #include "MaterialLib/PorousMedium/Porosity/Porosity.h"
 #include "MaterialLib/PorousMedium/Storage/Storage.h"
+#include "MaterialLib/Fluid/FluidProperties/CreateFluidProperties.h"
+
+#include "MaterialLib/Fluid/FluidPropertyHeaders.h"
+#include "MaterialLib/PorousMedium/PorousPropertyHeaders.h"
 
 namespace ProcessLib
 {
@@ -39,14 +43,7 @@ LiquidFlowMaterialProperties::LiquidFlowMaterialProperties(
 
     //! \ogs_file_param{prj__processes__process__LIQUID_FLOW__material_property__fluid}
     auto const& fluid_config = config.getConfigSubtree("fluid");
-
-    // Get fluid properties
-    //! \ogs_file_param{prj__processes__process__LIQUID_FLOW__material_property__fluid__density}
-    auto const& rho_conf = fluid_config.getConfigSubtree("density");
-    _liquid_density = MaterialLib::Fluid::createFluidDensityModel(rho_conf);
-    //! \ogs_file_param{prj__processes__process__LIQUID_FLOW__material_property__fluid__viscosity}
-    auto const& mu_conf = fluid_config.getConfigSubtree("viscosity");
-    _viscosity = MaterialLib::Fluid::createViscosityModel(mu_conf);
+    _fluid_properties = MaterialLib::Fluid::createFluidProperties(fluid_config);
 
     // Get porous properties
     std::vector<int> mat_ids;
@@ -98,7 +95,8 @@ double LiquidFlowMaterialProperties::getLiquidDensity(const double p,
     ArrayType vars;
     vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::T)] = T;
     vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::p)] = p;
-    return _liquid_density->getValue(vars);
+    return _fluid_properties->getValue(
+        MaterialLib::Fluid::FluidPropertyType::Density, vars);
 }
 
 double LiquidFlowMaterialProperties::getViscosity(const double p,
@@ -107,7 +105,8 @@ double LiquidFlowMaterialProperties::getViscosity(const double p,
     ArrayType vars;
     vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::T)] = T;
     vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::p)] = p;
-    return _viscosity->getValue(vars);
+    return _fluid_properties->getValue(
+        MaterialLib::Fluid::FluidPropertyType::Vicosity, vars);
 }
 
 double LiquidFlowMaterialProperties::getMassCoefficient(
@@ -118,9 +117,11 @@ double LiquidFlowMaterialProperties::getMassCoefficient(
     ArrayType vars;
     vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::T)] = T;
     vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::p)] = p;
-    const double drho_dp = _liquid_density->getdValue(
-        vars, MaterialLib::Fluid::PropertyVariableType::p);
-    const double rho = _liquid_density->getValue(vars);
+    const double drho_dp = _fluid_properties->getdValue(
+        MaterialLib::Fluid::FluidPropertyType::Density, vars,
+        MaterialLib::Fluid::PropertyVariableType::p);
+    const double rho = _fluid_properties->getValue(
+        MaterialLib::Fluid::FluidPropertyType::Density, vars);
     assert(rho > 0.);
 
     const double porosity =
diff --git a/ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.h b/ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.h
index 923a9adb358ac07e7062170109dd9404efbc51bb..2b3c1f0807a2b10e374fd0d99fe047bf462c4dab 100644
--- a/ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.h
+++ b/ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.h
@@ -13,9 +13,18 @@
 #pragma once
 
 #include <memory>
+#include <Eigen/Dense>
 
-#include "MaterialLib/Fluid/FluidPropertyHeaders.h"
-#include "MaterialLib/PorousMedium/PorousPropertyHeaders.h"
+#include "MaterialLib/Fluid/FluidProperty.h"
+#include "MaterialLib/Fluid/FluidProperties/FluidProperties.h"
+
+namespace MaterialLib
+{
+namespace Fluid
+{
+class FluidProperties;
+}
+}
 
 namespace MaterialLib
 {
@@ -26,6 +35,11 @@ class Storage;
 }
 }
 
+namespace BaseLib
+{
+class ConfigTree;
+}
+
 namespace MeshLib
 {
 template <typename PROP_VAL_TYPE>
@@ -80,8 +94,7 @@ public:
     double getViscosity(const double p, const double T) const;
 
 private:
-    std::unique_ptr<MaterialLib::Fluid::FluidProperty> _liquid_density;
-    std::unique_ptr<MaterialLib::Fluid::FluidProperty> _viscosity;
+    std::unique_ptr<MaterialLib::Fluid::FluidProperties> _fluid_properties;
 
     /// A flag to indicate whether the reference member, _material_ids,
     /// is not assigned.
diff --git a/Tests/ProcessLib/LiquidFlow/TestLiquidFlowMaterialProperties.cpp b/Tests/ProcessLib/LiquidFlow/TestLiquidFlowMaterialProperties.cpp
index 3c2c40b25e1a71bcba655c69ede6ccdb6924d065..92cfbe4c5051614b06b19701b1784ba4691ae690 100644
--- a/Tests/ProcessLib/LiquidFlow/TestLiquidFlowMaterialProperties.cpp
+++ b/Tests/ProcessLib/LiquidFlow/TestLiquidFlowMaterialProperties.cpp
@@ -13,6 +13,8 @@
 #include <gtest/gtest.h>
 #include <memory>
 
+#include "BaseLib/ConfigTree.h"
+
 #include "Tests/TestTools.h"
 
 #include "MeshLib/Mesh.h"
@@ -20,6 +22,7 @@
 
 #include "ProcessLib/Parameter/SpatialPosition.h"
 #include "ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.h"
+#include "ProcessLib/LiquidFlow/CreateLiquidFlowMaterialProperties.h"
 
 #include "MaterialLib/Fluid/FluidProperty.h"
 #include "MaterialLib/PorousMedium/Porosity/Porosity.h"
@@ -30,7 +33,7 @@ using namespace MaterialLib::Fluid;
 using ArrayType = MaterialLib::Fluid::FluidProperty::ArrayType;
 using Matrix = Eigen::MatrixXd;
 
-TEST(ProcessLibLiquidFlow, checkLiquidFlowMaterialProperties)
+TEST(MaterialProcessLibLiquidFlow, checkLiquidFlowMaterialProperties)
 {
     const char xml[] =
         "<material_property>"
@@ -76,14 +79,14 @@ TEST(ProcessLibLiquidFlow, checkLiquidFlowMaterialProperties)
             "MaterialIDs", MeshLib::MeshItemType::Cell, 1);
 
     const bool has_material_ids = false;
-    LiquidFlowMaterialProperties lprop(sub_config, has_material_ids,
-                                       *dummy_property_vector);
+    const auto lprop = createLiquidFlowMaterialProperties(
+        sub_config, has_material_ids, *dummy_property_vector);
 
     ProcessLib::SpatialPosition pos;
     pos.setElementID(0);
 
     // Check permeability
-    const Eigen::MatrixXd& perm = lprop.getPermeability(0., pos, 1);
+    const Eigen::MatrixXd& perm = lprop->getPermeability(0., pos, 1);
     ASSERT_EQ(2.e-10, perm(0, 0));
     ASSERT_EQ(0., perm(0, 1));
     ASSERT_EQ(0., perm(0, 2));
@@ -96,6 +99,6 @@ TEST(ProcessLibLiquidFlow, checkLiquidFlowMaterialProperties)
 
     const double T = 273.15 + 60.0;
     const double p = 1.e+6;
-    const double mass_coef = lprop.getMassCoefficient(0., pos, p, T, 0., 0.);
+    const double mass_coef = lprop->getMassCoefficient(0., pos, p, T, 0., 0.);
     ASSERT_NEAR(0.000100000093, mass_coef, 1.e-10);
 }