diff --git a/dumux/material/fluidstates/2p2c.hh b/dumux/material/fluidstates/2p2c.hh
index c628adde8cfa901829cdb57ee9c644c8eb8a55c8..1642a873a1cd21fb9f8614cae86376bfc8ff8230 100644
--- a/dumux/material/fluidstates/2p2c.hh
+++ b/dumux/material/fluidstates/2p2c.hh
@@ -32,7 +32,7 @@ namespace Dumux {
  *        sequential 2p2c model.
  * This boils down to so-called "flash calculation", in this case isothermal and isobaric.
  */
-template <class Scalar, class FluidSystem>
+template <class ScalarType, class FluidSystem>
 class TwoPTwoCFluidState
 {
 public:
@@ -47,6 +47,8 @@ public:
     };
 
 public:
+    //! export the scalar type
+    using Scalar = ScalarType;
 
     // comply with new style 2p2c models
     int wettingPhase() const
diff --git a/dumux/material/fluidstates/compositional.hh b/dumux/material/fluidstates/compositional.hh
index 35f58e3dc21bd5b90636a4f127a0857b1a650e67..6a92bc71d467a4078450133acac1f6a88c4000d8 100644
--- a/dumux/material/fluidstates/compositional.hh
+++ b/dumux/material/fluidstates/compositional.hh
@@ -40,13 +40,16 @@ namespace Dumux {
  *        multi-phase, multi-component fluid system assuming
  *        thermodynamic equilibrium.
  */
-template <class Scalar, class FluidSystem>
+template <class ScalarType, class FluidSystem>
 class CompositionalFluidState
 {
 public:
     enum { numPhases = FluidSystem::numPhases };
     enum { numComponents = FluidSystem::numComponents };
 
+    //! export the scalar type
+    using Scalar = ScalarType;
+
     //! default constructor
     CompositionalFluidState() = default;
 
diff --git a/dumux/material/fluidstates/immiscible.hh b/dumux/material/fluidstates/immiscible.hh
index ec7b05b630a18e62f62fd53f30c2c85c3346795f..03f7d698c6727c064af484960063c8f1a4e5842f 100644
--- a/dumux/material/fluidstates/immiscible.hh
+++ b/dumux/material/fluidstates/immiscible.hh
@@ -37,7 +37,7 @@ namespace Dumux {
  *        multi-phase fluid system assuming immiscibility and
  *        thermodynamic equilibrium.
  */
-template <class Scalar, class FluidSystem>
+template <class ScalarType, class FluidSystem>
 class ImmiscibleFluidState
 {
 public:
@@ -47,6 +47,9 @@ public:
                   "The number of phases must be equal to the number of "
                   "components if immiscibility is assumed!");
 
+    //! export the scalar type
+    using Scalar = ScalarType;
+
     //! default constructor
     ImmiscibleFluidState() = default;
 
diff --git a/dumux/material/fluidstates/isothermalimmiscible.hh b/dumux/material/fluidstates/isothermalimmiscible.hh
index 6885d05baf9abd25f0d744165350aefa37b285bf..41d89e189b302439421d96d0a38f2099017171a6 100644
--- a/dumux/material/fluidstates/isothermalimmiscible.hh
+++ b/dumux/material/fluidstates/isothermalimmiscible.hh
@@ -37,11 +37,15 @@ namespace Dumux {
  *        multi-phase fluid system assuming immiscibility and
  *        thermodynamic equilibrium.
  */
-template <class Scalar, class FluidSystem>
+template <class ScalarType, class FluidSystem>
 class IsothermalImmiscibleFluidState
 {
 public:
     static constexpr int numPhases = FluidSystem::numPhases;
+    static constexpr int numComponents = FluidSystem::numComponents;
+
+    //! export the scalar type
+    using Scalar = ScalarType;
 
     //! default constructor
     IsothermalImmiscibleFluidState() = default;
diff --git a/dumux/material/fluidstates/nonequilibrium.hh b/dumux/material/fluidstates/nonequilibrium.hh
index 0c1a34ad5f25ef0b79157cfef58d3adecfa68daa..879dd662322cfce06606749e42ca5e1c26324ca6 100644
--- a/dumux/material/fluidstates/nonequilibrium.hh
+++ b/dumux/material/fluidstates/nonequilibrium.hh
@@ -38,13 +38,16 @@ namespace Dumux {
  *        multi-phase, multi-component fluid system without using
  *        any assumptions.
  */
-template <class Scalar, class FluidSystem>
+template <class ScalarType, class FluidSystem>
 class NonEquilibriumFluidState
 {
 public:
     static constexpr int numPhases = FluidSystem::numPhases;
     static constexpr int numComponents = FluidSystem::numComponents;
 
+    //! export the scalar type
+    using Scalar = ScalarType;
+
     /*****************************************************
      * Generic access to fluid properties (No assumptions
      * on thermodynamic equilibrium required)
diff --git a/dumux/material/fluidstates/nonequilibriumenergy.hh b/dumux/material/fluidstates/nonequilibriumenergy.hh
index c9584df750eb5ade3948f5eaf9baca0964b720ab..4c641647b6b0190255a9ea310bd5c36527874722 100644
--- a/dumux/material/fluidstates/nonequilibriumenergy.hh
+++ b/dumux/material/fluidstates/nonequilibriumenergy.hh
@@ -40,15 +40,18 @@ namespace Dumux {
  *        - local thermal non-equilibrium
  *        - local chemical equilibrium
  */
-template <class Scalar, class FluidSystem>
+template <class ScalarType, class FluidSystem>
 class NonEquilibriumEnergyFluidState
-: public NonEquilibriumFluidState<Scalar, FluidSystem>
+: public NonEquilibriumFluidState<ScalarType, FluidSystem>
 {
-    using ParentType = NonEquilibriumFluidState<Scalar, FluidSystem>;
+    using ParentType = NonEquilibriumFluidState<ScalarType, FluidSystem>;
 public:
     enum { numPhases = FluidSystem::numPhases };
     enum { numComponents = FluidSystem::numComponents };
 
+    //! export the scalar type
+    using Scalar = ScalarType;
+
     using ParentType::ParentType;
 
     /*****************************************************
diff --git a/dumux/material/fluidstates/nonequilibriummass.hh b/dumux/material/fluidstates/nonequilibriummass.hh
index c450d2fc3b9931dcabe38338ea91c378aaab73f3..db4012bfaaf1737dac5e724962bb2fcac6a84908 100644
--- a/dumux/material/fluidstates/nonequilibriummass.hh
+++ b/dumux/material/fluidstates/nonequilibriummass.hh
@@ -40,15 +40,18 @@ namespace Dumux {
  *        - local thermal equilibrium
  *        - local chemical non-equilibrium
  */
-template <class Scalar, class FluidSystem>
+template <class ScalarType, class FluidSystem>
 class NonEquilibriumMassFluidState
-: public NonEquilibriumFluidState<Scalar, FluidSystem>
+: public NonEquilibriumFluidState<ScalarType, FluidSystem>
 {
-    using ParentType = NonEquilibriumFluidState<Scalar, FluidSystem>;
+    using ParentType = NonEquilibriumFluidState<ScalarType, FluidSystem>;
 public:
     enum { numPhases = FluidSystem::numPhases };
     enum { numComponents = FluidSystem::numComponents };
 
+    //! export the scalar type
+    using Scalar = ScalarType;
+
     using ParentType::ParentType;
 
     /*****************************************************
diff --git a/dumux/material/fluidstates/pressureoverlay.hh b/dumux/material/fluidstates/pressureoverlay.hh
index 5ee250dedaa6ed3f4f6cbaa9086d748a0405b5dc..502a09ee6d4e076fc346938526b62c8ecd4937d8 100644
--- a/dumux/material/fluidstates/pressureoverlay.hh
+++ b/dumux/material/fluidstates/pressureoverlay.hh
@@ -34,13 +34,16 @@ namespace Dumux {
  *        pressures and takes all other quantities from an other
  *        fluid state.
  */
-template <class Scalar, class FluidState>
+template <class FluidState>
 class PressureOverlayFluidState
 {
 public:
     enum { numPhases = FluidState::numPhases };
     enum { numComponents = FluidState::numComponents };
 
+    //! export the scalar type
+    using Scalar = typename FluidState::Scalar;
+
     /*!
      * \brief Constructor
      *
diff --git a/dumux/material/fluidstates/pseudo1p2c.hh b/dumux/material/fluidstates/pseudo1p2c.hh
index 81213dd393af0a4a6e10fcbaf3daf872f94f086d..cd33f6fd46863c7139b3b43a98068bbee2465015 100644
--- a/dumux/material/fluidstates/pseudo1p2c.hh
+++ b/dumux/material/fluidstates/pseudo1p2c.hh
@@ -39,7 +39,7 @@ namespace Dumux {
  *  The "flash" calculation routines are in the sequential flash constrain solver, see
  *  CompositionalFlash .
  */
-template <class Scalar, class FluidSystem>
+template <class ScalarType, class FluidSystem>
 class PseudoOnePTwoCFluidState
 {
 
@@ -48,6 +48,10 @@ public:
         numPhases = FluidSystem::numPhases,
         numComponents = FluidSystem::numComponents
     };
+
+    //! export the scalar type
+    using Scalar = ScalarType;
+
     enum {
         phase0Idx = FluidSystem::phase0Idx,
         phase1Idx = FluidSystem::phase1Idx,
@@ -56,7 +60,6 @@ public:
         comp1Idx = FluidSystem::comp1Idx
     };
 
-public:
     /*! \name Acess functions */
     //@{
     /*!
diff --git a/dumux/material/fluidstates/saturationoverlay.hh b/dumux/material/fluidstates/saturationoverlay.hh
index c3d2f81a9dda90d38debd5ec5be831a4ca44a2ac..f930a77cafaf88c0719b81ae16871b27ab12330b 100644
--- a/dumux/material/fluidstates/saturationoverlay.hh
+++ b/dumux/material/fluidstates/saturationoverlay.hh
@@ -34,13 +34,16 @@ namespace Dumux {
  *        saturations and takes all other quantities from an other
  *        fluid state.
  */
-template <class Scalar, class FluidState>
+template <class FluidState>
 class SaturationOverlayFluidState
 {
 public:
     enum { numPhases = FluidState::numPhases };
     enum { numComponents = FluidState::numComponents };
 
+    //! export the scalar type
+    using Scalar =  typename FluidState::Scalar;
+
     /*!
      * \brief Constructor
      *
diff --git a/dumux/material/fluidstates/temperatureoverlay.hh b/dumux/material/fluidstates/temperatureoverlay.hh
index 65d52b8724a99d4ab3bd254864f7e72057e0c3d1..28e37dbe7aba54a252e6cf41734144c848a6e145 100644
--- a/dumux/material/fluidstates/temperatureoverlay.hh
+++ b/dumux/material/fluidstates/temperatureoverlay.hh
@@ -34,13 +34,16 @@ namespace Dumux {
  *        temperatures and takes all other quantities from an other
  *        fluid state.
  */
-template <class Scalar, class FluidState>
+template <class FluidState>
 class TemperatureOverlayFluidState
 {
 public:
     enum { numPhases = FluidState::numPhases };
     enum { numComponents = FluidState::numComponents };
 
+    //! export the scalar type
+    using Scalar = typename FluidState::Scalar;
+
     /*!
      * \brief Constructor
      *
diff --git a/test/material/fluidsystems/checkfluidsystem.hh b/test/material/fluidsystems/checkfluidsystem.hh
index dff2e241e41f8c1050c20b479608190050254215..7f8bb33017709a33b278681af3dce6b0279593f3 100644
--- a/test/material/fluidsystems/checkfluidsystem.hh
+++ b/test/material/fluidsystems/checkfluidsystem.hh
@@ -64,18 +64,15 @@ namespace Dumux
 /*! \brief This fluid state ensures that only the allowed quantities
  * are accessed
  */
-template<class Scalar, class FluidSystem, class BaseFluidState = CompositionalFluidState<Scalar, FluidSystem> >
+template<class ScalarType, class FluidSystem, class BaseFluidState = CompositionalFluidState<ScalarType, FluidSystem> >
 class HairSplittingFluidState: protected BaseFluidState
 {
 public:
-    enum
-    {
-        numPhases = FluidSystem::numPhases
-    };
-    enum
-    {
-        numComponents = FluidSystem::numComponents
-    };
+    //! export the type used for scalars
+    using typename BaseFluidState::Scalar;
+
+    static constexpr int numPhases = FluidSystem::numPhases;
+    static constexpr int numComponents = FluidSystem::numComponents;
 
     HairSplittingFluidState()
     {
diff --git a/test/material/fluidsystems/test_fluidsystems.cc b/test/material/fluidsystems/test_fluidsystems.cc
index 469a983cc3712fae9a35b1a5128843525936dad3..8d53730d4d392673729205a23972074a82927700 100644
--- a/test/material/fluidsystems/test_fluidsystems.cc
+++ b/test/material/fluidsystems/test_fluidsystems.cc
@@ -104,15 +104,15 @@ int main()
         success += checkFluidState<Scalar>(nonEquilibriumMassFluidState);
 
         // PressureOverlayFluidState
-        PressureOverlayFluidState<Scalar, BaseFluidState> pressureOverlayFluidState(baseFs);
+        PressureOverlayFluidState<BaseFluidState> pressureOverlayFluidState(baseFs);
         success += checkFluidState<Scalar>(pressureOverlayFluidState);
 
         // SaturationOverlayFluidState
-        SaturationOverlayFluidState<Scalar, BaseFluidState> saturationOverlayFluidState(baseFs);
+        SaturationOverlayFluidState<BaseFluidState> saturationOverlayFluidState(baseFs);
         success += checkFluidState<Scalar>(saturationOverlayFluidState);
 
         // TemperatureOverlayFluidState
-        TemperatureOverlayFluidState<Scalar, BaseFluidState> temperatureOverlayFluidState(baseFs);
+        TemperatureOverlayFluidState<BaseFluidState> temperatureOverlayFluidState(baseFs);
         success += checkFluidState<Scalar>(temperatureOverlayFluidState);
     }