diff --git a/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/i_nonlinear_solver.md b/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/i_nonlinear_solver.md
deleted file mode 100644
index f6d09b0017c9833e58880901daacfa3631a13458..0000000000000000000000000000000000000000
--- a/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/i_nonlinear_solver.md
+++ /dev/null
@@ -1,2 +0,0 @@
-Local nonlinear solver configuration used in the constitutive relation
-computation. The nonlinear solver is the NumLib::NewtonRaphson solver.
diff --git a/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/t_error_tolerance.md b/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/t_error_tolerance.md
deleted file mode 100644
index ccae39ea3ad802a7b785d4e758ad7b39757862cd..0000000000000000000000000000000000000000
--- a/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/t_error_tolerance.md
+++ /dev/null
@@ -1 +0,0 @@
-\copydoc NumLib::NewtonRaphson::_tolerance_squared
diff --git a/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/t_maximum_iterations.md b/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/t_maximum_iterations.md
deleted file mode 100644
index c9b32edcfe5664c6a8bf684a2be2043ac4658c28..0000000000000000000000000000000000000000
--- a/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/t_maximum_iterations.md
+++ /dev/null
@@ -1 +0,0 @@
-\copydoc NumLib::NewtonRaphson::_maximum_iterations
diff --git a/Documentation/ProjectFile/material/solid/constitutive_relation/Ehlers/nonlinear_solver/i_nonlinear_solver.md b/Documentation/ProjectFile/material/solid/constitutive_relation/nonlinear_solver/i_nonlinear_solver.md
similarity index 100%
rename from Documentation/ProjectFile/material/solid/constitutive_relation/Ehlers/nonlinear_solver/i_nonlinear_solver.md
rename to Documentation/ProjectFile/material/solid/constitutive_relation/nonlinear_solver/i_nonlinear_solver.md
diff --git a/Documentation/ProjectFile/material/solid/constitutive_relation/Ehlers/nonlinear_solver/t_error_tolerance.md b/Documentation/ProjectFile/material/solid/constitutive_relation/nonlinear_solver/t_error_tolerance.md
similarity index 100%
rename from Documentation/ProjectFile/material/solid/constitutive_relation/Ehlers/nonlinear_solver/t_error_tolerance.md
rename to Documentation/ProjectFile/material/solid/constitutive_relation/nonlinear_solver/t_error_tolerance.md
diff --git a/Documentation/ProjectFile/material/solid/constitutive_relation/Ehlers/nonlinear_solver/t_maximum_iterations.md b/Documentation/ProjectFile/material/solid/constitutive_relation/nonlinear_solver/t_maximum_iterations.md
similarity index 100%
rename from Documentation/ProjectFile/material/solid/constitutive_relation/Ehlers/nonlinear_solver/t_maximum_iterations.md
rename to Documentation/ProjectFile/material/solid/constitutive_relation/nonlinear_solver/t_maximum_iterations.md
diff --git a/MaterialLib/SolidModels/CreateEhlers.h b/MaterialLib/SolidModels/CreateEhlers.h
index 3969fef891a576da7202fbee04e4e01d34318ed0..7d181c1d85ec1439a4a23fdd277bfb80b959b8fa 100644
--- a/MaterialLib/SolidModels/CreateEhlers.h
+++ b/MaterialLib/SolidModels/CreateEhlers.h
@@ -9,6 +9,7 @@
 
 #pragma once
 
+#include "CreateNewtonRaphsonSolverParameters.h"
 #include "ProcessLib/Utils/ProcessUtils.h"  // required for findParameter
 #include "Ehlers.h"
 
@@ -18,25 +19,6 @@ namespace Solids
 {
 namespace Ehlers
 {
-inline NumLib::NewtonRaphsonSolverParameters
-createNewtonRaphsonSolverParameters(BaseLib::ConfigTree const& config)
-{
-    DBUG("Create local nonlinear solver parameters.");
-    auto const maximum_iterations =
-        //! \ogs_file_param{material__solid__constitutive_relation__Ehlers__nonlinear_solver__maximum_iterations}
-        config.getConfigParameter<int>("maximum_iterations");
-
-    DBUG("\tmaximum_iterations: %d.", maximum_iterations);
-
-    auto const error_tolerance =
-        //! \ogs_file_param{material__solid__constitutive_relation__Ehlers__nonlinear_solver__error_tolerance}
-        config.getConfigParameter<double>("error_tolerance");
-
-    DBUG("\terror_tolerance: %g.", error_tolerance);
-
-    return {maximum_iterations, error_tolerance};
-}
-
 inline std::unique_ptr<DamagePropertiesParameters> createDamageProperties(
     std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters,
     BaseLib::ConfigTree const& config)
@@ -184,11 +166,8 @@ std::unique_ptr<SolidEhlers<DisplacementDim>> createEhlers(
             createDamageProperties(parameters, *ehlers_damage_config);
     }
 
-    auto const& nonlinear_solver_config =
-        //! \ogs_file_param{material__solid__constitutive_relation__Ehlers__nonlinear_solver}
-        config.getConfigSubtree("nonlinear_solver");
     auto const nonlinear_solver_parameters =
-        createNewtonRaphsonSolverParameters(nonlinear_solver_config);
+        createNewtonRaphsonSolverParameters(config);
 
     return std::make_unique<SolidEhlers<DisplacementDim>>(
         nonlinear_solver_parameters, mp, std::move(ehlers_damage_properties));
diff --git a/MaterialLib/SolidModels/CreateLubby2.h b/MaterialLib/SolidModels/CreateLubby2.h
index 145d17e970a1ef847b09b299de0af8c15827bc1f..569d546e3805977d0838c53cf9a4aee6d51165c0 100644
--- a/MaterialLib/SolidModels/CreateLubby2.h
+++ b/MaterialLib/SolidModels/CreateLubby2.h
@@ -9,6 +9,7 @@
 
 #pragma once
 
+#include "CreateNewtonRaphsonSolverParameters.h"
 #include "ProcessLib/Utils/ProcessUtils.h"  // required for findParameter
 
 #include "Lubby2.h"
@@ -19,25 +20,6 @@ namespace Solids
 {
 namespace Lubby2
 {
-inline NumLib::NewtonRaphsonSolverParameters
-createNewtonRaphsonSolverParameters(BaseLib::ConfigTree const& config)
-{
-    DBUG("Create local nonlinear solver parameters.");
-    auto const maximum_iterations =
-        //! \ogs_file_param{material__solid__constitutive_relation__Lubby2__nonlinear_solver__maximum_iterations}
-        config.getConfigParameter<int>("maximum_iterations");
-
-    DBUG("\tmaximum_iterations: %d.", maximum_iterations);
-
-    auto const error_tolerance =
-        //! \ogs_file_param{material__solid__constitutive_relation__Lubby2__nonlinear_solver__error_tolerance}
-        config.getConfigParameter<double>("error_tolerance");
-
-    DBUG("\terror_tolerance: %g.", error_tolerance);
-
-    return {maximum_iterations, error_tolerance};
-}
-
 template <int DisplacementDim>
 std::unique_ptr<Lubby2<DisplacementDim>> createLubby2(
     std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters,
@@ -117,11 +99,8 @@ std::unique_ptr<Lubby2<DisplacementDim>> createLubby2(
         maxwell_viscosity,        dependency_parameter_mK,
         dependency_parameter_mvK, dependency_parameter_mvM};
 
-    auto const& nonlinear_solver_config =
-        //! \ogs_file_param{material__solid__constitutive_relation__Lubby2__nonlinear_solver}
-        config.getConfigSubtree("nonlinear_solver");
     auto const nonlinear_solver_parameters =
-        createNewtonRaphsonSolverParameters(nonlinear_solver_config);
+        createNewtonRaphsonSolverParameters(config);
 
     return std::unique_ptr<Lubby2<DisplacementDim>>{
         new Lubby2<DisplacementDim>{nonlinear_solver_parameters, mp}};
diff --git a/MaterialLib/SolidModels/CreateNewtonRaphsonSolverParameters.cpp b/MaterialLib/SolidModels/CreateNewtonRaphsonSolverParameters.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2ffd162f6fa36abce71c2bdcc9303fa04bc205d4
--- /dev/null
+++ b/MaterialLib/SolidModels/CreateNewtonRaphsonSolverParameters.cpp
@@ -0,0 +1,43 @@
+/**
+ * \copyright
+ * Copyright (c) 2012-2018, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ *  \file   CreateNewtonRaphsonSolverParameters.cpp
+ *  Created on July 10, 2018, 11:32 AM
+ */
+
+#include "CreateNewtonRaphsonSolverParameters.h"
+
+#include "BaseLib/ConfigTree.h"
+#include "BaseLib/Error.h"
+
+#include "NumLib/NewtonRaphson.h"
+
+namespace MaterialLib
+{
+NumLib::NewtonRaphsonSolverParameters createNewtonRaphsonSolverParameters(
+    BaseLib::ConfigTree const& config)
+{
+    DBUG("Create local nonlinear solver parameters.");
+    auto const& nonlinear_solver_config =
+        //! \ogs_file_param{material__solid__constitutive_relation__nonlinear_solver}
+        config.getConfigSubtree("nonlinear_solver");
+
+    auto const maximum_iterations =
+        //! \ogs_file_param{material__solid__constitutive_relation__nonlinear_solver__maximum_iterations}
+        nonlinear_solver_config.getConfigParameter<int>("maximum_iterations");
+
+    DBUG("\tmaximum_iterations: %d.", maximum_iterations);
+
+    auto const error_tolerance =
+        //! \ogs_file_param{material__solid__constitutive_relation__nonlinear_solver__error_tolerance}
+        nonlinear_solver_config.getConfigParameter<double>("error_tolerance");
+
+    DBUG("\terror_tolerance: %g.", error_tolerance);
+
+    return {maximum_iterations, error_tolerance};
+}
+}
diff --git a/MaterialLib/SolidModels/CreateNewtonRaphsonSolverParameters.h b/MaterialLib/SolidModels/CreateNewtonRaphsonSolverParameters.h
new file mode 100644
index 0000000000000000000000000000000000000000..6ecfb79d875d63b23b678d22f22f64590eb0f8da
--- /dev/null
+++ b/MaterialLib/SolidModels/CreateNewtonRaphsonSolverParameters.h
@@ -0,0 +1,28 @@
+/**
+ * \copyright
+ * Copyright (c) 2012-2018, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ *  \file   CreateNewtonRaphsonSolverParameters.h
+ *  Created on July 10, 2018, 11:32 AM
+ */
+
+#pragma once
+
+namespace BaseLib
+{
+class ConfigTree;
+}
+
+namespace NumLib
+{
+struct NewtonRaphsonSolverParameters;
+}
+
+namespace MaterialLib
+{
+NumLib::NewtonRaphsonSolverParameters createNewtonRaphsonSolverParameters(
+    BaseLib::ConfigTree const& config);
+}