diff --git a/dumux/nonlinear/newtoncontroller.hh b/dumux/nonlinear/newtoncontroller.hh
index f82b3f5532e16970d43c5b1fdce044e515a3e6bf..07a693c545349777255ee88616a817318dbcd37f 100644
--- a/dumux/nonlinear/newtoncontroller.hh
+++ b/dumux/nonlinear/newtoncontroller.hh
@@ -16,9 +16,9 @@
  *****************************************************************************/
 /*!
  * \file
- * \brief Reference implementation of a newton controller solver.
+ * \brief Reference implementation of a controller class for the Newton solver.
  *
- * Usually for most cases this controller should be sufficient.
+ * Usually this controller should be sufficient.
  */
 #ifndef DUMUX_NEWTON_CONTROLLER_HH
 #define DUMUX_NEWTON_CONTROLLER_HH
@@ -38,48 +38,56 @@ namespace Dumux
 {
 namespace Properties
 {
-//! specifies the implementation of the newton controller
+//! Specifies the implementation of the Newton controller
 NEW_PROP_TAG(NewtonController);
 
-//! specifies the type of the actual newton method
+//! Specifies the type of the actual Newton method
 NEW_PROP_TAG(NewtonMethod);
 
-//! specifies the type of a solution
+//! Specifies the type of a solution
 NEW_PROP_TAG(SolutionVector);
 
-//! specifies the type of a vector of primary variables at an DOF
+//! Specifies the type of a vector of primary variables at a degree of freedom
 NEW_PROP_TAG(PrimaryVariables);
 
-//! specifies the type of a global jacobian matrix
+//! Specifies the type of a global Jacobian matrix
 NEW_PROP_TAG(JacobianMatrix);
 
-//! specifies the type of the jacobian matrix assembler
+//! Specifies the type of the Jacobian matrix assembler
 NEW_PROP_TAG(JacobianAssembler);
 
 //! specifies the type of the time manager
 NEW_PROP_TAG(TimeManager);
 
-//! specifies the verbosity of the linear solver (by default it is 0,
-//! i.e. it doesn't print anything)
+/*!
+ * \brief Specifies the verbosity of the linear solver
+ *
+ * By default it is 0, i.e. it doesn't print anything. Setting this
+ * property to 1 prints aggregated convergence rates, 2 prints the
+ * convergence rate of every iteration of the scheme.
+ */
 NEW_PROP_TAG(NewtonLinearSolverVerbosity);
 
 //! specifies whether the convergence rate and the global residual
 //! gets written out to disk for every newton iteration (default is false)
 NEW_PROP_TAG(NewtonWriteConvergence);
 
-//! specifies whether time step size should be increased during the
-//! newton methods first few iterations
+//! Specifies whether time step size should be increased during the
+//! Newton methods first few iterations
 NEW_PROP_TAG(EnableTimeStepRampUp);
 
-//! specifies whether the jacobian matrix should only be reassembled
+//! Specifies whether the Jacobian matrix should only be reassembled
 //! if the current solution deviates too much from the evaluation point
 NEW_PROP_TAG(EnablePartialReassemble);
 
-//! specifies whether the update should be done using the line search
-//! method instead of the "raw" newton method. whether this property
-//! has any effect depends on wether the line search method is
-//! implemented for the actual model's newton controller's update()
-//! method. By default we do not use line search.
+/*!
+ * \brief Specifies whether the update should be done using the line search
+ *        method instead of the plain Newton method. 
+ *
+ * Whether this property has any effect depends on wether the line
+ * search method is implemented for the actual model's Newton
+ * controller's update() method. By default line search is not used.
+ */
 NEW_PROP_TAG(NewtonUseLineSearch);
 
 SET_PROP_DEFAULT(NewtonLinearSolverVerbosity)
@@ -98,7 +106,11 @@ SET_PROP_DEFAULT(NewtonUseLineSearch)
 };
 };
 
-
+/*!
+ * \internal
+ * \brief Writes the intermediate solutions during 
+ *        the Newton scheme
+ */
 template <class TypeTag, bool enable>
 struct NewtonConvergenceWriter
 {
@@ -154,6 +166,14 @@ private:
     NewtonController &ctl_;
 };
 
+/*!
+ * \internal
+ * \brief Writes the intermediate solutions during 
+ *        the Newton scheme. 
+ *
+ * This is the dummy specialization for the case where we don't want
+ * to do anything.
+ */
 template <class TypeTag>
 struct NewtonConvergenceWriter<TypeTag, false>
 {
@@ -184,12 +204,12 @@ struct NewtonConvergenceWriter<TypeTag, false>
 };
 
 /*!
- * \brief The reference implementation of a newton controller.
+ * \brief A reference implementation of a newton controller specific
+ *        for the box scheme.
  *
- * If you want to specialize only some methods but are happy with
- * the defaults of the reference controller, derive your
- * controller from this class and simply overload the required
- * methods.
+ * If you want to specialize only some methods but are happy with the
+ * defaults of the reference controller, derive your controller from
+ * this class and simply overload the required methods.
  */
 template <class TypeTag>
 class NewtonController
@@ -236,6 +256,9 @@ class NewtonController
     };
 
 public:
+    /*!
+     * \brief Constructor
+     */
     NewtonController()
         : endIterMsgStream_(std::ostringstream::out),
           convergenceWriter_(asImp_())
@@ -260,7 +283,11 @@ public:
 
     /*!
      * \brief Set the maximum acceptable difference for convergence of
-     *        any primary variable between two iterations
+     *        any primary variable between two iterations.
+     *
+     * \param tolerance The maximum relative error between two Newton
+     *                  iterations at which the scheme is considered
+     *                  finished
      */
     void setRelTolerance(Scalar tolerance)
     { tolerance_ = tolerance; }
@@ -268,6 +295,12 @@ public:
     /*!
      * \brief Set the number of iterations at which the Newton method
      *        should aim at.
+     *
+     * This is used to control the time step size. The heuristic used
+     * is to scale the last time step size by the deviation of the
+     * number of iterations used from the target steps.
+     *
+     * \param targetSteps Number of iterations which are considered "optimal"
      */
     void setTargetSteps(int targetSteps)
     { targetSteps_ = targetSteps; }
@@ -275,6 +308,8 @@ public:
     /*!
      * \brief Set the number of iterations after which the Newton
      *        method gives up.
+     *
+     * \param maxSteps Number of iterations after we give up
      */
     void setMaxSteps(int maxSteps)
     { maxSteps_ = maxSteps; }
@@ -294,6 +329,8 @@ public:
 
     /*!
      * \brief Returns true if another iteration should be done.
+     *
+     * \param u The current solution
      */
     bool newtonProceed(const SolutionVector &u)
     {
@@ -326,6 +363,9 @@ public:
     /*!
      * \brief Called before the newton method is applied to an
      *        non-linear system of equations.
+     *
+     * \param method The object where the NewtonMethod is executed
+     * \param u The initial solution
      */
     void newtonBegin(NewtonMethod &method, SolutionVector &u)
     {
@@ -364,8 +404,14 @@ public:
     { return numSteps_; }
 
     /*!
-     * \brief Update the error of the solution compared to the
-     *        previous iteration.
+     * \brief Update the relative error of the solution compared to
+     *        the previous iteration.
+     *
+     * The relative error can be seen as a norm of the difference
+     * between the current and the next iteration.
+     *
+     * \param uOld The current iterative solution
+     * \param deltaU The difference between the current and the next solution
      */
     void newtonUpdateRelError(const SolutionVector &uOld,
                               const SolutionVector &deltaU)
@@ -397,11 +443,14 @@ public:
     }
 
     /*!
-     * \brief Solve the linear system of equations \f$ \mathbf{A}x - b
-     *        = 0\f$.
+     * \brief Solve the linear system of equations \f$\mathbf{A}u - b = 0\f$.
      *
      * Throws Dumux::NumericalProblem if the linear solver didn't
      * converge.
+     *
+     * \param A The matrix of the linear system of equations
+     * \param u The vector which solves the linear system
+     * \param b The right hand side of the linear system
      */
     template <class Vector>
     void newtonSolveLinear(const JacobianMatrix &A,
@@ -442,19 +491,20 @@ public:
     }
 
     /*!
-     * \brief Update the current solution function with a delta vector.
+     * \brief Update the current solution with a delta vector.
      *
      * The error estimates required for the newtonConverged() and
-     * newtonProceed() methods should be updated here.
+     * newtonProceed() methods should be updated inside this method.
      *
      * Different update strategies, such as line search and chopped
      * updates can be implemented. The default behaviour is just to
-     * subtract deltaU from uOld.
+     * subtract deltaU from uOld, i.e.
+     * \f[ u^{k+1} = u^k - \Delta u^k \f]
      *
      * \param deltaU The delta as calculated from solving the linear
      *               system of equations. This parameter also stores
      *               the updated solution.
-     * \param uOld   The solution of the last iteration
+     * \param uOld   The solution vector of the last iteration
      */
     void newtonUpdate(SolutionVector &deltaU, const SolutionVector &uOld)
     {
@@ -488,6 +538,9 @@ public:
 
     /*!
      * \brief Indicates that one newton iteration was finished.
+     *
+     * \param u The solution after the current iteration
+     * \param uOld The solution at the beginning of the current iteration
      */
     void newtonEndStep(SolutionVector &u, SolutionVector &uOld)
     {
@@ -510,7 +563,8 @@ public:
     }
 
     /*!
-     * \brief Indicates that we're done solving the non-linear system of equations.
+     * \brief Indicates that we're done solving the non-linear system
+     *        of equations.
      */
     void newtonEnd()
     {
@@ -537,7 +591,8 @@ public:
     { }
 
     /*!
-     * \brief Suggest a new time stepsize based on the old time step size.
+     * \brief Suggest a new time stepsize based on the old time step
+     *        size.
      *
      * The default behaviour is to suggest the old time step size
      * scaled by the ratio between the target iterations and the
@@ -652,7 +707,11 @@ protected:
         convergenceWriter_.endIteration();
     };
 
-
+    /*!
+     * \brief Actually invoke the linear solver 
+     *
+     * Usually we use the solvers from DUNE-ISTL.
+     */
     template <class Vector>
     void solveLinear_(const JacobianMatrix &A,
                       Vector &x,
@@ -702,10 +761,9 @@ protected:
 
     ConvergenceWriter convergenceWriter_;
 
-    Scalar tolerance_;
-
     Scalar error_;
     Scalar lastError_;
+    Scalar tolerance_;
 
     // number of iterations for the time-step ramp-up
     Scalar rampUpSteps_;
diff --git a/dumux/nonlinear/newtonmethod.hh b/dumux/nonlinear/newtonmethod.hh
index fc2f6a0bb2499b90aa31124b75e4d88427cbba8b..271365d0624b3ee265b653358099d7238818e88b 100644
--- a/dumux/nonlinear/newtonmethod.hh
+++ b/dumux/nonlinear/newtonmethod.hh
@@ -65,25 +65,25 @@ public:
     { }
 
     /*!
-     * \brief Returns a reference to the current numeric problem.
+     * \brief Returns a reference to the object representing the physical model.
      */
     Problem &problem()
     { return problem_; }
 
     /*!
-     * \brief Returns a reference to the current numeric problem.
+     * \brief Returns a reference to the object representing the physical problem.
      */
     const Problem &problem() const
     { return problem_; }
 
     /*!
-     * \brief Returns a reference to the numeric model.
+     * \brief Returns a reference to the object representing the physical model.
      */
     Model &model()
     { return problem().model(); }
 
     /*!
-     * \brief Returns a reference to the numeric model.
+     * \brief Returns a reference to the object representing the physical model.
      */
     const Model &model() const
     { return problem().model(); }
@@ -92,6 +92,9 @@ public:
     /*!
      * \brief Run the newton method. The controller is responsible
      *        for all the strategic decisions.
+     *
+     * \param ctl The NewtonController which controls the course of
+     *            the Newton algorithm.
      */
     bool execute(NewtonController &ctl)
     {