diff --git a/dune/matrix-vector/algorithm.hh b/dune/matrix-vector/algorithm.hh
index 5a1c710734b166904e29ae3842954041fcd89134..3fb24530a73a2d4de4947d003c180ae1eccc6ca1 100644
--- a/dune/matrix-vector/algorithm.hh
+++ b/dune/matrix-vector/algorithm.hh
@@ -3,20 +3,12 @@
 #ifndef DUNE_MATRIX_VECTOR_ALGORITHM_HH
 #define DUNE_MATRIX_VECTOR_ALGORITHM_HH
 
-#include <type_traits>
-
 #include <dune/common/hybridutilities.hh>
-#include <dune/common/typetraits.hh>
-#include <dune/common/std/type_traits.hh>
+#include <dune/matrix-vector/traitutilities.hh>
 
 namespace Dune {
 namespace MatrixVector {
 
-template<class T>
-constexpr auto isTupleOrDerived() {
-  return Std::bool_constant<IsTupleOrDerived<std::decay_t<T>>::value>();
-}
-
 //! \brief Hybrid for loop over sparse range (static/tuple-like candidate)
 template <class Range, class F, std::enable_if_t<isTupleOrDerived<Range>(), int> = 0>
 void sparseRangeFor(Range&& range, F&& f) {