diff --git a/MaterialLib/MPL/CreateProperty.cpp b/MaterialLib/MPL/CreateProperty.cpp
index bafdd151fad50cb2d9287c0bf259f02b352cc6b0..4d6eb09f375a007d9084b4b7985675d623c1a045 100644
--- a/MaterialLib/MPL/CreateProperty.cpp
+++ b/MaterialLib/MPL/CreateProperty.cpp
@@ -16,9 +16,8 @@
 #include <string>
 #include <vector>
 #include "BaseLib/ConfigTree.h"
-#include "ParameterLib/Parameter.h"
-#include "ParameterLib/Utils.h"
 
+#include "Properties/CreateProperties.h"
 #include "Properties/Properties.h"
 
 #include "Component.h"
@@ -34,161 +33,25 @@ std::unique_ptr<MaterialPropertyLib::Property> createProperty(
     using namespace MaterialPropertyLib;
     // Parsing the property type:
     //! \ogs_file_param{properties__property__type}
-    auto const property_type = config.getConfigParameter<std::string>("type");
+    auto const property_type = config.peekConfigParameter<std::string>("type");
 
-    // If (and only if) the given property type is 'constant', a corresponding
-    // value is needed.
     if (property_type == "Constant")
     {
-        std::vector<double> const values =
-            //! \ogs_file_param{properties__property__Constant__value}
-            config.getConfigParameter<std::vector<double>>("value");
-
-        switch (values.size())
-        {
-            case 1:
-            {
-                // scalar
-                PropertyDataType property_value = values[0];
-                return std::make_unique<Constant>(property_value);
-            }
-            case 2:
-            {
-                // Pair
-                PropertyDataType property_value = Pair{values[0], values[1]};
-                return std::make_unique<Constant>(property_value);
-            }
-            case 3:
-            {
-                // Vector
-                PropertyDataType property_value =
-                    Vector{values[0], values[1], values[2]};
-                return std::make_unique<Constant>(property_value);
-            }
-            case 4:
-            {
-                // Tensor
-                PropertyDataType property_value =
-                    Tensor2d{values[0], values[1], values[2], values[3]};
-                return std::make_unique<Constant>(property_value);
-            }
-            case 6:
-            {
-                // Symmetric Tensor - xx, yy, zz, xy, xz, yz
-                PropertyDataType property_value =
-                    SymmTensor{values[0], values[1], values[2],
-                               values[3], values[4], values[5]};
-                return std::make_unique<Constant>(property_value);
-            }
-            case 9:
-            {
-                // Tensor
-                PropertyDataType property_value = Tensor{
-                    values[0], values[1], values[2], values[3], values[4],
-                    values[5], values[6], values[7], values[8]};
-                return std::make_unique<Constant>(property_value);
-            }
-
-            default:
-            {
-                OGS_FATAL(
-                    "Creation of a constant property with %i components is not "
-                    "implemented.",
-                    values.size());
-            }
-        }
-
-        PropertyDataType property_value;
-        return std::make_unique<Constant>(property_value);
+        return createConstant(config);
     }
-    // Properties can be medium, phase, or component properties.
-    // Some of them require information about the respective material.
-    // Thus, we pass a pointer to the material that requests the property.
-    // In this method, this pointer is realized via typename MaterialType, which
-    // replaces either Medium*, Phase*, or Component*.
-    // Note that most property constructors (only those that request material
-    // pointers) must be overloaded for any type of material.
-
     if (property_type == "Linear")
     {
-        auto const reference_value =
-            //! \ogs_file_param{properties__property__LinearProperty__reference_value}
-            config.getConfigParameter<double>("reference_value");
-
-        std::vector<MaterialPropertyLib::IndependentVariable> ivs;
-        auto const& independent_variables_config =
-            //! \ogs_file_param{properties__property__LinearProperty__independent_variables}
-            config.getConfigSubtree("independent_variables");
-        for (auto const& independent_variable_config :
-             independent_variables_config.getConfigSubtreeList(
-                 "independent_variable"))
-        {
-            auto const& variable_name =
-                //! \ogs_file_param{properties__property__LinearProperty__independent_variables__independent_variable__variable_name}
-                independent_variable_config.getConfigParameter<std::string>(
-                    "variable_name");
-            auto const reference_condition =
-                //! \ogs_file_param{properties__property__LinearProperty__independent_variables__independent_variable__reference_condition}
-                independent_variable_config.getConfigParameter<double>(
-                    "reference_condition");
-            auto const slope =
-                //! \ogs_file_param{properties__property__LinearProperty__independent_variables__independent_variable__slope}
-                independent_variable_config.getConfigParameter<double>("slope");
-
-            MaterialPropertyLib::Variable ivt =
-                MaterialPropertyLib::convertStringToVariable(variable_name);
-
-            MaterialPropertyLib::IndependentVariable iv{
-                ivt, reference_condition, slope};
-
-            ivs.push_back(std::move(iv));
-        }
-
-        return std::make_unique<MaterialPropertyLib::LinearProperty>(
-            reference_value, ivs);
+        return createLinearProperty(config);
     }
 
     if (property_type == "Exponential")
     {
-        auto const reference_value =
-            //! \ogs_file_param{properties__property__ExponentialProperty__reference_value}
-            config.getConfigParameter<double>("reference_value");
-
-        auto const& exponent_data_config =
-            //! \ogs_file_param{properties__property__ExponentialProperty__exponent}
-            config.getConfigSubtree("exponent");
-
-        auto const& variable_name =
-            //! \ogs_file_param{properties__property__ExponentialProperty__exponent__variable_name}
-            exponent_data_config.getConfigParameter<std::string>(
-                "variable_name");
-        auto const reference_condition =
-            //! \ogs_file_param{properties__property__ExponentialProperty__exponent__reference_condition}
-            exponent_data_config.getConfigParameter<double>(
-                "reference_condition");
-        auto const factor =
-            //! \ogs_file_param{properties__property__ExponentialProperty__exponent__factor}
-            exponent_data_config.getConfigParameter<double>("factor");
-
-        MaterialPropertyLib::Variable exp_data_type =
-            MaterialPropertyLib::convertStringToVariable(variable_name);
-
-        MaterialPropertyLib::ExponentData const exp_data{
-            exp_data_type, reference_condition, factor};
-
-        return std::make_unique<MaterialPropertyLib::ExponentialProperty>(
-            reference_value, exp_data);
+        return createExponentialProperty(config);
     }
 
     if (property_type == "Parameter")
     {
-        std::string const& parameter_name =
-            //! \ogs_file_param{properties__property__Parameter__parameter_name}
-            config.getConfigParameter<std::string>("parameter_name");
-        auto const& parameter = ParameterLib::findParameter<double>(
-            parameter_name, parameters, 0, nullptr);
-        return std::make_unique<MaterialPropertyLib::ParameterProperty>(
-            parameter);
+        return createParameterProperty(config, parameters);
     }
 
     if (boost::iequals(property_type, "IdealGasLaw"))
diff --git a/MaterialLib/MPL/Properties/CreateConstant.cpp b/MaterialLib/MPL/Properties/CreateConstant.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ec6ef1122dbd36980b9673d88d75e2fdacf1cd3e
--- /dev/null
+++ b/MaterialLib/MPL/Properties/CreateConstant.cpp
@@ -0,0 +1,84 @@
+/**
+ * \file
+ * \author Norbert Grunwald
+ * \date   Sep 10, 2019
+ *
+ * \copyright
+ * Copyright (c) 2012-2019, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ */
+
+#include "BaseLib/ConfigTree.h"
+#include "Constant.h"
+
+namespace MaterialPropertyLib
+{
+std::unique_ptr<Constant> createConstant(BaseLib::ConfigTree const& config)
+{
+    config.checkConfigParameter("type", "Constant");
+    DBUG("Create Constant property");
+    std::vector<double> const values =
+        //! \ogs_file_param{properties__property__Constant__value}
+        config.getConfigParameter<std::vector<double>>("value");
+
+    switch (values.size())
+    {
+        case 1:
+        {
+            // scalar
+            PropertyDataType property_value = values[0];
+            return std::make_unique<Constant>(property_value);
+        }
+        case 2:
+        {
+            // Pair
+            PropertyDataType property_value = Pair{values[0], values[1]};
+            return std::make_unique<Constant>(property_value);
+        }
+        case 3:
+        {
+            // Vector
+            PropertyDataType property_value =
+                Vector{values[0], values[1], values[2]};
+            return std::make_unique<Constant>(property_value);
+        }
+        case 4:
+        {
+            // Tensor
+            PropertyDataType property_value =
+                Tensor2d{values[0], values[1], values[2], values[3]};
+            return std::make_unique<Constant>(property_value);
+        }
+        case 6:
+        {
+            // Symmetric Tensor - xx, yy, zz, xy, xz, yz
+            PropertyDataType property_value =
+                SymmTensor{values[0], values[1], values[2],
+                           values[3], values[4], values[5]};
+            return std::make_unique<Constant>(property_value);
+        }
+        case 9:
+        {
+            // Tensor
+            PropertyDataType property_value =
+                Tensor{values[0], values[1], values[2], values[3], values[4],
+                       values[5], values[6], values[7], values[8]};
+            return std::make_unique<Constant>(property_value);
+        }
+
+        default:
+        {
+            OGS_FATAL(
+                "Creation of a constant property with %i components is not "
+                "implemented.",
+                values.size());
+        }
+    }
+
+    PropertyDataType property_value;
+    return std::make_unique<Constant>(property_value);
+}
+}  // namespace MaterialPropertyLib
\ No newline at end of file
diff --git a/MaterialLib/MPL/Properties/CreateConstant.h b/MaterialLib/MPL/Properties/CreateConstant.h
new file mode 100644
index 0000000000000000000000000000000000000000..5919cdb472d41ea5bfa485b649dd9d5117d0c3c7
--- /dev/null
+++ b/MaterialLib/MPL/Properties/CreateConstant.h
@@ -0,0 +1,30 @@
+/**
+ * \file
+ * \author Norbert Grunwald
+ * \date   Sep 10, 2019
+ *
+ * \copyright
+ * Copyright (c) 2012-2019, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ */
+
+#pragma once
+
+namespace BaseLib
+{
+class ConfigTree;
+}
+
+namespace MaterialPropertyLib
+{
+class Constant;
+}
+
+namespace MaterialPropertyLib
+{
+std::unique_ptr<Constant> createConstant(
+    BaseLib::ConfigTree const& config);
+}  // namespace MaterialPropertyLib
\ No newline at end of file
diff --git a/MaterialLib/MPL/Properties/CreateExponentialProperty.cpp b/MaterialLib/MPL/Properties/CreateExponentialProperty.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..262bf0b702b73f9ca5736dae6be3ebcfb40e1f7b
--- /dev/null
+++ b/MaterialLib/MPL/Properties/CreateExponentialProperty.cpp
@@ -0,0 +1,54 @@
+/**
+ * \file
+ * \author Norbert Grunwald
+ * \date   Sep 10, 2019
+ *
+ * \copyright
+ * Copyright (c) 2012-2019, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ */
+
+#include "BaseLib/ConfigTree.h"
+#include "ExponentialProperty.h"
+
+namespace MaterialPropertyLib
+{
+std::unique_ptr<ExponentialProperty> createExponentialProperty(
+    BaseLib::ConfigTree const& config)
+{
+    config.checkConfigParameter("type", "Exponential");
+    DBUG("Create Exponential property");
+        auto const reference_value =
+            //! \ogs_file_param{properties__property__ExponentialProperty__reference_value}
+            config.getConfigParameter<double>("reference_value");
+
+        auto const& exponent_data_config =
+            //! \ogs_file_param{properties__property__ExponentialProperty__exponent}
+            config.getConfigSubtree("exponent");
+
+        auto const& variable_name =
+            //! \ogs_file_param{properties__property__ExponentialProperty__exponent__variable_name}
+            exponent_data_config.getConfigParameter<std::string>(
+                "variable_name");
+        auto const reference_condition =
+            //! \ogs_file_param{properties__property__ExponentialProperty__exponent__reference_condition}
+            exponent_data_config.getConfigParameter<double>(
+                "reference_condition");
+        auto const factor =
+            //! \ogs_file_param{properties__property__ExponentialProperty__exponent__factor}
+            exponent_data_config.getConfigParameter<double>("factor");
+
+        MaterialPropertyLib::Variable exp_data_type =
+            MaterialPropertyLib::convertStringToVariable(variable_name);
+
+        MaterialPropertyLib::ExponentData const exp_data{
+            exp_data_type, reference_condition, factor};
+
+        return std::make_unique<MaterialPropertyLib::ExponentialProperty>(
+            reference_value, exp_data);
+
+}
+}  // namespace MaterialPropertyLib
\ No newline at end of file
diff --git a/MaterialLib/MPL/Properties/CreateExponentialProperty.h b/MaterialLib/MPL/Properties/CreateExponentialProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..78ddf7f5dd2d04f1b78e875c6f793cf4b6bd660e
--- /dev/null
+++ b/MaterialLib/MPL/Properties/CreateExponentialProperty.h
@@ -0,0 +1,30 @@
+/**
+ * \file
+ * \author Norbert Grunwald
+ * \date   Sep 10, 2019
+ *
+ * \copyright
+ * Copyright (c) 2012-2019, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ */
+
+#pragma once
+
+namespace BaseLib
+{
+class ConfigTree;
+}
+
+namespace MaterialPropertyLib
+{
+class ExponentialProperty;
+}
+
+namespace MaterialPropertyLib
+{
+std::unique_ptr<ExponentialProperty> createExponentialProperty(
+    BaseLib::ConfigTree const& config);
+}  // namespace MaterialPropertyLib
\ No newline at end of file
diff --git a/MaterialLib/MPL/Properties/CreateIdealGasLaw.cpp b/MaterialLib/MPL/Properties/CreateIdealGasLaw.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..23f9e90fb02ab33bd54070cdbff729f89a590197
--- /dev/null
+++ b/MaterialLib/MPL/Properties/CreateIdealGasLaw.cpp
@@ -0,0 +1,26 @@
+/**
+ * \file
+ * \author Norbert Grunwald
+ * \date   Sep 10, 2019
+ *
+ * \copyright
+ * Copyright (c) 2012-2019, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ */
+
+#include "BaseLib/ConfigTree.h"
+#include "IdealGasLaw.h"
+
+namespace MaterialPropertyLib
+{
+std::unique_ptr<IdealGasLaw> createIdealGasLaw(
+    BaseLib::ConfigTree const& config)
+{
+    config.checkConfigParameter("type", "IdealGasLaw");
+    DBUG("Create IdealGasLaw medium property");
+    return std::make_unique<IdealGasLaw>();
+}
+}  // namespace MaterialPropertyLib
\ No newline at end of file
diff --git a/MaterialLib/MPL/Properties/CreateIdealGasLaw.h b/MaterialLib/MPL/Properties/CreateIdealGasLaw.h
new file mode 100644
index 0000000000000000000000000000000000000000..3f1c037b3d7e6437587a7af370623e6189d7e7c8
--- /dev/null
+++ b/MaterialLib/MPL/Properties/CreateIdealGasLaw.h
@@ -0,0 +1,30 @@
+/**
+ * \file
+ * \author Norbert Grunwald
+ * \date   Sep 10, 2019
+ *
+ * \copyright
+ * Copyright (c) 2012-2019, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ */
+
+#pragma once
+
+namespace BaseLib
+{
+class ConfigTree;
+}
+
+namespace MaterialPropertyLib
+{
+class IdealGasLaw;
+}
+
+namespace MaterialPropertyLib
+{
+std::unique_ptr<IdealGasLaw> createIdealGasLaw(
+    BaseLib::ConfigTree const& config);
+}  // namespace MaterialPropertyLib
\ No newline at end of file
diff --git a/MaterialLib/MPL/Properties/CreateLinearProperty.cpp b/MaterialLib/MPL/Properties/CreateLinearProperty.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d4c004a7ca0c5823d587fdb12b3ec43cccc56581
--- /dev/null
+++ b/MaterialLib/MPL/Properties/CreateLinearProperty.cpp
@@ -0,0 +1,61 @@
+/**
+ * \file
+ * \author Norbert Grunwald
+ * \date   Sep 10, 2019
+ *
+ * \copyright
+ * Copyright (c) 2012-2019, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ */
+
+#include "BaseLib/ConfigTree.h"
+#include "LinearProperty.h"
+
+namespace MaterialPropertyLib
+{
+std::unique_ptr<LinearProperty> createLinearProperty(
+    BaseLib::ConfigTree const& config)
+{
+    config.checkConfigParameter("type", "Linear");
+    DBUG("Create Linear property");
+
+    auto const reference_value =
+        //! \ogs_file_param{properties__property__LinearProperty__reference_value}
+        config.getConfigParameter<double>("reference_value");
+
+    std::vector<MaterialPropertyLib::IndependentVariable> ivs;
+    auto const& independent_variables_config =
+        //! \ogs_file_param{properties__property__LinearProperty__independent_variables}
+        config.getConfigSubtree("independent_variables");
+    for (auto const& independent_variable_config :
+         independent_variables_config.getConfigSubtreeList(
+             "independent_variable"))
+    {
+        auto const& variable_name =
+            //! \ogs_file_param{properties__property__LinearProperty__independent_variables__independent_variable__variable_name}
+            independent_variable_config.getConfigParameter<std::string>(
+                "variable_name");
+        auto const reference_condition =
+            //! \ogs_file_param{properties__property__LinearProperty__independent_variables__independent_variable__reference_condition}
+            independent_variable_config.getConfigParameter<double>(
+                "reference_condition");
+        auto const slope =
+            //! \ogs_file_param{properties__property__LinearProperty__independent_variables__independent_variable__slope}
+            independent_variable_config.getConfigParameter<double>("slope");
+
+        MaterialPropertyLib::Variable ivt =
+            MaterialPropertyLib::convertStringToVariable(variable_name);
+
+        MaterialPropertyLib::IndependentVariable iv{ivt, reference_condition,
+                                                    slope};
+
+        ivs.push_back(std::move(iv));
+    }
+
+    return std::make_unique<MaterialPropertyLib::LinearProperty>(
+        reference_value, ivs);
+}
+}  // namespace MaterialPropertyLib
\ No newline at end of file
diff --git a/MaterialLib/MPL/Properties/CreateLinearProperty.h b/MaterialLib/MPL/Properties/CreateLinearProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..5edad81276b68bd42dc1ca62e6d3df789da2194c
--- /dev/null
+++ b/MaterialLib/MPL/Properties/CreateLinearProperty.h
@@ -0,0 +1,30 @@
+/**
+ * \file
+ * \author Norbert Grunwald
+ * \date   Sep 10, 2019
+ *
+ * \copyright
+ * Copyright (c) 2012-2019, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ */
+
+#pragma once
+
+namespace BaseLib
+{
+class ConfigTree;
+}
+
+namespace MaterialPropertyLib
+{
+class LinearProperty;
+}
+
+namespace MaterialPropertyLib
+{
+std::unique_ptr<LinearProperty> createLinearProperty(
+    BaseLib::ConfigTree const& config);
+}  // namespace MaterialPropertyLib
\ No newline at end of file
diff --git a/MaterialLib/MPL/Properties/CreateParameterProperty.cpp b/MaterialLib/MPL/Properties/CreateParameterProperty.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6d7418858cef5da2127a6461b30c9690caf41eb3
--- /dev/null
+++ b/MaterialLib/MPL/Properties/CreateParameterProperty.cpp
@@ -0,0 +1,36 @@
+/**
+ * \file
+ * \author Norbert Grunwald
+ * \date   Sep 10, 2019
+ *
+ * \copyright
+ * Copyright (c) 2012-2019, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ */
+
+#include "BaseLib/ConfigTree.h"
+#include "ParameterLib/Parameter.h"
+#include "ParameterLib/Utils.h"
+
+#include "ParameterProperty.h"
+
+namespace MaterialPropertyLib
+{
+std::unique_ptr<ParameterProperty> createParameterProperty(
+    BaseLib::ConfigTree const& config,
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters)
+{
+    config.checkConfigParameter("type", "Parameter");
+    DBUG("Create Parameter property");
+
+    std::string const& parameter_name =
+        //! \ogs_file_param{properties__property__Parameter__parameter_name}
+        config.getConfigParameter<std::string>("parameter_name");
+    auto const& parameter = ParameterLib::findParameter<double>(
+        parameter_name, parameters, 0, nullptr);
+    return std::make_unique<MaterialPropertyLib::ParameterProperty>(parameter);
+}
+}  // namespace MaterialPropertyLib
\ No newline at end of file
diff --git a/MaterialLib/MPL/Properties/CreateParameterProperty.h b/MaterialLib/MPL/Properties/CreateParameterProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..590c47721ec79d9b85efd080cbc8573e146cefe1
--- /dev/null
+++ b/MaterialLib/MPL/Properties/CreateParameterProperty.h
@@ -0,0 +1,32 @@
+/**
+ * \file
+ * \author Norbert Grunwald
+ * \date   Sep 10, 2019
+ *
+ * \copyright
+ * Copyright (c) 2012-2019, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ */
+
+#pragma once
+
+namespace BaseLib
+{
+class ConfigTree;
+}
+
+namespace MaterialPropertyLib
+{
+class ParameterProperty;
+}
+
+namespace MaterialPropertyLib
+{
+std::unique_ptr<ParameterProperty> createParameterProperty(
+    BaseLib::ConfigTree const& config,
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
+        parameters);
+}  // namespace MaterialPropertyLib
\ No newline at end of file
diff --git a/MaterialLib/MPL/Properties/CreateProperties.h b/MaterialLib/MPL/Properties/CreateProperties.h
new file mode 100644
index 0000000000000000000000000000000000000000..160408503fa0ddafaf007d94ec333a0dba18e730
--- /dev/null
+++ b/MaterialLib/MPL/Properties/CreateProperties.h
@@ -0,0 +1,19 @@
+/**
+ * \file
+ * \author Norbert Grunwald
+ * \date   Sep 10, 2019
+ *
+ * \copyright
+ * Copyright (c) 2012-2019, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ */
+#pragma once
+
+#include "CreateConstant.h"
+#include "CreateExponentialProperty.h"
+#include "CreateIdealGasLaw.h"
+#include "CreateLinearProperty.h"
+#include "CreateParameterProperty.h"
\ No newline at end of file
diff --git a/MaterialLib/MPL/Properties/IdealGasLaw.h b/MaterialLib/MPL/Properties/IdealGasLaw.h
index 69b35cba6556486c9d8495fb79c1ecbac5d55215..0c258b66d6e2f23e63060b8c543cf0951c67a96d 100644
--- a/MaterialLib/MPL/Properties/IdealGasLaw.h
+++ b/MaterialLib/MPL/Properties/IdealGasLaw.h
@@ -67,15 +67,8 @@ public:
                              double const t) const override;
 
 private:
-    Phase* _phase;
-    Component* _component;
+    Phase* _phase = nullptr;
+    Component* _component = nullptr;
 };
 
-inline std::unique_ptr<IdealGasLaw> createIdealGasLaw(
-    BaseLib::ConfigTree const& /*config*/)
-{
-    DBUG("Create IdealGasLaw medium property");
-    return std::make_unique<IdealGasLaw>();
-}
-
 }  // namespace MaterialPropertyLib
diff --git a/MaterialLib/MPL/Properties/ParameterProperty.h b/MaterialLib/MPL/Properties/ParameterProperty.h
index 8e00afddf7f2dba779a7b3904f9e18b70a7d785e..d9c9fcbfe39136a72abc630b25929fbe059b6de7 100644
--- a/MaterialLib/MPL/Properties/ParameterProperty.h
+++ b/MaterialLib/MPL/Properties/ParameterProperty.h
@@ -24,7 +24,8 @@ class ParameterProperty final : public Property
 {
 public:
     /// This constructor accepts a Parameter.
-    ParameterProperty(ParameterLib::Parameter<double> const& parameter);
+    explicit ParameterProperty(
+        ParameterLib::Parameter<double> const& parameter);
 
     /// This method computes the value of a property depending linearly on
     /// the value of the given primary variable.
diff --git a/Tests/MaterialLib/TestMPLIdealGasLaw.cpp b/Tests/MaterialLib/TestMPLIdealGasLaw.cpp
index bcdeb1d4e0e100552745ef3b66c76f03b25b0146..22e4030d32cd7b7c186f3a6bb30d72fe05734a34 100644
--- a/Tests/MaterialLib/TestMPLIdealGasLaw.cpp
+++ b/Tests/MaterialLib/TestMPLIdealGasLaw.cpp
@@ -44,7 +44,7 @@ TEST(MaterialPropertyLib, IdealGasLawOfPurePhase)
     m << "  <properties>\n";
     m << "    <property>\n";
     m << "      <name>density</name>\n";
-    m << "      <type>IdealGaslaw</type>\n";
+    m << "      <type>IdealGasLaw</type>\n";
     m << "    </property>\n";
     m << "    <property>\n";
     m << "      <name>molar_mass</name>\n";