diff --git a/test/porousmediumflow/1pnc/implicit/1p2ctestproblem.hh b/test/porousmediumflow/1pnc/implicit/1p2ctestproblem.hh
new file mode 100644
index 0000000000000000000000000000000000000000..f09e48a1827e90f61d7984e69b710d6e46db8f5b
--- /dev/null
+++ b/test/porousmediumflow/1pnc/implicit/1p2ctestproblem.hh
@@ -0,0 +1,307 @@
+// -*- 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
+ * \brief Definition of a problem, for the 1p2c problem:
+ * Component transport of nitrogen dissolved in the water phase.
+ */
+#ifndef DUMUX_1P2C_TEST_PROBLEM_HH
+#define DUMUX_1P2C_TEST_PROBLEM_HH
+
+#include <dumux/implicit/box/properties.hh>
+#include <dumux/implicit/cellcentered/tpfa/properties.hh>
+#include <dumux/implicit/cellcentered/mpfa/properties.hh>
+#include <dumux/porousmediumflow/1p2c/implicit/model.hh>
+#include <dumux/porousmediumflow/implicit/problem.hh>
+
+#include <dumux/material/fluidsystems/h2on2.hh>
+#include "1p2ctestspatialparams.hh"
+
+#define NONISOTHERMAL 0
+
+namespace Dumux
+{
+
+template <class TypeTag>
+class OnePTwoCTestProblem;
+
+namespace Properties
+{
+#if NONISOTHERMAL
+NEW_TYPE_TAG(OnePTwoCOutflowProblem, INHERITS_FROM(OnePTwoCNI));
+NEW_TYPE_TAG(OnePTwoCOutflowBoxProblem, INHERITS_FROM(BoxModel, OnePTwoCOutflowProblem));
+NEW_TYPE_TAG(OnePTwoCOutflowCCProblem, INHERITS_FROM(CCTpfaModel, OnePTwoCOutflowProblem));
+#else
+NEW_TYPE_TAG(OnePTwoCTestProblem, INHERITS_FROM(OnePTwoC));
+NEW_TYPE_TAG(OnePTwoCTestBoxProblem, INHERITS_FROM(BoxModel, OnePTwoCTestProblem));
+NEW_TYPE_TAG(OnePTwoCTestCCProblem, INHERITS_FROM(CCTpfaModel, OnePTwoCTestProblem));
+NEW_TYPE_TAG(OnePTwoCTestCCMpfaProblem, INHERITS_FROM(CCMpfaModel, OnePTwoCTestProblem));
+#endif
+
+// Set the grid type
+#if HAVE_UG
+SET_TYPE_PROP(OnePTwoCTestProblem, Grid, Dune::UGGrid<2>);
+#else
+SET_TYPE_PROP(OnePTwoCTestProblem, Grid, Dune::YaspGrid<2>);
+#endif
+
+// Set the problem property
+SET_TYPE_PROP(OnePTwoCTestProblem, Problem, OnePTwoCTestProblem<TypeTag>);
+
+// Set fluid configuration
+SET_TYPE_PROP(OnePTwoCTestProblem,
+              FluidSystem,
+              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), false>);
+
+// Set the spatial parameters
+SET_TYPE_PROP(OnePTwoCTestProblem, SpatialParams, OnePTwoCTestSpatialParams<TypeTag>);
+
+// Define whether mole(true) or mass (false) fractions are used
+SET_BOOL_PROP(OnePTwoCTestProblem, UseMoles, true);
+
+// Enable velocity output
+SET_BOOL_PROP(OnePTwoCTestProblem, VtkAddVelocity, true);
+
+// Disable gravity
+SET_BOOL_PROP(OnePTwoCTestProblem, ProblemEnableGravity, false);
+}
+
+
+/*!
+ * \ingroup OnePTwoCModel
+ * \ingroup ImplicitTestProblems
+ *
+ * \brief Definition of a problem, for the 1p2c problem:
+ * Nitrogen is dissolved in the water phase and
+ * is transported with the water flow from the left side to the right.
+ *
+ * The model domain is 1 m times 1 m with a discretization length of 0.05 m
+ * and homogeneous soil properties (\f$ \mathrm{K=10e-10, \Phi=0.4, \tau=0.28}\f$).
+ * Initially the domain is filled with pure water.
+ *
+ * At the left side, a Dirichlet condition defines a nitrogen mole fraction
+ * of 0.3 mol/mol.
+ * The water phase flows from the left side to the right due to the applied pressure
+ * gradient of 1e5 Pa/m. The nitrogen is transported with the water flow
+ * and leaves the domain at the right boundary
+ * where again Dirichlet boundary conditions are applied. Here, the nitrogen mole
+ * fraction is set to 0.0 mol/mol.
+ *
+ * The model is able to use either mole or mass fractions. The property useMoles can be set to either true or false in the
+ * problem file. Make sure that the according units are used in the problem setup. The default setting for useMoles is true.
+ *
+ * This problem uses the \ref OnePTwoCModel model.
+ *
+ * To run the simulation execute the following line in shell:
+ * <tt>./test_box1p2c -parameterFile ./test_box1p2c.input</tt> or
+ * <tt>./test_cc1p2c -parameterFile ./test_cc1p2c.input</tt>
+ */
+template <class TypeTag>
+class OnePTwoCTestProblem : public ImplicitPorousMediaProblem<TypeTag>
+{
+    using ParentType = ImplicitPorousMediaProblem<TypeTag>;
+
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+    using TimeManager = typename GET_PROP_TYPE(TypeTag, TimeManager);
+    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+
+    // copy some indices for convenience
+    enum
+    {
+        // indices of the primary variables
+        pressureIdx = Indices::pressureIdx,
+        massOrMoleFracIdx = Indices::massOrMoleFracIdx,
+
+        // indices for the non-isothermal case
+#if NONISOTHERMAL
+        temperatureIdx = Indices::temperatureIdx,
+        energyEqIdx = Indices::energyEqIdx,
+#endif
+
+        // indices of the equations
+        conti0EqIdx = Indices::conti0EqIdx,
+        transportEqIdx = Indices::transportEqIdx
+    };
+
+    //! property that defines whether mole or mass fractions are used
+    static const bool useMoles = GET_PROP_VALUE(TypeTag, UseMoles);
+
+    static const int dimWorld = GridView::dimensionworld;
+    using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
+
+public:
+    OnePTwoCTestProblem(TimeManager &timeManager, const GridView &gridView)
+        : ParentType(timeManager, gridView)
+    {
+        //initialize fluid system
+        FluidSystem::init();
+
+        name_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::string, Problem, Name);
+
+        // stating in the console whether mole or mass fractions are used
+        if(useMoles)
+            std::cout<<"problem uses mole fractions"<<std::endl;
+        else
+            std::cout<<"problem uses mass fractions"<<std::endl;
+    }
+
+    /*!
+     * \name Problem parameters
+     */
+    // \{
+
+    /*!
+     * \brief The problem name.
+     *
+     * This is used as a prefix for files generated by the simulation.
+     */
+    const std::string& name() const
+    {
+        return name_;
+    }
+
+#if !NONISOTHERMAL
+    /*!
+     * \brief Returns the temperature within the domain [K].
+     *
+     * This problem assumes a temperature of 20 degrees Celsius.
+     */
+    Scalar temperature() const
+    { return 273.15 + 20; } // in [K]
+
+#endif
+
+    // \}
+
+    /*!
+     * \name Boundary conditions
+     */
+    // \{
+
+    /*!
+     * \brief Specifies which kind of boundary condition should be
+     *        used for which equation on a given boundary segment.
+     *
+     * \param globalPos The position for which the bc type should be evaluated
+     */
+    BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
+    {
+        BoundaryTypes values;
+
+        if(globalPos[0] < eps_ || globalPos[0] > this->bBoxMax()[0] - eps_)
+            values.setAllDirichlet();
+        else
+            values.setAllNeumann();
+
+        return values;
+    }
+
+    /*!
+     * \brief Evaluate the boundary conditions for a dirichlet
+     *        boundary segment.
+     *
+     * \param globalPos The position for which the bc type should be evaluated
+     */
+    PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
+    {
+        PrimaryVariables values = initial_(globalPos);
+
+        // condition for the N2 molefraction at left boundary
+        if (globalPos[0] < eps_)
+        {
+            values[massOrMoleFracIdx] = 2.0e-5;
+#if NONISOTHERMAL
+            values[temperatureIdx] = 300.;
+#endif
+        }
+
+        return values;
+    }
+
+    /*!
+     * \brief Evaluate the boundary conditions for a Neumann
+     *        boundary segment.
+     *
+     * For this method, the \a priVars parameter stores the mass flux
+     * in normal direction of each component. Negative values mean
+     * influx.
+     *
+     * The units must be according to either using mole or mass fractions. (mole/(m^2*s) or kg/(m^2*s))
+     */
+    PrimaryVariables neumannAtPos(const GlobalPosition& globalPos) const
+    { return PrimaryVariables(0.0); }
+
+    // \}
+
+    /*!
+     * \name Volume terms
+     */
+    // \{
+
+    /*!
+     * \brief Evaluate the source term for all phases within a given
+     *        sub-control-volume.
+     *
+     * For this method, the \a priVars parameter stores the rate mass
+     * of a component is generated or annihilate per volume
+     * unit. Positive values mean that mass is created, negative ones
+     * mean that it vanishes.
+     *
+     * The units must be according to either using mole or mass fractions. (mole/(m^3*s) or kg/(m^3*s))
+     */
+    PrimaryVariables sourceAtPos(const GlobalPosition &globalPos) const
+    { return PrimaryVariables(0.0); }
+
+    /*!
+     * \brief Evaluate the initial value for a control volume.
+     *
+     * \param globalPos The position for which the initial condition should be evaluated
+     *
+     * For this method, the \a values parameter stores primary
+     * variables.
+     */
+    PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const
+    { return initial_(globalPos); }
+
+    // \}
+
+private:
+    // the internal method for the initial condition
+    PrimaryVariables initial_(const GlobalPosition &globalPos) const
+    {
+        PrimaryVariables priVars;
+        priVars[pressureIdx] = 2e5 - 1e5*globalPos[0]; // initial condition for the pressure
+        priVars[massOrMoleFracIdx] = 0.0;  // initial condition for the N2 molefraction
+#if NONISOTHERMAL
+        priVars[temperatureIdx] = 290.;
+#endif
+        return priVars;
+    }
+
+    static constexpr Scalar eps_ = 1e-6;
+    std::string name_;
+};
+
+} //end namespace Dumux
+
+#endif
diff --git a/test/porousmediumflow/1pnc/implicit/1p2ctestspatialparams.hh b/test/porousmediumflow/1pnc/implicit/1p2ctestspatialparams.hh
new file mode 100644
index 0000000000000000000000000000000000000000..a99c8f314401ad79bd4377653f2752e40b0c70e7
--- /dev/null
+++ b/test/porousmediumflow/1pnc/implicit/1p2ctestspatialparams.hh
@@ -0,0 +1,146 @@
+// -*- 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
+ *
+ * \brief Definition of the spatial parameters for the 1p2c
+ *        outlfow problem.
+ */
+#ifndef DUMUX_1P2C_TEST_SPATIAL_PARAMS_HH
+#define DUMUX_1P2C_TEST_SPATIAL_PARAMS_HH
+
+#include <dumux/material/spatialparams/implicit1p.hh>
+
+namespace Dumux
+{
+
+/*!
+ * \ingroup OnePTwoCModel
+ * \ingroup ImplicitTestProblems
+ *
+ * \brief Definition of the spatial parameters for the 1p2c
+ *        outflow problem.
+ */
+template<class TypeTag>
+class OnePTwoCTestSpatialParams : public ImplicitSpatialParamsOneP<TypeTag>
+{
+    using ParentType = ImplicitSpatialParamsOneP<TypeTag>;
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Element = typename GridView::template Codim<0>::Entity;
+    using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
+    using ElementSolutionVector = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
+
+    static const int dimWorld = GridView::dimensionworld;
+    using GlobalPosition = typename Dune::FieldVector<Scalar, dimWorld>;
+
+public:
+    // export permeability type
+    using PermeabilityType = Scalar;
+
+    OnePTwoCTestSpatialParams(const Problem& problem, const GridView &gridView)
+        : ParentType(problem, gridView)
+    {
+        permeability_ = 1e-10;
+        porosity_ = 0.4;
+
+        // heat conductivity of granite
+        lambdaSolid_ = 2.8;
+    }
+
+    /*!
+     * \brief Define the intrinsic permeability \f$\mathrm{[m^2]}\f$.
+     *
+     * \param globalPos The global position
+     */
+    PermeabilityType permeabilityAtPos(const GlobalPosition& globalPos) const
+    { return permeability_; }
+
+    /*!
+     * \brief Define the porosity \f$\mathrm{[-]}\f$.
+     *
+     * \param globalPos The global position
+     */
+    Scalar porosityAtPos(const GlobalPosition& globalPos) const
+    { return porosity_; }
+
+    /*!
+     * \brief Define the dispersivity.
+     *
+     * \param element The finite element
+     * \param scv The sub-control volume
+     * \param elemSol The solution for all dofs of the element
+     */
+    Scalar dispersivity(const Element &element,
+                        const SubControlVolume& scv,
+                        const ElementSolutionVector& elemSol) const
+    { return 0; }
+
+    /*!
+     * \brief Returns the heat capacity \f$[J / (kg K)]\f$ of the rock matrix.
+     *
+     * This is only required for non-isothermal models.
+     *
+     * \param element The element
+     * \param scv The sub control volume
+     * \param elemSol The element solution vector
+     */
+    Scalar solidHeatCapacity(const Element &element,
+                             const SubControlVolume& scv,
+                             const ElementSolutionVector& elemSol) const
+    { return 790; /*specific heat capacity of granite [J / (kg K)]*/ }
+
+    /*!
+     * \brief Returns the mass density \f$[kg / m^3]\f$ of the rock matrix.
+     *
+     * This is only required for non-isothermal models.
+     *
+     * \param element The element
+     * \param scv The sub control volume
+     * \param elemSol The element solution vector
+     */
+    Scalar solidDensity(const Element &element,
+                        const SubControlVolume& scv,
+                        const ElementSolutionVector& elemSol) const
+    { return 2700; /*density of granite [kg/m^3]*/ }
+
+    /*!
+     * \brief Returns the thermal conductivity \f$\mathrm{[W/(m K)]}\f$ of the porous material.
+     *
+     * \param element The element
+     * \param scv The sub control volume
+     * \param elemSol The element solution vector
+     */
+    Scalar solidThermalConductivity(const Element &element,
+                                    const SubControlVolume& scv,
+                                    const ElementSolutionVector& elemSol) const
+    { return lambdaSolid_; }
+
+
+
+private:
+    Scalar permeability_;
+    Scalar porosity_;
+    Scalar lambdaSolid_;
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/test/porousmediumflow/1pnc/implicit/CMakeLists.txt b/test/porousmediumflow/1pnc/implicit/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0bd7e4cdb55bd39123948786ad6fc318ad71185a
--- /dev/null
+++ b/test/porousmediumflow/1pnc/implicit/CMakeLists.txt
@@ -0,0 +1,39 @@
+add_input_file_links()
+
+# isothermal tests
+add_executable(test test_box1p2c.cc)
+
+# add_executable(test_cc1pnc test_cc1pnc.cc)
+
+
+
+
+# add_dumux_test(test_box1p2c test_box1p2c test_box1p2c.cc
+#                python ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
+#                  --script fuzzy
+#                  --files ${CMAKE_SOURCE_DIR}/test/references/outflowbox-reference.vtu
+#                          ${CMAKE_CURRENT_BINARY_DIR}/outflowbox-00009.vtu
+#                  --command "${CMAKE_CURRENT_BINARY_DIR}/test_box1p2c"
+#                  --zeroThreshold {"velocity":5e-16})
+#
+# add_dumux_test(test_cc1p2c test_cc1p2c test_cc1p2c.cc
+#                python ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py
+#                  --script fuzzy
+#                  --files ${CMAKE_SOURCE_DIR}/test/references/1p2ctestcc-reference.vtu
+#                          ${CMAKE_CURRENT_BINARY_DIR}/1p2ctestcc-00009.vtu
+#                  --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc1p2c"
+#                  --zeroThreshold {"velocity":5e-16})
+#
+# #install sources
+# install(FILES
+#
+# 1p2cnispatialparams.hh
+# 1p2coutflowproblem.hh
+# 1p2coutflowspatialparams.hh
+# test_box1p2c.cc
+# test_box1p2cniconduction.cc
+# test_box1p2cniconvection.cc
+# test_cc1p2c.cc
+# test_cc1p2cniconduction.cc
+# test_cc1p2cniconvection.cc
+# DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/test/implicit/1pnc)
diff --git a/test/porousmediumflow/1pnc/implicit/test_box1p2c.cc b/test/porousmediumflow/1pnc/implicit/test_box1p2c.cc
new file mode 100644
index 0000000000000000000000000000000000000000..18497653cfa917adeb2e25c40e158a84593b65fb
--- /dev/null
+++ b/test/porousmediumflow/1pnc/implicit/test_box1p2c.cc
@@ -0,0 +1,57 @@
+// -*- 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
+ *
+ * \brief test for the 1p2c box model
+ */
+#include <config.h>
+#include "1p2ctestproblem.hh"
+#include <dumux/common/start.hh>
+
+/*!
+ * \brief Provides an interface for customizing error messages associated with
+ *        reading in parameters.
+ *
+ * \param progName  The name of the program, that was tried to be started.
+ * \param errorMsg  The error message that was issued by the start function.
+ *                  Comprises the thing that went wrong and a general help message.
+ */
+void usage(const char *progName, const std::string &errorMsg)
+{
+    if (errorMsg.size() > 0) {
+        std::string errorMessageOut = "\nUsage: ";
+                    errorMessageOut += progName;
+                    errorMessageOut += " [options]\n";
+                    errorMessageOut += errorMsg;
+                    errorMessageOut += "\n\nThe list of mandatory options for this program is:\n"
+                                        "\t-TimeManager.TEnd      End of the simulation [s] \n"
+                                        "\t-TimeManager.DtInitial Initial timestep size [s] \n"
+                                        "\t-Grid.File             Name of the file containing the grid \n"
+                                        "\t                       definition in DGF format\n";
+        std::cout << errorMessageOut
+                  << "\n";
+    }
+}
+
+int main(int argc, char** argv)
+{
+    typedef TTAG(OnePTwoCTestBoxProblem) ProblemTypeTag;
+    return Dumux::start<ProblemTypeTag>(argc, argv, usage);
+}
diff --git a/test/porousmediumflow/1pnc/implicit/test_box1p2c.input b/test/porousmediumflow/1pnc/implicit/test_box1p2c.input
new file mode 100644
index 0000000000000000000000000000000000000000..85a6863ffc9d55dd83165058342f7f38da8dc4a7
--- /dev/null
+++ b/test/porousmediumflow/1pnc/implicit/test_box1p2c.input
@@ -0,0 +1,15 @@
+[TimeManager]
+DtInitial = 1 # [s]
+TEnd = 100 # [s]
+
+[Grid]
+LowerLeft = 0 0
+UpperRight = 1 1
+Cells = 20 2
+
+[Problem]
+Name = outflowbox # name passed to the output routines
+EnableGravity = 0 # disable gravity
+
+[Vtk]
+AddVelocity = 1 # enable velocity output
diff --git a/test/porousmediumflow/CMakeLists.txt b/test/porousmediumflow/CMakeLists.txt
index 83c6b1991ced243d44a8272d142a0ed16d6f3feb..9d36688958b1627f7d5a280198831ab5a8a63a39 100644
--- a/test/porousmediumflow/CMakeLists.txt
+++ b/test/porousmediumflow/CMakeLists.txt
@@ -1,5 +1,6 @@
 add_subdirectory("1p")
 add_subdirectory("1p2c")
+add_subdirectory("1pnc")
 add_subdirectory("2p")
 add_subdirectory("2p1c")
 add_subdirectory("2p2c")