diff --git a/dumux/material/fluidsystems/3pimmiscible.hh b/dumux/material/fluidsystems/3pimmiscible.hh
index dda3c6ba50f84ae8cd206ccd065d5f4131608596..e01be347cfbda20239e42c00637fca45e617acb2 100644
--- a/dumux/material/fluidsystems/3pimmiscible.hh
+++ b/dumux/material/fluidsystems/3pimmiscible.hh
@@ -108,16 +108,15 @@ public:
      * \brief Return whether a phase is liquid
      * \param phaseIdx The index of the fluid phase to consider
      */
-    static bool isLiquid(int phaseIdx)
+    static constexpr bool isLiquid(int phaseIdx)
     {
         assert(0 <= phaseIdx && phaseIdx < numPhases);
 
-        switch(phaseIdx)
+        switch (phaseIdx)
         {
             case wPhaseIdx: return WettingFluid::isLiquid(); break;
             case nPhaseIdx: return NonwettingFluid::isLiquid(); break;
             case gPhaseIdx: return Gas::isLiquid(); break;
-            default: DUNE_THROW(Dune::InvalidStateException, "Invalid phase index");
         }
     }
 
@@ -134,13 +133,8 @@ public:
      * only damage done will be (slightly) increased computation times
      * in some cases.
      */
-    static bool isIdealMixture(int phaseIdx)
-    {
-        assert(0 <= phaseIdx && phaseIdx < numPhases);
-
-        // we assume immisibility
-        return true;
-    }
+    static constexpr bool isIdealMixture(int phaseIdx)
+    { return true; }
 
     /*!
      * \brief Returns true if and only if a fluid phase is assumed to
@@ -161,7 +155,6 @@ public:
             case wPhaseIdx: return WettingFluid::isCompressible(); break;
             case nPhaseIdx: return NonwettingFluid::isCompressible(); break;
             case gPhaseIdx: return Gas::isCompressible(); break;
-            default: DUNE_THROW(Dune::InvalidStateException, "Invalid phase index");
         }
     }
 
@@ -171,7 +164,7 @@ public:
      *
      * \param phaseIdx The index of the fluid phase to consider
      */
-    static bool isIdealGas(int phaseIdx)
+    static constexpr bool isIdealGas(int phaseIdx)
     {
         assert(0 <= phaseIdx && phaseIdx < numPhases);
 
@@ -181,7 +174,6 @@ public:
             case wPhaseIdx: return WettingFluid::isIdealGas(); break;
             case nPhaseIdx: return NonwettingFluid::isIdealGas(); break;
             case gPhaseIdx: return Gas::isIdealGas(); break;
-            default: DUNE_THROW(Dune::InvalidStateException, "Invalid phase index");
         }
     }
 
@@ -292,11 +284,11 @@ public:
     /*!
      * \brief Initialize the fluid system's static parameters
      */
-    static void init()
+    static constexpr void init()
     {
         // two gaseous phases at once do not make sense physically!
         // (But two liquids are fine)
-        assert(WettingFluid::isLiquid() && NonwettingFluid::isLiquid() && !Gas::isLiquid());
+        static_assert(WettingFluid::isLiquid() && NonwettingFluid::isLiquid() && !Gas::isLiquid(), "There can only be one gaseous phase!");
     }
 
     /*!
@@ -314,9 +306,9 @@ public:
                      Scalar pressMin, Scalar pressMax, unsigned nPress)
     {
         // two gaseous phases at once do not make sense physically!
-        assert(WettingFluid::isLiquid() && NonwettingFluid::isLiquid() && !Gas::isLiquid());
+        static_assert(WettingFluid::isLiquid() && NonwettingFluid::isLiquid() && !Gas::isLiquid(), "There can only be one gaseous phase!");
 
-        if(WettingFluid::Component::isTabulated)
+        if (WettingFluid::Component::isTabulated)
         {
             std::cout << "Initializing tables for the wetting fluid properties ("
                       << nTemp*nPress
@@ -327,7 +319,7 @@ public:
 
         }
 
-        if(NonwettingFluid::Component::isTabulated)
+        if (NonwettingFluid::Component::isTabulated)
         {
             std::cout << "Initializing tables for the non-wetting fluid properties ("
                       << nTemp*nPress
@@ -338,7 +330,7 @@ public:
 
         }
 
-        if(Gas::Component::isTabulated)
+        if (Gas::Component::isTabulated)
         {
             std::cout << "Initializing tables for the gas fluid properties ("
                       << nTemp*nPress