diff --git a/include/imu/processor/processor_imu.h b/include/imu/processor/processor_imu.h
index e7b6b9549e9481269262ad7dd3122cc6a0e6a187..ff144eda4a0032fdcb72870bbc578db1c5cf5471 100644
--- a/include/imu/processor/processor_imu.h
+++ b/include/imu/processor/processor_imu.h
@@ -86,46 +86,47 @@ class ProcessorImu : public ProcessorMotion{
         WOLF_PROCESSOR_CREATE(ProcessorImu, ParamsProcessorImu);
         void preProcess() override;
 
-    protected:
-        void computeCurrentDelta(const Eigen::VectorXd& _data,
-                                         const Eigen::MatrixXd& _data_cov,
-                                         const Eigen::VectorXd& _calib,
-                                         const double _dt,
-                                         Eigen::VectorXd& _delta,
-                                         Eigen::MatrixXd& _delta_cov,
-                                         Eigen::MatrixXd& _jacobian_calib) const override;
-        void deltaPlusDelta(const Eigen::VectorXd& _delta_preint,
-                                    const Eigen::VectorXd& _delta,
-                                    const double _dt,
-                                    Eigen::VectorXd& _delta_preint_plus_delta) const override;
-        void deltaPlusDelta(const Eigen::VectorXd& _delta_preint,
-                                    const Eigen::VectorXd& _delta,
-                                    const double _dt,
-                                    Eigen::VectorXd& _delta_preint_plus_delta,
-                                    Eigen::MatrixXd& _jacobian_delta_preint,
-                                    Eigen::MatrixXd& _jacobian_delta) const override;
-        void statePlusDelta(const VectorComposite& _x,
-                                    const Eigen::VectorXd& _delta,
-                                    const double _Dt,
-                                    VectorComposite& _x_plus_delta) const override;
-        Eigen::VectorXd deltaZero() const override;
-        Eigen::VectorXd correctDelta(const Eigen::VectorXd& delta_preint,
-                                             const Eigen::VectorXd& delta_step) const override;
-        VectorXd getCalibration (const CaptureBaseConstPtr _capture = nullptr) const override;
-        void setCalibration(const CaptureBasePtr _capture, const VectorXd& _calibration) override;
-        bool voteForKeyFrame() const override;
-        CaptureMotionPtr emplaceCapture(const FrameBasePtr& _frame_own,
-                                                const SensorBasePtr& _sensor,
-                                                const TimeStamp& _ts,
-                                                const VectorXd& _data,
-                                                const MatrixXd& _data_cov,
-                                                const VectorXd& _calib,
-                                                const VectorXd& _calib_preint,
-                                                const CaptureBasePtr& _capture_origin) override;
-        FeatureBasePtr emplaceFeature(CaptureMotionPtr _capture_motion) override;
-        FactorBasePtr emplaceFactor(FeatureBasePtr _feature_motion,
-                                            CaptureBasePtr _capture_origin) override;
-        virtual void bootstrap() override;
+      protected:
+        void             computeCurrentDelta(const Eigen::VectorXd& _data,
+                                             const Eigen::MatrixXd& _data_cov,
+                                             const Eigen::VectorXd& _calib,
+                                             const double           _dt,
+                                             Eigen::VectorXd&       _delta,
+                                             Eigen::MatrixXd&       _delta_cov,
+                                             Eigen::MatrixXd&       _jacobian_calib) const override;
+        void             deltaPlusDelta(const Eigen::VectorXd& _delta_preint,
+                                        const Eigen::VectorXd& _delta,
+                                        const double           _dt,
+                                        Eigen::VectorXd&       _delta_preint_plus_delta) const override;
+        void             deltaPlusDelta(const Eigen::VectorXd& _delta_preint,
+                                        const Eigen::VectorXd& _delta,
+                                        const double           _dt,
+                                        Eigen::VectorXd&       _delta_preint_plus_delta,
+                                        Eigen::MatrixXd&       _jacobian_delta_preint,
+                                        Eigen::MatrixXd&       _jacobian_delta) const override;
+        void             statePlusDelta(const VectorComposite& _x,
+                                        const Eigen::VectorXd& _delta,
+                                        const double           _Dt,
+                                        VectorComposite&       _x_plus_delta) const override;
+        Eigen::VectorXd  deltaZero() const override;
+        Eigen::VectorXd  correctDelta(const Eigen::VectorXd& delta_preint,
+                                      const Eigen::VectorXd& delta_step) const override;
+        VectorXd         getCalibration(const CaptureBaseConstPtr _capture = nullptr) const override;
+        void             setCalibration(const CaptureBasePtr _capture, const VectorXd& _calibration) override;
+        bool             voteForKeyFrame() const override;
+        CaptureMotionPtr emplaceCapture(const FrameBasePtr&   _frame_own,
+                                        const SensorBasePtr&  _sensor,
+                                        const TimeStamp&      _ts,
+                                        const VectorXd&       _data,
+                                        const MatrixXd&       _data_cov,
+                                        const VectorXd&       _calib,
+                                        const VectorXd&       _calib_preint,
+                                        const CaptureBasePtr& _capture_origin) override;
+        FeatureBasePtr   emplaceFeature(CaptureMotionPtr _capture_motion) override;
+        FactorBasePtr    emplaceFactor(FeatureBasePtr _feature_motion, CaptureBasePtr _capture_origin) override;
+        virtual void     bootstrap() override;
+        CaptureBasePtr   bootstrapOrigin() const;
+        VectorXd         bootstrapDelta() const;
 
       protected:
         ParamsProcessorImuPtr    params_motion_Imu_;
diff --git a/src/processor/processor_imu.cpp b/src/processor/processor_imu.cpp
index 8f3433ea0bf34d322988fed3bbfb6dca91d92e34..87582d9746f745d96805fda31f47d8755d04f524 100644
--- a/src/processor/processor_imu.cpp
+++ b/src/processor/processor_imu.cpp
@@ -263,13 +263,8 @@ void ProcessorImu::bootstrap()
         }
         case ParamsProcessorImu::BootstrapMethod::BOOTSTRAP_G: {
             // Implementation of G strategy.
-            CaptureBasePtr first_capture;
-            if (list_fac_inactive_bootstrap_.empty()) first_capture = origin_ptr_;
-            else
-            first_capture =
-                std::static_pointer_cast<CaptureMotion>(list_fac_inactive_bootstrap_.front()->getCapture())
-                    ->getOriginCapture();
-            TimeStamp t_current = last_ptr_->getBuffer().back().ts_;
+            CaptureBasePtr first_capture = bootstrapOrigin();
+            TimeStamp      t_current     = last_ptr_->getBuffer().back().ts_;
             if (t_current - first_capture->getTimeStamp() >= params_motion_Imu_->bootstrap_averaging_length)
             {
                 // frames:
@@ -283,21 +278,10 @@ void ProcessorImu::bootstrap()
                 Quaterniond q_r_s(first_capture->getSensor()->getStateVector("O").data());
 
                 // Compute total integrated delta during bootstrap period
-                // first, integrate all deltas in previous factors
-                VectorXd delta_int = deltaZero();
-                for (const auto& fac : list_fac_inactive_bootstrap_)
-                // here, we take advantage of the list of IMU factors to recover all deltas
-                {
-                    double      dt    = fac->getCapture()->getTimeStamp() - fac->getCaptureOther()->getTimeStamp();
-                    const auto& delta = fac->getFeature()->getMeasurement();  // In FeatImu, delta = measurement
-                    delta_int         = imu::compose(delta_int, delta, dt);
-                }
-                // now compose with delta in last_ptr_
-                double dt = t_current - origin_ptr_->getTimeStamp();
-                delta_int = imu::compose(delta_int, last_ptr_->getDeltaPreint(), dt);
+                VectorXd delta_int = bootstrapDelta();
 
                 // compute local g and transformation to global g
-                dt                     = t_current - first_capture->getTimeStamp();  //
+                double      dt         = t_current - first_capture->getTimeStamp();  //
                 Vector3d    dv         = delta_int.segment(7, 3);                    //
                 Vector3d    g_l        = -((q_l_r * q_r_s) * dv / dt);               // See eq. (20)
                 const auto& g_w        = gravity();                                  //
@@ -335,6 +319,36 @@ void ProcessorImu::bootstrap()
     }
 }
 
+CaptureBasePtr ProcessorImu::bootstrapOrigin() const
+{
+    if (list_fac_inactive_bootstrap_.empty())
+        return origin_ptr_;
+    else
+        return std::static_pointer_cast<CaptureMotion>(list_fac_inactive_bootstrap_.front()->getCapture())
+            ->getOriginCapture();
+}
+
+VectorXd ProcessorImu::bootstrapDelta() const
+{
+    // Compute total integrated delta during bootstrap period
+    // first, integrate all deltas in previous factors
+    VectorXd delta_int = deltaZero();
+    double   dt;
+    for (const auto& fac : list_fac_inactive_bootstrap_)
+    // here, we take advantage of the list of IMU factors to recover all deltas
+    {
+        dt                = fac->getCapture()->getTimeStamp() - fac->getCaptureOther()->getTimeStamp();
+        const auto& delta = fac->getFeature()->getMeasurement();  // In FeatImu, delta = measurement
+        delta_int         = imu::compose(delta_int, delta, dt);
+    }
+    // now compose with delta in last_ptr_
+    dt                = last_ptr_->getBuffer().back().ts_ - origin_ptr_->getTimeStamp();
+    const auto& delta = last_ptr_->getDeltaPreint();
+    delta_int         = imu::compose(delta_int, delta, dt);
+
+    return delta_int;
+}
+
 } // namespace wolf
 
 // Register in the FactoryProcessor