diff --git a/dune/solvers/norms/h1seminorm.hh b/dune/solvers/norms/h1seminorm.hh
index f0f6146c2c11f2ac92170d4ca972c420efa229e3..99b53e49fa4602a7d649c93bd11c5ff249a50b79 100644
--- a/dune/solvers/norms/h1seminorm.hh
+++ b/dune/solvers/norms/h1seminorm.hh
@@ -11,13 +11,14 @@
 #include "norm.hh"
 
 //! Specialisation of the EnergyNorm class to identity blocks
-template<class VectorType>
-class H1SemiNorm : public Norm<VectorType>
+template<class V, class M = Dune::BCRSMatrix<Dune::FieldMatrix<double,1,1> >>
+class H1SemiNorm : public Norm<V>
 {
 public:
+    typedef V VectorType;
     H1SemiNorm() : matrix_(NULL) {}
 
-    H1SemiNorm(const Dune::BCRSMatrix<Dune::FieldMatrix<double,1,1> >& matrix)
+    H1SemiNorm(const MatrixType& matrix)
         : matrix_(&matrix)
     {
       assert(matrix.N() == matrix.M());
@@ -69,7 +70,7 @@ public:
         return std::sqrt(sum);
     }
 
-    const Dune::BCRSMatrix<Dune::FieldMatrix<double,1,1> >* matrix_;
+    const MatrixType* matrix_;
 
 };