diff --git a/include/gnss/capture/capture_gnss_fix.h b/include/gnss/capture/capture_gnss_fix.h
index 08af47ba2b24986727b7233e7e33ff7b2f90a68f..4e0468f2ee0bcc80ea00f2247dea9ffe77ffaed2 100644
--- a/include/gnss/capture/capture_gnss_fix.h
+++ b/include/gnss/capture/capture_gnss_fix.h
@@ -18,6 +18,7 @@ class CaptureGnssFix : public CaptureBase
     protected:
         Eigen::VectorXs data_; ///< Raw data.
         Eigen::MatrixXs data_covariance_; ///< Noise of the capture.
+        TimeStamp ts_GPST_; ///< Time stamp in GPS time
 
     public:
         CaptureGnssFix(const TimeStamp& _ts, SensorBasePtr _sensor_ptr, const Eigen::VectorXs& _data, const Eigen::MatrixXs& _data_covariance);
@@ -25,6 +26,14 @@ class CaptureGnssFix : public CaptureBase
         const Eigen::VectorXs& getData() const;
         const Eigen::MatrixXs& getDataCovariance() const;
         void getDataAndCovariance(Eigen::VectorXs& data, Eigen::MatrixXs& data_cov) const;
+        const TimeStamp& getGpsTimeStamp() const
+        {
+            return ts_GPST_;
+        }
+        void setGpsTimeStamp(const TimeStamp& _ts_GPST)
+        {
+            ts_GPST_ = _ts_GPST;
+        }
 };
 
 inline const Eigen::VectorXs& CaptureGnssFix::getData() const
diff --git a/include/gnss/capture/capture_gnss_single_diff.h b/include/gnss/capture/capture_gnss_single_diff.h
index 3423496bdb5305db6fd4f4fca891546fe9c2c261..3da98be3803888c8fa88063590991dd6f84e415c 100644
--- a/include/gnss/capture/capture_gnss_single_diff.h
+++ b/include/gnss/capture/capture_gnss_single_diff.h
@@ -19,6 +19,7 @@ class CaptureGnssSingleDiff : public CaptureBase
         Eigen::Vector3s data_; ///< Raw data.
         Eigen::Matrix3s data_covariance_; ///< Noise of the capture.
         FrameBasePtr    origin_frame_ptr_;
+        TimeStamp ts_GPST_; ///< Time stamp in GPS time
 
     public:
         CaptureGnssSingleDiff(const TimeStamp& _ts,
@@ -36,6 +37,14 @@ class CaptureGnssSingleDiff : public CaptureBase
         const Eigen::Matrix3s& getDataCovariance() const;
         void getDataAndCovariance(Eigen::Vector3s& data, Eigen::Matrix3s& data_cov) const;
         FrameBasePtr getOriginFrame() const;
+        const TimeStamp& getGpsTimeStamp() const
+        {
+            return ts_GPST_;
+        }
+        void setGpsTimeStamp(const TimeStamp& _ts_GPST)
+        {
+            ts_GPST_ = _ts_GPST;
+        }
 };
 
 inline const Eigen::Vector3s& CaptureGnssSingleDiff::getData() const
diff --git a/include/gnss/sensor/sensor_gnss.h b/include/gnss/sensor/sensor_gnss.h
index 13686e0321d7beadab8d5ded80a2e59ea190ebbc..5efc012fdb7aa972d726c44457a597e1922fdd8a 100644
--- a/include/gnss/sensor/sensor_gnss.h
+++ b/include/gnss/sensor/sensor_gnss.h
@@ -144,22 +144,22 @@ inline const Eigen::Vector3s& SensorGnss::gettEnuEcef() const
 
 inline Eigen::Vector3s SensorGnss::gettEnuMap() const
 {
-    return getStateBlockPtrStatic(3)->getState();
+    return getEnuMapTranslation()->getState();
 }
 
 template<typename T>
 inline Eigen::Matrix<T,3,3> SensorGnss::computeREnuMap(const T& _r,const T& _p,const T& _y) const
 {
-    Eigen::Matrix<T,3,3> R_ENU_MAP = (Eigen::AngleAxis<T>(_r, Eigen::Matrix<T,3,1>::UnitX())
-                                    * Eigen::AngleAxis<T>(_p, Eigen::Matrix<T,3,1>::UnitY())
-                                    * Eigen::AngleAxis<T>(_y, Eigen::Matrix<T,3,1>::UnitZ())).toRotationMatrix();
-
-    return R_ENU_MAP;
+    return Eigen::Matrix<T,3,3>(Eigen::AngleAxis<T>(_r, Eigen::Matrix<T,3,1>::UnitX()) *
+                                Eigen::AngleAxis<T>(_p, Eigen::Matrix<T,3,1>::UnitY()) *
+                                Eigen::AngleAxis<T>(_y, Eigen::Matrix<T,3,1>::UnitZ()));
+}
 
-    // TODO: store R's when T=Scalar
-    //Eigen::Matrix<T,3,3> R_roll_T, R_pitch_T, R_yaw_T;
-    //if (!getRollState()->isFixed())
-    //    *R_roll_ptr_ = Eigen::AngleAxis<Scalar>(0.25*M_PI, Eigen::Vector3s::UnitX());
+inline Eigen::Matrix3s SensorGnss::getREnuMap() const
+{
+    return computeREnuMap(getEnuMapRoll() ->getState()(0),
+                          getEnuMapPitch()->getState()(0),
+                          getEnuMapYaw()  ->getState()(0));
 }
 
 } // namespace wolf
diff --git a/src/sensor/sensor_gnss.cpp b/src/sensor/sensor_gnss.cpp
index 34f0e73e85e56c8c62b969ec42e55b10f863ae4c..e38f10486e98fc6366c8c7248d3852a02deb4de6 100644
--- a/src/sensor/sensor_gnss.cpp
+++ b/src/sensor/sensor_gnss.cpp
@@ -245,13 +245,6 @@ void SensorGnss::setEnuMapYawState(const Scalar& yaw_ENU_MAP)
     R_ENU_MAP_initialized_ = true;
 }
 
-Eigen::Matrix3s SensorGnss::getREnuMap() const
-{
-    return Eigen::Matrix3s(Eigen::AngleAxis<Scalar>(getEnuMapRoll() ->getState()(0), Eigen::Vector3s::UnitX()) *
-                           Eigen::AngleAxis<Scalar>(getEnuMapPitch()->getState()(0), Eigen::Vector3s::UnitY()) *
-                           Eigen::AngleAxis<Scalar>(getEnuMapYaw()  ->getState()(0), Eigen::Vector3s::UnitZ()));
-}
-
 // Define the factory method
 SensorBasePtr SensorGnss::create(const std::string& _unique_name, const Eigen::VectorXs& _extrinsics,
                               const IntrinsicsBasePtr _intrinsics)