diff --git a/dumux/implicit/box/boxproperties.hh b/dumux/implicit/box/boxproperties.hh
index f0d72d6be19417e72f9b3727c75026ef39465e8d..3bd1812dd8cb87b9ffa32a0694ca32f7bfabdbd8 100644
--- a/dumux/implicit/box/boxproperties.hh
+++ b/dumux/implicit/box/boxproperties.hh
@@ -19,11 +19,7 @@
 #ifndef DUMUX_BOX_PROPERTIES_HH
 #define DUMUX_BOX_PROPERTIES_HH
 
-#include <dumux/common/propertysystem.hh>
-
-#include <dumux/common/basicproperties.hh>
-#include <dumux/linear/linearsolverproperties.hh>
-#include <dumux/nonlinear/newtonmethod.hh>
+#include <dumux/implicit/common/implicitproperties.hh>
 
 /*!
  * \ingroup Properties
@@ -48,94 +44,15 @@ namespace Properties
 //////////////////////////////////////////////////////////////////
 
 //! The type tag for models based on the box-scheme
-NEW_TYPE_TAG(BoxModel, INHERITS_FROM(NewtonMethod, LinearSolverTypeTag, ImplicitModel));
+NEW_TYPE_TAG(BoxModel, INHERITS_FROM(ImplicitBase));
 
 //////////////////////////////////////////////////////////////////
 // Property tags
 //////////////////////////////////////////////////////////////////
 
-NEW_PROP_TAG(Grid);     //!< The type of the DUNE grid
-NEW_PROP_TAG(GridView); //!< The type of the grid view
-
-NEW_PROP_TAG(FVElementGeometry); //! The type of the finite-volume geometry in the box scheme
 NEW_PROP_TAG(EvalGradientsAtSCVCenter); //! Evaluate shape function gradients additionally at the sub-control volume center
 
-NEW_PROP_TAG(Problem); //!< The type of the problem
-NEW_PROP_TAG(BaseModel); //!< The type of the base class of the model
-NEW_PROP_TAG(Model); //!< The type of the model
-NEW_PROP_TAG(NumEq); //!< Number of equations in the system of PDEs
-NEW_PROP_TAG(BaseLocalResidual); //!< The type of the base class of the local residual
-NEW_PROP_TAG(LocalResidual); //!< The type of the local residual function
-NEW_PROP_TAG(LocalJacobian); //!< The type of the local jacobian operator
-
-NEW_PROP_TAG(JacobianAssembler); //!< Assembles the global jacobian matrix
-NEW_PROP_TAG(JacobianMatrix); //!< Type of the global jacobian matrix
-NEW_PROP_TAG(BoundaryTypes); //!< Stores the boundary types of a single degree of freedom
-NEW_PROP_TAG(ElementBoundaryTypes); //!< Stores the boundary types on an element
-
-NEW_PROP_TAG(PrimaryVariables); //!< A vector of primary variables within a sub-control volume
-NEW_PROP_TAG(SolutionVector); //!< Vector containing all primary variable vector of the grid
-NEW_PROP_TAG(ElementSolutionVector); //!< A vector of primary variables within a sub-control volume
-
-NEW_PROP_TAG(VolumeVariables);  //!< The secondary variables within a sub-control volume
-NEW_PROP_TAG(ElementVolumeVariables); //!< The secondary variables of all sub-control volumes in an element
-NEW_PROP_TAG(FluxVariables); //!< Data required to calculate a flux over a face
-NEW_PROP_TAG(BoundaryVariables); //!< Data required to calculate fluxes over boundary faces (outflow)
-
-// high level simulation control
-NEW_PROP_TAG(TimeManager);  //!< Manages the simulation time
-NEW_PROP_TAG(NewtonMethod);     //!< The type of the newton method
-NEW_PROP_TAG(NewtonController); //!< The type of the newton controller
-
-//! Specify whether the jacobian matrix of the last iteration of a
-//! time step should be re-used as the jacobian of the first iteration
-//! of the next time step.
-NEW_PROP_TAG(ImplicitEnableJacobianRecycling);
-
-//! Specify whether the jacobian matrix should be only reassembled for
-//! elements where at least one vertex is above the specified
-//! tolerance
-NEW_PROP_TAG(ImplicitEnablePartialReassemble);
-/*!
- * \brief Specify the maximum size of a time integration [s].
- *
- * The default is to not limit the step size.
- */
-NEW_PROP_TAG(TimeManagerMaxTimeStepSize);
-
-/*!
- * \brief Specify which kind of method should be used to numerically
- * calculate the partial derivatives of the residual.
- *
- * -1 means backward differences, 0 means central differences, 1 means
- * forward differences. By default we use central differences.
- */
-NEW_PROP_TAG(ImplicitNumericDifferenceMethod);
-
-/*!
- * \brief Specify whether to use the already calculated solutions as
- *        starting values of the volume variables.
- *
- * This only makes sense if the calculation of the volume variables is
- * very expensive (e.g. for non-linear fugacity functions where the
- * solver converges faster).
- */
-NEW_PROP_TAG(ImplicitEnableHints);
-
-//! indicates whether two-point flux should be used
-NEW_PROP_TAG(ImplicitUseTwoPointFlux); 
-
-// mappers from local to global indices
-
-//! mapper for vertices
-NEW_PROP_TAG(VertexMapper);
-//! mapper for elements
-NEW_PROP_TAG(ElementMapper);
-//! mapper for degrees of freedom
-NEW_PROP_TAG(DofMapper);
-
-//! indicate whether discretization is box or not
-NEW_PROP_TAG(ImplicitIsBox);
+NEW_PROP_TAG(ImplicitUseTwoPointFlux); //! indicates whether two-point flux should be used
 
 }
 }
diff --git a/dumux/implicit/box/boxpropertydefaults.hh b/dumux/implicit/box/boxpropertydefaults.hh
index e2c01bf226b95bbf55c2321c627f6481bcf1b9fb..70d71b80ec4f5a0ad954a3aa007287215c803db0 100644
--- a/dumux/implicit/box/boxpropertydefaults.hh
+++ b/dumux/implicit/box/boxpropertydefaults.hh
@@ -27,9 +27,7 @@
 #ifndef DUMUX_BOX_PROPERTY_DEFAULTS_HH
 #define DUMUX_BOX_PROPERTY_DEFAULTS_HH
 
-#include <dumux/nonlinear/newtonmethod.hh>
-#include <dumux/nonlinear/newtoncontroller.hh>
-
+#include <dumux/implicit/common/implicitpropertydefaults.hh>
 #include "boxassembler.hh"
 #include "boxmodel.hh"
 #include "boxfvelementgeometry.hh"
@@ -38,14 +36,8 @@
 #include "boxlocalresidual.hh"
 #include "boxelementvolumevariables.hh"
 #include "boxvolumevariables.hh"
-
-#include <dumux/common/boundarytypes.hh>
-#include <dumux/common/timemanager.hh>
-
 #include "boxproperties.hh"
 
-#include <limits>
-
 namespace Dumux {
 
 // forward declaration
@@ -53,51 +45,17 @@ template<class TypeTag>
 class BoxModel;
 
 namespace Properties {
-//////////////////////////////////////////////////////////////////
-// Some defaults for very fundamental properties
-//////////////////////////////////////////////////////////////////
-
-//! Set the default type for the time manager
-SET_TYPE_PROP(BoxModel, TimeManager, Dumux::TimeManager<TypeTag>);
-
-//////////////////////////////////////////////////////////////////
-// Properties
-//////////////////////////////////////////////////////////////////
-
-//! Use the leaf grid view if not defined otherwise
-SET_TYPE_PROP(BoxModel,
-              GridView,
-              typename GET_PROP_TYPE(TypeTag, Grid)::LeafGridView);
-
 //! Set the default for the FVElementGeometry
 SET_TYPE_PROP(BoxModel, FVElementGeometry, Dumux::BoxFVElementGeometry<TypeTag>);
 
 //! Disable evaluation of shape function gradients at the sub-control volume center by default
 // The shape function gradients at the sub-control volume center are currently only
-// needed for the stokes and the linear elastic models
+// needed for the Stokes and the linear elastic models
 SET_BOOL_PROP(BoxModel, EvalGradientsAtSCVCenter, false);
 
 //! Set the default for the ElementBoundaryTypes
 SET_TYPE_PROP(BoxModel, ElementBoundaryTypes, Dumux::BoxElementBoundaryTypes<TypeTag>);
 
-//! use the plain newton method for the box scheme by default
-SET_TYPE_PROP(BoxModel, NewtonMethod, Dumux::NewtonMethod<TypeTag>);
-
-//! use the plain newton controller for the box scheme by default
-SET_TYPE_PROP(BoxModel, NewtonController, Dumux::NewtonController<TypeTag>);
-
-//! Mapper for the grid view's vertices.
-SET_TYPE_PROP(BoxModel,
-              VertexMapper,
-              Dune::MultipleCodimMultipleGeomTypeMapper<typename GET_PROP_TYPE(TypeTag, GridView),
-                                                        Dune::MCMGVertexLayout>);
-
-//! Mapper for the grid view's elements.
-SET_TYPE_PROP(BoxModel,
-              ElementMapper,
-              Dune::MultipleCodimMultipleGeomTypeMapper<typename GET_PROP_TYPE(TypeTag, GridView),
-                                                        Dune::MCMGElementLayout>);
-
 //! Mapper for the degrees of freedoms.
 SET_TYPE_PROP(BoxModel, DofMapper, typename GET_PROP_TYPE(TypeTag, VertexMapper));
 
@@ -110,97 +68,15 @@ SET_TYPE_PROP(BoxModel, BaseModel, Dumux::BoxModel<TypeTag>);
 //! The local jacobian operator for the box scheme
 SET_TYPE_PROP(BoxModel, LocalJacobian, Dumux::BoxLocalJacobian<TypeTag>);
 
-/*!
- * \brief The type of a solution for the whole grid at a fixed time.
- */
-SET_TYPE_PROP(BoxModel,
-              SolutionVector,
-              Dune::BlockVector<typename GET_PROP_TYPE(TypeTag, PrimaryVariables)>);
-
-/*!
- * \brief The type of a solution for a whole element.
- */
-SET_TYPE_PROP(BoxModel,
-              ElementSolutionVector,
-              Dune::BlockVector<typename GET_PROP_TYPE(TypeTag, PrimaryVariables)>);
-
-/*!
- * \brief A vector of primary variables.
- */
-SET_TYPE_PROP(BoxModel,
-              PrimaryVariables,
-              Dune::FieldVector<typename GET_PROP_TYPE(TypeTag, Scalar),
-                                GET_PROP_VALUE(TypeTag, NumEq)>);
-
-/*!
- * \brief The volume variable class.
- *
- * This should almost certainly be overloaded by the model...
- */
-SET_TYPE_PROP(BoxModel, VolumeVariables, Dumux::BoxVolumeVariables<TypeTag>);
-
-/*!
- * \brief An array of secondary variable containers.
- */
+//! An array of secondary variable containers
 SET_TYPE_PROP(BoxModel, ElementVolumeVariables, Dumux::BoxElementVolumeVariables<TypeTag>);
 
-/*!
- * \brief Boundary types at a single degree of freedom.
- */
-SET_TYPE_PROP(BoxModel,
-              BoundaryTypes,
-              Dumux::BoundaryTypes<GET_PROP_VALUE(TypeTag, NumEq)>);
-
-/*!
- * \brief Assembler for the global jacobian matrix.
- */
+//! Assembler for the global jacobian matrix
 SET_TYPE_PROP(BoxModel, JacobianAssembler, Dumux::BoxAssembler<TypeTag>);
 
-//! use an unlimited time step size by default
-SET_SCALAR_PROP(BoxModel, TimeManagerMaxTimeStepSize, 1e100);
-
-//! use forward differences to calculate the jacobian by default
-SET_INT_PROP(BoxModel, ImplicitNumericDifferenceMethod, +1);
-
-//! do not use hints by default
-SET_BOOL_PROP(BoxModel, ImplicitEnableHints, false);
-
-// disable jacobian matrix recycling by default
-SET_BOOL_PROP(BoxModel, ImplicitEnableJacobianRecycling, false);
-
-// disable partial reassembling by default
-SET_BOOL_PROP(BoxModel, ImplicitEnablePartialReassemble, false);
-
-// disable two-point-flux by default
+//! disable two-point-flux by default
 SET_BOOL_PROP(BoxModel, ImplicitUseTwoPointFlux, false);
 
-//! Set the type of a global jacobian matrix from the solution types
-SET_PROP(BoxModel, JacobianMatrix)
-{
-private:
-    typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
-    enum { numEq = GET_PROP_VALUE(TypeTag, NumEq) };
-    typedef typename Dune::FieldMatrix<Scalar, numEq, numEq> MatrixBlock;
-public:
-    typedef typename Dune::BCRSMatrix<MatrixBlock> type;
-};
-
-// use the stabilized BiCG solver preconditioned by the ILU-0 by default
-SET_TYPE_PROP(BoxModel, LinearSolver, Dumux::BoxBiCGStabILU0Solver<TypeTag> );
-
-// if the deflection of the newton method is large, we do not
-// need to solve the linear approximation accurately. Assuming
-// that the initial value for the delta vector u is quite
-// close to the final value, a reduction of 6 orders of
-// magnitude in the defect should be sufficient...
-SET_SCALAR_PROP(BoxModel, LinearSolverResidualReduction, 1e-6);
-
-//! set the default number of maximum iterations for the linear solver
-SET_INT_PROP(BoxModel, LinearSolverMaxIterations, 250);
-
-//! set number of equations of the mathematical model as default
-SET_INT_PROP(BoxModel, LinearSolverBlockSize, GET_PROP_VALUE(TypeTag, NumEq));
-
 //! indicate that this is a box discretization
 SET_BOOL_PROP(BoxModel, ImplicitIsBox, true);
 
diff --git a/dumux/implicit/cellcentered/ccproperties.hh b/dumux/implicit/cellcentered/ccproperties.hh
index 061ad3551e54bfada5f08c968ed9f9628fa55efe..b53a119281c29db1bb8ab15df3cf81ef02ad84ed 100644
--- a/dumux/implicit/cellcentered/ccproperties.hh
+++ b/dumux/implicit/cellcentered/ccproperties.hh
@@ -1,11 +1,7 @@
 // -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 // vi: set et ts=4 sw=4 sts=4:
 /*****************************************************************************
- *   Copyright (C) 2009 by Andreas Lauser                                    *
- *   Copyright (C) 2008 by Bernd Flemisch                                    *
- *   Institute for Modelling Hydraulic and Environmental Systems             *
- *   University of Stuttgart, Germany                                        *
- *   email: <givenname>.<name>@iws.uni-stuttgart.de                          *
+ *   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    *
@@ -14,7 +10,7 @@
  *                                                                           *
  *   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           *
+ *   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       *
@@ -23,11 +19,7 @@
 #ifndef DUMUX_CC_PROPERTIES_HH
 #define DUMUX_CC_PROPERTIES_HH
 
-#include <dumux/common/propertysystem.hh>
-
-#include <dumux/common/basicproperties.hh>
-#include <dumux/linear/linearsolverproperties.hh>
-#include <dumux/nonlinear/newtonmethod.hh>
+#include <dumux/implicit/common/implicitproperties.hh>
 
 /*!
  * \ingroup Properties
@@ -52,92 +44,7 @@ namespace Properties
 //////////////////////////////////////////////////////////////////
 
 //! The type tag for models based on the box-scheme
-NEW_TYPE_TAG(CCModel, INHERITS_FROM(NewtonMethod, LinearSolverTypeTag, ImplicitModel));
-
-//////////////////////////////////////////////////////////////////
-// Property tags
-//////////////////////////////////////////////////////////////////
-
-NEW_PROP_TAG(Grid);     //!< The type of the DUNE grid
-NEW_PROP_TAG(GridView); //!< The type of the grid view
-
-NEW_PROP_TAG(FVElementGeometry); //! The type of the finite-volume geometry in the box scheme
-
-NEW_PROP_TAG(Problem); //!< The type of the problem
-NEW_PROP_TAG(BaseModel); //!< The type of the base class of the model
-NEW_PROP_TAG(Model); //!< The type of the model
-NEW_PROP_TAG(NumEq); //!< Number of equations in the system of PDEs
-NEW_PROP_TAG(BaseLocalResidual); //!< The type of the base class of the local residual
-NEW_PROP_TAG(LocalResidual); //!< The type of the local residual function
-NEW_PROP_TAG(LocalJacobian); //!< The type of the local jacobian operator
-
-NEW_PROP_TAG(JacobianAssembler); //!< Assembles the global jacobian matrix
-NEW_PROP_TAG(JacobianMatrix); //!< Type of the global jacobian matrix
-NEW_PROP_TAG(BoundaryTypes); //!< Stores the boundary types of a single degree of freedom
-NEW_PROP_TAG(ElementBoundaryTypes); //!< Stores the boundary types on an element
-
-NEW_PROP_TAG(PrimaryVariables); //!< A vector of primary variables within a sub-control volume
-NEW_PROP_TAG(SolutionVector); //!< Vector containing all primary variable vector of the grid
-NEW_PROP_TAG(ElementSolutionVector); //!< A vector of primary variables within a sub-control volume
-
-NEW_PROP_TAG(VolumeVariables);  //!< The secondary variables within a sub-control volume
-NEW_PROP_TAG(ElementVolumeVariables); //!< The secondary variables of all sub-control volumes in an element
-NEW_PROP_TAG(FluxVariables); //!< Data required to calculate a flux over a face
-NEW_PROP_TAG(BoundaryVariables); //!< Data required to calculate fluxes over boundary faces (outflow)
-
-// high level simulation control
-NEW_PROP_TAG(TimeManager);  //!< Manages the simulation time
-NEW_PROP_TAG(NewtonMethod);     //!< The type of the newton method
-NEW_PROP_TAG(NewtonController); //!< The type of the newton controller
-
-//! Specify whether the jacobian matrix of the last iteration of a
-//! time step should be re-used as the jacobian of the first iteration
-//! of the next time step.
-NEW_PROP_TAG(ImplicitEnableJacobianRecycling);
-
-//! Specify whether the jacobian matrix should be only reassembled for
-//! elements where at least one vertex is above the specified
-//! tolerance
-NEW_PROP_TAG(ImplicitEnablePartialReassemble);
-
-/*!
- * \brief Specify the maximum size of a time integration [s].
- *
- * The default is to not limit the step size.
- */
-NEW_PROP_TAG(TimeManagerMaxTimeStepSize);
-
-/*!
- * \brief Specify which kind of method should be used to numerically
- * calculate the partial derivatives of the residual.
- *
- * -1 means backward differences, 0 means central differences, 1 means
- * forward differences. By default we use central differences.
- */
-NEW_PROP_TAG(ImplicitNumericDifferenceMethod);
-
-/*!
- * \brief Specify whether to use the already calculated solutions as
- *        starting values of the volume variables.
- *
- * This only makes sense if the calculation of the volume variables is
- * very expensive (e.g. for non-linear fugacity functions where the
- * solver converges faster).
- */
-NEW_PROP_TAG(ImplicitEnableHints);
-
-// mappers from local to global indices
-
-//! mapper for vertices
-NEW_PROP_TAG(VertexMapper);
-//! mapper for elements
-NEW_PROP_TAG(ElementMapper);
-//! mapper for degrees of freedom
-NEW_PROP_TAG(DofMapper);
-
-//! indicate whether discretization is box or not
-NEW_PROP_TAG(ImplicitIsBox);
-
+NEW_TYPE_TAG(CCModel, INHERITS_FROM(ImplicitBase));
 }
 }
 
diff --git a/dumux/implicit/cellcentered/ccpropertydefaults.hh b/dumux/implicit/cellcentered/ccpropertydefaults.hh
index 8ede91add483cbe1eaad2d5e15b170b314584e7d..9e930ec6d0185f47b8dd2c84d74a97ff3073ae4f 100644
--- a/dumux/implicit/cellcentered/ccpropertydefaults.hh
+++ b/dumux/implicit/cellcentered/ccpropertydefaults.hh
@@ -31,9 +31,7 @@
 #ifndef DUMUX_CC_PROPERTY_DEFAULTS_HH
 #define DUMUX_CC_PROPERTY_DEFAULTS_HH
 
-#include <dumux/nonlinear/newtonmethod.hh>
-#include <dumux/nonlinear/newtoncontroller.hh>
-
+#include <dumux/implicit/common/implicitpropertydefaults.hh>
 #include "ccassembler.hh"
 #include "ccmodel.hh"
 #include "ccfvelementgeometry.hh"
@@ -41,15 +39,8 @@
 #include "cclocaljacobian.hh"
 #include "cclocalresidual.hh"
 #include "ccelementvolumevariables.hh"
-#include <dumux/implicit/box/boxvolumevariables.hh>
-
-#include <dumux/common/boundarytypes.hh>
-#include <dumux/common/timemanager.hh>
-
 #include "ccproperties.hh"
 
-#include <limits>
-
 namespace Dumux {
 
 // forward declaration
@@ -57,46 +48,12 @@ template<class TypeTag>
 class CCModel;
 
 namespace Properties {
-//////////////////////////////////////////////////////////////////
-// Some defaults for very fundamental properties
-//////////////////////////////////////////////////////////////////
-
-//! Set the default type for the time manager
-SET_TYPE_PROP(CCModel, TimeManager, Dumux::TimeManager<TypeTag>);
-
-//////////////////////////////////////////////////////////////////
-// Properties
-//////////////////////////////////////////////////////////////////
-
-//! Use the leaf grid view if not defined otherwise
-SET_TYPE_PROP(CCModel,
-              GridView,
-              typename GET_PROP_TYPE(TypeTag, Grid)::LeafGridView);
-
 //! Set the default for the FVElementGeometry
 SET_TYPE_PROP(CCModel, FVElementGeometry, Dumux::CCFVElementGeometry<TypeTag>);
 
 //! Set the default for the ElementBoundaryTypes
 SET_TYPE_PROP(CCModel, ElementBoundaryTypes, Dumux::CCElementBoundaryTypes<TypeTag>);
 
-//! use the plain newton method for the box scheme by default
-SET_TYPE_PROP(CCModel, NewtonMethod, Dumux::NewtonMethod<TypeTag>);
-
-//! use the plain newton controller for the box scheme by default
-SET_TYPE_PROP(CCModel, NewtonController, Dumux::NewtonController<TypeTag>);
-
-//! Mapper for the grid view's vertices.
-SET_TYPE_PROP(CCModel,
-              VertexMapper,
-              Dune::MultipleCodimMultipleGeomTypeMapper<typename GET_PROP_TYPE(TypeTag, GridView),
-                                                        Dune::MCMGVertexLayout>);
-
-//! Mapper for the grid view's elements.
-SET_TYPE_PROP(CCModel,
-              ElementMapper,
-              Dune::MultipleCodimMultipleGeomTypeMapper<typename GET_PROP_TYPE(TypeTag, GridView),
-                                                        Dune::MCMGElementLayout>);
-
 //! Mapper for the degrees of freedoms.
 SET_TYPE_PROP(CCModel, DofMapper, typename GET_PROP_TYPE(TypeTag, ElementMapper));
 
@@ -109,102 +66,15 @@ SET_TYPE_PROP(CCModel, BaseModel, Dumux::CCModel<TypeTag>);
 //! The local jacobian operator for the box scheme
 SET_TYPE_PROP(CCModel, LocalJacobian, Dumux::CCLocalJacobian<TypeTag>);
 
-/*!
- * \brief The type of a solution for the whole grid at a fixed time.
- */
-SET_TYPE_PROP(CCModel,
-              SolutionVector,
-              Dune::BlockVector<typename GET_PROP_TYPE(TypeTag, PrimaryVariables)>);
-
-/*!
- * \brief The type of a solution for a whole element.
- */
-SET_TYPE_PROP(CCModel,
-              ElementSolutionVector,
-              Dune::BlockVector<typename GET_PROP_TYPE(TypeTag, PrimaryVariables)>);
-
-/*!
- * \brief A vector of primary variables.
- */
-SET_TYPE_PROP(CCModel,
-              PrimaryVariables,
-              Dune::FieldVector<typename GET_PROP_TYPE(TypeTag, Scalar),
-                                GET_PROP_VALUE(TypeTag, NumEq)>);
-
-/*!
- * \brief The volume variable class.
- *
- * This should almost certainly be overloaded by the model...
- */
-SET_TYPE_PROP(CCModel, VolumeVariables, Dumux::BoxVolumeVariables<TypeTag>);
-
-/*!
- * \brief An array of secondary variable containers.
- */
+//! An array of secondary variable containers
 SET_TYPE_PROP(CCModel, ElementVolumeVariables, Dumux::CCElementVolumeVariables<TypeTag>);
 
-/*!
- * \brief Boundary types at a single degree of freedom.
- */
-SET_TYPE_PROP(CCModel,
-              BoundaryTypes,
-              Dumux::BoundaryTypes<GET_PROP_VALUE(TypeTag, NumEq)>);
-
-/*!
- * \brief Assembler for the global jacobian matrix.
- */
+//! Assembler for the global jacobian matrix
 SET_TYPE_PROP(CCModel, JacobianAssembler, Dumux::CCAssembler<TypeTag>);
 
-//! use an unlimited time step size by default
-#if 0
-// requires GCC 4.6 and above to call the constexpr function of
-// numeric_limits
-SET_SCALAR_PROP(CCModel, TimeManagerMaxTimeStepSize, std::numeric_limits<Scalar>::infinity());
-#else
-SET_SCALAR_PROP(CCModel, TimeManagerMaxTimeStepSize, 1e100);
-#endif
-
-//! use forward differences to calculate the jacobian by default
-SET_INT_PROP(CCModel, ImplicitNumericDifferenceMethod, +1);
-
-//! do not use hints by default
-SET_BOOL_PROP(CCModel, ImplicitEnableHints, false);
-
-// disable jacobian matrix recycling by default
-SET_BOOL_PROP(CCModel, ImplicitEnableJacobianRecycling, false);
-
-// disable partial reassembling by default
-SET_BOOL_PROP(CCModel, ImplicitEnablePartialReassemble, false);
-
-//! Set the type of a global jacobian matrix from the solution types
-SET_PROP(CCModel, JacobianMatrix)
-{
-private:
-    typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
-    enum { numEq = GET_PROP_VALUE(TypeTag, NumEq) };
-    typedef typename Dune::FieldMatrix<Scalar, numEq, numEq> MatrixBlock;
-public:
-    typedef typename Dune::BCRSMatrix<MatrixBlock> type;
-};
-
-// use the stabilized BiCG solver preconditioned by the ILU-0 by default
-SET_TYPE_PROP(CCModel, LinearSolver, Dumux::BoxBiCGStabILU0Solver<TypeTag> );
-
-// if the deflection of the newton method is large, we do not
-// need to solve the linear approximation accurately. Assuming
-// that the initial value for the delta vector u is quite
-// close to the final value, a reduction of 6 orders of
-// magnitude in the defect should be sufficient...
-SET_SCALAR_PROP(CCModel, LinearSolverResidualReduction, 1e-6);
-
-//! set the default number of maximum iterations for the linear solver
-SET_INT_PROP(CCModel, LinearSolverMaxIterations, 250);
-
-//! set number of equations of the mathematical model as default
-SET_INT_PROP(CCModel, LinearSolverBlockSize, GET_PROP_VALUE(TypeTag, NumEq));
-
 //! indicate that this is no box discretization
 SET_BOOL_PROP(CCModel, ImplicitIsBox, false);
+
 } // namespace Properties
 } // namespace Dumux
 
diff --git a/dumux/implicit/cellcentered/porousmediaccproblem.hh b/dumux/implicit/cellcentered/porousmediaccproblem.hh
index 39ce3d0efcf1011d396caed863531dc09002868a..5556f53468eb12fd5113cba15a9b13226a7baadc 100644
--- a/dumux/implicit/cellcentered/porousmediaccproblem.hh
+++ b/dumux/implicit/cellcentered/porousmediaccproblem.hh
@@ -23,7 +23,7 @@
  * \file
  * \brief Base class for all problems which use the two-phase box model
  */
-#ifndef DUMUX_POROUS_MEDIA_CC_ROBLEM_HH
+#ifndef DUMUX_POROUS_MEDIA_CC_PROBLEM_HH
 #define DUMUX_POROUS_MEDIA_CC_PROBLEM_HH
 
 #include <dumux/implicit/cellcentered/ccproblem.hh>
diff --git a/dumux/implicit/common/implicitelementboundarytypes.hh b/dumux/implicit/common/implicitelementboundarytypes.hh
index fe7e02a09ce90f0c40ed2a1b37d71bef74c8de5b..ce757256284f5809602b22e26cee69c38f4a0a8f 100644
--- a/dumux/implicit/common/implicitelementboundarytypes.hh
+++ b/dumux/implicit/common/implicitelementboundarytypes.hh
@@ -24,7 +24,7 @@
 #ifndef DUMUX_BOX_ELEMENT_BOUNDARY_TYPES_HH
 #define DUMUX_BOX_ELEMENT_BOUNDARY_TYPES_HH
 
-#include "boxproperties.hh"
+#include "implicitproperties.hh"
 
 #include <dumux/common/valgrind.hh>
 
diff --git a/dumux/implicit/common/implicitelementvolumevariables.hh b/dumux/implicit/common/implicitelementvolumevariables.hh
index c791bee09bb4a4da9a6e051fd86f9e09e22ba811..8494684656d67bc6759e8a8a3f94fa9bf11bade5 100644
--- a/dumux/implicit/common/implicitelementvolumevariables.hh
+++ b/dumux/implicit/common/implicitelementvolumevariables.hh
@@ -24,7 +24,7 @@
 #ifndef DUMUX_BOX_ELEMENT_VOLUME_VARIABLES_HH
 #define DUMUX_BOX_ELEMENT_VOLUME_VARIABLES_HH
 
-#include "boxproperties.hh"
+#include "implicitproperties.hh"
 
 
 namespace Dumux
diff --git a/dumux/implicit/common/implicitfvelementgeometry.hh b/dumux/implicit/common/implicitfvelementgeometry.hh
index fd0b5c89e2042c345529f0d9c7534e608d98aedf..f287bed593f99ac9acb5f20b4ef3b34128427b37 100644
--- a/dumux/implicit/common/implicitfvelementgeometry.hh
+++ b/dumux/implicit/common/implicitfvelementgeometry.hh
@@ -32,7 +32,7 @@
 
 #include <dumux/common/parameters.hh>
 #include <dumux/common/propertysystem.hh>
-#include "boxproperties.hh"
+#include <dumux/implicit/box/boxproperties.hh>
 
 namespace Dumux
 {
diff --git a/dumux/implicit/common/implicitlocaljacobian.hh b/dumux/implicit/common/implicitlocaljacobian.hh
index 7fc5140d2545e0ba467331e73bb39df09999ead6..7449afbcaf2a2f9854378c76b98db595379b0574 100644
--- a/dumux/implicit/common/implicitlocaljacobian.hh
+++ b/dumux/implicit/common/implicitlocaljacobian.hh
@@ -26,7 +26,7 @@
 #include <dune/istl/matrix.hh>
 
 #include <dumux/common/math.hh>
-#include "boxelementboundarytypes.hh"
+#include "implicitelementboundarytypes.hh"
 
 namespace Dumux
 {
diff --git a/dumux/implicit/common/implicitlocalresidual.hh b/dumux/implicit/common/implicitlocalresidual.hh
index 8c02754133eec4a5cde1c8afdbff9bbc3d93ece1..53eaa0bf554990078effe06e67ccab58387bf4e9 100644
--- a/dumux/implicit/common/implicitlocalresidual.hh
+++ b/dumux/implicit/common/implicitlocalresidual.hh
@@ -28,7 +28,7 @@
 
 #include <dumux/common/valgrind.hh>
 
-#include "boxproperties.hh"
+#include "implicitproperties.hh"
 
 namespace Dumux
 {
diff --git a/dumux/implicit/common/implicitmodel.hh b/dumux/implicit/common/implicitmodel.hh
index 567d706dd7fafb52f8c4a9115904b634eefc243a..80c5fa0f2f16268a261c094e14bd7b933a0b242c 100644
--- a/dumux/implicit/common/implicitmodel.hh
+++ b/dumux/implicit/common/implicitmodel.hh
@@ -24,12 +24,12 @@
 #ifndef DUMUX_BOX_MODEL_HH
 #define DUMUX_BOX_MODEL_HH
 
-#include "boxproperties.hh"
-#include "boxpropertydefaults.hh"
+#include "implicitproperties.hh"
+#include "implicitpropertydefaults.hh"
 
-#include "boxelementvolumevariables.hh"
-#include "boxlocaljacobian.hh"
-#include "boxlocalresidual.hh"
+#include "implicitelementvolumevariables.hh"
+#include "implicitlocaljacobian.hh"
+#include "implicitlocalresidual.hh"
 
 #include <dumux/parallel/vertexhandles.hh>
 
diff --git a/dumux/implicit/common/implicitproblem.hh b/dumux/implicit/common/implicitproblem.hh
index 3a52ac48383aa0955cf9f9ef101f55d31cc9738b..81182f447289cbb611bb343966d918fff6181649 100644
--- a/dumux/implicit/common/implicitproblem.hh
+++ b/dumux/implicit/common/implicitproblem.hh
@@ -23,7 +23,7 @@
 #ifndef DUMUX_BOX_PROBLEM_HH
 #define DUMUX_BOX_PROBLEM_HH
 
-#include "boxproperties.hh"
+#include "implicitproperties.hh"
 
 #include <dumux/io/vtkmultiwriter.hh>
 #include <dumux/io/restart.hh>
diff --git a/dumux/implicit/common/implicitproperties.hh b/dumux/implicit/common/implicitproperties.hh
index 9fd7fffa05baccd592c719d7b8a1b22552dbda67..76c07356f79266ebee1f652c79b6c2ef3305dc00 100644
--- a/dumux/implicit/common/implicitproperties.hh
+++ b/dumux/implicit/common/implicitproperties.hh
@@ -16,8 +16,8 @@
  *   You should have received a copy of the GNU General Public License       *
  *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
  *****************************************************************************/
-#ifndef DUMUX_BOX_PROPERTIES_HH
-#define DUMUX_BOX_PROPERTIES_HH
+#ifndef DUMUX_IMPLICIT_PROPERTIES_HH
+#define DUMUX_IMPLICIT_PROPERTIES_HH
 
 #include <dumux/common/propertysystem.hh>
 
@@ -27,11 +27,11 @@
 
 /*!
  * \ingroup Properties
- * \ingroup BoxProperties
- * \ingroup BoxModel
+ * \ingroup ImplicitProperties
+ * \ingroup ImplicitModel
  * \file
  * \brief Specify the shape functions, operator assemblers, etc
- *        used for the BoxModel.
+ *        used for the ImplicitModel.
  */
 namespace Dumux
 {
@@ -39,17 +39,17 @@ namespace Dumux
 namespace Properties
 {
 /*!
- * \ingroup BoxModel
+ * \ingroup ImplicitModel
  */
 // \{
 
 //////////////////////////////////////////////////////////////////
 // Type tags
 //////////////////////////////////////////////////////////////////
-
+    
 //! The type tag for models based on the box-scheme
-NEW_TYPE_TAG(BoxModel, INHERITS_FROM(NewtonMethod, LinearSolverTypeTag, ImplicitModel));
-
+NEW_TYPE_TAG(ImplicitBase, INHERITS_FROM(NewtonMethod, LinearSolverTypeTag, ImplicitModel));
+    
 //////////////////////////////////////////////////////////////////
 // Property tags
 //////////////////////////////////////////////////////////////////
@@ -58,7 +58,6 @@ NEW_PROP_TAG(Grid);     //!< The type of the DUNE grid
 NEW_PROP_TAG(GridView); //!< The type of the grid view
 
 NEW_PROP_TAG(FVElementGeometry); //! The type of the finite-volume geometry in the box scheme
-NEW_PROP_TAG(EvalGradientsAtSCVCenter); //! Evaluate shape function gradients additionally at the sub-control volume center
 
 NEW_PROP_TAG(Problem); //!< The type of the problem
 NEW_PROP_TAG(BaseModel); //!< The type of the base class of the model
@@ -122,9 +121,6 @@ NEW_PROP_TAG(ImplicitNumericDifferenceMethod);
  */
 NEW_PROP_TAG(ImplicitEnableHints);
 
-//! indicates whether two-point flux should be used
-NEW_PROP_TAG(ImplicitUseTwoPointFlux); 
-
 // mappers from local to global indices
 
 //! maper for vertices
@@ -134,6 +130,9 @@ NEW_PROP_TAG(ElementMapper);
 //! maper for degrees of freedom
 NEW_PROP_TAG(DofMapper);
 
+//! indicate whether discretization is box or not
+NEW_PROP_TAG(ImplicitIsBox);
+
 }
 }
 
diff --git a/dumux/implicit/common/implicitpropertydefaults.hh b/dumux/implicit/common/implicitpropertydefaults.hh
index 50ec31e2c739645f2125237261153b82f95a6dfd..726a274f53777fe6bbe3c354f35ed332a8fe2962 100644
--- a/dumux/implicit/common/implicitpropertydefaults.hh
+++ b/dumux/implicit/common/implicitpropertydefaults.hh
@@ -18,164 +18,111 @@
  *****************************************************************************/
 /*!
  * \ingroup Properties
- * \ingroup BoxProperties
- * \ingroup BoxModel
+ * \ingroup ImplicitProperties
+ * \ingroup ImplicitModel
  * \file
  *
- * \brief Default properties for box models
+ * \brief Default properties for implicit models
  */
-#ifndef DUMUX_BOX_PROPERTY_DEFAULTS_HH
-#define DUMUX_BOX_PROPERTY_DEFAULTS_HH
+#ifndef DUMUX_IMPLICIT_PROPERTY_DEFAULTS_HH
+#define DUMUX_IMPLICIT_PROPERTY_DEFAULTS_HH
 
 #include <dumux/nonlinear/newtonmethod.hh>
 #include <dumux/nonlinear/newtoncontroller.hh>
-
-#include "boxassembler.hh"
-#include "boxmodel.hh"
-#include "boxfvelementgeometry.hh"
-#include "boxelementboundarytypes.hh"
-#include "boxlocaljacobian.hh"
-#include "boxlocalresidual.hh"
-#include "boxelementvolumevariables.hh"
-#include "boxvolumevariables.hh"
-
 #include <dumux/common/boundarytypes.hh>
 #include <dumux/common/timemanager.hh>
+#include <dumux/implicit/box/boxvolumevariables.hh>
 
-#include "boxproperties.hh"
+#include "implicitproperties.hh"
 
 #include <limits>
 
 namespace Dumux {
 
-// forward declaration
-template<class TypeTag>
-class BoxModel;
-
 namespace Properties {
 //////////////////////////////////////////////////////////////////
 // Some defaults for very fundamental properties
 //////////////////////////////////////////////////////////////////
 
 //! Set the default type for the time manager
-SET_TYPE_PROP(BoxModel, TimeManager, Dumux::TimeManager<TypeTag>);
+SET_TYPE_PROP(ImplicitBase, TimeManager, Dumux::TimeManager<TypeTag>);
 
 //////////////////////////////////////////////////////////////////
 // Properties
 //////////////////////////////////////////////////////////////////
 
 //! Use the leaf grid view if not defined otherwise
-SET_TYPE_PROP(BoxModel,
+SET_TYPE_PROP(ImplicitBase,
               GridView,
               typename GET_PROP_TYPE(TypeTag, Grid)::LeafGridView);
 
-//! Set the default for the FVElementGeometry
-SET_TYPE_PROP(BoxModel, FVElementGeometry, Dumux::BoxFVElementGeometry<TypeTag>);
-
-//! Disable evaluation of shape function gradients at the sub-control volume center by default
-// The shape function gradients at the sub-control volume center are currently only
-// needed for the stokes and the linear elastic models
-SET_BOOL_PROP(BoxModel, EvalGradientsAtSCVCenter, false);
-
-//! Set the default for the ElementBoundaryTypes
-SET_TYPE_PROP(BoxModel, ElementBoundaryTypes, Dumux::BoxElementBoundaryTypes<TypeTag>);
-
 //! use the plain newton method for the box scheme by default
-SET_TYPE_PROP(BoxModel, NewtonMethod, Dumux::NewtonMethod<TypeTag>);
+SET_TYPE_PROP(ImplicitBase, NewtonMethod, Dumux::NewtonMethod<TypeTag>);
 
 //! use the plain newton controller for the box scheme by default
-SET_TYPE_PROP(BoxModel, NewtonController, Dumux::NewtonController<TypeTag>);
+SET_TYPE_PROP(ImplicitBase, NewtonController, Dumux::NewtonController<TypeTag>);
 
 //! Mapper for the grid view's vertices.
-SET_TYPE_PROP(BoxModel,
+SET_TYPE_PROP(ImplicitBase,
               VertexMapper,
               Dune::MultipleCodimMultipleGeomTypeMapper<typename GET_PROP_TYPE(TypeTag, GridView),
                                                         Dune::MCMGVertexLayout>);
 
 //! Mapper for the grid view's elements.
-SET_TYPE_PROP(BoxModel,
+SET_TYPE_PROP(ImplicitBase,
               ElementMapper,
               Dune::MultipleCodimMultipleGeomTypeMapper<typename GET_PROP_TYPE(TypeTag, GridView),
                                                         Dune::MCMGElementLayout>);
 
-//! Mapper for the degrees of freedoms.
-SET_TYPE_PROP(BoxModel, DofMapper, typename GET_PROP_TYPE(TypeTag, VertexMapper));
-
-//! Set the BaseLocalResidual to BoxLocalResidual
-SET_TYPE_PROP(BoxModel, BaseLocalResidual, Dumux::BoxLocalResidual<TypeTag>);
-
-//! Set the BaseModel to BoxModel
-SET_TYPE_PROP(BoxModel, BaseModel, Dumux::BoxModel<TypeTag>);
-
-//! The local jacobian operator for the box scheme
-SET_TYPE_PROP(BoxModel, LocalJacobian, Dumux::BoxLocalJacobian<TypeTag>);
+//! The volume variable class, to be overloaded by the model
+SET_TYPE_PROP(BoxModel, VolumeVariables, Dumux::BoxVolumeVariables<TypeTag>);
 
 /*!
  * \brief The type of a solution for the whole grid at a fixed time.
  */
-SET_TYPE_PROP(BoxModel,
+SET_TYPE_PROP(ImplicitBase,
               SolutionVector,
               Dune::BlockVector<typename GET_PROP_TYPE(TypeTag, PrimaryVariables)>);
 
 /*!
  * \brief The type of a solution for a whole element.
  */
-SET_TYPE_PROP(BoxModel,
+SET_TYPE_PROP(ImplicitBase,
               ElementSolutionVector,
               Dune::BlockVector<typename GET_PROP_TYPE(TypeTag, PrimaryVariables)>);
 
 /*!
  * \brief A vector of primary variables.
  */
-SET_TYPE_PROP(BoxModel,
+SET_TYPE_PROP(ImplicitBase,
               PrimaryVariables,
               Dune::FieldVector<typename GET_PROP_TYPE(TypeTag, Scalar),
                                 GET_PROP_VALUE(TypeTag, NumEq)>);
 
-/*!
- * \brief The volume variable class.
- *
- * This should almost certainly be overloaded by the model...
- */
-SET_TYPE_PROP(BoxModel, VolumeVariables, Dumux::BoxVolumeVariables<TypeTag>);
-
-/*!
- * \brief An array of secondary variable containers.
- */
-SET_TYPE_PROP(BoxModel, ElementVolumeVariables, Dumux::BoxElementVolumeVariables<TypeTag>);
-
 /*!
  * \brief Boundary types at a single degree of freedom.
  */
-SET_TYPE_PROP(BoxModel,
+SET_TYPE_PROP(ImplicitBase,
               BoundaryTypes,
               Dumux::BoundaryTypes<GET_PROP_VALUE(TypeTag, NumEq)>);
 
-/*!
- * \brief Assembler for the global jacobian matrix.
- */
-SET_TYPE_PROP(BoxModel, JacobianAssembler, Dumux::BoxAssembler<TypeTag>);
-
 //! use an unlimited time step size by default
-SET_SCALAR_PROP(BoxModel, TimeManagerMaxTimeStepSize, 1e100);
+SET_SCALAR_PROP(ImplicitBase, TimeManagerMaxTimeStepSize, 1e100);
 
 //! use forward differences to calculate the jacobian by default
-SET_INT_PROP(BoxModel, ImplicitNumericDifferenceMethod, +1);
+SET_INT_PROP(ImplicitBase, ImplicitNumericDifferenceMethod, +1);
 
 //! do not use hints by default
-SET_BOOL_PROP(BoxModel, ImplicitEnableHints, false);
+SET_BOOL_PROP(ImplicitBase, ImplicitEnableHints, false);
 
 // disable jacobian matrix recycling by default
-SET_BOOL_PROP(BoxModel, ImplicitEnableJacobianRecycling, false);
+SET_BOOL_PROP(ImplicitBase, ImplicitEnableJacobianRecycling, false);
 
 // disable partial reassembling by default
-SET_BOOL_PROP(BoxModel, ImplicitEnablePartialReassemble, false);
-
-// disable two-point-flux by default
-SET_BOOL_PROP(BoxModel, ImplicitUseTwoPointFlux, false);
+SET_BOOL_PROP(ImplicitBase, ImplicitEnablePartialReassemble, false);
 
 //! Set the type of a global jacobian matrix from the solution types
-SET_PROP(BoxModel, JacobianMatrix)
+SET_PROP(ImplicitBase, JacobianMatrix)
 {
 private:
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
@@ -186,20 +133,20 @@ public:
 };
 
 // use the stabilized BiCG solver preconditioned by the ILU-0 by default
-SET_TYPE_PROP(BoxModel, LinearSolver, Dumux::BoxBiCGStabILU0Solver<TypeTag> );
+SET_TYPE_PROP(ImplicitBase, LinearSolver, Dumux::BoxBiCGStabILU0Solver<TypeTag> );
 
 // if the deflection of the newton method is large, we do not
 // need to solve the linear approximation accurately. Assuming
 // that the initial value for the delta vector u is quite
 // close to the final value, a reduction of 6 orders of
 // magnitude in the defect should be sufficient...
-SET_SCALAR_PROP(BoxModel, LinearSolverResidualReduction, 1e-6);
+SET_SCALAR_PROP(ImplicitBase, LinearSolverResidualReduction, 1e-6);
 
 //! set the default number of maximum iterations for the linear solver
-SET_INT_PROP(BoxModel, LinearSolverMaxIterations, 250);
+SET_INT_PROP(ImplicitBase, LinearSolverMaxIterations, 250);
 
 //! set number of equations of the mathematical model as default
-SET_INT_PROP(BoxModel, LinearSolverBlockSize, GET_PROP_VALUE(TypeTag, NumEq));
+SET_INT_PROP(ImplicitBase, LinearSolverBlockSize, GET_PROP_VALUE(TypeTag, NumEq));
 
 } // namespace Properties
 } // namespace Dumux
diff --git a/dumux/implicit/common/implicitvolumevariables.hh b/dumux/implicit/common/implicitvolumevariables.hh
index 0c0bb6d8f6516e166c31d4ffce1e3613c52be5a1..3909f32a62affbc21c941c5111562bf5adba60d6 100644
--- a/dumux/implicit/common/implicitvolumevariables.hh
+++ b/dumux/implicit/common/implicitvolumevariables.hh
@@ -25,7 +25,7 @@
 #ifndef DUMUX_BOX_VOLUME_VARIABLES_HH
 #define DUMUX_BOX_VOLUME_VARIABLES_HH
 
-#include "boxproperties.hh"
+#include "implicitproperties.hh"
 
 #include <dumux/common/valgrind.hh>
 
diff --git a/dumux/implicit/common/porousmediaimplicitproblem.hh b/dumux/implicit/common/porousmediaimplicitproblem.hh
index 3fc4d54d9cb68729762584098c06c0983f0ff769..80e0465358929c2d8d42ba6fadacbccb33707ed8 100644
--- a/dumux/implicit/common/porousmediaimplicitproblem.hh
+++ b/dumux/implicit/common/porousmediaimplicitproblem.hh
@@ -24,7 +24,7 @@
 #ifndef DUMUX_POROUS_MEDIA_BOX_PROBLEM_HH
 #define DUMUX_POROUS_MEDIA_BOX_PROBLEM_HH
 
-#include "boxproperties.hh"
+#include "implicitproperties.hh"
 
 #include <dumux/implicit/box/boxproblem.hh>