diff --git a/MaterialLib/CMakeLists.txt b/MaterialLib/CMakeLists.txt
index 2789b878330cb32555f909d482ff218f69af9462..334013e13be5a6e7f0d5197cdfb2191f59a865f8 100644
--- a/MaterialLib/CMakeLists.txt
+++ b/MaterialLib/CMakeLists.txt
@@ -9,6 +9,8 @@ append_source_files(SOURCES Fluid/Density)
 append_source_files(SOURCES Fluid/Viscosity)
 append_source_files(SOURCES Fluid/GibbsFreeEnergy)
 append_source_files(SOURCES Fluid/FluidProperties)
+append_source_files(SOURCES Fluid/SpecificHeatCapacity)
+append_source_files(SOURCES Fluid/ThermalConductivity)
 
 append_source_files(SOURCES PorousMedium/Porosity)
 append_source_files(SOURCES PorousMedium/Storage)
diff --git a/MaterialLib/Fluid/SpecificHeatCapacity/CreateSpecificFluidHeatCapacityModel.cpp b/MaterialLib/Fluid/SpecificHeatCapacity/CreateSpecificFluidHeatCapacityModel.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..06a3a5e4b484c2098713bd63936bb18997677d9e
--- /dev/null
+++ b/MaterialLib/Fluid/SpecificHeatCapacity/CreateSpecificFluidHeatCapacityModel.cpp
@@ -0,0 +1,47 @@
+/**
+ *  \brief A function for creating a specific heat capacity model for fluid
+ *
+ *  \copyright
+ *   Copyright (c) 2012-2016, OpenGeoSys Community (http://www.opengeosys.org)
+ *              Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ *   \file CreateSpecificFluidHeatCapacityModel.cpp
+ *
+ */
+
+#include "CreateSpecificFluidHeatCapacityModel.h"
+
+#include "BaseLib/Error.h"
+#include "BaseLib/ConfigTree.h"
+
+#include "MaterialLib/Fluid/FluidProperty.h"
+#include "MaterialLib/Fluid/ConstantFluidProperty.h"
+
+namespace MaterialLib
+{
+namespace Fluid
+{
+std::unique_ptr<FluidProperty> createSpecificFluidHeatCapacityModel(
+    BaseLib::ConfigTree const& config)
+{
+    //! \ogs_file_param{material__fluid__specific_heat_capacity__type}
+    auto const type = config.getConfigParameter<std::string>("type");
+
+    if (type == "Constant")
+        return std::unique_ptr<FluidProperty>(new ConstantFluidProperty(
+            //! \ogs_file_param{material__fluid__specific_heat_capacity__Constant__value}
+            config.getConfigParameter<double>("value")));
+    // TODO: add more models
+    else
+    {
+        OGS_FATAL(
+            "The viscosity type %s is unavailable.\n"
+            "The available type is \n\tConstant\n",
+            type.data());
+    }
+}
+
+}  // end namespace
+}  // end namespace
diff --git a/MaterialLib/Fluid/SpecificHeatCapacity/CreateSpecificFluidHeatCapacityModel.h b/MaterialLib/Fluid/SpecificHeatCapacity/CreateSpecificFluidHeatCapacityModel.h
new file mode 100644
index 0000000000000000000000000000000000000000..a6454d8a29cd84994bc95df9114e124859d2488e
--- /dev/null
+++ b/MaterialLib/Fluid/SpecificHeatCapacity/CreateSpecificFluidHeatCapacityModel.h
@@ -0,0 +1,40 @@
+/**
+ *  \brief A function for creating a specific heat capacity model for fluid
+ *
+ *  \copyright
+ *   Copyright (c) 2012-2016, OpenGeoSys Community (http://www.opengeosys.org)
+ *              Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ *   \file CreateSpecificFluidHeatCapacityModel.h
+ *
+ */
+
+#ifndef OGS_CREATESPECIFICFLUIDHEATCAPACITYMODEL_H
+#define OGS_CREATESPECIFICFLUIDHEATCAPACITYMODEL_H
+
+#include <memory>
+
+namespace BaseLib
+{
+class ConfigTree;
+}
+
+namespace MaterialLib
+{
+namespace Fluid
+{
+class FluidProperty;
+
+/**
+ *  Create a specific heat capacity model
+ *  \param config  ConfigTree object has a tag of `<specific_heat_capacity>`
+ */
+std::unique_ptr<FluidProperty> createSpecificFluidHeatCapacityModel(
+    BaseLib::ConfigTree const& config);
+
+}  // end namespace
+}  // end namespace
+
+#endif /* OGS_CREATESPECIFICFLUIDHEATCAPACITY_H */
diff --git a/Tests/MaterialLib/TestFluidSpecificHeatCapacityModel.cpp b/Tests/MaterialLib/TestFluidSpecificHeatCapacityModel.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3f9c230b8ea7681b9f5684df1769575f853e7cc4
--- /dev/null
+++ b/Tests/MaterialLib/TestFluidSpecificHeatCapacityModel.cpp
@@ -0,0 +1,51 @@
+/**
+ *  \copyright
+ *   Copyright (c) 2012-2016, OpenGeoSys Community (http://www.opengeosys.org)
+ *              Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ *   \file TestFluidSpecificHeatCapacityModel.cpp
+ *
+ */
+
+#include <gtest/gtest.h>
+
+#include <memory>
+
+#include "Tests/TestTools.h"
+
+#include "BaseLib/ConfigTree.h"
+
+#include "MaterialLib/PhysicalConstant.h"
+#include "MaterialLib/Fluid/FluidProperty.h"
+#include "MaterialLib/Fluid/ConstantFluidProperty.h"
+#include "MaterialLib/Fluid/SpecificHeatCapacity/CreateSpecificFluidHeatCapacityModel.h"
+
+using namespace MaterialLib;
+using namespace MaterialLib::Fluid;
+
+using ArrayType = MaterialLib::Fluid::FluidProperty::ArrayType;
+
+std::unique_ptr<FluidProperty> createSpecificFluidHeatCapacityModel(
+    const char xml[])
+{
+    auto const ptree = readXml(xml);
+    BaseLib::ConfigTree conf(ptree, "", BaseLib::ConfigTree::onerror,
+                             BaseLib::ConfigTree::onwarning);
+    auto const& sub_config = conf.getConfigSubtree("specific_heat_capacity");
+    return MaterialLib::Fluid::createSpecificFluidHeatCapacityModel(sub_config);
+}
+
+TEST(MaterialFluid, checkConstantSpecificFluidHeatCapacityModel)
+{
+    const char xml[] =
+        "<specific_heat_capacity>"
+        "   <type>Constant</type>"
+        "   <value> 900. </value> "
+        "</specific_heat_capacity>";
+    const auto cp = createSpecificFluidHeatCapacityModel(xml);
+
+    ArrayType dummy;
+    ASSERT_EQ(900., cp->getValue(dummy));
+}