diff --git a/src/Benchmarks/BLAS/spmv.h b/src/Benchmarks/BLAS/spmv.h
index d515d52d73d513d87b86d4b743d8b0e27b20e0ca..6685b9f766237dbcbe2d2a017eb1d8dac9a87135 100644
--- a/src/Benchmarks/BLAS/spmv.h
+++ b/src/Benchmarks/BLAS/spmv.h
@@ -15,10 +15,10 @@
 #include "../Benchmarks.h"
 
 #include <TNL/Pointers/DevicePointer.h>
-#include <TNL/Matrices/CSR.h>
-#include <TNL/Matrices/Ellpack.h>
-#include <TNL/Matrices/SlicedEllpack.h>
-#include <TNL/Matrices/ChunkedEllpack.h>
+#include <TNL/Matrices/Legacy/CSR.h>
+#include <TNL/Matrices/Legacy/Ellpack.h>
+#include <TNL/Matrices/Legacy/SlicedEllpack.h>
+#include <TNL/Matrices/Legacy/ChunkedEllpack.h>
 
 namespace TNL {
 namespace Benchmarks {
diff --git a/src/Benchmarks/DistSpMV/tnl-benchmark-distributed-spmv.h b/src/Benchmarks/DistSpMV/tnl-benchmark-distributed-spmv.h
index aa4b29424d2b93b323017e5501231a57874ccfa4..b90b11088ef8f73511adb2ba5c58448e93e2bcf8 100644
--- a/src/Benchmarks/DistSpMV/tnl-benchmark-distributed-spmv.h
+++ b/src/Benchmarks/DistSpMV/tnl-benchmark-distributed-spmv.h
@@ -30,7 +30,7 @@
 #include "../Benchmarks.h"
 #include "ordering.h"
 
-#include <TNL/Matrices/SlicedEllpack.h>
+#include <TNL/Matrices/Legacy/SlicedEllpack.h>
 
 using namespace TNL;
 using namespace TNL::Benchmarks;
diff --git a/src/Benchmarks/LinearSolvers/tnl-benchmark-linear-solvers.h b/src/Benchmarks/LinearSolvers/tnl-benchmark-linear-solvers.h
index 4aabf39cd4bae98bc411fcc95feef56672b039ca..9c58d25b0e2c2c9401f657285762f5529d8990f5 100644
--- a/src/Benchmarks/LinearSolvers/tnl-benchmark-linear-solvers.h
+++ b/src/Benchmarks/LinearSolvers/tnl-benchmark-linear-solvers.h
@@ -55,7 +55,7 @@
    #define HAVE_CUSOLVER
 #endif
 
-#include <TNL/Matrices/SlicedEllpack.h>
+#include <TNL/Matrices/Legacy/SlicedEllpack.h>
 
 using namespace TNL;
 using namespace TNL::Benchmarks;
diff --git a/src/Benchmarks/ODESolvers/tnl-benchmark-ode-solvers.h b/src/Benchmarks/ODESolvers/tnl-benchmark-ode-solvers.h
index d29b680bc8835a5615073fbf61e3cc13a74dfca2..1e4bc380e74dd817003b840754c9e1160b5a2af1 100644
--- a/src/Benchmarks/ODESolvers/tnl-benchmark-ode-solvers.h
+++ b/src/Benchmarks/ODESolvers/tnl-benchmark-ode-solvers.h
@@ -36,7 +36,7 @@
 #include "Euler.h"
 #include "Merson.h"
 
-#include <TNL/Matrices/SlicedEllpack.h>
+#include <TNL/Matrices/Legacy/SlicedEllpack.h>
 
 using namespace TNL;
 using namespace TNL::Benchmarks;
diff --git a/src/Benchmarks/SpMV/spmv.h b/src/Benchmarks/SpMV/spmv.h
index 8a222c7b5e741e1e92dac9c461109cc3dc227bb1..e3a1ae047ee137980f18da8f0e790d7f1ad0a452 100644
--- a/src/Benchmarks/SpMV/spmv.h
+++ b/src/Benchmarks/SpMV/spmv.h
@@ -17,12 +17,12 @@
 #include "../Benchmarks.h"
 
 #include <TNL/Pointers/DevicePointer.h>
-#include <TNL/Matrices/CSR.h>
-#include <TNL/Matrices/Ellpack.h>
-#include <TNL/Matrices/SlicedEllpack.h>
-#include <TNL/Matrices/ChunkedEllpack.h>
-#include <TNL/Matrices/AdEllpack.h>
-#include <TNL/Matrices/BiEllpack.h>
+#include <TNL/Matrices/Legacy/CSR.h>
+#include <TNL/Matrices/Legacy/Ellpack.h>
+#include <TNL/Matrices/Legacy/SlicedEllpack.h>
+#include <TNL/Matrices/Legacy/ChunkedEllpack.h>
+#include <TNL/Matrices/Legacy/AdEllpack.h>
+#include <TNL/Matrices/Legacy/BiEllpack.h>
 
 #include <TNL/Matrices/MatrixReader.h>
 
diff --git a/src/Python/pytnl/tnl/SparseMatrix.cpp b/src/Python/pytnl/tnl/SparseMatrix.cpp
index e6584998313fa9e3c1314c6f67b99267815cf0a8..fe3ba5aca7f2dbb96817760620cf3369b3b43140 100644
--- a/src/Python/pytnl/tnl/SparseMatrix.cpp
+++ b/src/Python/pytnl/tnl/SparseMatrix.cpp
@@ -3,9 +3,9 @@
 
 #include "SparseMatrix.h"
 
-#include <TNL/Matrices/CSR.h>
-#include <TNL/Matrices/Ellpack.h>
-#include <TNL/Matrices/SlicedEllpack.h>
+#include <TNL/Matrices/Legacy/CSR.h>
+#include <TNL/Matrices/Legacy/Ellpack.h>
+#include <TNL/Matrices/Legacy/SlicedEllpack.h>
 
 using CSR_host = TNL::Matrices::CSR< double, TNL::Devices::Host, int >;
 using CSR_cuda = TNL::Matrices::CSR< double, TNL::Devices::Cuda, int >;
diff --git a/src/Python/pytnl/tnl/SparseMatrix.h b/src/Python/pytnl/tnl/SparseMatrix.h
index 1a32bd257f52a14f07579abe3671df1978cfc4d2..03ec5814c4852542448a9bbe87859ef477c357b0 100644
--- a/src/Python/pytnl/tnl/SparseMatrix.h
+++ b/src/Python/pytnl/tnl/SparseMatrix.h
@@ -5,7 +5,7 @@ namespace py = pybind11;
 
 #include <TNL/String.h>
 #include <TNL/Containers/Vector.h>
-#include <TNL/Matrices/CSR.h>
+#include <TNL/Matrices/Legacy/CSR.h>
 
 template< typename Matrix >
 struct SpecificExports
diff --git a/src/TNL/Matrices/DistributedMatrix.h b/src/TNL/Matrices/DistributedMatrix.h
index 76b6ea8c1d5173ee8d0cd85421d919085fe590e5..05ee2839152940503f385d883575c9e5730041a2 100644
--- a/src/TNL/Matrices/DistributedMatrix.h
+++ b/src/TNL/Matrices/DistributedMatrix.h
@@ -14,7 +14,7 @@
 
 #include <type_traits>
 
-#include <TNL/Matrices/SparseRow.h>
+#include <TNL/Matrices/Legacy/SparseRow.h>
 #include <TNL/Communicators/MpiCommunicator.h>
 #include <TNL/Containers/Subrange.h>
 #include <TNL/Containers/DistributedVector.h>
diff --git a/src/TNL/Matrices/AdEllpack.h b/src/TNL/Matrices/Legacy/AdEllpack.h
similarity index 99%
rename from src/TNL/Matrices/AdEllpack.h
rename to src/TNL/Matrices/Legacy/AdEllpack.h
index f011e6c804429b4059b972b5249feaa1de5f8922..3d2db7b963976373972ad3a4e02f5c41a6ee7614 100644
--- a/src/TNL/Matrices/AdEllpack.h
+++ b/src/TNL/Matrices/Legacy/AdEllpack.h
@@ -18,7 +18,7 @@
 
 #pragma once
 
-#include <TNL/Matrices/Sparse.h>
+#include <TNL/Matrices/Legacy/Sparse.h>
 #include <TNL/Containers/Vector.h>
 
 namespace TNL {
@@ -293,4 +293,4 @@ protected:
 } // namespace Matrices
 } // namespace TNL
 
-#include <TNL/Matrices/AdEllpack_impl.h>
+#include <TNL/Matrices/Legacy/AdEllpack_impl.h>
diff --git a/src/TNL/Matrices/AdEllpack_impl.h b/src/TNL/Matrices/Legacy/AdEllpack_impl.h
similarity index 99%
rename from src/TNL/Matrices/AdEllpack_impl.h
rename to src/TNL/Matrices/Legacy/AdEllpack_impl.h
index b7b97ff93550ef8c7289b749156e1fd5973e2f7d..234e18f94fd4fe9fc0beb9fd4d55341198b21607 100644
--- a/src/TNL/Matrices/AdEllpack_impl.h
+++ b/src/TNL/Matrices/Legacy/AdEllpack_impl.h
@@ -8,7 +8,7 @@
 
 /* See Copyright Notice in tnl/Copyright */
 
-#include <TNL/Matrices/AdEllpack.h>
+#include <TNL/Matrices/Legacy/AdEllpack.h>
 #include <TNL/Containers/Vector.h>
 #include <TNL/Math.h>
 #include <TNL/TypeInfo.h>
diff --git a/src/TNL/Matrices/BiEllpack.h b/src/TNL/Matrices/Legacy/BiEllpack.h
similarity index 98%
rename from src/TNL/Matrices/BiEllpack.h
rename to src/TNL/Matrices/Legacy/BiEllpack.h
index 3ec4b662fe19979939006a5cd011d037501fdb10..fe3fd9e11629b66bd7c7722936197ef5180c7158 100644
--- a/src/TNL/Matrices/BiEllpack.h
+++ b/src/TNL/Matrices/Legacy/BiEllpack.h
@@ -18,7 +18,7 @@
 
 #pragma once
 
-#include <TNL/Matrices/Sparse.h>
+#include <TNL/Matrices/Legacy/Sparse.h>
 #include <TNL/Containers/Vector.h>
 
 namespace TNL {
@@ -217,5 +217,5 @@ private:
    } //namespace Matrices
 } // namespace TNL
 
-#include <TNL/Matrices/BiEllpack_impl.h>
+#include <TNL/Matrices/Legacy/BiEllpack_impl.h>
 
diff --git a/src/TNL/Matrices/BiEllpackSymmetric.h b/src/TNL/Matrices/Legacy/BiEllpackSymmetric.h
similarity index 100%
rename from src/TNL/Matrices/BiEllpackSymmetric.h
rename to src/TNL/Matrices/Legacy/BiEllpackSymmetric.h
diff --git a/src/TNL/Matrices/BiEllpackSymmetric_impl.h b/src/TNL/Matrices/Legacy/BiEllpackSymmetric_impl.h
similarity index 100%
rename from src/TNL/Matrices/BiEllpackSymmetric_impl.h
rename to src/TNL/Matrices/Legacy/BiEllpackSymmetric_impl.h
diff --git a/src/TNL/Matrices/BiEllpack_impl.h b/src/TNL/Matrices/Legacy/BiEllpack_impl.h
similarity index 99%
rename from src/TNL/Matrices/BiEllpack_impl.h
rename to src/TNL/Matrices/Legacy/BiEllpack_impl.h
index c659b758e9cffe531a101baf8fe3cd812436fe2c..36732a39a2fa493a8436d2b01a376a7c68272abc 100644
--- a/src/TNL/Matrices/BiEllpack_impl.h
+++ b/src/TNL/Matrices/Legacy/BiEllpack_impl.h
@@ -11,7 +11,7 @@
 #pragma once
 
 
-#include <TNL/Matrices/BiEllpack.h>
+#include <TNL/Matrices/Legacy/BiEllpack.h>
 #include <TNL/Containers/Vector.h>
 #include <TNL/Math.h>
 #include <cstdio>
diff --git a/src/TNL/Matrices/CSR.h b/src/TNL/Matrices/Legacy/CSR.h
similarity index 99%
rename from src/TNL/Matrices/CSR.h
rename to src/TNL/Matrices/Legacy/CSR.h
index 485176d1d849b4be2c296a0f131f5ee2299f89f2..b68434252d34d380be2200d7221569e582b2af3d 100644
--- a/src/TNL/Matrices/CSR.h
+++ b/src/TNL/Matrices/Legacy/CSR.h
@@ -10,7 +10,7 @@
 
 #pragma once 
 
-#include <TNL/Matrices/Sparse.h>
+#include <TNL/Matrices/Legacy/Sparse.h>
 #include <TNL/Containers/Vector.h>
 
 #include <TNL/Devices/Cuda.h>
@@ -272,4 +272,4 @@ protected:
 } // namespace Matrices
 } // namespace TNL
 
-#include <TNL/Matrices/CSR_impl.h>
+#include <TNL/Matrices/Legacy/CSR_impl.h>
diff --git a/src/TNL/Matrices/CSR_impl.h b/src/TNL/Matrices/Legacy/CSR_impl.h
similarity index 99%
rename from src/TNL/Matrices/CSR_impl.h
rename to src/TNL/Matrices/Legacy/CSR_impl.h
index db31d6dcde6a07cd8b19e87f843f3b6e8b994c5c..08b35f56329b2ea3231ffd0668df29ef5b4ac3df 100644
--- a/src/TNL/Matrices/CSR_impl.h
+++ b/src/TNL/Matrices/Legacy/CSR_impl.h
@@ -10,7 +10,7 @@
 
 #pragma once
 
-#include <TNL/Matrices/CSR.h>
+#include <TNL/Matrices/Legacy/CSR.h>
 #include <TNL/Containers/VectorView.h>
 #include <TNL/Math.h>
 #include <TNL/Exceptions/NotImplementedError.h>
diff --git a/src/TNL/Matrices/ChunkedEllpack.h b/src/TNL/Matrices/Legacy/ChunkedEllpack.h
similarity index 99%
rename from src/TNL/Matrices/ChunkedEllpack.h
rename to src/TNL/Matrices/Legacy/ChunkedEllpack.h
index 9d422079608f52e7e89a9954496cbd22c0786c06..a0f55b3263d0911455318886cc680f5242de820b 100644
--- a/src/TNL/Matrices/ChunkedEllpack.h
+++ b/src/TNL/Matrices/Legacy/ChunkedEllpack.h
@@ -22,7 +22,7 @@
 
 #pragma once
 
-#include <TNL/Matrices/Sparse.h>
+#include <TNL/Matrices/Legacy/Sparse.h>
 #include <TNL/Containers/Vector.h>
 
 namespace TNL {
@@ -352,5 +352,5 @@ protected:
 } // namespace Matrices
 } // namespace TNL
 
-#include <TNL/Matrices/ChunkedEllpack_impl.h>
+#include <TNL/Matrices/Legacy/ChunkedEllpack_impl.h>
 
diff --git a/src/TNL/Matrices/ChunkedEllpack_impl.h b/src/TNL/Matrices/Legacy/ChunkedEllpack_impl.h
similarity index 99%
rename from src/TNL/Matrices/ChunkedEllpack_impl.h
rename to src/TNL/Matrices/Legacy/ChunkedEllpack_impl.h
index 3b1fd9c8f9fce07344115282ba98411d364d95e3..4061597524742923f03a4115a52a16a2f44bb0ae 100644
--- a/src/TNL/Matrices/ChunkedEllpack_impl.h
+++ b/src/TNL/Matrices/Legacy/ChunkedEllpack_impl.h
@@ -10,7 +10,7 @@
 
 #pragma once
 
-#include <TNL/Matrices/ChunkedEllpack.h>
+#include <TNL/Matrices/Legacy/ChunkedEllpack.h>
 #include <TNL/Containers/Vector.h>
 #include <TNL/Math.h>
 #include <TNL/Exceptions/NotImplementedError.h>
diff --git a/src/TNL/Matrices/Ellpack.h b/src/TNL/Matrices/Legacy/Ellpack.h
similarity index 98%
rename from src/TNL/Matrices/Ellpack.h
rename to src/TNL/Matrices/Legacy/Ellpack.h
index 6536f5f6ca6ffa7869851e2ad0883c51de83ed28..5f6e666f922b12a4528282f26eb54f02bb11d781 100644
--- a/src/TNL/Matrices/Ellpack.h
+++ b/src/TNL/Matrices/Legacy/Ellpack.h
@@ -10,7 +10,7 @@
 
 #pragma once
 
-#include <TNL/Matrices/Sparse.h>
+#include <TNL/Matrices/Legacy/Sparse.h>
 #include <TNL/Containers/Vector.h>
 
 namespace TNL {
@@ -207,4 +207,4 @@ protected:
 } // namespace Matrices
 } // namespace TNL
 
-#include <TNL/Matrices/Ellpack_impl.h>
+#include <TNL/Matrices/Legacy/Ellpack_impl.h>
diff --git a/src/TNL/Matrices/EllpackSymmetric.h b/src/TNL/Matrices/Legacy/EllpackSymmetric.h
similarity index 100%
rename from src/TNL/Matrices/EllpackSymmetric.h
rename to src/TNL/Matrices/Legacy/EllpackSymmetric.h
diff --git a/src/TNL/Matrices/EllpackSymmetricGraph.h b/src/TNL/Matrices/Legacy/EllpackSymmetricGraph.h
similarity index 100%
rename from src/TNL/Matrices/EllpackSymmetricGraph.h
rename to src/TNL/Matrices/Legacy/EllpackSymmetricGraph.h
diff --git a/src/TNL/Matrices/EllpackSymmetricGraph_impl.h b/src/TNL/Matrices/Legacy/EllpackSymmetricGraph_impl.h
similarity index 100%
rename from src/TNL/Matrices/EllpackSymmetricGraph_impl.h
rename to src/TNL/Matrices/Legacy/EllpackSymmetricGraph_impl.h
diff --git a/src/TNL/Matrices/EllpackSymmetric_impl.h b/src/TNL/Matrices/Legacy/EllpackSymmetric_impl.h
similarity index 100%
rename from src/TNL/Matrices/EllpackSymmetric_impl.h
rename to src/TNL/Matrices/Legacy/EllpackSymmetric_impl.h
diff --git a/src/TNL/Matrices/Ellpack_impl.h b/src/TNL/Matrices/Legacy/Ellpack_impl.h
similarity index 99%
rename from src/TNL/Matrices/Ellpack_impl.h
rename to src/TNL/Matrices/Legacy/Ellpack_impl.h
index 5ae12f408727bd1ae2f087f69fcb5bae2458fd55..656c3f7c2c1cc871508c27ec19bfc5c10e7ba509 100644
--- a/src/TNL/Matrices/Ellpack_impl.h
+++ b/src/TNL/Matrices/Legacy/Ellpack_impl.h
@@ -10,7 +10,7 @@
 
 #pragma once
 
-#include <TNL/Matrices/Ellpack.h>
+#include <TNL/Matrices/Legacy/Ellpack.h>
 #include <TNL/Containers/Vector.h>
 #include <TNL/Math.h>
 #include <TNL/Exceptions/NotImplementedError.h>
diff --git a/src/TNL/Matrices/SlicedEllpack.h b/src/TNL/Matrices/Legacy/SlicedEllpack.h
similarity index 98%
rename from src/TNL/Matrices/SlicedEllpack.h
rename to src/TNL/Matrices/Legacy/SlicedEllpack.h
index 7176019d2979c57007062e10f02b263047e58157..b79913b23596f7b226e1afafc25d1cd3f461ba53 100644
--- a/src/TNL/Matrices/SlicedEllpack.h
+++ b/src/TNL/Matrices/Legacy/SlicedEllpack.h
@@ -21,7 +21,7 @@
 
 #pragma once
 
-#include <TNL/Matrices/Sparse.h>
+#include <TNL/Matrices/Legacy/Sparse.h>
 #include <TNL/Containers/Vector.h>
 
 namespace TNL {
@@ -235,4 +235,4 @@ public:
 } // namespace Matrices
 } // namespace TNL
 
-#include <TNL/Matrices/SlicedEllpack_impl.h>
+#include <TNL/Matrices/Legacy/SlicedEllpack_impl.h>
diff --git a/src/TNL/Matrices/SlicedEllpackSymmetric.h b/src/TNL/Matrices/Legacy/SlicedEllpackSymmetric.h
similarity index 100%
rename from src/TNL/Matrices/SlicedEllpackSymmetric.h
rename to src/TNL/Matrices/Legacy/SlicedEllpackSymmetric.h
diff --git a/src/TNL/Matrices/SlicedEllpackSymmetricGraph.h b/src/TNL/Matrices/Legacy/SlicedEllpackSymmetricGraph.h
similarity index 100%
rename from src/TNL/Matrices/SlicedEllpackSymmetricGraph.h
rename to src/TNL/Matrices/Legacy/SlicedEllpackSymmetricGraph.h
diff --git a/src/TNL/Matrices/SlicedEllpackSymmetricGraph_impl.h b/src/TNL/Matrices/Legacy/SlicedEllpackSymmetricGraph_impl.h
similarity index 100%
rename from src/TNL/Matrices/SlicedEllpackSymmetricGraph_impl.h
rename to src/TNL/Matrices/Legacy/SlicedEllpackSymmetricGraph_impl.h
diff --git a/src/TNL/Matrices/SlicedEllpackSymmetric_impl.h b/src/TNL/Matrices/Legacy/SlicedEllpackSymmetric_impl.h
similarity index 100%
rename from src/TNL/Matrices/SlicedEllpackSymmetric_impl.h
rename to src/TNL/Matrices/Legacy/SlicedEllpackSymmetric_impl.h
diff --git a/src/TNL/Matrices/SlicedEllpack_impl.h b/src/TNL/Matrices/Legacy/SlicedEllpack_impl.h
similarity index 99%
rename from src/TNL/Matrices/SlicedEllpack_impl.h
rename to src/TNL/Matrices/Legacy/SlicedEllpack_impl.h
index 8c629b563cfe47f258f44f0705cf7b8b5b6d2435..bfba092ffde5a93e8f11c2dc225f169057737676 100644
--- a/src/TNL/Matrices/SlicedEllpack_impl.h
+++ b/src/TNL/Matrices/Legacy/SlicedEllpack_impl.h
@@ -10,7 +10,7 @@
 
 #pragma once
 
-#include <TNL/Matrices/SlicedEllpack.h>
+#include <TNL/Matrices/Legacy/SlicedEllpack.h>
 #include <TNL/Containers/Vector.h>
 #include <TNL/Math.h>
 #include <TNL/Exceptions/NotImplementedError.h>
diff --git a/src/TNL/Matrices/Sparse.h b/src/TNL/Matrices/Legacy/Sparse.h
similarity index 95%
rename from src/TNL/Matrices/Sparse.h
rename to src/TNL/Matrices/Legacy/Sparse.h
index c19002443545954404d09e42013f2a8f99ded1e1..12c76a6a0a4c9a1ee7c038fb2dccc409e50c8f11 100644
--- a/src/TNL/Matrices/Sparse.h
+++ b/src/TNL/Matrices/Legacy/Sparse.h
@@ -11,7 +11,7 @@
 #pragma once
 
 #include <TNL/Matrices/Matrix.h>
-#include <TNL/Matrices/SparseRow.h>
+#include <TNL/Matrices/Legacy/SparseRow.h>
 
 namespace TNL {
 namespace Matrices {
@@ -64,5 +64,5 @@ class Sparse : public Matrix< Real, Device, Index >
 } // namespace Matrices
 } // namespace TNL
 
-#include <TNL/Matrices/Sparse_impl.h>
+#include <TNL/Matrices/Legacy/Sparse_impl.h>
 #include <TNL/Matrices/SparseOperations.h>
diff --git a/src/TNL/Matrices/SparseRow.h b/src/TNL/Matrices/Legacy/SparseRow.h
similarity index 97%
rename from src/TNL/Matrices/SparseRow.h
rename to src/TNL/Matrices/Legacy/SparseRow.h
index f66cd2ceaf1c6f0cd882bb962a78c6649816aa75..4787e638a43f7f2c8f658d75eddd9e5aef9d415f 100644
--- a/src/TNL/Matrices/SparseRow.h
+++ b/src/TNL/Matrices/Legacy/SparseRow.h
@@ -80,4 +80,4 @@ std::ostream& operator<<( std::ostream& str, const SparseRow< Real, Index >& row
 } // namespace Matrices
 } // namespace TNL
 
-#include <TNL/Matrices/SparseRow_impl.h>
+#include <TNL/Matrices/Legacy/SparseRow_impl.h>
diff --git a/src/TNL/Matrices/SparseRow_impl.h b/src/TNL/Matrices/Legacy/SparseRow_impl.h
similarity index 99%
rename from src/TNL/Matrices/SparseRow_impl.h
rename to src/TNL/Matrices/Legacy/SparseRow_impl.h
index 60dfd5034ee36dd01cc8f6cf616fe86dd238c29b..84f8e210e28832e838fb73aae560c9fd60a25930 100644
--- a/src/TNL/Matrices/SparseRow_impl.h
+++ b/src/TNL/Matrices/Legacy/SparseRow_impl.h
@@ -10,7 +10,7 @@
 
 #pragma once
 
-#include <TNL/Matrices/SparseRow.h>
+#include <TNL/Matrices/Legacy/SparseRow.h>
 #include <TNL/Exceptions/NotImplementedError.h>
 
 // Following includes are here to enable usage of std::vector and std::cout. To avoid having to include Device type (HOW would this be done anyway)
diff --git a/src/TNL/Matrices/Sparse_impl.h b/src/TNL/Matrices/Legacy/Sparse_impl.h
similarity index 100%
rename from src/TNL/Matrices/Sparse_impl.h
rename to src/TNL/Matrices/Legacy/Sparse_impl.h
diff --git a/src/TNL/Problems/HeatEquationProblem.h b/src/TNL/Problems/HeatEquationProblem.h
index 26df28965ec42e855fd034de7dea748999381e67..6a89742270b7f683764184227020351069059bfa 100644
--- a/src/TNL/Problems/HeatEquationProblem.h
+++ b/src/TNL/Problems/HeatEquationProblem.h
@@ -18,7 +18,7 @@
 
 #include <TNL/Problems/PDEProblem.h>
 #include <TNL/Operators/diffusion/LinearDiffusion.h>
-#include <TNL/Matrices/Ellpack.h>
+#include <TNL/Matrices/Legacy/Ellpack.h>
 #include <TNL/Functions/MeshFunction.h>
 #include <TNL/Timer.h>
 #include <TNL/Solvers/PDE/ExplicitUpdater.h>
diff --git a/src/TNL/Problems/PDEProblem.h b/src/TNL/Problems/PDEProblem.h
index 69d95aaeee7e5db273940602b7f192c0b75b2591..c81ffdd396a6caa3b535b942572c65b65749f94c 100644
--- a/src/TNL/Problems/PDEProblem.h
+++ b/src/TNL/Problems/PDEProblem.h
@@ -13,7 +13,7 @@
 #include <TNL/Problems/Problem.h>
 #include <TNL/Problems/CommonData.h>
 #include <TNL/Pointers/SharedPointer.h>
-#include <TNL/Matrices/SlicedEllpack.h>
+#include <TNL/Matrices/Legacy/SlicedEllpack.h>
 #include <TNL/Solvers/PDE/TimeDependentPDESolver.h>
 
 namespace TNL {
diff --git a/src/TNL/Solvers/Linear/Preconditioners/ILU0.h b/src/TNL/Solvers/Linear/Preconditioners/ILU0.h
index d5127fab5dec1e67a97d254f57e81f8d49e3d847..1f2b9f1981c837108be68e0e2864c69537afaf2f 100644
--- a/src/TNL/Solvers/Linear/Preconditioners/ILU0.h
+++ b/src/TNL/Solvers/Linear/Preconditioners/ILU0.h
@@ -15,7 +15,7 @@
 #include "Preconditioner.h"
 
 #include <TNL/Containers/Vector.h>
-#include <TNL/Matrices/CSR.h>
+#include <TNL/Matrices/Legacy/CSR.h>
 #include <TNL/Pointers/UniquePointer.h>
 #include <TNL/Exceptions/NotImplementedError.h>
 
diff --git a/src/TNL/Solvers/Linear/Preconditioners/ILUT.h b/src/TNL/Solvers/Linear/Preconditioners/ILUT.h
index cce3dc5c4bde030dc33c4762623124e1d3f65367..6a4a4a83b52fd393bbde144dc5591c7583f4c1e7 100644
--- a/src/TNL/Solvers/Linear/Preconditioners/ILUT.h
+++ b/src/TNL/Solvers/Linear/Preconditioners/ILUT.h
@@ -15,7 +15,7 @@
 #include "Preconditioner.h"
 
 #include <TNL/Containers/Vector.h>
-#include <TNL/Matrices/CSR.h>
+#include <TNL/Matrices/Legacy/CSR.h>
 
 namespace TNL {
 namespace Solvers {
diff --git a/src/TNL/Solvers/SolverConfig_impl.h b/src/TNL/Solvers/SolverConfig_impl.h
index 9d3515157feeac58a73b56353274524a56f6ec1a..70e7737eee5292617355f7899ecc526d439de2c0 100644
--- a/src/TNL/Solvers/SolverConfig_impl.h
+++ b/src/TNL/Solvers/SolverConfig_impl.h
@@ -16,8 +16,7 @@
 #include <TNL/Solvers/PDE/ExplicitTimeStepper.h>
 #include <TNL/Solvers/PDE/TimeDependentPDESolver.h>
 #include <TNL/Solvers/LinearSolverTypeResolver.h>
-#include <TNL/Matrices/CSR.h>
-#include <TNL/Meshes/DistributedMeshes/DistributedGrid.h>
+#include <TNL/Matrices/Legacy/CSR.h>
 
 namespace TNL {
 namespace Solvers {
diff --git a/src/UnitTests/Matrices/DistributedMatrixTest.h b/src/UnitTests/Matrices/DistributedMatrixTest.h
index 93673a29063db52afcabf59165ea5949471cf1bc..a1a9f3eb8c281e95e4b4283d29dc69d316c01c94 100644
--- a/src/UnitTests/Matrices/DistributedMatrixTest.h
+++ b/src/UnitTests/Matrices/DistributedMatrixTest.h
@@ -13,7 +13,7 @@
 #include <TNL/Communicators/NoDistrCommunicator.h>
 #include <TNL/Matrices/DistributedMatrix.h>
 #include <TNL/Containers/Partitioner.h>
-#include <TNL/Matrices/CSR.h>
+#include <TNL/Matrices/Legacy/CSR.h>
 
 using namespace TNL;
 
diff --git a/src/UnitTests/Matrices/SparseMatrixCopyTest.h b/src/UnitTests/Matrices/SparseMatrixCopyTest.h
index d100bb939826ea243041ea1fa165d3b2b1e4c4f0..f00daf1f3bb16ad5d259405a88fd2b7ed2b65656 100644
--- a/src/UnitTests/Matrices/SparseMatrixCopyTest.h
+++ b/src/UnitTests/Matrices/SparseMatrixCopyTest.h
@@ -8,9 +8,9 @@
 
 /* See Copyright Notice in tnl/Copyright */
 
-#include <TNL/Matrices/CSR.h>
-#include <TNL/Matrices/Ellpack.h>
-#include <TNL/Matrices/SlicedEllpack.h>
+#include <TNL/Matrices/Legacy/CSR.h>
+#include <TNL/Matrices/Legacy/Ellpack.h>
+#include <TNL/Matrices/Legacy/SlicedEllpack.h>
 
 #include <TNL/Matrices/SparseMatrix.h>
 #include <TNL/Matrices/MatrixType.h>
diff --git a/src/UnitTests/Matrices/SparseMatrixTest.h b/src/UnitTests/Matrices/SparseMatrixTest.h
index 5baeb42791a526731277adfaa20715a533ab956c..8b1d5756696d2b47df422b55dd2a5481776fbcd0 100644
--- a/src/UnitTests/Matrices/SparseMatrixTest.h
+++ b/src/UnitTests/Matrices/SparseMatrixTest.h
@@ -8,7 +8,7 @@
 
 /* See Copyright Notice in tnl/Copyright */
 
-#include <TNL/Matrices/CSR.h>
+#include <TNL/Matrices/Legacy/CSR.h>
 
 #include "SparseMatrixTest.hpp"
 #include <iostream>
diff --git a/src/UnitTests/Matrices/SparseMatrixTest.hpp b/src/UnitTests/Matrices/SparseMatrixTest.hpp
index 72dfc90e8ed12730a0e15dd6d204de8529321145..c6ff5cbd7349ed52e65d794b3a4df0c7915ba8e6 100644
--- a/src/UnitTests/Matrices/SparseMatrixTest.hpp
+++ b/src/UnitTests/Matrices/SparseMatrixTest.hpp
@@ -15,9 +15,9 @@
 #include <iostream>
 
 // Temporary, until test_OperatorEquals doesn't work for all formats.
-#include <TNL/Matrices/ChunkedEllpack.h>
-#include <TNL/Matrices/AdEllpack.h>
-#include <TNL/Matrices/BiEllpack.h>
+#include <TNL/Matrices/Legacy/ChunkedEllpack.h>
+#include <TNL/Matrices/Legacy/AdEllpack.h>
+#include <TNL/Matrices/Legacy/BiEllpack.h>
 
 #ifdef HAVE_GTEST
 #include <gtest/gtest.h>
diff --git a/src/UnitTests/Matrices/SparseMatrixTest_AdEllpack.h b/src/UnitTests/Matrices/SparseMatrixTest_AdEllpack.h
index 7effb52cd864fc61c6cc27345694c00c487c0328..2169b96df3015ba1d5a501cedfe755165c5ea2d0 100644
--- a/src/UnitTests/Matrices/SparseMatrixTest_AdEllpack.h
+++ b/src/UnitTests/Matrices/SparseMatrixTest_AdEllpack.h
@@ -8,7 +8,7 @@
 
 /* See Copyright Notice in tnl/Copyright */
 
-#include <TNL/Matrices/AdEllpack.h>
+#include <TNL/Matrices/Legacy/AdEllpack.h>
 
 #include "SparseMatrixTest.hpp"
 #include <iostream>
diff --git a/src/UnitTests/Matrices/SparseMatrixTest_BiEllpack.h b/src/UnitTests/Matrices/SparseMatrixTest_BiEllpack.h
index 33e530be57e6675bac01f735547a79b4731b57a9..c74fa635f38af1a883b80969194a64eaafa73984 100644
--- a/src/UnitTests/Matrices/SparseMatrixTest_BiEllpack.h
+++ b/src/UnitTests/Matrices/SparseMatrixTest_BiEllpack.h
@@ -8,7 +8,7 @@
 
 /* See Copyright Notice in tnl/Copyright */
 
-#include <TNL/Matrices/BiEllpack.h>
+#include <TNL/Matrices/Legacy/BiEllpack.h>
 
 #include "SparseMatrixTest.hpp"
 #include <iostream>
diff --git a/src/UnitTests/Matrices/SparseMatrixTest_CSR.h b/src/UnitTests/Matrices/SparseMatrixTest_CSR.h
index 3530db46c18753102a09b15908fcc5d34fa66026..c9dfc770f86dc071ef1ecc8ccd7e9c76111308ff 100644
--- a/src/UnitTests/Matrices/SparseMatrixTest_CSR.h
+++ b/src/UnitTests/Matrices/SparseMatrixTest_CSR.h
@@ -8,7 +8,7 @@
 
 /* See Copyright Notice in tnl/Copyright */
 
-#include <TNL/Matrices/CSR.h>
+#include <TNL/Matrices/Legacy/CSR.h>
 
 #include "SparseMatrixTest.hpp"
 #include <iostream>
diff --git a/src/UnitTests/Matrices/SparseMatrixTest_ChunkedEllpack.h b/src/UnitTests/Matrices/SparseMatrixTest_ChunkedEllpack.h
index 6909b53a5304df75aa021484402f1c3986ec9b5f..45801fa3a9adfd5353fcb6dcec551855b698f52e 100644
--- a/src/UnitTests/Matrices/SparseMatrixTest_ChunkedEllpack.h
+++ b/src/UnitTests/Matrices/SparseMatrixTest_ChunkedEllpack.h
@@ -8,7 +8,7 @@
 
 /* See Copyright Notice in tnl/Copyright */
 
-#include <TNL/Matrices/ChunkedEllpack.h>
+#include <TNL/Matrices/Legacy/ChunkedEllpack.h>
 
 #include "SparseMatrixTest.hpp"
 #include <iostream>
diff --git a/src/UnitTests/Matrices/SparseMatrixTest_Ellpack.h b/src/UnitTests/Matrices/SparseMatrixTest_Ellpack.h
index 979068e02ea2d5b4ed5c3dc4f4db2a566c027934..26d270a3d3e62061f7cfcbb7c4bf4015c36c01d6 100644
--- a/src/UnitTests/Matrices/SparseMatrixTest_Ellpack.h
+++ b/src/UnitTests/Matrices/SparseMatrixTest_Ellpack.h
@@ -8,7 +8,7 @@
 
 /* See Copyright Notice in tnl/Copyright */
 
-#include <TNL/Matrices/Ellpack.h>
+#include <TNL/Matrices/Legacy/Ellpack.h>
 
 #include "SparseMatrixTest.hpp"
 #include <iostream>