diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7dafd62f1dcd36919049428014466507f73cb70e..cab800a231b74a05eb9c466e0ec5d508ca561918 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -181,7 +181,7 @@ SET(HDRS_MATH
   include/core/math/covariance.h
   )
 SET(HDRS_UTILS
-  include/core/utils/check_log.hpp
+  include/core/utils/check_log.h
   include/core/utils/converter.h
   include/core/utils/eigen_assert.h
   include/core/utils/eigen_predicates.h
@@ -323,6 +323,7 @@ SET(SRCS_UTILS
   src/utils/converter_utils.cpp
   src/utils/params_server.cpp
   src/utils/loader.cpp
+  src/utils/check_log.cpp
   )
 
 SET(SRCS_CAPTURE
diff --git a/include/core/utils/check_log.h b/include/core/utils/check_log.h
new file mode 100644
index 0000000000000000000000000000000000000000..035bd0aa0e2e9fa4989c95509800d1fee517bd46
--- /dev/null
+++ b/include/core/utils/check_log.h
@@ -0,0 +1,22 @@
+#ifndef CHECK_LOG_H
+#define CHECK_LOG_H
+#include <iostream>
+#include <string>
+#include <sstream>
+
+namespace wolf
+{
+class CheckLog
+{
+  public:
+    bool        is_consistent_;
+    std::string explanation_;
+
+    CheckLog();
+    CheckLog(bool _consistent, std::string _explanation);
+    ~CheckLog(){};
+    void compose(CheckLog l);
+    void assertTrue(bool _condition, std::stringstream& _stream);
+};
+}  // namespace wolf
+#endif
diff --git a/include/core/utils/check_log.hpp b/include/core/utils/check_log.hpp
deleted file mode 100644
index 844b4d8ea60821ae18b6a9912d343de703163814..0000000000000000000000000000000000000000
--- a/include/core/utils/check_log.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef CHECK_LOG_HPP
-#define CHECK_LOG_HPP
-#include <iostream>
-#include <string>
-#include <sstream>
-
-namespace wolf
-{
-class CheckLog
-{
-  public:
-    bool        is_consistent_;
-    std::string explanation_;
-
-    CheckLog()
-    {
-        is_consistent_ = true;
-        explanation_   = "";
-    }
-    CheckLog(bool _consistent, std::string _explanation)
-    {
-        is_consistent_ = _consistent;
-        if (not _consistent)
-            explanation_ = _explanation;
-        else
-            explanation_ = "";
-    }
-    ~CheckLog(){};
-    void compose(CheckLog l)
-    {
-        is_consistent_ = is_consistent_ and l.is_consistent_;
-        explanation_   = explanation_ + l.explanation_;
-    }
-    void assertTrue(bool _condition, std::stringstream& _stream)
-    {
-        auto cl = CheckLog(_condition, _stream.str());
-        this->compose(cl);
-        // Clear inconsistency_explanation
-        std::stringstream().swap(_stream);
-    }
-};
-}  // namespace wolf
-#endif
diff --git a/src/problem/problem.cpp b/src/problem/problem.cpp
index 1d72f5b8fff0b187d192e575eb140a2e442f101e..53acc960ecc87a61d28d7e1567af966d0579b375 100644
--- a/src/problem/problem.cpp
+++ b/src/problem/problem.cpp
@@ -14,7 +14,7 @@
 #include "core/utils/logging.h"
 #include "core/utils/params_server.h"
 #include "core/utils/loader.h"
-#include "core/utils/check_log.hpp"
+#include "core/utils/check_log.h"
 
 
 // IRI libs includes
diff --git a/src/utils/check_log.cpp b/src/utils/check_log.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..06e58733aa3d99b9cffa312a9a88bdb223d15eb5
--- /dev/null
+++ b/src/utils/check_log.cpp
@@ -0,0 +1,29 @@
+#include "core/utils/check_log.h"
+
+using namespace wolf;
+
+CheckLog::CheckLog()
+{
+    is_consistent_ = true;
+    explanation_   = "";
+}
+CheckLog::CheckLog(bool _consistent, std::string _explanation)
+{
+    is_consistent_ = _consistent;
+    if (not _consistent)
+        explanation_ = _explanation;
+    else
+        explanation_ = "";
+}
+void CheckLog::compose(CheckLog l)
+{
+    is_consistent_ = is_consistent_ and l.is_consistent_;
+    explanation_   = explanation_ + l.explanation_;
+}
+void CheckLog::assertTrue(bool _condition, std::stringstream& _stream)
+{
+    auto cl = CheckLog(_condition, _stream.str());
+    this->compose(cl);
+    // Clear inconsistency_explanation
+    std::stringstream().swap(_stream);
+}