diff --git a/src/enum_verbosity.cc b/src/enum_verbosity.cc
new file mode 100644
index 0000000000000000000000000000000000000000..eee21da1034c7d07f0716f31a155fb6951598d72
--- /dev/null
+++ b/src/enum_verbosity.cc
@@ -0,0 +1,17 @@
+#include <dune/solvers/common/numproc.hh> // Solver::VerbosityMode
+#include <dune/common/exceptions.hh>
+
+template <> struct StringToEnum<Solver::VerbosityMode> {
+  static Solver::VerbosityMode convert(std::string const &s) {
+    if (s == "full")
+      return Solver::FULL;
+
+    if (s == "reduced")
+      return Solver::REDUCED;
+
+    if (s == "quiet")
+      return Solver::QUIET;
+
+    DUNE_THROW(Dune::Exception, "failed to parse enum");
+  }
+};
diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index b78b4bfbeab660f0ec54b60d31de038b5ebafd9c..d17cdcef68ae4d6b40af9af91ecaecd604479530 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -83,6 +83,7 @@
 #include "enum_parser.cc"
 #include "enum_state_model.cc"
 #include "enum_scheme.cc"
+#include "enum_verbosity.cc"
 
 #include "timestepping.hh"
 
@@ -367,8 +368,7 @@ int main(int argc, char *argv[]) {
                                             refinements, 1e-12, // FIXME,
                                             *grid, displacementDirichletNodes);
       auto multigridStep = displacementFactory.getSolver();
-      Solver::VerbosityMode const verbosity =
-          parset.get<bool>("verbose") ? Solver::FULL : Solver::QUIET;
+      auto const verbosity = parset.get<Solver::VerbosityMode>("verbosity");
 
       typename LinearFactoryType::ConvexProblemType myConvexProblem(
           1.0, A, zeroNonlinearity, ell, u_initial);
@@ -420,8 +420,7 @@ int main(int argc, char *argv[]) {
                                             refinements, 1e-12, // FIXME,
                                             *grid, accelerationDirichletNodes);
       auto multigridStep = accelerationFactory.getSolver();
-      Solver::VerbosityMode const verbosity =
-          parset.get<bool>("verbose") ? Solver::FULL : Solver::QUIET;
+      auto const verbosity = parset.get<Solver::VerbosityMode>("verbosity");
 
       typename LinearFactoryType::ConvexProblemType myConvexProblem(
           1.0, M, zeroNonlinearity, problem_rhs_initial, a_initial);
@@ -452,8 +451,7 @@ int main(int argc, char *argv[]) {
                                  solverTolerance, *grid,
                                  velocityDirichletNodes);
     auto multigridStep = factory.getSolver();
-    Solver::VerbosityMode const verbosity =
-        parset.get<bool>("verbose") ? Solver::FULL : Solver::QUIET;
+    auto const verbosity = parset.get<Solver::VerbosityMode>("verbosity");
 
     {
       std::fstream coordinateWriter("coordinates", std::fstream::out);
diff --git a/src/one-body-sample.parset b/src/one-body-sample.parset
index d3eecdd8b256d56b35cfcac88cc1b212738c9f9a..e6945cbc9f578af586cdc721247197cd2c484bfa 100644
--- a/src/one-body-sample.parset
+++ b/src/one-body-sample.parset
@@ -2,7 +2,7 @@
 timeSteps = 10000
 endOfTime = 15
 
-verbose = false
+verbosity = quiet
 printProgress = false
 
 writeVTK = false