diff --git a/include/gnss_utils/receiver_raw_base.h b/include/gnss_utils/receiver_raw_base.h
index 61db460de00199ffae45f696a3a7a5ad29141e73..644eade787170e2ae0cda5e126ff767b58195718 100644
--- a/include/gnss_utils/receiver_raw_base.h
+++ b/include/gnss_utils/receiver_raw_base.h
@@ -6,7 +6,6 @@
 
 namespace GnssUtils
 {
-
 enum RawDataType : int
 {
   NO       = 0,
@@ -29,8 +28,11 @@ public:
 
   virtual RawDataType addDataStream(const std::vector<uint8_t>& data_stream) = 0;
 
-  const Observations& getObservations();
-  const Navigation&   getNavigation();
+  const Observations& getObservations() const;
+  const Navigation&   getNavigation() const;
+
+  Observations getObservations();
+  Navigation   getNavigation();
 
   RawDataType getRawDataType() const;
 
@@ -44,12 +46,22 @@ protected:
   Navigation   nav_;
 };
 
-inline const Observations& ReceiverRawAbstract::getObservations()
+inline const Observations& ReceiverRawAbstract::getObservations() const
+{
+  return obs_;
+}
+
+inline Observations ReceiverRawAbstract::getObservations()
 {
   return obs_;
 }
 
-inline const Navigation& ReceiverRawAbstract::getNavigation()
+inline const Navigation& ReceiverRawAbstract::getNavigation() const
+{
+  return nav_;
+}
+
+inline Navigation ReceiverRawAbstract::getNavigation()
 {
   return nav_;
 }
diff --git a/src/utils/rcv_position.cpp b/src/utils/rcv_position.cpp
index 92cd0f1952256c640a0eeb4b2510ffc1bcc01f5d..8a2b450c1b9e8ca4d40cc0e19677f7821a2f5aa9 100644
--- a/src/utils/rcv_position.cpp
+++ b/src/utils/rcv_position.cpp
@@ -12,7 +12,7 @@ using namespace GnssUtils;
 namespace GnssUtils
 {
 ComputePosOutput computePos(const GnssUtils::Observations& _observations,
-                            GnssUtils::Navigation&         _navigation,
+                            const GnssUtils::Navigation&   _navigation,
                             const prcopt_t&                _prcopt)
 {
   // Define error msg
@@ -22,10 +22,16 @@ ComputePosOutput computePos(const GnssUtils::Observations& _observations,
   sol_t                       sol;
   sol = { { 0 } };
 
-  std::vector<double> sat_elevations(2*_observations.size());
+  std::vector<double> sat_elevations(2 * _observations.size());
 
-  output.pos_stat = pntpos(
-      _observations.data(), _observations.size(), &(_navigation.getNavigation()), &_prcopt, &sol, sat_elevations.data(), NULL, msg);
+  output.pos_stat = pntpos(_observations.data(),
+                           _observations.size(),
+                           &(_navigation.getNavigation()),
+                           &_prcopt,
+                           &sol,
+                           sat_elevations.data(),
+                           NULL,
+                           msg);
 
   if (output.pos_stat == 0)
     std::cout << "computePos: error in computing positioning, message: " << msg << "\n";
@@ -39,7 +45,9 @@ ComputePosOutput computePos(const GnssUtils::Observations& _observations,
   // std::cout << "Covariance:\n" << output.pos_covar << "\n";
 
   if (sol.dtr != NULL)
-    output.rcv_bias = (Eigen::Matrix<double,6,1>() << sol.dtr[0], sol.dtr[1], sol.dtr[2], sol.dtr[3], sol.dtr[4], sol.dtr[5]).finished();
+    output.rcv_bias =
+        (Eigen::Matrix<double, 6, 1>() << sol.dtr[0], sol.dtr[1], sol.dtr[2], sol.dtr[3], sol.dtr[4], sol.dtr[5])
+            .finished();
   output.type    = sol.type;
   output.stat    = sol.stat;
   output.ns      = sol.ns;
@@ -48,7 +56,8 @@ ComputePosOutput computePos(const GnssUtils::Observations& _observations,
   output.lat_lon = ecefToLatLonAlt(output.pos);
 
   for (auto i = 0; i < _observations.size(); i++)
-      output.sat_azel.emplace(_observations.getObservationByIdx(i).sat,Eigen::Vector2d(sat_elevations.at(2*i),sat_elevations.at(2*i+1)));
+    output.sat_azel.emplace(_observations.getObservationByIdx(i).sat,
+                            Eigen::Vector2d(sat_elevations.at(2 * i), sat_elevations.at(2 * i + 1)));
 
   return output;
 }