diff --git a/dumux/material/fluidsystems/1padapter.hh b/dumux/material/fluidsystems/1padapter.hh
new file mode 100644
index 0000000000000000000000000000000000000000..d023684d7e4d8447be3c17633039c60478d285a0
--- /dev/null
+++ b/dumux/material/fluidsystems/1padapter.hh
@@ -0,0 +1,317 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   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
+ * \ingroup Fluidsystems
+ * \brief @copybrief Dumux::FluidSystems::OnePAdapter
+ */
+#ifndef DUMUX_FLUIDSYTEMS_ONEP_ADAPTER_HH
+#define DUMUX_FLUIDSYTEMS_ONEP_ADAPTER_HH
+
+#include <cassert>
+
+#include <dune/common/exceptions.hh>
+
+#include <dumux/material/fluidsystems/base.hh>
+#include <dumux/material/fluidstates/adapter.hh>
+
+namespace Dumux {
+namespace FluidSystems {
+
+/*!
+ * \ingroup Fluidsystems
+ * \brief An adapter for multi-phase fluid systems to be used with compositional one-phase models
+ * \tparam MPFluidSystem the multi-phase fluid system to be adapted
+ * \tparam phase the index of the phase we choose from the multi-phase fluid system
+ */
+template <class MPFluidSystem, int phase = 0>
+class OnePAdapter
+: public BaseFluidSystem<typename MPFluidSystem::Scalar, OnePAdapter<MPFluidSystem, phase>>
+{
+    using ThisType = OnePAdapter<MPFluidSystem, phase>;
+    using Base = BaseFluidSystem<typename MPFluidSystem::Scalar, ThisType>;
+
+    struct AdapterPolicy
+    {
+        using FluidSystem = MPFluidSystem;
+
+        // the phase index is always zero, other phases than the chosen phase should never be called
+        static int phaseIdx(int mpFluidPhaseIdx)
+        {
+            if (mpFluidPhaseIdx == phase)
+                return 0;
+            else
+                DUNE_THROW(Dune::InvalidStateException, "Only phase " << phase << " is available!");
+        }
+
+        // the main component has to be index 0 so we swap the main component with the first component
+        // this mapping works in both ways since we are only swapping components
+        static constexpr int compIdx(int compIdx)
+        {
+            if (compIdx == 0)
+                return phase;
+            else if (compIdx == phase)
+                return 0;
+            else
+                return compIdx;
+        }
+    };
+
+    template<class FluidState>
+    static auto adaptFluidState(const FluidState& fluidState)
+    { return FluidStateAdapter<FluidState, AdapterPolicy>(fluidState); }
+
+public:
+    using Scalar = typename Base::Scalar;
+    using ParameterCache = NullParameterCache;
+
+    //! export the wrapped MultiPhaseFluidSystem type
+    using MultiPhaseFluidSystem = MPFluidSystem;
+
+    //! number of phases in the fluid system
+    static constexpr int numPhases = 1;
+    //! number of components has to be the same as in the multi-phase fluid system as the composition needs to be defined
+    static constexpr int numComponents = MultiPhaseFluidSystem::numComponents;
+    //! number of components has to be the same as in the multi-phase fluid system as the composition needs to be defined
+    static constexpr int phase0Idx = 0; //!< index of the only phase
+
+    //! convert a component index of the multi-phase component index to the actual component index
+    static constexpr int compIdx(int multiPhaseFluidSystemCompIdx)
+    { return AdapterPolicy::compIdx(multiPhaseFluidSystemCompIdx); }
+
+    /*!
+     * \brief Initialize the fluid system's static parameters generically
+     */
+    static void init()
+    { MultiPhaseFluidSystem::init(); }
+
+    /****************************************
+     * Fluid phase related static parameters
+     ****************************************/
+    /*!
+     * \brief Return the human readable name of a fluid phase
+     *
+     * \param phaseIdx The index of the fluid phase to consider
+     */
+    static std::string phaseName(int phaseIdx = 0)
+    { return MultiPhaseFluidSystem::phaseName(phase); }
+
+    /*!
+     * \brief A human readable name for the component.
+     *
+     * \param compIdx The index of the component to consider
+     */
+    static std::string componentName(int compIdx)
+    { return MultiPhaseFluidSystem::componentName(AdapterPolicy::compIdx(compIdx)); }
+
+    /*!
+     * \brief A human readable name for the component.
+     */
+    static std::string name()
+    { return MultiPhaseFluidSystem::phaseName(phase); }
+
+    /*!
+     * \brief There is only one phase, so not mass transfer between phases can occur
+     */
+    static constexpr bool isMiscible()
+    { return false; }
+
+    /*!
+     * \brief Returns whether the fluid is a liquid
+     */
+    static constexpr bool isLiquid(int phaseIdx = 0)
+    { return MultiPhaseFluidSystem::isLiquid(phase); }
+
+    /*!
+     * \brief Returns true if and only if a fluid phase is assumed to
+     *        be an ideal mixture.
+     *
+     * We define an ideal mixture as a fluid phase where the fugacity
+     * coefficients of all components times the pressure of the phase
+     * are independent on the fluid composition. This assumption is true
+     * if only a single component is involved. If you are unsure what
+     * this function should return, it is safe to return false. The
+     * only damage done will be (slightly) increased computation times
+     * in some cases.
+     *
+     * \param phaseIdx The index of the fluid phase to consider
+     */
+    static constexpr bool isIdealMixture(int phaseIdx = 0)
+    { return MultiPhaseFluidSystem::isIdealMixture(phase); }
+
+    /*!
+     * \brief Returns true if the fluid is assumed to be compressible
+     */
+    static constexpr bool isCompressible(int phaseIdx = 0)
+    { return MultiPhaseFluidSystem::isCompressible(phase); }
+
+    /*!
+     * \brief Returns true if the fluid viscosity is constant
+     */
+    static constexpr bool viscosityIsConstant(int phaseIdx = 0)
+    { return MultiPhaseFluidSystem::viscosityIsConstant(phase); }
+
+    /*!
+     * \brief Returns true if the fluid is assumed to be an ideal gas
+     */
+    static constexpr bool isIdealGas(int phaseIdx = 0)
+    { return MultiPhaseFluidSystem::isIdealGas(phase); }
+
+    /*!
+     * \brief The mass in \f$\mathrm{[kg]}\f$ of one mole of the component.
+     */
+    static Scalar molarMass(int compIdx)
+    {  return MultiPhaseFluidSystem::molarMass(AdapterPolicy::compIdx(compIdx)); }
+
+    using Base::density;
+    /*!
+     * \brief The density \f$\mathrm{[kg/m^3]}\f$ of the component at a given pressure and temperature.
+     */
+    template <class FluidState>
+    static Scalar density(const FluidState &fluidState, int phaseIdx = 0)
+    {
+        assert(phaseIdx == 0);
+        return MultiPhaseFluidSystem::density(adaptFluidState(fluidState), phase);
+    }
+
+    using Base::molarDensity;
+    /*!
+     * \brief The molar density \f$\rho_{mol,\alpha}\f$
+     *   of a fluid phase \f$\alpha\f$ in \f$\mathrm{[mol/m^3]}\f$
+     *
+     * The molar density is defined by the
+     * mass density \f$\rho_\alpha\f$ and the main component molar mass \f$M_\alpha\f$:
+     *
+     * \f[\rho_{mol,\alpha} = \frac{\rho_\alpha}{M_\alpha} \;.\f]
+     */
+    template <class FluidState>
+    static Scalar molarDensity(const FluidState &fluidState, int phaseIdx = 0)
+    {
+        assert(phaseIdx == 0);
+        return MultiPhaseFluidSystem::molarDensity(adaptFluidState(fluidState), phase);
+    }
+
+    using Base::enthalpy;
+    /*!
+     * \brief Specific enthalpy \f$\mathrm{[J/kg]}\f$ the pure component as a liquid.
+     */
+    template <class FluidState>
+    static Scalar enthalpy(const FluidState &fluidState, int phaseIdx = 0)
+    {
+        assert(phaseIdx == 0);
+        return MultiPhaseFluidSystem::enthalpy(adaptFluidState(fluidState), phase);
+    }
+
+    using Base::viscosity;
+    /*!
+     * \brief The dynamic liquid viscosity \f$\mathrm{[N/m^3*s]}\f$ of the pure component.
+     */
+    template <class FluidState>
+    static Scalar viscosity(const FluidState &fluidState, int phaseIdx = 0)
+    {
+        assert(phaseIdx == 0);
+        return MultiPhaseFluidSystem::viscosity(adaptFluidState(fluidState), phase);
+    }
+
+    using Base::fugacityCoefficient;
+    /*!
+     * \copybrief Base::fugacityCoefficient
+     *
+     * \param fluidState An arbitrary fluid state
+     * \param phaseIdx The index of the fluid phase to consider
+     * \param compIdx The index of the component to consider
+     */
+    template <class FluidState>
+    static Scalar fugacityCoefficient(const FluidState &fluidState,
+                                      int phaseIdx,
+                                      int compIdx)
+    {
+        assert(phaseIdx == 0);
+        return MultiPhaseFluidSystem::fugacityCoefficient(adaptFluidState(fluidState), phase,
+                                                          AdapterPolicy::compIdx(compIdx));
+    }
+
+    using Base::diffusionCoefficient;
+    /*!
+     * \copybrief Base::diffusionCoefficient
+     *
+     * \param fluidState An arbitrary fluid state
+     * \param phaseIdx The index of the fluid phase to consider
+     * \param compIdx The index of the component to consider
+     */
+    template <class FluidState>
+    static Scalar diffusionCoefficient(const FluidState &fluidState,
+                                       int phaseIdx,
+                                       int compIdx)
+    {
+        assert(phaseIdx == 0);
+        return MultiPhaseFluidSystem::diffusionCoefficient(adaptFluidState(fluidState), phase,
+                                                           AdapterPolicy::compIdx(compIdx));
+    }
+
+    using Base::binaryDiffusionCoefficient;
+    /*!
+     * \copybrief Base::binaryDiffusionCoefficient
+     *
+     * \param fluidState An arbitrary fluid state
+     * \param phaseIdx The index of the fluid phase to consider
+     * \param compIIdx The index of the component to consider
+     * \param compJIdx The index of the component to consider
+     */
+    template <class FluidState>
+    static Scalar binaryDiffusionCoefficient(const FluidState &fluidState,
+                                             int phaseIdx,
+                                             int compIIdx,
+                                             int compJIdx)
+    {
+        assert(phaseIdx == 0);
+        return MultiPhaseFluidSystem::binaryDiffusionCoefficient(adaptFluidState(fluidState), phase,
+                                                                 AdapterPolicy::compIdx(compIIdx),
+                                                                 AdapterPolicy::compIdx(compJIdx));
+    }
+
+    using Base::thermalConductivity;
+    /*!
+     * \brief Thermal conductivity of the fluid \f$\mathrm{[W/(m K)]}\f$.
+     */
+    template <class FluidState>
+    static Scalar thermalConductivity(const FluidState &fluidState,
+                                      int phaseIdx = 0)
+    {
+        assert(phaseIdx == 0);
+        return MultiPhaseFluidSystem::thermalConductivity(adaptFluidState(fluidState), phase);
+    }
+
+    using Base::heatCapacity;
+    /*!
+     * \brief Specific isobaric heat capacity of the fluid \f$\mathrm{[J/(kg K)]}\f$.
+     */
+    template <class FluidState>
+    static Scalar heatCapacity(const FluidState &fluidState,
+                               int phaseIdx = 0)
+    {
+        assert(phaseIdx == 0);
+        return MultiPhaseFluidSystem::heatCapacity(adaptFluidState(fluidState), phase);
+    }
+};
+
+} // namespace FluidSystems
+} // namespace
+
+#endif
diff --git a/dumux/material/fluidsystems/CMakeLists.txt b/dumux/material/fluidsystems/CMakeLists.txt
index 6a0a87ff75ffb8f54b20cc0f2ce0e336bdd86463..589e0bb25893a179b58f1458ea75ac5748176731 100644
--- a/dumux/material/fluidsystems/CMakeLists.txt
+++ b/dumux/material/fluidsystems/CMakeLists.txt
@@ -1,4 +1,5 @@
 install(FILES
+1padapter.hh
 1pgas.hh
 1pliquid.hh
 2p1c.hh