diff --git a/dune/solvers/common/genericvectortools.hh b/dune/solvers/common/genericvectortools.hh
index d666e5aa2ac3fa02305084fa56c32a23bd194beb..c0a9bc0bc89d496bf862f6e87b655acc3a855c2f 100644
--- a/dune/solvers/common/genericvectortools.hh
+++ b/dune/solvers/common/genericvectortools.hh
@@ -32,8 +32,9 @@ struct GenericVector
     template <class VectorType>
     static void writeBinary(std::ostream& s, const VectorType& v)
     {
-        Dune::Solvers::integralRangeFor<std::size_t>(Dune::Indices::_0, Dune::Solvers::hybridSize(v), [&](auto&& i) {
-            GenericVector::writeBinary(s, v[i]);
+        namespace HA = Dune::Solvers::HybridAlgorithm;
+        HA::forEach(v, [&](auto&& vi) {
+            GenericVector::writeBinary(s, vi);
         });
     }
 
@@ -51,10 +52,10 @@ struct GenericVector
     template <class VectorType>
     static void readBinary(std::istream& s, VectorType& v)
     {
-        typename VectorType::iterator it = v.begin();
-        typename VectorType::iterator end = v.end();
-        for(; it!=end; ++it)
-            GenericVector::readBinary(s, *it);
+        namespace HA = Dune::Solvers::HybridAlgorithm;
+        HA::forEach(v, [&](auto&& vi) {
+            GenericVector::readBinary(s, vi);
+        });
     }
 
     template <class field_type, int n>