diff --git a/MathLib/LinAlg/Eigen/EigenVector.h b/MathLib/LinAlg/Eigen/EigenVector.h
index 373ed3906402f1e1664a40be958352a9fc27f569..0c27be964077d94202afead0c832cbe0d472bfac 100644
--- a/MathLib/LinAlg/Eigen/EigenVector.h
+++ b/MathLib/LinAlg/Eigen/EigenVector.h
@@ -50,7 +50,8 @@ public:
     EigenVector& operator*= (double v) { _vec *= v; return *this; }
 
     /// access entry
-    double operator[] (std::size_t rowId) const { return get(rowId); }
+    double const & operator[] (std::size_t rowId) const { return _vec[rowId]; }
+    double& operator[] (std::size_t rowId) { return _vec[rowId]; }
 
     /// get entry
     double get(std::size_t rowId) const
diff --git a/MathLib/Nonlinear/Picard-impl.h b/MathLib/Nonlinear/Picard-impl.h
index 08f5e0d208bb5c0a420f81a5bac4974f98863fd0..dc38e8e9af0019f31b006f13051ed87487efc9d6 100644
--- a/MathLib/Nonlinear/Picard-impl.h
+++ b/MathLib/Nonlinear/Picard-impl.h
@@ -20,13 +20,6 @@ namespace MathLib
 namespace Nonlinear
 {
 
-Picard::Picard()
-: _normType(VecNormType::INFINITY_N),
-  _abs_tol(std::numeric_limits<double>::max()), _rel_tol(1e-6), _max_itr(25),
-  _printErrors(false), _n_iterations(0), _abs_error(.0), _rel_error(.0)
-{
-}
-
 template<class T_FUNCTOR, class T_VALUE>
 bool Picard::solve(T_FUNCTOR &functor,  const T_VALUE &x0, T_VALUE &x_new)
 {
diff --git a/MathLib/Nonlinear/Picard.cpp b/MathLib/Nonlinear/Picard.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..611989677276c448af581730d2e23fd592639d9d
--- /dev/null
+++ b/MathLib/Nonlinear/Picard.cpp
@@ -0,0 +1,21 @@
+#include "Picard.h"
+
+
+
+namespace MathLib
+{
+
+namespace Nonlinear
+{
+
+Picard::Picard()
+: _normType(VecNormType::INFINITY_N),
+  _abs_tol(std::numeric_limits<double>::max()), _rel_tol(1e-6), _max_itr(25),
+  _printErrors(false), _n_iterations(0), _abs_error(.0), _rel_error(.0)
+{
+}
+
+} // namespace Nonlinear
+
+} // namespace MathLib
+