diff --git a/src/loop_closure_base_2d.cpp b/src/loop_closure_base_2d.cpp
index 1693e916e7ac1cba058dc72b985f6f01f2e4f673..6642d759d84c30a7bdf2a638e88834f4d4b5b308 100644
--- a/src/loop_closure_base_2d.cpp
+++ b/src/loop_closure_base_2d.cpp
@@ -9,8 +9,8 @@
 
 namespace laserscanutils{
 
-    cornerScene extractScene(LaserScan scan,LaserScanParams scanParams){
-        cornerScene NewScene;
+    std::shared_ptr<cornerScene> loopClosureBase2d::extractScene(LaserScan &scan,LaserScanParams &scanParams){
+        std::shared_ptr<cornerScene> NewScene;
         return NewScene;
     }
 }
\ No newline at end of file
diff --git a/src/loop_closure_base_2d.h b/src/loop_closure_base_2d.h
index 73edd7dcb1efb23644a5ac0234520e72b51626e2..8433d882e2934535323aa4d99d41e30a98096364 100644
--- a/src/loop_closure_base_2d.h
+++ b/src/loop_closure_base_2d.h
@@ -10,6 +10,7 @@
 
 #include <iostream>
 #include <fstream>
+#include <memory>
 
 /**************************
  *      laser_scan_utils includes     *
@@ -19,11 +20,6 @@
 
 namespace laserscanutils
 {
-    /*
-struct cornerScene{
-    std::vector<double> keypointsList;
-    std::vector<double> descriptorsList;
-};*/
 
    /** \brief A 2base class for loop closure using falko library
 */
@@ -41,11 +37,11 @@ public:
 
     /** \brief compare new scans against the trained set in order to find loop closures
      **/
-    virtual void findLoopClosure();
+    virtual void findLoopClosure(std::list<cornerScene>& scenes, const cornerScene newScene);
 
     /** \brief update the scene struct with keypoints and descriptors
      **/
-    virtual cornerScene extractScene(LaserScan scan,LaserScanParams scanParams);
+    virtual std::shared_ptr<cornerScene> extractScene(LaserScan &scan,LaserScanParams &scanParams);
 
 };
 } /* namespace laserscanutils */