diff --git a/src/mysolver.cc b/src/mysolver.cc
index 6326347670a27b7ab4e35d1b8f6c590b842e7281..9b9a7b62957e02a856ce325b9f96b3f3fa8fbab6 100644
--- a/src/mysolver.cc
+++ b/src/mysolver.cc
@@ -10,9 +10,8 @@
 
 #include "mysolver.hh"
 
-template <int dim, class MatrixType, class VectorType, class GridType,
-          class BlockProblemType>
-MySolver<dim, MatrixType, VectorType, GridType, BlockProblemType>::MySolver(
+template <int dim, class MatrixType, class VectorType, class GridType>
+MySolver<dim, MatrixType, VectorType, GridType>::MySolver(
     Dune::ParameterTree const &parset, int refinements, double solver_tolerance,
     GridType const &grid, Dune::BitSetVector<dim> const &ignoreNodes)
     : baseEnergyNorm(linearBaseSolverStep),
@@ -42,20 +41,17 @@ MySolver<dim, MatrixType, VectorType, GridType, BlockProblemType>::MySolver(
   multigridStep->ignoreNodes_ = &ignoreNodes;
 }
 
-template <int dim, class MatrixType, class VectorType, class GridType,
-          class BlockProblemType>
-MySolver<dim, MatrixType, VectorType, GridType, BlockProblemType>::~MySolver() {
+template <int dim, class MatrixType, class VectorType, class GridType>
+MySolver<dim, MatrixType, VectorType, GridType>::~MySolver() {
   for (auto &x : transferOperators)
     delete x;
 
   delete multigridStep;
 }
 
-template <int dim, class MatrixType, class VectorType, class GridType,
-          class BlockProblemType>
-typename MySolver<dim, MatrixType, VectorType, GridType,
-                  BlockProblemType>::SolverType *
-MySolver<dim, MatrixType, VectorType, GridType, BlockProblemType>::getSolver() {
+template <int dim, class MatrixType, class VectorType, class GridType>
+typename MySolver<dim, MatrixType, VectorType, GridType>::SolverType *
+MySolver<dim, MatrixType, VectorType, GridType>::getSolver() {
   return multigridStep;
 }
 
diff --git a/src/mysolver.hh b/src/mysolver.hh
index a87ed9153338918fffb3bcafdd1c878c8e9b6a9b..9fb71093021910f179d3f59cf988562e51fb6249 100644
--- a/src/mysolver.hh
+++ b/src/mysolver.hh
@@ -13,10 +13,14 @@
 #include <dune/fufem/assemblers/transferoperatorassembler.hh>
 #include <dune/tnnmg/iterationsteps/tnnmgstep.hh>
 
-template <int dim, class MatrixType, class VectorType, class GridType,
-          class BlockProblemType>
+#include "dune/tectonic/myblockproblem.hh"
+#include "dune/tectonic/myconvexproblem.hh"
+
+template <int dim, class MatrixType, class VectorType, class GridType>
 class MySolver {
 private:
+  typedef MyConvexProblem<MatrixType, VectorType> ConvexProblemType;
+  typedef MyBlockProblem<ConvexProblemType> BlockProblemType;
   typedef GenericNonlinearGS<BlockProblemType> NonlinearSmootherType;
   typedef TruncatedNonsmoothNewtonMultigrid<BlockProblemType,
                                             NonlinearSmootherType> SolverType;
diff --git a/src/mysolver_tmpl.cc b/src/mysolver_tmpl.cc
index a91b0f7acb4762d8e7f64664a803758e3ebd0a65..2aad58425f50fc97246528e5ef66afd8bea69cee 100644
--- a/src/mysolver_tmpl.cc
+++ b/src/mysolver_tmpl.cc
@@ -16,10 +16,6 @@ typedef Dune::FieldMatrix<double, DIM, DIM> SmallMatrix;
 typedef Dune::BlockVector<SmallVector> VectorType;
 typedef Dune::BCRSMatrix<SmallMatrix> MatrixType;
 
-typedef MyConvexProblem<MatrixType, VectorType> MyConvexProblemType;
-typedef MyBlockProblem<MyConvexProblemType> MyBlockProblemType;
-
 typedef Dune::ALUGrid<DIM, DIM, Dune::simplex, Dune::nonconforming> GridType;
 
-template class MySolver<DIM, MatrixType, VectorType, GridType,
-                        MyBlockProblemType>;
+template class MySolver<DIM, MatrixType, VectorType, GridType>;
diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index bce61eb711795221d24fc4d0279766b4884b0af2..27ba70300efdf6aee7de81ed0964b44221d2642d 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -341,9 +341,9 @@ int main(int argc, char *argv[]) {
     auto const solverTolerance = parset.get<double>("solver.tolerance");
     typedef MyConvexProblem<MatrixType, VectorType> MyConvexProblemType;
     typedef MyBlockProblem<MyConvexProblemType> MyBlockProblemType;
-    MySolver<dims, MatrixType, VectorType, GridType, MyBlockProblemType>
-    solverHost(parset.sub("solver.tnnmg"), refinements, solverTolerance, *grid,
-               ignoreNodes);
+    MySolver<dims, MatrixType, VectorType, GridType> solverHost(
+        parset.sub("solver.tnnmg"), refinements, solverTolerance, *grid,
+        ignoreNodes);
     auto multigridStep = solverHost.getSolver();
     Solver::VerbosityMode const verbosity =
         parset.get<bool>("verbose") ? Solver::FULL : Solver::QUIET;