diff --git a/test/freeflow/navierstokes/angeli/main.cc b/test/freeflow/navierstokes/angeli/main.cc
index d13d56d99615fa969fd59448f96be5bec69a9ec8..923d3cb7f6791940f06e340bc94ca5beb746b7d3 100644
--- a/test/freeflow/navierstokes/angeli/main.cc
+++ b/test/freeflow/navierstokes/angeli/main.cc
@@ -41,7 +41,9 @@
 #include <dumux/io/vtkoutputmodule.hh>
 #include <dumux/io/grid/gridmanager_yasp.hh>
 
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 
 #include <dumux/multidomain/fvassembler.hh>
 #include <dumux/multidomain/traits.hh>
@@ -154,7 +156,7 @@ int main(int argc, char** argv)
                                                  couplingManager, timeLoop, xOld);
 
     // the linear solver
-    using LinearSolver = Dumux::UMFPackBackend;
+    using LinearSolver = Dumux::UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     // the non-linear solver
diff --git a/test/freeflow/navierstokes/channel/1d/main.cc b/test/freeflow/navierstokes/channel/1d/main.cc
index a17cc4da6a3c9ff491b9730b81cb4e094c055145..ee97c68e78f51458850874f10f95d9113274900f 100644
--- a/test/freeflow/navierstokes/channel/1d/main.cc
+++ b/test/freeflow/navierstokes/channel/1d/main.cc
@@ -36,7 +36,9 @@
 #include <dumux/io/grid/gridmanager_yasp.hh>
 #include <dumux/io/vtkoutputmodule.hh>
 
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 
 #include <dumux/multidomain/fvassembler.hh>
 #include <dumux/multidomain/traits.hh>
@@ -132,7 +134,7 @@ int main(int argc, char** argv)
     vtkWriter.write(0.0);
 
     // the linear solver
-    using LinearSolver = Dumux::UMFPackBackend;
+    using LinearSolver = Dumux::UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     // the non-linear solver
diff --git a/test/freeflow/navierstokes/channel/2d/main.cc b/test/freeflow/navierstokes/channel/2d/main.cc
index 8d33f25d7622d1a3178a81ba6b8c993b993d0338..4f2f60446a407867324e7efdbed8da909d7e86c4 100644
--- a/test/freeflow/navierstokes/channel/2d/main.cc
+++ b/test/freeflow/navierstokes/channel/2d/main.cc
@@ -39,7 +39,9 @@
 #include <dumux/common/parameters.hh>
 #include <dumux/common/properties.hh>
 #include <dumux/io/grid/gridmanager.hh>
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 
 #include <dumux/multidomain/newtonsolver.hh>
 #include <dumux/multidomain/fvassembler.hh>
@@ -177,7 +179,7 @@ int main(int argc, char** argv)
         );
 
     // the linear solver
-    using LinearSolver = Dumux::UMFPackBackend;
+    using LinearSolver = Dumux::UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     // the non-linear solver
diff --git a/test/freeflow/navierstokes/channel/3d/main.cc b/test/freeflow/navierstokes/channel/3d/main.cc
index 0ace80a0c7f696a1e8ed5fd92f08bffb7de47777..e330e0e858af0875ce9e79da2f3a80e1820aab9e 100644
--- a/test/freeflow/navierstokes/channel/3d/main.cc
+++ b/test/freeflow/navierstokes/channel/3d/main.cc
@@ -39,7 +39,9 @@
 #include <dumux/io/grid/gridmanager_sub.hh>
 #include <dumux/io/grid/gridmanager_yasp.hh>
 
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 #include <dumux/multidomain/fvassembler.hh>
 #include <dumux/multidomain/traits.hh>
 #include <dumux/multidomain/newtonsolver.hh>
@@ -155,7 +157,7 @@ int main(int argc, char** argv)
     vtkWriter.write(0.0);
 
     // the linear solver
-    using LinearSolver = Dumux::UMFPackBackend;
+    using LinearSolver = Dumux::UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     // the non-linear solver
diff --git a/test/freeflow/navierstokes/channel/3d_nonuniform/main.cc b/test/freeflow/navierstokes/channel/3d_nonuniform/main.cc
index b0874dd3a6c5bee2c4a758e0da06f15e25725aaa..3ce16c8ab19a035e327d3138398b7682b07e4955 100644
--- a/test/freeflow/navierstokes/channel/3d_nonuniform/main.cc
+++ b/test/freeflow/navierstokes/channel/3d_nonuniform/main.cc
@@ -38,7 +38,9 @@
 #include <dumux/io/vtkoutputmodule.hh>
 #include <dumux/io/grid/gridmanager_ug.hh>
 
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 #include <dumux/linear/linearsolvertraits.hh>
 
 #include <dumux/multidomain/fvassembler.hh>
@@ -133,7 +135,7 @@ int main(int argc, char** argv)
     vtkWriter.write(0.0);
 
     // the linearize and solve
-    using LinearSolver = UMFPackBackend;
+    using LinearSolver = UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
     using NewtonSolver = MultiDomainNewtonSolver<Assembler, LinearSolver, CouplingManager>;
     NewtonSolver nonLinearSolver(assembler, linearSolver, couplingManager);
diff --git a/test/freeflow/navierstokes/channel/pipe/main.cc b/test/freeflow/navierstokes/channel/pipe/main.cc
index 45ef3105b5ac303bcbcc83bcf2c8c3ad390a9a64..a62d710d3b5c6cb2835aab0571a657ff0e8fb20f 100644
--- a/test/freeflow/navierstokes/channel/pipe/main.cc
+++ b/test/freeflow/navierstokes/channel/pipe/main.cc
@@ -34,7 +34,9 @@
 #include <dumux/io/grid/gridmanager_yasp.hh>
 #include <dumux/io/vtkoutputmodule.hh>
 
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 
 #include <dumux/nonlinear/newtonsolver.hh>
 
@@ -125,7 +127,7 @@ int main(int argc, char** argv)
     vtkWriter.write(0.0);
 
     // the linear solver
-    using LinearSolver = Dumux::UMFPackBackend;
+    using LinearSolver = Dumux::UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     // the non-linear solver
diff --git a/test/freeflow/navierstokes/channel/pipe/momentum/main.cc b/test/freeflow/navierstokes/channel/pipe/momentum/main.cc
index 0d0957de5a9c673b8c0f4e0e5cc884771b3048da..075685cd00097e55f75631081397c23259e0361b 100644
--- a/test/freeflow/navierstokes/channel/pipe/momentum/main.cc
+++ b/test/freeflow/navierstokes/channel/pipe/momentum/main.cc
@@ -35,7 +35,9 @@
 #include <dumux/io/grid/gridmanager_yasp.hh>
 #include <dumux/io/vtkoutputmodule.hh>
 
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 #include <dumux/nonlinear/newtonsolver.hh>
 
 #include <test/freeflow/navierstokes/errors.hh>
@@ -97,7 +99,7 @@ int main(int argc, char** argv)
     using Assembler = FVAssembler<TypeTag, DiffMethod::numeric>;
     auto assembler = std::make_shared<Assembler>(problem, gridGeometry, gridVariables);
 
-    using LinearSolver = UMFPackBackend;
+    using LinearSolver = UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     using NewtonSolver = Dumux::NewtonSolver<Assembler, LinearSolver>;
diff --git a/test/freeflow/navierstokes/periodic/main.cc b/test/freeflow/navierstokes/periodic/main.cc
index bbfade1112e6b62b3fdf5f720a91f3179dfa6ddb..033dba53ec0b5c030c6d23b193076e5506e702d0 100644
--- a/test/freeflow/navierstokes/periodic/main.cc
+++ b/test/freeflow/navierstokes/periodic/main.cc
@@ -37,7 +37,9 @@
 #include <dumux/io/grid/gridmanager.hh>
 #include <dumux/io/vtkoutputmodule.hh>
 #include <dumux/io/vtk/function.hh>
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 
 #include <dumux/multidomain/fvassembler.hh>
 #include <dumux/multidomain/traits.hh>
@@ -136,7 +138,7 @@ int main(int argc, char** argv)
     }
     faceVtk.addField(dofIdx, "dofIdx");
 
-    using LinearSolver = Dumux::UMFPackBackend;
+    using LinearSolver = Dumux::UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     // the non-linear solver
diff --git a/test/freeflow/navierstokesnc/channel/main.cc b/test/freeflow/navierstokesnc/channel/main.cc
index 329e3434157bb8d1777b3293a423231e3708c7ee..0581764f1784d354f5b13d0cd1a6c9887f9eafb3 100644
--- a/test/freeflow/navierstokesnc/channel/main.cc
+++ b/test/freeflow/navierstokesnc/channel/main.cc
@@ -40,7 +40,9 @@
 #include <dumux/common/properties.hh>
 #include <dumux/io/grid/gridmanager.hh>
 #include <dumux/io/staggeredvtkoutputmodule.hh>
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 #include <dumux/nonlinear/newtonsolver.hh>
 
 #include "properties.hh"
@@ -118,7 +120,7 @@ int main(int argc, char** argv)
     auto assembler = std::make_shared<Assembler>(problem, gridGeometry, gridVariables, timeLoop, xOld);
 
     // the linear solver
-    using LinearSolver = Dumux::UMFPackBackend;
+    using LinearSolver = Dumux::UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     // the non-linear solver
diff --git a/test/freeflow/navierstokesnc/densitydrivenflow/main.cc b/test/freeflow/navierstokesnc/densitydrivenflow/main.cc
index 3ada7130bde9a87ada682722c96325a34ceef5d2..be57c5c6713a0bbf11217baf9cd3cbf3c4496407 100644
--- a/test/freeflow/navierstokesnc/densitydrivenflow/main.cc
+++ b/test/freeflow/navierstokesnc/densitydrivenflow/main.cc
@@ -40,7 +40,9 @@
 #include <dumux/common/properties.hh>
 #include <dumux/io/grid/gridmanager.hh>
 #include <dumux/io/staggeredvtkoutputmodule.hh>
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 #include <dumux/nonlinear/newtonsolver.hh>
 
 #include "properties.hh"
@@ -117,7 +119,7 @@ int main(int argc, char** argv)
     auto assembler = std::make_shared<Assembler>(problem, gridGeometry, gridVariables, timeLoop, xOld);
 
     // the linear solver
-    using LinearSolver = Dumux::UMFPackBackend;
+    using LinearSolver = Dumux::UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     // the non-linear solver
diff --git a/test/freeflow/navierstokesnc/maxwellstefan/main.cc b/test/freeflow/navierstokesnc/maxwellstefan/main.cc
index 825f76808c17ccdaaf042992e2ff476bd6bce497..89e912bc177cb8503a6f6b11303e0d32811f21c9 100644
--- a/test/freeflow/navierstokesnc/maxwellstefan/main.cc
+++ b/test/freeflow/navierstokesnc/maxwellstefan/main.cc
@@ -40,7 +40,9 @@
 #include <dumux/common/properties.hh>
 #include <dumux/io/grid/gridmanager.hh>
 #include <dumux/io/staggeredvtkoutputmodule.hh>
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 #include <dumux/nonlinear/newtonsolver.hh>
 
 #include "properties.hh"
@@ -116,7 +118,7 @@ int main(int argc, char** argv)
     auto assembler = std::make_shared<Assembler>(problem, gridGeometry, gridVariables, timeLoop, xOld);
 
     // the linear solver
-    using LinearSolver = Dumux::UMFPackBackend;
+    using LinearSolver = Dumux::UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     // the non-linear solver
diff --git a/test/freeflow/rans/main.cc b/test/freeflow/rans/main.cc
index 1a77dad8d6b32481e4f26cdf6eecf79c72724117..d1d447bd5fc8d8947b8056098ec7d2adb6319c91 100644
--- a/test/freeflow/rans/main.cc
+++ b/test/freeflow/rans/main.cc
@@ -42,7 +42,9 @@
 #include <dumux/common/properties.hh>
 #include <dumux/io/grid/gridmanager.hh>
 #include <dumux/io/staggeredvtkoutputmodule.hh>
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 #include <dumux/nonlinear/newtonsolver.hh>
 #include <dumux/discretization/method.hh>
 
@@ -143,7 +145,7 @@ int main(int argc, char** argv)
     auto assembler = std::make_shared<Assembler>(problem, gridGeometry, gridVariables, timeLoop, xOld);
 
     // the linear solver
-    using LinearSolver = Dumux::UMFPackBackend;
+    using LinearSolver = Dumux::UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     // the non-linear solver
diff --git a/test/freeflow/ransnc/main.cc b/test/freeflow/ransnc/main.cc
index c31ac48e3853e8bf92cc3526c706e079ca46dc7b..e0bcb9d1dd62ceeba53bc6be68bf236ef390619a 100644
--- a/test/freeflow/ransnc/main.cc
+++ b/test/freeflow/ransnc/main.cc
@@ -41,7 +41,9 @@
 #include <dumux/io/loadsolution.hh>
 #include <dumux/io/grid/gridmanager.hh>
 #include <dumux/io/staggeredvtkoutputmodule.hh>
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 #include <dumux/nonlinear/newtonsolver.hh>
 
 #include "properties.hh"
@@ -175,7 +177,7 @@ int main(int argc, char** argv)
     auto assembler = std::make_shared<Assembler>(problem, gridGeometry, gridVariables, timeLoop, xOld);
 
     // the linear solver
-    using LinearSolver = Dumux::UMFPackBackend;
+    using LinearSolver = Dumux::UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     // the non-linear solver
diff --git a/test/multidomain/boundary/freeflowporousmedium/1p_1p/convergence/main.cc b/test/multidomain/boundary/freeflowporousmedium/1p_1p/convergence/main.cc
index b06352f32984befe3656e1184527a5d285f1a6d4..91860583557c2ece6f28f1cc44155b2f2397590d 100644
--- a/test/multidomain/boundary/freeflowporousmedium/1p_1p/convergence/main.cc
+++ b/test/multidomain/boundary/freeflowporousmedium/1p_1p/convergence/main.cc
@@ -34,7 +34,9 @@
 #include <dumux/common/parameters.hh>
 #include <dumux/common/dumuxmessage.hh>
 #include <dumux/common/partial.hh>
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 #include <dumux/assembly/fvassembler.hh>
 #include <dumux/discretization/method.hh>
 #include <dumux/io/format.hh>
@@ -281,7 +283,7 @@ int main(int argc, char** argv)
                                                  couplingManager);
 
     // the linear solver
-    using LinearSolver = UMFPackBackend;
+    using LinearSolver = UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     // the non-linear solver
diff --git a/test/porenetwork/1p/main.cc b/test/porenetwork/1p/main.cc
index 9644d3bb8ccde6bbe42404d49923de79db315deb..0e12adc86aa7c59bcf2714962c88b246b8eaf51d 100644
--- a/test/porenetwork/1p/main.cc
+++ b/test/porenetwork/1p/main.cc
@@ -36,7 +36,9 @@
 #include <dumux/common/properties.hh>
 #include <dumux/common/parameters.hh>
 #include <dumux/common/dumuxmessage.hh>
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 
 #include <dumux/porenetwork/common/pnmvtkoutputmodule.hh>
 #include <dumux/porenetwork/common/boundaryflux.hh>
@@ -123,7 +125,7 @@ int main(int argc, char** argv)
     Dune::Timer solverTimer;
     using LinearSolver = ILU0RestartedGMResBackend;
     // using LinearSolver = ILUnRestartedGMResBackend;
-    // using LinearSolver = UMFPackBackend;
+    // using LinearSolver = UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     if (mpiHelper.rank() == 0) std::cout << "Solving linear system using " + linearSolver->name() + "..." << std::flush;
diff --git a/test/porenetwork/1pnc/main.cc b/test/porenetwork/1pnc/main.cc
index 8ca9a7cb9edf53570e67e036bd38c957dc529392..ed128a861e40bb1ae332d21df23a9a5e6b7ebe1f 100644
--- a/test/porenetwork/1pnc/main.cc
+++ b/test/porenetwork/1pnc/main.cc
@@ -35,7 +35,9 @@
 #include <dumux/common/dumuxmessage.hh>
 #include <dumux/common/parameters.hh>
 #include <dumux/common/properties.hh>
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 #include <dumux/nonlinear/newtonsolver.hh>
 
 #include <dumux/porenetwork/common/pnmvtkoutputmodule.hh>
@@ -127,7 +129,7 @@ int main(int argc, char** argv)
     auto assembler = std::make_shared<Assembler>(problem, gridGeometry, gridVariables, timeLoop, xOld);
 
     // the linear solver
-    using LinearSolver = UMFPackBackend;
+    using LinearSolver = UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     // the non-linear solver
diff --git a/test/porenetwork/2p/main.cc b/test/porenetwork/2p/main.cc
index f578e4ec3d1d2eaca8e7e0522100069bcf8fd4a2..48a2f139b16b379be5aafece7eb437fea205b8b1 100644
--- a/test/porenetwork/2p/main.cc
+++ b/test/porenetwork/2p/main.cc
@@ -37,7 +37,9 @@
 #include <dumux/common/parameters.hh>
 #include <dumux/common/dumuxmessage.hh>
 #include <dumux/io/grid/porenetwork/gridmanager.hh>
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 #include <dumux/porenetwork/common/pnmvtkoutputmodule.hh>
 #include <dumux/porenetwork/2p/newtonsolver.hh>
 
@@ -127,7 +129,7 @@ int main(int argc, char** argv)
     auto assembler = std::make_shared<Assembler>(problem, gridGeometry, gridVariables, timeLoop, xOld);
 
     // the linear solver
-    using LinearSolver = UMFPackBackend;
+    using LinearSolver = UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     // the non-linear solver
diff --git a/test/porousmediumflow/1pnc/1p2c/nonisothermal/conduction/main.cc b/test/porousmediumflow/1pnc/1p2c/nonisothermal/conduction/main.cc
index ef393c2b8c1e13b60a687bf48c2a36876442a4fb..8b66628a4864145e38ce8a675351e65f71b642c1 100644
--- a/test/porousmediumflow/1pnc/1p2c/nonisothermal/conduction/main.cc
+++ b/test/porousmediumflow/1pnc/1p2c/nonisothermal/conduction/main.cc
@@ -39,7 +39,9 @@
 #include <dumux/common/dumuxmessage.hh>
 
 #include <dumux/nonlinear/newtonsolver.hh>
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 
 #include <dumux/assembly/fvassembler.hh>
 
@@ -126,7 +128,7 @@ int main(int argc, char** argv)
     auto assembler = std::make_shared<Assembler>(problem, gridGeometry, gridVariables, timeLoop, xOld);
 
     // the linear solver
-    //  using LinearSolver = UMFPackBackend;
+    //  using LinearSolver = UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     using LinearSolver = ILU0BiCGSTABBackend;
     auto linearSolver = std::make_shared<LinearSolver>();
 
diff --git a/test/porousmediumflow/1pnc/1p2c/nonisothermal/convection/main.cc b/test/porousmediumflow/1pnc/1p2c/nonisothermal/convection/main.cc
index e7dde80489825fc041c61025e631a0a43ea22a5e..1acc6406542ce49e2802bec9eb2eb643cfbdb883 100644
--- a/test/porousmediumflow/1pnc/1p2c/nonisothermal/convection/main.cc
+++ b/test/porousmediumflow/1pnc/1p2c/nonisothermal/convection/main.cc
@@ -39,7 +39,9 @@
 #include <dumux/common/dumuxmessage.hh>
 
 #include <dumux/nonlinear/newtonsolver.hh>
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 
 #include <dumux/assembly/fvassembler.hh>
 
@@ -126,7 +128,7 @@ int main(int argc, char** argv)
     auto assembler = std::make_shared<Assembler>(problem, gridGeometry, gridVariables, timeLoop, xOld);
 
     // the linear solver
-    //  using LinearSolver = UMFPackBackend;
+    //  using LinearSolver = UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     using LinearSolver = ILU0BiCGSTABBackend;
     auto linearSolver = std::make_shared<LinearSolver>();
 
diff --git a/test/porousmediumflow/1pnc/nonequilibrium/main.cc b/test/porousmediumflow/1pnc/nonequilibrium/main.cc
index 06ad770dc6b54fec57970d4fbe5757e8340471d0..33a6a8b33aae8be88b6c9ddeb1fd82501fd473dc 100644
--- a/test/porousmediumflow/1pnc/nonequilibrium/main.cc
+++ b/test/porousmediumflow/1pnc/nonequilibrium/main.cc
@@ -39,7 +39,9 @@
 #include <dumux/common/dumuxmessage.hh>
 
 #include <dumux/porousmediumflow/nonequilibrium/newtonsolver.hh>
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 
 #include <dumux/assembly/fvassembler.hh>
 
@@ -124,7 +126,7 @@ int main(int argc, char** argv)
     auto assembler = std::make_shared<Assembler>(problem, gridGeometry, gridVariables, timeLoop, xOld);
 
     // the linear solver
-    //  using LinearSolver = UMFPackBackend;
+    //  using LinearSolver = UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     using LinearSolver = ILU0BiCGSTABBackend;
     auto linearSolver = std::make_shared<LinearSolver>();
 
diff --git a/test/porousmediumflow/richards/benchmarks/main.cc b/test/porousmediumflow/richards/benchmarks/main.cc
index 45376d73a9ec3a0f2ef06e1c937cb1bbbf530ccb..96f791553f3215ebbdb29086e1abd75d24845fa4 100644
--- a/test/porousmediumflow/richards/benchmarks/main.cc
+++ b/test/porousmediumflow/richards/benchmarks/main.cc
@@ -40,7 +40,9 @@
 #include <dumux/common/math.hh>
 
 #include <dumux/linear/linearsolvertraits.hh>
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 
 #include <dumux/io/format.hh>
 #include <dumux/io/gnuplotinterface.hh>
@@ -96,7 +98,7 @@ int main(int argc, char** argv)
     vtkWriter->addVolumeVariable([](const auto& volVars){ return volVars.saturation(0); }, "saturation");
     vtkWriter->addVolumeVariable([](const auto& volVars){ return volVars.pressure(0); }, "pressure");
 
-    using LinearSolver = UMFPackBackend;
+    using LinearSolver = UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     using Assembler = FVAssembler<TypeTag, DiffMethod::analytic>;
diff --git a/test/porousmediumflow/tracer/constvel/main.cc b/test/porousmediumflow/tracer/constvel/main.cc
index c2a782a5ff3405fa915537ce86b4ccc567c302c8..b0732978178bf04beb97bd819d2fffdb535fc1ac 100644
--- a/test/porousmediumflow/tracer/constvel/main.cc
+++ b/test/porousmediumflow/tracer/constvel/main.cc
@@ -35,7 +35,9 @@
 #include <dumux/common/parameters.hh>
 #include <dumux/common/dumuxmessage.hh>
 
-#include <dumux/linear/seqsolverbackend.hh>
+#include <dumux/linear/istlsolvers.hh>
+#include <dumux/linear/linearsolvertraits.hh>
+#include <dumux/linear/linearalgebratraits.hh>
 #include <dumux/linear/pdesolver.hh>
 #include <dumux/assembly/fvassembler.hh>
 
@@ -111,7 +113,7 @@ int main(int argc, char** argv)
     auto assembler = std::make_shared<Assembler>(problem, gridGeometry, gridVariables, timeLoop, xOld);
 
     //! the linear solver
-    using LinearSolver = UMFPackBackend;
+    using LinearSolver = UMFPackIstlSolver<SeqLinearSolverTraits, LinearAlgebraTraitsFromAssembler<Assembler>>;
     auto linearSolver = std::make_shared<LinearSolver>();
 
     //! pde solver (assemble, solve, update)