diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8336ed6743939cb360b76cde7f83bc02e7e33507..54c62782bf9ddbe9ab9f9f59abcf69d7f01e26d0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -279,7 +279,9 @@ add_test(test_dec2p2c \
          test/decoupled/2p/test_dec2p2c-reference.vtu \
          test/decoupled/2p/test_dec2p2c-00021.vtu \
          test/decoupled/2p2c/test_dec2p2c)
-add_test(test_multiphysics2p2c test/decoupled/2p2c/test_multiphysics2p2c)
+add_test(test_fluidsystems test/material/fluidsystems/test_fluidsystems)
+add_test(test_fluidsystems test/material/ncpflash/test_ncpflash)
+add_test(tutorial_coupled tutorial/tutorial_coupled 1 1)
 add_test(tutorial_coupled tutorial/tutorial_coupled 1 1)
 add_test(tutorial_decoupled tutorial/tutorial_decoupled 1)
 
diff --git a/appl/lecture/msm/1p2cvs2p/watercontaminantfluidsystem.hh b/appl/lecture/msm/1p2cvs2p/watercontaminantfluidsystem.hh
index 016c339a8442287dc421a41a55d20bb822c83e1b..12ec2d71d85aa3165b0a103a93f828df21482ffa 100644
--- a/appl/lecture/msm/1p2cvs2p/watercontaminantfluidsystem.hh
+++ b/appl/lecture/msm/1p2cvs2p/watercontaminantfluidsystem.hh
@@ -40,6 +40,8 @@
 
 #include <dumux/material/fluidsystems/basefluidsystem.hh>
 
+#include <assert.h>
+
 namespace Dumux
 {
 namespace FluidSystems
diff --git a/configure.ac b/configure.ac
index e51cf9114c0a0cf3b18fae6b3a011a5fd4b4cc3b..b279cb2973b2bde7bc1e6e10dc688f163981f90b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -85,6 +85,7 @@ AC_CONFIG_FILES([dumux.pc
     test/material/Makefile
     test/material/tabulation/Makefile
     test/material/ncpflash/Makefile
+    test/material/fluidsystems/Makefile
     tutorial/Makefile
 ])
 
diff --git a/dumux/material/binarycoefficients/fullermethod.hh b/dumux/material/binarycoefficients/fullermethod.hh
index 60ea5d25ac6a5350fd4c037c0e05dd7dc99c24ff..f2b85442ead8d09e84259ca1c28154beaf6b328b 100644
--- a/dumux/material/binarycoefficients/fullermethod.hh
+++ b/dumux/material/binarycoefficients/fullermethod.hh
@@ -24,6 +24,8 @@
 #ifndef DUMUX_FULLERMETHOD_HH
 #define DUMUX_FULLERMETHOD_HH
 
+#include <dumux/common/math.hh>
+
 namespace Dumux
 {
 namespace BinaryCoeff
diff --git a/dumux/material/components/iapws/region1.hh b/dumux/material/components/iapws/region1.hh
index 461e58cd2ab7fbdb48a8d21b8d7a1222406cbde0..edc9dfc72ed188a168954959b835e0443a594863 100644
--- a/dumux/material/components/iapws/region1.hh
+++ b/dumux/material/components/iapws/region1.hh
@@ -266,6 +266,35 @@ public:
         return result;
     }
 
+    /*!
+     * \brief The second partial derivative of the Gibbs free energy to the
+     *        normalized temperature for IAPWS region 1 (i.e. liquid) (dimensionless).
+     *
+     * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+     * \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
+     *
+     * IAPWS: "Revised Release on the IAPWS Industrial Formulation
+     * 1997 for the Thermodynamic Properties of Water and Steam",
+     * http://www.iapws.org/relguide/IF97-Rev.pdf
+     */
+    static Scalar ddgamma_ddtau(Scalar temperature, Scalar pressure)
+    {
+        Scalar tau_ = tau(temperature);   /* reduced temperature */
+        Scalar pi_ = pi(pressure);    /* reduced pressure */
+
+        Scalar result = 0.0;
+        for (int i = 0; i < 34; i++) {
+            result +=
+                n(i) *
+                std::pow(7.1 - pi_, I(i)) *
+                J(i) * 
+                (J(i) - 1) *
+                std::pow(tau_ - 1.222,  J(i) - 2);
+        }
+
+        return result;
+    }
+
 private:
     static Scalar n(int i)
     {
diff --git a/dumux/material/components/iapws/region2.hh b/dumux/material/components/iapws/region2.hh
index fc2f0c311edf6232e53db0bd9743c68e937e972d..b5bb9444cbed5503397d4371aae8177ae23c716f 100644
--- a/dumux/material/components/iapws/region2.hh
+++ b/dumux/material/components/iapws/region2.hh
@@ -291,6 +291,46 @@ public:
         return result;
     }
 
+    /*!
+     * \brief The second partial derivative of the Gibbs free energy to the
+     *        normalized temperature for IAPWS region 2 (i.e. sub-critical
+     *        steam) dimensionless).
+     *
+     * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+     * \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
+     *
+     * IAPWS: "Revised Release on the IAPWS Industrial Formulation
+     * 1997 for the Thermodynamic Properties of Water and Steam",
+     * http://www.iapws.org/relguide/IF97-Rev.pdf
+     */
+    static Scalar ddgamma_ddtau(Scalar temperature, Scalar pressure)
+    {
+        Scalar tau_ = tau(temperature);   /* reduced temperature */
+        Scalar pi_ = pi(pressure);    /* reduced pressure */
+
+        // ideal gas part
+        Scalar result = 0;
+        for (int i = 0; i < 9; i++) {
+            result +=
+                n_g(i) *
+                J_g(i) *
+                (J_g(i) - 1) *
+                std::pow(tau_, J_g(i) - 2);
+        }
+
+        // residual part
+        for (int i = 0; i < 43; i++) {
+            result +=
+                n_r(i) *
+                std::pow(pi_,  I_r(i)) *
+                J_r(i) *
+                (J_g(i) - 1) *
+                std::pow(tau_ - 0.5, J_r(i) - 2);
+        }
+
+        return result;
+    }
+
 
 private:
     static Scalar n_g(int i)
diff --git a/dumux/material/fluidstates/immisciblefluidstate.hh b/dumux/material/fluidstates/immisciblefluidstate.hh
index eb087e6e70d0acba90521754fa8977ce58fe8b69..852430ba9aacb46f94c36cd09cdd2d459da60942 100644
--- a/dumux/material/fluidstates/immisciblefluidstate.hh
+++ b/dumux/material/fluidstates/immisciblefluidstate.hh
@@ -26,8 +26,11 @@
  */
 #ifndef DUMUX_IMMISCIBLE_FLUID_STATE_HH
 #define DUMUX_IMMISCIBLE_FLUID_STATE_HH
+
 #include <dumux/common/valgrind.hh>
 
+#include <limits>
+
 namespace Dumux
 {
 /*!
diff --git a/dumux/material/fluidsystems/1pfluidsystem.hh b/dumux/material/fluidsystems/1pfluidsystem.hh
index b2305564aefe562d53759a7aa352a266e24fc20e..f098a5947ef049896a2dc93ffe622410464d9539 100644
--- a/dumux/material/fluidsystems/1pfluidsystem.hh
+++ b/dumux/material/fluidsystems/1pfluidsystem.hh
@@ -32,6 +32,10 @@
 
 #include "basefluidsystem.hh"
 
+#include <limits>
+
+#include <assert.h>
+
 namespace Dumux {
 namespace FluidSystems {
 
diff --git a/dumux/material/fluidsystems/2pimmisciblefluidsystem.hh b/dumux/material/fluidsystems/2pimmisciblefluidsystem.hh
index 823ab30e77e9c6606ad2a54f6d39addf0221c62a..2214d74e646616bf38b465e1cbff808c9989d77a 100644
--- a/dumux/material/fluidsystems/2pimmisciblefluidsystem.hh
+++ b/dumux/material/fluidsystems/2pimmisciblefluidsystem.hh
@@ -38,6 +38,10 @@
 
 #include "basefluidsystem.hh"
 
+#include <limits>
+
+#include <assert.h>
+
 namespace Dumux {
 namespace FluidSystems {
 
diff --git a/dumux/material/fluidsystems/h2on2fluidsystem.hh b/dumux/material/fluidsystems/h2on2fluidsystem.hh
index 0feca298dd2975fad2b248600e76bd440128febd..473a2161388fc1f4edfd24393db503187c845a63 100644
--- a/dumux/material/fluidsystems/h2on2fluidsystem.hh
+++ b/dumux/material/fluidsystems/h2on2fluidsystem.hh
@@ -38,6 +38,8 @@
 
 #include "basefluidsystem.hh"
 
+#include <assert.h>
+
 namespace Dumux
 {
 namespace FluidSystems
diff --git a/dumux/material/fluidsystems/parametercachebase.hh b/dumux/material/fluidsystems/parametercachebase.hh
index 2914ade4e1e2fc2115a767db8d1fc8d791733ea0..2c6e493dd71c7cfb3a233d9adb45b8552e053317 100644
--- a/dumux/material/fluidsystems/parametercachebase.hh
+++ b/dumux/material/fluidsystems/parametercachebase.hh
@@ -38,7 +38,7 @@ public:
         None = 0,
         Temperature = 1, 
         Pressure = 2,
-        Composition = 2,       
+        Composition = 4,    
     };
     
     ParameterCacheBase()
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index d6c03847e82ef82caae1c820c73412deffbcc313..712ae30a1ab830be729fd13a954b39b4a57e6a50 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -2,6 +2,7 @@
 # (they also don't compile if using the old build system)!
 
 add_subdirectory("boxmodels")
+add_subdirectory("material")
 add_subdirectory("common")
 add_subdirectory("decoupled")
 
diff --git a/test/boxmodels/1p2c/interstitialfluidtrailfluidsystem.hh b/test/boxmodels/1p2c/interstitialfluidtrailfluidsystem.hh
index 17a3073c4aa7f926c98113b05ebe24844d613b61..878f2ceb8487e613435e3af4644e6e25bb4967f4 100644
--- a/test/boxmodels/1p2c/interstitialfluidtrailfluidsystem.hh
+++ b/test/boxmodels/1p2c/interstitialfluidtrailfluidsystem.hh
@@ -32,6 +32,8 @@
 
 #include <dumux/material/fluidsystems/basefluidsystem.hh>
 
+#include <assert.h>
+
 namespace Dumux
 {
 namespace FluidSystems
diff --git a/test/material/CMakeLists.txt b/test/material/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bfe874093dffc233ebcd83a7f7555c6e8b266df4
--- /dev/null
+++ b/test/material/CMakeLists.txt
@@ -0,0 +1,7 @@
+# directories which are commented out do not compile at the moment
+# (they also don't compile if using the old build system)!
+
+add_subdirectory("fluidsystems")
+add_subdirectory("ncpflash")
+add_subdirectory("tabulation")
+
diff --git a/test/material/Makefile.am b/test/material/Makefile.am
index 17f3316dcc147f157776243dcf5a6f04e6989df9..9e4e2db118421116cbae50609290a70760720a9d 100644
--- a/test/material/Makefile.am
+++ b/test/material/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = tabulation ncpflash
+SUBDIRS = fluidsystems tabulation ncpflash
 
 include $(top_srcdir)/am/global-rules
 
diff --git a/test/material/fluidsystems/CMakeLists.txt b/test/material/fluidsystems/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..054fc68cad3c147ef6f3dd68d01f9d84cfcc8d8a
--- /dev/null
+++ b/test/material/fluidsystems/CMakeLists.txt
@@ -0,0 +1,8 @@
+# build target for the simple twophase lens problem
+ADD_EXECUTABLE("test_fluidsystems" test_fluidsystems.cc)
+TARGET_LINK_LIBRARIES("test_fluidsystems" ${DumuxLinkLibraries})
+
+# add required libraries and includes to the build flags 
+LINK_DIRECTORIES(${DumuxLinkDirectories})
+INCLUDE_DIRECTORIES(${DumuxIncludeDirectories})
+
diff --git a/test/material/fluidsystems/Makefile.am b/test/material/fluidsystems/Makefile.am
new file mode 100644
index 0000000000000000000000000000000000000000..3978ca9eac0116cccde58c8c4c09c2c6b78d899e
--- /dev/null
+++ b/test/material/fluidsystems/Makefile.am
@@ -0,0 +1,5 @@
+check_PROGRAMS = test_fluidsystems
+
+test_fluidsystems_SOURCES = test_fluidsystems.cc
+
+include $(top_srcdir)/am/global-rules
diff --git a/test/material/fluidsystems/checkfluidsystem.hh b/test/material/fluidsystems/checkfluidsystem.hh
new file mode 100644
index 0000000000000000000000000000000000000000..43beddfea3a9ccf6bdbcf1ce823bf653ef44aca6
--- /dev/null
+++ b/test/material/fluidsystems/checkfluidsystem.hh
@@ -0,0 +1,202 @@
+/*****************************************************************************
+ *   Copyright (C) 2011 by Andreas Lauser                                    *
+ *   Institute of Hydraulic Engineering                                      *
+ *   University of Stuttgart, Germany                                        *
+ *   email: <givenname>.<name>@iws.uni-stuttgart.de                          *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief This file provides the actual code for the fluid systems
+ *        test. 
+ *
+ * It is not directly in test_fluidsystems.cc so that external modules
+ * like dumux-devel can use it easily
+ */
+#ifndef DUMUX_CHECK_FLUIDSYSTEM_HH
+#define DUMUX_CHECK_FLUIDSYSTEM_HH
+
+// include all fluid systems in dumux-stable
+#include <test/boxmodels/1p2c/interstitialfluidtrailfluidsystem.hh>
+#include <dumux/material/fluidsystems/1pfluidsystem.hh>
+#include <dumux/material/fluidsystems/2pimmisciblefluidsystem.hh>
+#include <dumux/material/fluidsystems/h2on2fluidsystem.hh>
+#include <appl/lecture/msm/1p2cvs2p/watercontaminantfluidsystem.hh>
+
+// include the compositional fluid state
+#include <dumux/material/fluidstates/compositionalfluidstate.hh>
+
+#include <dune/common/classname.hh>
+
+// this is a fluid state which makes sure that only the quantities
+// allowed are accessed
+template <class Scalar, class FluidSystem>
+class HairSplittingFluidState 
+    : protected Dumux::CompositionalFluidState<Scalar, FluidSystem>
+{
+    typedef Dumux::CompositionalFluidState<Scalar, FluidSystem> ParentType;
+
+public:
+    enum { numPhases = FluidSystem::numPhases };
+    enum { numComponents = FluidSystem::numComponents };
+
+    HairSplittingFluidState()
+    {
+        // set some fake values
+        ParentType::setTemperature(293.15);
+        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
+            ParentType::setSaturation(phaseIdx, 1.0 / numPhases);
+            ParentType::setDensity(phaseIdx, 1.0);
+
+            for (int compIdx = 0; compIdx < numComponents; ++compIdx) {
+                ParentType::setMoleFraction(phaseIdx, compIdx, 1.0 / numComponents);
+                
+            }
+        }
+        
+        // initially, do not allow anything
+        allowSaturation(false);
+        allowTemperature(false);
+        allowPressure(false);
+        allowComposition(false);
+        allowDensity(false);
+    }
+
+    void allowSaturation(bool yesno)
+    { allowSaturation_ = yesno; }
+
+    void allowPressure(bool yesno)
+    { allowPressure_ = yesno; }
+
+    void allowComposition(bool yesno)
+    { allowComposition_ = yesno; }
+    
+    void allowDensity(bool yesno) 
+    { allowDensity_ = yesno; }
+
+    Scalar saturation(int phaseIdx) const
+    { assert(allowSaturation_); return ParentType::saturation(phaseIdx); }
+
+    Scalar temperature(int phaseIdx) const
+    { assert(allowTemperature_); return ParentType::temperature(phaseIdx); }
+
+    void allowTemperature(bool yesno)
+    { allowTemperature_ = yesno; }
+    
+    Scalar pressure(int phaseIdx) const
+    { assert(allowPressure_); return ParentType::pressure(phaseIdx); }
+
+    Scalar moleFraction(int phaseIdx, int compIdx) const
+    { assert(allowComposition_); return ParentType::moleFraction(phaseIdx, compIdx); }
+
+    Scalar massFraction(int phaseIdx, int compIdx) const
+    { assert(allowComposition_); return ParentType::massFraction(phaseIdx, compIdx); }
+
+    Scalar averageMolarMass(int phaseIdx) const
+    { assert(allowComposition_); return ParentType::averageMolarMass(phaseIdx); }
+
+    Scalar molarity(int phaseIdx, int compIdx) const
+    { assert(allowDensity_ && allowComposition_); return ParentType::molarity(phaseIdx, compIdx); }
+
+    Scalar molarDensity(int phaseIdx) const
+    { assert(allowDensity_); return ParentType::molarDensity(phaseIdx); }
+
+    Scalar molarVolume(int phaseIdx) const
+    { assert(allowDensity_); return ParentType::molarVolume(phaseIdx); }
+
+    Scalar density(int phaseIdx) const
+    { assert(allowDensity_); return ParentType::density(phaseIdx); }
+
+private:
+    bool allowSaturation_;
+    bool allowTemperature_;
+    bool allowPressure_;
+    bool allowComposition_;
+    bool allowDensity_;
+};
+
+template <class Scalar, class FluidSystem>
+void checkFluidSystem()
+{
+    std::cout << "Testing fluid system '" << Dune::className<FluidSystem>() << "'\n";
+
+    HairSplittingFluidState<Scalar, FluidSystem> fs;
+
+    fs.allowTemperature(true);
+    fs.allowPressure(true);
+    fs.allowComposition(true);
+
+    // check whether the parameter cache adheres to the API
+    typedef typename FluidSystem::ParameterCache PC;
+    PC paramCache;
+    try { paramCache.updateAll(fs); } catch (...) {};
+    try { paramCache.updateAll(fs, /*except=*/PC::None); } catch (...) {};
+    try { paramCache.updateAll(fs, /*except=*/PC::Temperature | PC::Pressure | PC::Composition); } catch (...) {};
+    try { paramCache.updatePhase(fs, /*phaseIdx=*/0); } catch (...) {};
+    try { paramCache.updatePhase(fs, /*phaseIdx=*/0, /*except=*/PC::None); } catch (...) {};
+    try { paramCache.updatePhase(fs, /*phaseIdx=*/0, /*except=*/PC::Temperature | PC::Pressure | PC::Composition); } catch (...) {};
+    try { paramCache.updateTemperature(fs, /*phaseIdx=*/0); } catch (...) {};
+    try { paramCache.updateAllPressures(fs); } catch (...) {};
+    try { paramCache.updateSinglePressure(fs, /*phaseIdx=*/0); } catch (...) {};
+    try { paramCache.updateComposition(fs, /*phaseIdx=*/0); } catch (...) {};
+    try { paramCache.updateSingleMoleFraction(fs, /*phaseIdx=*/0, /*compIdx=*/0); } catch (...) {};
+
+    // some value to make sure the return values of the fluid system
+    // are convertible to scalars
+    Scalar __attribute__((unused)) val;
+
+    enum { numPhases = FluidSystem::numPhases };
+    enum { numComponents = FluidSystem::numComponents };
+
+    // actually check the fluid system API
+    FluidSystem::init();
+    for (int phaseIdx = 0; phaseIdx < numPhases; ++ phaseIdx) {
+        fs.allowPressure(FluidSystem::isCompressible(phaseIdx));
+        fs.allowComposition(true);
+        fs.allowDensity(false);
+        try { val = FluidSystem::density(fs, paramCache, phaseIdx); } catch (...) {};
+
+        fs.allowPressure(true);
+        fs.allowDensity(true);
+        try { val = FluidSystem::viscosity(fs, paramCache, phaseIdx); } catch (...) {};
+        try { val = FluidSystem::enthalpy(fs, paramCache, phaseIdx); } catch (...) {};
+        try { val = FluidSystem::heatCapacity(fs, paramCache, phaseIdx); } catch (...) {};
+        try { val = FluidSystem::thermalConductivity(fs, paramCache, phaseIdx); } catch (...) {};
+                
+        fs.allowComposition(!FluidSystem::isIdealMixture(phaseIdx));
+        for (int compIdx = 0; compIdx < numComponents; ++ compIdx) {
+            try { val = FluidSystem::fugacityCoefficient(fs, paramCache, phaseIdx, compIdx); } catch (...) {};
+            try { val = FluidSystem::diffusionCoefficient(fs, paramCache, phaseIdx, compIdx); } catch (...) {};
+            for (int comp2Idx = 0; comp2Idx < numComponents; ++ comp2Idx) {
+                try { val = FluidSystem::binaryDiffusionCoefficient(fs, paramCache, phaseIdx, compIdx, comp2Idx); } catch (...) {};
+            }
+        }
+    }
+
+    for (int phaseIdx = 0; phaseIdx < numPhases; ++ phaseIdx) {
+        std::string __attribute__((unused)) name = FluidSystem::phaseName(phaseIdx);
+        bool __attribute__((unused)) bVal = FluidSystem::isLiquid(phaseIdx);
+    }
+    
+    for (int compIdx = 0; compIdx < numComponents; ++ compIdx) {
+        val = FluidSystem::molarMass(compIdx);
+        std::string __attribute__((unused)) name = FluidSystem::componentName(compIdx);
+    }
+
+    std::cout << "----------------------------------\n";
+};
+
+#endif
diff --git a/test/material/fluidsystems/test_fluidsystems.cc b/test/material/fluidsystems/test_fluidsystems.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e562cee95e9454a1fdf2e16f3e52772d6dac1478
--- /dev/null
+++ b/test/material/fluidsystems/test_fluidsystems.cc
@@ -0,0 +1,79 @@
+/*****************************************************************************
+ *   Copyright (C) 2011 by Andreas Lauser                                    *
+ *   Institute of Hydraulic Engineering                                      *
+ *   University of Stuttgart, Germany                                        *
+ *   email: <givenname>.<name>@iws.uni-stuttgart.de                          *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief This test makes sure that the programming interface is
+ *        observed by all fluid systems
+ */
+#include "config.h"
+
+#include "checkfluidsystem.hh"
+
+// include all fluid systems in dumux-stable
+#include <test/boxmodels/1p2c/interstitialfluidtrailfluidsystem.hh>
+#include <dumux/material/fluidsystems/1pfluidsystem.hh>
+#include <dumux/material/fluidsystems/2pimmisciblefluidsystem.hh>
+#include <dumux/material/fluidsystems/h2on2fluidsystem.hh>
+#include <appl/lecture/msm/1p2cvs2p/watercontaminantfluidsystem.hh>
+
+int main()
+{
+    typedef double Scalar;
+    typedef Dumux::H2O<Scalar> H2O;
+    typedef Dumux::N2<Scalar> N2;
+
+    typedef Dumux::LiquidPhase<Scalar, H2O> Liquid;
+    typedef Dumux::GasPhase<Scalar, N2> Gas;
+
+    // H2O -- N2
+    {   typedef Dumux::FluidSystems::H2ON2<Scalar, /*enableComplexRelations=*/false> FluidSystem;
+        checkFluidSystem<Scalar, FluidSystem>(); }
+
+    {   typedef Dumux::FluidSystems::H2ON2<Scalar, /*enableComplexRelations=*/true> FluidSystem;
+        checkFluidSystem<Scalar, FluidSystem>(); }
+
+    // 2p-immiscible
+    {   typedef Dumux::FluidSystems::TwoPImmiscible<Scalar, Liquid, Liquid> FluidSystem;
+        checkFluidSystem<Scalar, FluidSystem>(); }
+
+    {   typedef Dumux::FluidSystems::TwoPImmiscible<Scalar, Liquid, Gas> FluidSystem;
+        checkFluidSystem<Scalar, FluidSystem>(); }
+
+    {  typedef Dumux::FluidSystems::TwoPImmiscible<Scalar, Gas, Liquid> FluidSystem;
+        checkFluidSystem<Scalar, FluidSystem>(); }
+
+    // 1p
+    {   typedef Dumux::FluidSystems::OneP<Scalar, Liquid> FluidSystem;
+        checkFluidSystem<Scalar, FluidSystem>(); }
+
+    {   typedef Dumux::FluidSystems::OneP<Scalar, Gas> FluidSystem;
+        checkFluidSystem<Scalar, FluidSystem>(); }
+
+    // water -- contaminant
+    {   typedef Dumux::FluidSystems::WaterContaminant<Scalar> FluidSystem;
+        checkFluidSystem<Scalar, FluidSystem>(); }
+
+    // interstitial fluid -- TRAIL
+    {   typedef Dumux::FluidSystems::WaterContaminant<Scalar> FluidSystem;
+        checkFluidSystem<Scalar, FluidSystem>(); }
+
+    return 0;
+}
diff --git a/test/material/ncpflash/CMakeLists.txt b/test/material/ncpflash/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6df5a763b390396698536d2948c5152baeb4287f
--- /dev/null
+++ b/test/material/ncpflash/CMakeLists.txt
@@ -0,0 +1,8 @@
+# build target for the simple twophase lens problem
+ADD_EXECUTABLE("test_ncpflash" test_ncpflash.cc)
+TARGET_LINK_LIBRARIES("test_ncpflash" ${DumuxLinkLibraries})
+
+# add required libraries and includes to the build flags 
+LINK_DIRECTORIES(${DumuxLinkDirectories})
+INCLUDE_DIRECTORIES(${DumuxIncludeDirectories})
+
diff --git a/test/material/tabulation/CMakeLists.txt b/test/material/tabulation/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e4a35783b1525644f1665145ee47fd48ecd9e2c4
--- /dev/null
+++ b/test/material/tabulation/CMakeLists.txt
@@ -0,0 +1,8 @@
+# build target for the simple twophase lens problem
+ADD_EXECUTABLE("test_tabulation" test_tabulation.cc)
+TARGET_LINK_LIBRARIES("test_tabulation" ${DumuxLinkLibraries})
+
+# add required libraries and includes to the build flags 
+LINK_DIRECTORIES(${DumuxLinkDirectories})
+INCLUDE_DIRECTORIES(${DumuxIncludeDirectories})
+