diff --git a/CMakeLists.txt b/CMakeLists.txt
index ae4d016276dcdd6b72ab9ddd856c9f8b9b2401b0..de09ca6eb78b0709d71196ec3f5955e345de2ce8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 3.1)
-project(amdis CXX VERSION 0.2)
+project(amdis LANGUAGES CXX VERSION 0.2)
 
 #find dune-common and set the module path
 find_package(dune-common REQUIRED)
@@ -26,7 +26,9 @@ target_link_libraries(amdis fmt)
 
 option(ENABLE_ALL_WARNINGS "enable all meaningful warnings" OFF)
 if (ENABLE_ALL_WARNINGS)
-  target_compile_options(amdis PUBLIC "-Wall" "-Wextra" "-pedantic" "-Wnon-virtual-dtor" "-Wold-style-cast" "-Wcast-align" "-Woverloaded-virtual" "-Wpedantic" "-Wconversion")
+  target_compile_options(amdis PUBLIC "-Wall" "-Wextra" "-pedantic" "-Wnon-virtual-dtor"
+                                      "-Wold-style-cast" "-Wcast-align" "-Woverloaded-virtual"
+                                      "-Wpedantic" "-Wconversion")
 endif (ENABLE_ALL_WARNINGS)
 
 # finalize the dune project, e.g. generating config.h etc.
diff --git a/README.md b/README.md
index 85344c1e21a3baf4d8e44780b662025afe21e4d7..e5970dde6f5db8622a4ea50ba057674ca07360ed 100644
--- a/README.md
+++ b/README.md
@@ -25,7 +25,14 @@ The `dunecontrol` script searches for the required
 (See the file `dune.module` for an up-to-date list of dependencies). The dune modules
 can be obtained from https://gitlab.dune-project.org and need to be found in a
 subdirectory of `DUNE_CONTROL_PATH`. See also https://dune-project.org/doc/installation
-for details about the installation of dune modules.
+for details about the installation of dune modules. You can use the script
+
+```
+bin/install_all_dune_modules.sh DOWNLOAD_DIR
+```
+
+to clone all dune repositories into `DOWNLOAD_DIR` and provide a simple way using `dunecontrol`
+to install all of them at once.
 
 Additionally the following optional libraries can be used:
 - [MTL4](https://gitlab.math.tu-dresden.de/spraetor/mtl4) (use this fork to get up-to-date changes)
diff --git a/bin/install_all_dune_modules.sh b/bin/install_all_dune_modules.sh
new file mode 100755
index 0000000000000000000000000000000000000000..c28675ab4964b616b61d5c9a57733a23feaf6356
--- /dev/null
+++ b/bin/install_all_dune_modules.sh
@@ -0,0 +1,34 @@
+#!/usr/bin/env bash
+
+if [ $# -lt 1 ]; then
+  echo "usage: $0 DOWNLOAD_DIR"
+  exit 1
+fi
+
+DOWNLOAD_DIR="$1"
+
+mkdir -p ${DOWNLOAD_DIR}/dune
+cd ${DOWNLOAD_DIR}/dune
+
+CORE_MODULES=("dune-common" "dune-geometry" "dune-grid" "dune-istl" "dune-localfunctions")
+STAGING_MODULES=("dune-functions" "dune-typetree" "dune-uggrid")
+EXTENSIONS_MODULES=("dune-alugrid" "dune-spgrid" "dune-foamgrid")
+
+for MOD in ${CORE_MODULES[*]}; do
+  git clone https://gitlab.dune-project.org/core/${MOD}.git --branch releases/2.6 --single-branch
+done
+
+for MOD in ${STAGING_MODULES[*]}; do
+  git clone https://gitlab.dune-project.org/staging/${MOD}.git --branch releases/2.6 --single-branch
+done
+
+for MOD in ${EXTENSIONS_MODULES[*]}; do
+  git clone https://gitlab.dune-project.org/extensions/${MOD}.git --branch releases/2.6 --single-branch
+done
+
+echo ""
+echo "=============================================================="
+echo "To build all dune modules run the commands...                 "
+echo "  DUNE_CONTROL_PATH=${DOWNLOAD_DIR}/dune dunecontrol configure"
+echo "  DUNE_CONTROL_PATH=${DOWNLOAD_DIR}/dune dunecontrol make -j4 "
+echo "=============================================================="
\ No newline at end of file
diff --git a/src/amdis/linearalgebra/eigen/SolverConfig.hpp b/src/amdis/linearalgebra/eigen/SolverConfig.hpp
index 3296aba7e354c08842bc4724430db41a47f410ab..cbc1b43e56c4a5e2844b56034daba65c4bae67b5 100644
--- a/src/amdis/linearalgebra/eigen/SolverConfig.hpp
+++ b/src/amdis/linearalgebra/eigen/SolverConfig.hpp
@@ -72,7 +72,7 @@ namespace AMDiS
     static void init(std::string const& prefix, Eigen::UmfPackLU<M>& solver)
     {
       DUNE_UNUSED auto& control = solver.umfpackControl();
-      // here, umfpack parameters could be initialized
+      // TODO: initialized umfpack parameters
     }
   };
 #endif
diff --git a/src/amdis/linearalgebra/eigen/SolverCreator.hpp b/src/amdis/linearalgebra/eigen/SolverCreator.hpp
index 1e92827c5f392eab919f85996217a329b34096ae..4110f9efd959db502d73224fe6ae3b8292af8135 100644
--- a/src/amdis/linearalgebra/eigen/SolverCreator.hpp
+++ b/src/amdis/linearalgebra/eigen/SolverCreator.hpp
@@ -30,7 +30,7 @@ namespace AMDiS
     using SolverBase = LinearSolverInterface<Matrix, VectorX, VectorB>;
     using Scalar = typename Matrix::Scalar;
 
-    std::unique_ptr<SolverBase> createWithString(std::string const& prefix) override
+    std::unique_ptr<SolverBase> createWithString(std::string prefix) override
     {
       // get creator string for preconditioner
       std::string precon = "no";
@@ -40,12 +40,12 @@ namespace AMDiS
           precon == "jacobi")
       {
         auto creator = SolverCreator<Eigen::DiagonalPreconditioner<Scalar>>{};
-        return creator.create(prefix);
+        return creator.createWithString(prefix);
       }
       else if (precon == "ilu")
       {
         auto creator = SolverCreator<Eigen::IncompleteLUT<Scalar>>{};
-        return creator.create(prefix);
+        return creator.createWithString(prefix);
       }
       else if (precon == "ic")
       {
@@ -53,7 +53,7 @@ namespace AMDiS
       }
       else {
         auto creator = SolverCreator<Eigen::IdentityPreconditioner>{};
-        return creator.create(prefix);
+        return creator.createWithString(prefix);
       }
     }
 
@@ -62,18 +62,18 @@ namespace AMDiS
     using IncompleteCholesky =
       SolverCreator<Eigen::IncompleteCholesky<Scalar, Eigen::Lower|Eigen::Upper, Ordering>>;
 
-    std::unique_ptr<SolverBase> createIncompleteCholesky(std::string const& prefix) const
+    std::unique_ptr<SolverBase> createIncompleteCholesky(std::string prefix) const
     {
       std::string ordering = "amd";
       Parameters::get(prefix + "->precon->ordering", ordering);
 
       if (ordering == "amd") {
         using AMD = Eigen::AMDOrdering<typename Matrix::StorageIndex>;
-        return IncompleteCholesky<AMD>{}.create(prefix);
+        return IncompleteCholesky<AMD>{}.createWithString(prefix);
       }
       else {
         using NATURAL = Eigen::NaturalOrdering<typename Matrix::StorageIndex>;
-        return IncompleteCholesky<NATURAL>{}.create(prefix);
+        return IncompleteCholesky<NATURAL>{}.createWithString(prefix);
       }
     }
   };