diff --git a/include/gnss_utils.h b/include/gnss_utils.h
index 0c5b6ed4320ee047358ce6f0c56592714b069f7d..f090487399a008b1dc097d3f0e1e5fa47ecaa353 100644
--- a/include/gnss_utils.h
+++ b/include/gnss_utils.h
@@ -5,8 +5,6 @@
 #include <iostream>
 #include <memory>
 
-#include "observation.h"
-
 extern "C"
 {
     #include "/home/jlaplaza/RTKLIB/src/rtklib.h"
@@ -39,25 +37,38 @@ namespace GNSSUtils
 
       void clearNavigation();
       
-      void pushNavigation(nav_t nav);
+      void setNavigation(nav_t nav);
 
-      std::vector<nav_t> getNavigation();
+      nav_t getNavigation();
       
 
       /* - Processing Options - */
 
       void clearOptions();
       
-      void pushOption(prcopt_t opt);
+      void setOptions(prcopt_t opt);
 
-      std::vector<prcopt_t> getOptions();
+      prcopt_t getOptions();
 
 
       /* - Solution - */
 
+      void clearSolution();
+      
+      void setSolution(sol_t sol);
+
+      sol_t getSolution();
+
 
       /* - Satellite status - */
 
+      void clearSatStatus();
+      
+      void setSatStatus(ssat_t ssat);
+
+      ssat_t getSatStatus();
+      
+
       /* - Compute Fix - */
 
       int computeSPP(double *azel, char *msg);
@@ -67,21 +78,18 @@ namespace GNSSUtils
       std::vector<obsd_t> _obsVector;
   
       // rtklib-like attribute to represent the different navigation msgs for a given epoch
-      std::vector<nav_t> _navVector;
+      nav_t _nav;
 
       // rtklib-like attribute to represent the different options for a given epoch
-      std::vector<prcopt_t> _opt;
+      prcopt_t _opt;
 
       // rtklib-like attribute to represent the solution for a given epoch
-      std::Vector<sol_t> _sol;
+      sol_t _sol;
 
       // rtklib-like attribute to represent the satellite status for a given epoch
-      std::vector<ssat_t> _ssat;
-
-      
-
-      
+      ssat_t _ssat;
 
   };
 }
 #endif
+
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index cc0421b22732bbc4d4f41d7d6415b8bdb0175d6f..ea5f7445478c8c2ed1e9d3d01f90cdcd573cbb36 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,8 +1,8 @@
 # driver source files
-SET(sources gnss_utils.cpp observation.cpp)
+SET(sources gnss_utils.cpp)
 
 # application header files
-SET(headers ../include/gnss_utils.h ../include/observation.h)
+SET(headers ../include/gnss_utils.h)
 
 # RTKLIB
 INCLUDE (${PROJECT_SOURCE_DIR}/cmake_modules/FindRTKLIB.cmake)
diff --git a/src/examples/gnss_utils_test.cpp b/src/examples/gnss_utils_test.cpp
index 8fd4243b068ee72957dfd3bf6a81682e9b367b6a..6375e77e30b0b39d621c872197a56116e465eec0 100644
--- a/src/examples/gnss_utils_test.cpp
+++ b/src/examples/gnss_utils_test.cpp
@@ -1,5 +1,4 @@
 #include "../../include/gnss_utils.h"
-#include "../../include/observation.h"
 #include <iostream>
 
 using namespace GNSSUtils;
@@ -11,7 +10,7 @@ int main(int argc, char *argv[])
   std::cout << "GNSS Utils Library Example" << std::endl;
   std::cout << "--------------------------" << std::endl;
   // create a Receiver object
-  GNSSUtils::Receiver test_rcv;
+  //GNSSUtils::Receiver test_rcv;
 
   // create a Observation object
   gtime_t ts={0};
@@ -19,22 +18,22 @@ int main(int argc, char *argv[])
   std::vector<unsigned char> vu({q, w, e});
   std::vector<double> vd({1., 2., 3.});
   std::vector<float> vf({1., 2., 3.});
-  Observation test_obs(ts, 1, 1, vu, vu, vu, vd, vd, vf);
+  //Observation test_obs(ts, 1, 1, vu, vu, vu, vd, vd, vf);
 
   // Display current Observation
-  std::cout << "Current observation (sat): " << "(" << test_obs.getSat() << ")" << std::endl;
-  std::cout << "Current observation (SNR): " << "(" ;
+  //std::cout << "Current observation (sat): " << "(" << test_obs.getSat() << ")" << std::endl;
+  //std::cout << "Current observation (SNR): " << "(" ;
 
  
 
-  for (unsigned char i=0; i < 3; ++i)
-    std::cout << test_obs.getSNR()[i] << ", ";
-  std::cout << ")" << std::endl;
+  //for (unsigned char i=0; i < 3; ++i)
+    //std::cout << test_obs.getSNR()[i] << ", ";
+  //std::cout << ")" << std::endl;
 
   
-  obsd_t obs = test_obs.convert2rtk();
-  std::cout << "Observation SNR in RTKLIB format: " << "(";
-  for (unsigned char i=0; i < 3; ++i)
-    std::cout << obs.SNR[i] << ", ";
-  std::cout << ")" << std::endl;
+  //obsd_t obs = test_obs.convert2rtk();
+  //std::cout << "Observation SNR in RTKLIB format: " << "(";
+  //for (unsigned char i=0; i < 3; ++i)
+    //std::cout << obs.SNR[i] << ", ";
+  //std::cout << ")" << std::endl;
 }
diff --git a/src/gnss_utils.cpp b/src/gnss_utils.cpp
index 16f173b9ee18f2a690af3dbd67574c852d222b89..eea7b3b8324f2b6d4e93078dde81d51184a2bc67 100644
--- a/src/gnss_utils.cpp
+++ b/src/gnss_utils.cpp
@@ -37,31 +37,88 @@ std::vector<obsd_t> Receiver::getObservations()
 
 void Receiver::clearNavigation()
 {
-  _navVector.clear();
+  //_nav = NULL;
 }
 
-void Receiver::pushNavigation(nav_t nav)
+void Receiver::setNavigation(nav_t nav)
 {
-  _navVector.push_back(nav);
+  _nav = nav;
 }
 
-std::vector<nav_t> Receiver::getNavigation()
+nav_t Receiver::getNavigation()
 {
-  return this->_navVector;
+  return this->_nav;
 }
 
 
+/* - Processing options - */
 
+void Receiver::clearOptions()
+{
+  //_opt = NULL;
+}
+
+void Receiver::setOptions(prcopt_t opt)
+{
+  _opt = opt;
+}
+
+prcopt_t Receiver::getOptions()
+{
+  return this->_opt;
+}
 
 
+/* - Solution - */
+
+void Receiver::clearSolution()
+{
+  //_sol = NULL;
+}
+
+void Receiver::setSolution(sol_t sol)
+{
+  _sol = sol;
+}
+
+sol_t Receiver::getSolution()
+{
+  return this->_sol;
+}
+
+
+/* - Satellite Status - */
+
+void Receiver::clearSatStatus()
+{
+  //_ssat = NULL;
+}
+
+void Receiver::setSatStatus(ssat_t ssat)
+{
+  _ssat = ssat;
+}
+
+ssat_t Receiver::getSatStatus()
+{
+  return this->_ssat;
+}
+
 
+/* - Compute Fix - */
 
-int Receiver::getSPP(double *azel, char *msg)
+int Receiver::computeSPP(double *azel, char *msg)
 {
-  obsd_t *obs = &this->_obsVector[0];
+  const obsd_t *obs = &this->_obsVector[0];
   int n = this->_obsVector.size();
+  /*
+  const nav_t *nav = this->_nav;
+  const prcopt_t *opt = this->_opt;
+  sol_t *sol = this->_sol;
+  ssat_t *ssat = this->_ssat;
+  */
   
-  return int pntpos(*obs, n, nav_t *nav, *opt, *sol, *azel, *ssat, *msg)
+  return pntpos(obs, n, &_nav, &_opt, &_sol, azel, &_ssat, msg);
 }