diff --git a/MathLib/LinAlg/ApplyKnownSolution.h b/MathLib/LinAlg/ApplyKnownSolution.h
index 72c28fe3481ca6f54049353154d9cfab8cbbcd4a..c6aca210db84b797f47809295673a1483c9e865f 100644
--- a/MathLib/LinAlg/ApplyKnownSolution.h
+++ b/MathLib/LinAlg/ApplyKnownSolution.h
@@ -15,7 +15,7 @@
 
 #ifdef OGS_USE_EIGEN
 #include "MathLib/LinAlg/Eigen/EigenTools.h"
-#endif // USE_LIS
+#endif // OGS_USE_EIGEN
 
 #ifdef USE_LIS
 #include "MathLib/LinAlg/Lis/LisTools.h"
diff --git a/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp b/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp
index 8071c650e30f7ce3a8e9e4300a32cfad8ec647c7..d23ae859e5b61a0f44eaca53529fec86adb6598e 100644
--- a/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp
+++ b/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp
@@ -9,6 +9,7 @@
 
 #include "EigenLinearSolver.h"
 
+#include <boost/property_tree/ptree.hpp>
 #include <logog/include/logog.hpp>
 #include <unsupported/Eigen/IterativeSolvers>
 
@@ -36,7 +37,7 @@ public:
         // Compute the numerical factorization
         _solver.factorize(A);
         if(_solver.info()!=Eigen::Success) {
-            INFO("\t failed");
+            ERR("The numerical factorization failed in Eigen");
             return;
         }
     }
diff --git a/MathLib/LinAlg/Eigen/EigenLinearSolver.h b/MathLib/LinAlg/Eigen/EigenLinearSolver.h
index d536b157c9ac666d32e8c8f0152e78a24f3194ef..8f7261e3fa13bf100757cb5d61f7345f8b49b904 100644
--- a/MathLib/LinAlg/Eigen/EigenLinearSolver.h
+++ b/MathLib/LinAlg/Eigen/EigenLinearSolver.h
@@ -12,8 +12,7 @@
 
 #include <vector>
 
-#include <boost/any.hpp>
-#include <boost/property_tree/ptree.hpp>
+#include <boost/property_tree/ptree_fwd.hpp>
 
 #include "EigenVector.h"
 #include "EigenOption.h"
diff --git a/MathLib/LinAlg/Eigen/EigenMatrix.h b/MathLib/LinAlg/Eigen/EigenMatrix.h
index fb254a58e0fd2a5e2106e20a54919f0e3161ed05..c6d5c2767753b28d5389394863c130e2ed134b03 100644
--- a/MathLib/LinAlg/Eigen/EigenMatrix.h
+++ b/MathLib/LinAlg/Eigen/EigenMatrix.h
@@ -11,9 +11,10 @@
 #define EIGENMATRIX_H_
 
 #include <cassert>
+#ifndef NDEBUG
 #include <fstream>
-#include <iosfwd>
 #include <string>
+#endif
 
 #include <Eigen/Sparse>
 
@@ -122,6 +123,7 @@ public:
     /// return if this matrix is already assembled or not
     bool isAssembled() const { return true; }
 
+#ifndef NDEBUG
     /// printout this matrix for debugging
     void write(const std::string &filename) const
     {
@@ -138,6 +140,7 @@ public:
               os << it.row() << " " << it.col() << ": " << it.value() << "\n";
         os << std::endl;
     }
+#endif
 
     RawMatrixType& getRawMatrix() { return _mat; }
     const RawMatrixType& getRawMatrix() const { return _mat; }
diff --git a/MathLib/LinAlg/Eigen/EigenTools.cpp b/MathLib/LinAlg/Eigen/EigenTools.cpp
index b820e768c846971c6e8c4160d9f9950c50047d0b..3dd8589d3e86657f01e0fe2aabd7934e6044ed8d 100644
--- a/MathLib/LinAlg/Eigen/EigenTools.cpp
+++ b/MathLib/LinAlg/Eigen/EigenTools.cpp
@@ -23,7 +23,7 @@ void applyKnownSolution(EigenMatrix &A_, EigenVector &b_, const std::vector<std:
     typedef EigenMatrix::RawMatrixType SpMat;
     auto &A = A_.getRawMatrix();
     auto &b = b_.getRawVector();
-    const size_t n_rows = A.rows();
+    const std::size_t n_rows = A.rows();
     for (std::size_t ix=0; ix<vec_knownX_id.size(); ix++)
     {
         int row_id = vec_knownX_id[ix];
@@ -32,7 +32,7 @@ void applyKnownSolution(EigenMatrix &A_, EigenVector &b_, const std::vector<std:
         for (SpMat::InnerIterator it(A,row_id); it; ++it)
             it.valueRef() = .0;
         //b_i -= A(i,k)*val, i!=k
-        for (size_t i=0; i<n_rows; i++)
+        for (std::size_t i=0; i<n_rows; i++)
             for (SpMat::InnerIterator it(A,i); it; ++it)
             {
                 if (it.col()!=row_id) continue;
@@ -41,7 +41,7 @@ void applyKnownSolution(EigenMatrix &A_, EigenVector &b_, const std::vector<std:
         //b_k = val
         b[row_id] = x;
         //A(i, k) = 0., i!=k
-        for (size_t i=0; i<n_rows; i++)
+        for (std::size_t i=0; i<n_rows; i++)
             for (SpMat::InnerIterator it(A,i); it; ++it)
             {
                 if (it.col()!=row_id) continue;
diff --git a/MathLib/LinAlg/Eigen/EigenVector.h b/MathLib/LinAlg/Eigen/EigenVector.h
index edc93f4af2e8e3fc5c82985fff3aa1c7c846dfe9..7308c344333ab3e6f5bbcc26a1a9f024d4da5efd 100644
--- a/MathLib/LinAlg/Eigen/EigenVector.h
+++ b/MathLib/LinAlg/Eigen/EigenVector.h
@@ -10,9 +10,11 @@
 #ifndef EIGENVECTOR_H_
 #define EIGENVECTOR_H_
 
-#include <string>
 #include <vector>
+#ifndef NDEBUG
 #include <fstream>
+#include <string>
+#endif
 
 #include <Eigen/Eigen>
 
@@ -86,8 +88,10 @@ public:
         }
     }
 
+#ifndef NDEBUG
     /// printout this equation for debugging
     void write (const std::string &filename) const { std::ofstream os(filename); os << _vec; }
+#endif
 
     /// return a raw Lis vector object
     RawVectorType& getRawVector() {return _vec; }
diff --git a/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.cpp b/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.cpp
index b22543722386e1d7a734923cce01670d84112144..d63d953dc24354d94debcb0f7e5b51050d98b78e 100644
--- a/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.cpp
+++ b/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.cpp
@@ -9,6 +9,7 @@
 
 #include "EigenLisLinearSolver.h"
 
+#include <boost/property_tree/ptree.hpp>
 #ifdef _OPENMP
 #include <omp.h>
 #endif
diff --git a/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.h b/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.h
index 796dd8b44bc06b5ed1e58801ad372220213d2927..c503e34ddaa43a18cc7f9303f592541cc621db6e 100644
--- a/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.h
+++ b/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.h
@@ -12,7 +12,7 @@
 
 #include <vector>
 
-#include <boost/property_tree/ptree.hpp>
+#include <boost/property_tree/ptree_fwd.hpp>
 #include <lis.h>
 
 #include "MathLib/LinAlg/Lis/LisOption.h"