diff --git a/MathLib/LinAlg/Eigen/EigenMatrix.h b/MathLib/LinAlg/Eigen/EigenMatrix.h
index 2aaa665f0a1a0dcfdb99f0e0132cb258a59f3790..5556195cdc8e87a2a65a9c450bb890404554fc69 100644
--- a/MathLib/LinAlg/Eigen/EigenMatrix.h
+++ b/MathLib/LinAlg/Eigen/EigenMatrix.h
@@ -62,14 +62,14 @@ public:
     void setZero()
     {
         auto const N = _mat.nonZeros();
-        for (std::remove_const<decltype(N)>::type i=0; i<N; i++)
+        for (auto i = decltype(N){0}; i<N; i++)
             _mat.valuePtr()[i] = 0;
         // don't use _mat.setZero(). it makes a matrix uncompressed
     }
 
     /// set a value to the given entry. If the entry doesn't exist, this class
     /// dynamically allocates it.
-    int setValue(std::size_t row, std::size_t col, double val)
+    int setValue(IndexType row, IndexType col, double val)
     {
         _mat.coeffRef(row, col) = val;
         return 0;
@@ -77,7 +77,7 @@ public:
 
     /// add a value to the given entry. If the entry doesn't exist, the value is
     /// inserted.
-    int add(std::size_t row, std::size_t col, double val)
+    int add(IndexType row, IndexType col, double val)
     {
         assert(row < getNRows() && col < getNCols());
         _mat.coeffRef(row, col) += val;
@@ -87,7 +87,7 @@ public:
     /// Add sub-matrix at positions \c row_pos and same column positions as the
     /// given row positions. If the entry doesn't exist, the value is inserted.
     template<class T_DENSE_MATRIX>
-    void add(std::vector<std::size_t> const& row_pos,
+    void add(std::vector<IndexType> const& row_pos,
             const T_DENSE_MATRIX &sub_matrix,
             double fkt = 1.0)
     {
@@ -97,7 +97,7 @@ public:
     /// Add sub-matrix at positions given by \c indices. If the entry doesn't exist,
     /// this class inserts the value.
     template<class T_DENSE_MATRIX>
-    void add(RowColumnIndices<std::size_t> const& indices,
+    void add(RowColumnIndices<IndexType> const& indices,
             const T_DENSE_MATRIX &sub_matrix,
             double fkt = 1.0)
     {
@@ -113,19 +113,19 @@ public:
     /// @param sub_matrix  a sub-matrix to be added
     /// @param fkt         a scaling factor applied to all entries in the sub-matrix
     template <class T_DENSE_MATRIX>
-    void add(std::vector<std::size_t> const& row_pos,
-            std::vector<std::size_t> const& col_pos, const T_DENSE_MATRIX &sub_matrix,
+    void add(std::vector<IndexType> const& row_pos,
+            std::vector<IndexType> const& col_pos, const T_DENSE_MATRIX &sub_matrix,
             double fkt = 1.0);
 
     /// get value. This function returns zero if the element doesn't exist.
-    double get(std::size_t row, std::size_t col) const
+    double get(IndexType row, IndexType col) const
     {
         assert(row < getNRows() && col < getNCols());
         return _mat.coeff(row, col);
     }
 
     /// get value. This function returns zero if the element doesn't exist.
-    double operator() (std::size_t row, std::size_t col) const
+    double operator() (IndexType row, IndexType col) const
     {
         return get(row, col);
     }
@@ -171,18 +171,17 @@ protected:
     RawMatrixType _mat;
 };
 
-
-template<class T_DENSE_MATRIX>
-void
-EigenMatrix::add(std::vector<std::size_t> const& row_pos, std::vector<std::size_t> const& col_pos,
-        const T_DENSE_MATRIX &sub_matrix, double fkt)
+template <class T_DENSE_MATRIX>
+void EigenMatrix::add(std::vector<IndexType> const& row_pos,
+                      std::vector<IndexType> const& col_pos,
+                      const T_DENSE_MATRIX& sub_matrix, double fkt)
 {
-    const std::size_t n_rows = row_pos.size();
-    const std::size_t n_cols = col_pos.size();
-    for (std::size_t i = 0; i < n_rows; i++) {
-        const std::size_t row = row_pos[i];
-        for (std::size_t j = 0; j < n_cols; j++) {
-            const std::size_t col = col_pos[j];
+    auto const n_rows = row_pos.size();
+    auto const n_cols = col_pos.size();
+    for (auto i = decltype(n_rows){0}; i < n_rows; i++) {
+        auto const row = row_pos[i];
+        for (auto j = decltype(n_cols){0}; j < n_cols; j++) {
+            auto const col = col_pos[j];
             add(row, col, fkt * sub_matrix(i, j));
         }
     }
@@ -192,4 +191,3 @@ EigenMatrix::add(std::vector<std::size_t> const& row_pos, std::vector<std::size_
 } // end namespace MathLib
 
 #endif
-
diff --git a/MathLib/LinAlg/Eigen/EigenVector.h b/MathLib/LinAlg/Eigen/EigenVector.h
index 5f34625010b34a458d78808d957ab816e88adf69..b723b15beae0d06e28ea4ee3d0213f2e25ae3cae 100644
--- a/MathLib/LinAlg/Eigen/EigenVector.h
+++ b/MathLib/LinAlg/Eigen/EigenVector.h
@@ -56,30 +56,30 @@ public:
     EigenVector& operator*= (double v) { _vec *= v; return *this; }
 
     /// access entry
-    double const & operator[] (std::size_t rowId) const { return _vec[rowId]; }
-    double& operator[] (std::size_t rowId) { return _vec[rowId]; }
+    double const & operator[] (IndexType rowId) const { return _vec[rowId]; }
+    double& operator[] (IndexType rowId) { return _vec[rowId]; }
 
     /// get entry
-    double get(std::size_t rowId) const
+    double get(IndexType rowId) const
     {
         return _vec[rowId];
     }
 
     /// set entry
-    void set(std::size_t rowId, double v)
+    void set(IndexType rowId, double v)
     {
         _vec[rowId] = v;
     }
 
     /// add entry
-    void add(std::size_t rowId, double v)
+    void add(IndexType rowId, double v)
     {
         _vec[rowId] += v;
     }
 
     /// add entries
     template<class T_SUBVEC>
-    void add(const std::vector<std::size_t> &pos, const T_SUBVEC &sub_vec)
+    void add(const std::vector<IndexType> &pos, const T_SUBVEC &sub_vec)
     {
         for (std::size_t i=0; i<pos.size(); ++i) {
             this->add(pos[i], sub_vec[i]);