diff --git a/test/material/components/plotproperties.cc b/test/material/components/plotproperties.cc
index 51908570a6299a91d1859f2b6d33c9eba8d9e3f9..09b9cf2d490cace4722878b8cdac34377764fbac 100644
--- a/test/material/components/plotproperties.cc
+++ b/test/material/components/plotproperties.cc
@@ -46,6 +46,7 @@
 #include <dumux/material/components/simpleh2o.hh>
 #include <dumux/material/components/trichloroethene.hh>
 #include <dumux/material/components/xylene.hh>
+#include <dumux/material/components/componenttraits.hh>
 
 using namespace std;
 using namespace Dumux;
@@ -108,7 +109,7 @@ void plot(Functor&& f,
 //! Plot properties if overloads compile
 template<class C, class hasNoDensityOverload = checkLiqDen>
 auto plotLiquidDensity(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<!decltype(isValid(hasNoDensityOverload{})(declval<C>()))::value, void>
+-> typename std::enable_if_t<!decltype(isValid(hasNoDensityOverload{})(declval<C>()))::value && ComponentTraits<C>::hasLiquidState, void>
 {
     auto f = [] (auto T, auto p) { return C::liquidDensity(T, p); };
     plot(f, T, p, C::name(), "liquid", "density", "[kg/^3]", openPlot);
@@ -116,7 +117,7 @@ auto plotLiquidDensity(const vector<double>& T, double p, bool openPlot)
 
 template<class C, class hasNoEnthalpyOverload = checkLiqEnth>
 auto plotLiquidEnthalpy(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<!decltype(isValid(hasNoEnthalpyOverload{})(declval<C>()))::value, void>
+-> typename std::enable_if_t<!decltype(isValid(hasNoEnthalpyOverload{})(declval<C>()))::value && ComponentTraits<C>::hasLiquidState, void>
 {
     auto f = [] (auto T, auto p) { return C::liquidEnthalpy(T, p); };
     plot(f, T, p, C::name(), "liquid", "enthalpy", "[J/(kg)]", openPlot);
@@ -124,7 +125,7 @@ auto plotLiquidEnthalpy(const vector<double>& T, double p, bool openPlot)
 
 template<class C, class hasNoHeatCapOverload = checkLiqHeatCap>
 auto plotLiquidHeatCapacity(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<!decltype(isValid(hasNoHeatCapOverload{})(declval<C>()))::value, void>
+-> typename std::enable_if_t<!decltype(isValid(hasNoHeatCapOverload{})(declval<C>()))::value && ComponentTraits<C>::hasLiquidState, void>
 {
     auto f = [] (auto T, auto p) { return C::liquidHeatCapacity(T, p); };
     plot(f, T, p, C::name(), "liquid", "heat capacity", "[J/(kg*K)]", openPlot);
@@ -132,7 +133,7 @@ auto plotLiquidHeatCapacity(const vector<double>& T, double p, bool openPlot)
 
 template<class C, class hasNoViscOverload = checkLiqVisc>
 auto plotLiquidViscosity(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<!decltype(isValid(hasNoViscOverload{})(declval<C>()))::value, void>
+-> typename std::enable_if_t<!decltype(isValid(hasNoViscOverload{})(declval<C>()))::value && ComponentTraits<C>::hasLiquidState, void>
 {
     auto f = [] (auto T, auto p) { return C::liquidViscosity(T, p); };
     plot(f, T, p, C::name(), "liquid", "viscosity", "[Pa*s]", openPlot);
@@ -140,7 +141,7 @@ auto plotLiquidViscosity(const vector<double>& T, double p, bool openPlot)
 
 template<class C, class hasNoThermCondOverload = checkLiqThermCond>
 auto plotLiquidThermalConductivity(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<!decltype(isValid(hasNoThermCondOverload{})(declval<C>()))::value, void>
+-> typename std::enable_if_t<!decltype(isValid(hasNoThermCondOverload{})(declval<C>()))::value && ComponentTraits<C>::hasLiquidState, void>
 {
     auto f = [] (auto T, auto p) { return C::liquidThermalConductivity(T, p); };
     plot(f, T, p, C::name(), "liquid", "thermal conductivity", "[J/(kg*K)]", openPlot);
@@ -148,7 +149,7 @@ auto plotLiquidThermalConductivity(const vector<double>& T, double p, bool openP
 
 template<class C, class hasNoDensityOverload = checkGasDen>
 auto plotGasDensity(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<!decltype(isValid(hasNoDensityOverload{})(declval<C>()))::value, void>
+-> typename std::enable_if_t<!decltype(isValid(hasNoDensityOverload{})(declval<C>()))::value && ComponentTraits<C>::hasGasState, void>
 {
     auto f = [] (auto T, auto p) { return C::gasDensity(T, p); };
     plot(f, T, p, C::name(), "gas", "density", "[kg/^3]", openPlot);
@@ -156,7 +157,7 @@ auto plotGasDensity(const vector<double>& T, double p, bool openPlot)
 
 template<class C, class hasNoEnthalpyOverload = checkGasEnth>
 auto plotGasEnthalpy(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<!decltype(isValid(hasNoEnthalpyOverload{})(declval<C>()))::value, void>
+-> typename std::enable_if_t<!decltype(isValid(hasNoEnthalpyOverload{})(declval<C>()))::value && ComponentTraits<C>::hasGasState, void>
 {
     auto f = [] (auto T, auto p) { return C::gasEnthalpy(T, p); };
     plot(f, T, p, C::name(), "gas", "enthalpy", "[J/(kg)]", openPlot);
@@ -164,7 +165,7 @@ auto plotGasEnthalpy(const vector<double>& T, double p, bool openPlot)
 
 template<class C, class hasNoHeatCapOverload = checkGasHeatCap>
 auto plotGasHeatCapacity(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<!decltype(isValid(hasNoHeatCapOverload{})(declval<C>()))::value, void>
+-> typename std::enable_if_t<!decltype(isValid(hasNoHeatCapOverload{})(declval<C>()))::value && ComponentTraits<C>::hasGasState, void>
 {
     auto f = [] (auto T, auto p) { return C::gasHeatCapacity(T, p); };
     plot(f, T, p, C::name(), "gas", "heat capacity", "[J/(kg*K)]", openPlot);
@@ -172,7 +173,7 @@ auto plotGasHeatCapacity(const vector<double>& T, double p, bool openPlot)
 
 template<class C, class hasNoViscOverload = checkGasVisc>
 auto plotGasViscosity(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<!decltype(isValid(hasNoViscOverload{})(declval<C>()))::value, void>
+-> typename std::enable_if_t<!decltype(isValid(hasNoViscOverload{})(declval<C>()))::value && ComponentTraits<C>::hasGasState, void>
 {
     auto f = [] (auto T, auto p) { return C::gasViscosity(T, p); };
     plot(f, T, p, C::name(), "gas", "viscosity", "[Pa*s]", openPlot);
@@ -180,7 +181,7 @@ auto plotGasViscosity(const vector<double>& T, double p, bool openPlot)
 
 template<class C, class hasNoThermCondOverload = checkGasThermCond>
 auto plotGasThermalConductivity(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<!decltype(isValid(hasNoThermCondOverload{})(declval<C>()))::value, void>
+-> typename std::enable_if_t<!decltype(isValid(hasNoThermCondOverload{})(declval<C>()))::value && ComponentTraits<C>::hasGasState, void>
 {
     auto f = [] (auto T, auto p) { return C::gasThermalConductivity(T, p); };
     plot(f, T, p, C::name(), "gas", "thermal conductivity", "[J/(kg*K)]", openPlot);
@@ -189,43 +190,43 @@ auto plotGasThermalConductivity(const vector<double>& T, double p, bool openPlot
 //! Do not plot properties if overloads don't compile
 template<class C, class hasNoDensityOverload = checkLiqDen>
 auto plotLiquidDensity(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<decltype(isValid(hasNoDensityOverload{})(declval<C>()))::value, void> {}
+-> typename std::enable_if_t<decltype(isValid(hasNoDensityOverload{})(declval<C>()))::value || !ComponentTraits<C>::hasLiquidState, void> {}
 
 template<class C, class hasNoEnthalpyOverload = checkLiqEnth>
 auto plotLiquidEnthalpy(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<decltype(isValid(hasNoEnthalpyOverload{})(declval<C>()))::value, void> {}
+-> typename std::enable_if_t<decltype(isValid(hasNoEnthalpyOverload{})(declval<C>()))::value || !ComponentTraits<C>::hasLiquidState, void> {}
 
 template<class C, class hasNoHeatCapOverload = checkLiqHeatCap>
 auto plotLiquidHeatCapacity(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<decltype(isValid(hasNoHeatCapOverload{})(declval<C>()))::value, void> {}
+-> typename std::enable_if_t<decltype(isValid(hasNoHeatCapOverload{})(declval<C>()))::value || !ComponentTraits<C>::hasLiquidState, void> {}
 
 template<class C, class hasNoViscOverload = checkLiqVisc>
 auto plotLiquidViscosity(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<decltype(isValid(hasNoViscOverload{})(declval<C>()))::value, void> {}
+-> typename std::enable_if_t<decltype(isValid(hasNoViscOverload{})(declval<C>()))::value || !ComponentTraits<C>::hasLiquidState, void> {}
 
 template<class C, class hasNoThermCondOverload = checkLiqThermCond>
 auto plotLiquidThermalConductivity(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<decltype(isValid(hasNoThermCondOverload{})(declval<C>()))::value, void> {}
+-> typename std::enable_if_t<decltype(isValid(hasNoThermCondOverload{})(declval<C>()))::value || !ComponentTraits<C>::hasLiquidState, void> {}
 
 template<class C, class hasNoDensityOverload = checkGasDen>
 auto plotGasDensity(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<decltype(isValid(hasNoDensityOverload{})(declval<C>()))::value, void> {}
+-> typename std::enable_if_t<decltype(isValid(hasNoDensityOverload{})(declval<C>()))::value || !ComponentTraits<C>::hasGasState, void> {}
 
 template<class C, class hasNoEnthalpyOverload = checkGasEnth>
 auto plotGasEnthalpy(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<decltype(isValid(hasNoEnthalpyOverload{})(declval<C>()))::value, void> {}
+-> typename std::enable_if_t<decltype(isValid(hasNoEnthalpyOverload{})(declval<C>()))::value || !ComponentTraits<C>::hasGasState, void> {}
 
 template<class C, class hasNoHeatCapOverload = checkGasHeatCap>
 auto plotGasHeatCapacity(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<decltype(isValid(hasNoHeatCapOverload{})(declval<C>()))::value, void> {}
+-> typename std::enable_if_t<decltype(isValid(hasNoHeatCapOverload{})(declval<C>()))::value || !ComponentTraits<C>::hasGasState, void> {}
 
 template<class C, class hasNoViscOverload = checkGasVisc>
 auto plotGasViscosity(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<decltype(isValid(hasNoViscOverload{})(declval<C>()))::value, void> {}
+-> typename std::enable_if_t<decltype(isValid(hasNoViscOverload{})(declval<C>()))::value || !ComponentTraits<C>::hasGasState, void> {}
 
 template<class C, class hasNoThermCondOverload = checkGasThermCond>
 auto plotGasThermalConductivity(const vector<double>& T, double p, bool openPlot)
--> typename std::enable_if_t<decltype(isValid(hasNoThermCondOverload{})(declval<C>()))::value, void> {}
+-> typename std::enable_if_t<decltype(isValid(hasNoThermCondOverload{})(declval<C>()))::value || !ComponentTraits<C>::hasGasState, void> {}
 
 //! a number of properties of a component
 template<class Component>