diff --git a/include/core/processor/processor_loopclosure.h b/include/core/processor/processor_loopclosure.h
index 459b8f3d9a123960be1d7b99b3ca322317726bb7..27be9a079632a3808e16d110754529154b44557a 100644
--- a/include/core/processor/processor_loopclosure.h
+++ b/include/core/processor/processor_loopclosure.h
@@ -81,6 +81,18 @@ protected:
      */
     virtual bool triggerInKeyFrame(FrameBasePtr _keyframe_ptr, const Scalar& _time_tol_other) override;
 
+    /** \brief store key frame
+    *
+    * Returns true if the key frame should be stored
+    */
+    virtual bool storeKeyFrame(FrameBasePtr) override;
+
+    /** \brief store capture
+    *
+    * Returns true if the capture should be stored
+    */
+    virtual bool storeCapture(CaptureBasePtr) override;
+
     /** \brief Called by process(). Tells if computeFeatures() will be called
      */
     virtual bool voteComputeFeatures() = 0;
diff --git a/include/core/processor/processor_tracker.h b/include/core/processor/processor_tracker.h
index 3915ba33f8b9899deb99b6436b66a5b5c9ef9f4f..1f196d80d3086ccb532228b917117d91cf2d21d7 100644
--- a/include/core/processor/processor_tracker.h
+++ b/include/core/processor/processor_tracker.h
@@ -144,6 +144,18 @@ class ProcessorTracker : public ProcessorBase
          */
         virtual bool triggerInKeyFrame(FrameBasePtr _keyframe_ptr, const Scalar& _time_tolerance) override {return false;}
 
+        /** \brief store key frame
+        *
+        * Returns true if the key frame should be stored
+        */
+        virtual bool storeKeyFrame(FrameBasePtr) override;
+
+        /** \brief store capture
+        *
+        * Returns true if the capture should be stored
+        */
+        virtual bool storeCapture(CaptureBasePtr) override;
+
         /** Pre-process incoming Capture
          *
          * This is called by process() just after assigning incoming_ptr_ to a valid Capture.
diff --git a/src/processor/processor_loopclosure.cpp b/src/processor/processor_loopclosure.cpp
index 8448d1913bd6cee2e5b76aa23aa4aa2fbc22c008..dcc5dcba850e4c5adb6e723f44129a0c90db1d45 100644
--- a/src/processor/processor_loopclosure.cpp
+++ b/src/processor/processor_loopclosure.cpp
@@ -75,6 +75,14 @@ bool ProcessorLoopClosure::triggerInKeyFrame(FrameBasePtr _keyframe_ptr, const S
 {
     return true;
 }
+bool ProcessorLoopClosure::storeKeyFrame(FrameBasePtr _frame_ptr)
+{
+  return true;
+}
+bool ProcessorLoopClosure::storeCapture(CaptureBasePtr _cap_ptr)
+{
+  return true;
+}
 
 /**
  * In the default implementation, we select the KF with the most recent TimeStamp
diff --git a/src/processor/processor_tracker.cpp b/src/processor/processor_tracker.cpp
index 988b8066864fb03c9fab5a3dc9e21869000dfd25..3ba093912316b7f9c087d13186fad098ba80dad5 100644
--- a/src/processor/processor_tracker.cpp
+++ b/src/processor/processor_tracker.cpp
@@ -296,10 +296,18 @@ void ProcessorTracker::computeProcessingStep()
     }
 }
 
-bool ProcessorTracker::triggerInCapture(CaptureBasePtr)
+bool ProcessorTracker::triggerInCapture(CaptureBasePtr _cap_ptr)
 {
     return true;
 }
+bool ProcessorTracker::storeKeyFrame(FrameBasePtr _frame_ptr)
+{
+  return true;
+}
+bool ProcessorTracker::storeCapture(CaptureBasePtr _cap_ptr)
+{
+  return false;
+}
 
 } // namespace wolf