diff --git a/src/processor/processor_compass.cpp b/src/processor/processor_compass.cpp
index 956f7581ced4bdf6ef66d8687a5dc999e20242e5..4ddbce35886a2233ed4b4458c75b1f529b214958 100644
--- a/src/processor/processor_compass.cpp
+++ b/src/processor/processor_compass.cpp
@@ -39,13 +39,13 @@ ProcessorCompass::~ProcessorCompass()
 void ProcessorCompass::processCapture(CaptureBasePtr _capture)
 {
     // Search for any stored frame within time tolerance of capture
-    auto frame_pack = buffer_pack_kf_.select(_capture->getTimeStamp(), params_->time_tolerance);
-    if (frame_pack)
+    auto keyframe = buffer_frame_.select(_capture->getTimeStamp(), params_->time_tolerance);
+    if (keyframe)
     {
-        processMatch(frame_pack->key_frame, _capture);
+        processMatch(keyframe, _capture);
 
         // remove the frame and older frames
-        buffer_pack_kf_.removeUpTo(frame_pack->key_frame->getTimeStamp());
+        buffer_frame_.removeUpTo(keyframe->getTimeStamp());
     }
     // Otherwise: store capture
     // Note that more than one processor can be emplacing frames, so an older frame can arrive later than this one.
@@ -55,6 +55,8 @@ void ProcessorCompass::processCapture(CaptureBasePtr _capture)
 
 void ProcessorCompass::processKeyFrame(FrameBasePtr _frame, const double& _time_tolerance)
 {
+    _frame->setTimeTolerance(_time_tolerance);
+
     // Search for any stored capture within time tolerance of frame
     auto capture = buffer_capture_.select(_frame->getTimeStamp(), _time_tolerance);
     if (capture)
@@ -68,7 +70,7 @@ void ProcessorCompass::processKeyFrame(FrameBasePtr _frame, const double& _time_
     else if (buffer_capture_.selectLastAfter(_frame->getTimeStamp(), _time_tolerance) == nullptr)
     {
         // store frame
-        buffer_pack_kf_.add(_frame, _time_tolerance);
+        buffer_frame_.add(_frame->getTimeStamp(), _frame);
     }
     // Otherwise: There are captures more recent than the frame but none that match with it -> discard frame
 }