diff --git a/CMakeLists.txt b/CMakeLists.txt
index 51eb17354b1a4a5bab11f89924d8ee63c47bcc67..b9f3ad7358ad2dad416d6cf0c8923f23d5a90ece 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -167,7 +167,6 @@ SET(HDRS_UTILS
   include/core/utils/converter.h
   include/core/utils/eigen_assert.h
   include/core/utils/eigen_predicates.h
-  include/core/utils/graph_search.h
   include/core/utils/loader.h
   include/core/utils/logging.h
   include/core/utils/make_unique.h
@@ -311,11 +310,10 @@ SET(SRCS_COMMON
 SET(SRCS_MATH
   )
 SET(SRCS_UTILS
-  src/utils/check_log.cpp
   src/utils/converter_utils.cpp
-  src/utils/graph_search.cpp
-  src/utils/loader.cpp
   src/utils/params_server.cpp
+  src/utils/loader.cpp
+  src/utils/check_log.cpp
   )
 
 SET(SRCS_CAPTURE
diff --git a/include/core/utils/graph_search.h b/include/core/utils/graph_search.h
deleted file mode 100644
index 5551dead4ef15a2bd518717a3a6bdc56b8be40d6..0000000000000000000000000000000000000000
--- a/include/core/utils/graph_search.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef GRAPH_SEARCH_H
-#define GRAPH_SEARCH_H
-
-#include "core/common/wolf.h"
-#include "core/frame/frame_base.h"
-#include "core/factor/factor_base.h"
-
-#include <map>
-
-namespace wolf
-{
-
-class GraphSearch
-{
-    private:
-
-        std::map<FrameBasePtr, std::pair<FactorBasePtr,FrameBasePtr>> parents_;
-
-    public:
-
-        GraphSearch();
-
-        ~GraphSearch();
-
-        FactorBasePtrList shortestPath(FrameBasePtr frm1, FrameBasePtr frm2, const unsigned int max_graph_dist = 0);
-
-        std::set<FrameBasePtr> getNeighborFrames(const std::set<FrameBasePtr>& frms);
-};
-
-}  // namespace wolf
-#endif
diff --git a/src/utils/graph_search.cpp b/src/utils/graph_search.cpp
deleted file mode 100644
index 9c3684e5110e6526c33bae41db31b9e2ef5771cb..0000000000000000000000000000000000000000
--- a/src/utils/graph_search.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-#include "core/utils/graph_search.h"
-
-using namespace wolf;
-
-GraphSearch::GraphSearch() :
-                    parents_()
-{
-
-}
-
-GraphSearch::~GraphSearch()
-{
-
-}
-
-FactorBasePtrList GraphSearch::shortestPath(FrameBasePtr frm1,
-                                            FrameBasePtr frm2,
-                                            const unsigned int max_graph_dist)
-{
-    std::set<FrameBasePtr> frm_neigs({frm1});
-    unsigned int depth = 0;
-
-    while (not frm_neigs.empty())
-    {
-        frm_neigs = getNeighborFrames(frm_neigs);
-        depth++;
-
-        // finish
-        if (frm_neigs.count(frm2) != 0)
-        {
-            assert(parents_.count(frm2) != 0);
-            FactorBasePtrList factor_path;
-            auto prev_frm = frm1;
-
-            while (parents_.at(prev_frm).second != frm2)
-            {
-                factor_path.push_back(parents_.at(prev_frm).first);
-                prev_frm = parents_.at(prev_frm).second;
-            }
-
-            return factor_path;
-        }
-
-        // stop
-        if (max_graph_dist > 0 and depth == max_graph_dist)
-            break;
-    }
-
-    return FactorBasePtrList();
-}
-
-std::set<FrameBasePtr> GraphSearch::getNeighborFrames(const std::set<FrameBasePtr>& frms)
-{
-    std::set<FrameBasePtr> frm_neigs;
-
-    for (auto frm : frms)
-    {
-        // get constrained by factors
-        FactorBasePtrList facs_by = frm->getConstrainedByList();
-
-        // Iterate over all factors_by
-        for (auto && fac_by : facs_by)
-        {
-            if (fac_by and
-                fac_by->getFrame() and
-                parents_.count(fac_by->getFrame()) != 0)
-            {
-                frm_neigs.insert(fac_by->getFrame());
-                parents_[fac_by->getFrame()] = std::pair<FactorBasePtr,FrameBasePtr>(fac_by, frm);
-            }
-        }
-
-        // get the factors of this frame
-        FactorBasePtrList facs_own;
-        frm->getFactorList(facs_own);
-
-        // Iterate over all factors_own
-        for (auto && fac_own : facs_own)
-            if (fac_own and not fac_own->getFrameOtherList().empty())
-                for (auto frm_other_w : fac_own->getFrameOtherList())
-                {
-                    auto frm_other = frm_other_w.lock();
-                    if (frm_other and parents_.count(frm_other))
-                    {
-                        frm_neigs.insert(frm_other);
-                        parents_[frm_other] = std::pair<FactorBasePtr,FrameBasePtr>(fac_own, frm);
-                    }
-                }
-    }
-    // TODO
-    // get list of factors and "constrained by" factor of each frame
-    // check that these factors are not in factor_parents_
-    // check that frames are not in frames_parents_ ant not in frm_neigs
-    // store in factor_parents_ and frames_parents and frm_neigs
-
-    return frm_neigs;
-}