diff --git a/src/test/gtest_processor_imu.cpp b/src/test/gtest_processor_imu.cpp
index e4f0e54c3e3033fab43d0f127a03408caf856e90..a3b57eb668f9285fb7ce619873a107fc0958b4c6 100644
--- a/src/test/gtest_processor_imu.cpp
+++ b/src/test/gtest_processor_imu.cpp
@@ -29,6 +29,7 @@ class ProcessorIMUt : public testing::Test
         wolf::SensorBasePtr sensor_ptr;
         wolf::TimeStamp t;
         wolf::Scalar mti_clock, tmp;
+        wolf::Scalar dt;
         Vector6s data;
         Matrix6s data_cov;
         VectorXs x0;
@@ -148,7 +149,8 @@ TEST(ProcessorIMU, voteForKeyFrame)
     VectorXs x0(10);
     TimeStamp t(0);
     x0 << 0,0,0,  0,0,0,1,  0,0,0;
-    problem->getProcessorMotionPtr()->setOrigin(x0, t); //this also creates a keyframe at origin
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     //data variable and covariance matrix
     // since we integrate only a few times, give the capture a big covariance, otherwise it will be so small that it won't pass following assertions
@@ -211,8 +213,8 @@ TEST_F(ProcessorIMUt, interpolate)
 
     t.set(0);
     x0 << 0,0,0,  0,0,0,1,  0,0,0;
-
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     data << 2, 0, 0, 0, 0, 0; // only acc_x
     cap_imu_ptr->setData(data);
@@ -257,8 +259,8 @@ TEST_F(ProcessorIMUt, acc_x)
 {
     t.set(0); // clock in 0,1 ms ticks
     x0 << 0,0,0,  0,0,0,1,  0,0,0;
-
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     data << 2, 0, 9.806, 0, 0, 0; // only acc_x, but measure gravity!
 
@@ -283,8 +285,8 @@ TEST_F(ProcessorIMUt, acc_y)
 
     t.set(0); // clock in 0,1 ms ticks
     x0 << 0,0,0,  0,0,0,1,  0,0,0;
-
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     data << 0, 20, 9.806, 0, 0, 0; // only acc_y, but measure gravity!
 
@@ -320,8 +322,8 @@ TEST_F(ProcessorIMUt, acc_z)
 {
     t.set(0); // clock in 0,1 ms ticks
     x0 << 0,0,0,  0,0,0,1,  0,0,0;
-
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     data << 0, 0, 9.806 + 2.0, 0, 0, 0; // only acc_z, but measure gravity!
 
@@ -358,8 +360,8 @@ TEST_F(ProcessorIMUt, check_Covariance)
 {
     t.set(0); // clock in 0,1 ms ticks
     x0 << 0,0,0,  0,0,0,1,  0,0,0;
-
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     data << 2, 0, 9.806, 0, 0, 0; // only acc_x, but measure gravity!
 
@@ -379,8 +381,8 @@ TEST_F(ProcessorIMUt, gyro_x)
     wolf::Scalar dt(0.001);
     t.set(0); // clock in 0,1 ms ticks
     x0 << 0,0,0,  0,0,0,1,  0,0,0;
-
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     wolf::Scalar rate_of_turn = 5 * M_PI/180.0;
     data << 0, 0, 9.806, rate_of_turn, 0, 0; // measure gravity
@@ -430,9 +432,10 @@ TEST_F(ProcessorIMUt, gyro_x_biasedAbx)
     Vector3s acc_bias = bias.head(3);
     // state
     x0 << 0,0,0,  0,0,0,1,  0,0,0;
+    MatrixXs P0(9,9); P0.setIdentity();
 
     // init things
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    problem->setPrior(x0, P0, t, 0.01);
 
     std::static_pointer_cast<wolf::CaptureMotion>(problem->getProcessorMotionPtr()->getOriginPtr())->setCalibration(bias);
     problem->getProcessorMotionPtr()->getLastPtr()->setCalibrationPreint(bias);
@@ -484,10 +487,12 @@ TEST_F(ProcessorIMUt, gyro_xy_biasedAbxy)
     t.set(0); // clock in 0,1 ms ticks
     wolf::Scalar abx(0.002), aby(0.01);
     x0 << 0,0,0,  0,0,0,1,  0,0,0;
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
+
     Vector6s bias; bias << abx,aby,0,  0,0,0;
     Vector3s acc_bias = bias.head(3);
 
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
     std::static_pointer_cast<wolf::CaptureMotion>(problem->getProcessorMotionPtr()->getOriginPtr())->setCalibration(bias);
     problem->getProcessorMotionPtr()->getLastPtr()->setCalibrationPreint(bias);
 
@@ -534,8 +539,8 @@ TEST_F(ProcessorIMUt, gyro_z)
     wolf::Scalar dt(0.001);
     t.set(0); // clock in 0,1 ms ticks
     x0 << 0,0,0,  0,0,0,1,  0,0,0;
-
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     wolf::Scalar rate_of_turn = 5 * M_PI/180.0;
     data << -wolf::gravity(), 0, 0, rate_of_turn; // measure gravity!
@@ -572,8 +577,8 @@ TEST_F(ProcessorIMUt, gyro_xyz)
 {
     t.set(0); // clock in 0,1 ms ticks
     x0 << 0,0,0,  0,0,0,1,  0,0,0;
-
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     Vector3s tmp_vec; //will be used to store rate of turn data
     Quaternions quat_comp(Quaternions::Identity());
@@ -659,8 +664,8 @@ TEST_F(ProcessorIMUt, gyro_z_ConstVelocity)
     wolf::Scalar dt(0.001);
     t.set(0); // clock in 0,1 ms ticks
     x0 << 0,0,0,  0,0,0,1,  2,0,0;
-
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     wolf::Scalar rate_of_turn = 5 * M_PI/180.0;
     data << -wolf::gravity(), 0, 0, rate_of_turn; // measure gravity!
@@ -698,8 +703,8 @@ TEST_F(ProcessorIMUt, gyro_x_ConstVelocity)
     wolf::Scalar dt(0.001);
     t.set(0); // clock in 0,1 ms ticks
     x0 << 0,0,0,  0,0,0,1,  2,0,0;
-
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     wolf::Scalar rate_of_turn = 5 * M_PI/180.0;
     data << 0, 0, 9.806, rate_of_turn, 0, 0; // measure gravity
@@ -742,8 +747,8 @@ TEST_F(ProcessorIMUt, gyro_xy_ConstVelocity)
     wolf::Scalar dt(0.001);
     t.set(0); // clock in 0,1 ms ticks
     x0 << 0,0,0,  0,0,0,1,  2,0,0;
-
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     wolf::Scalar rate_of_turn = 5 * M_PI/180.0;
     data << 0, 0, 9.806, 0, rate_of_turn, 0; // measure gravity
@@ -786,8 +791,8 @@ TEST_F(ProcessorIMUt, gyro_y_ConstVelocity)
     wolf::Scalar dt(0.001);
     t.set(0); // clock in 0,1 ms ticks
     x0 << 0,0,0,  0,0,0,1,  2,0,0;
-
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     wolf::Scalar rate_of_turn = 5 * M_PI/180.0;
     data << 0, 0, 9.806, 0, rate_of_turn, 0; // measure gravity
@@ -829,8 +834,8 @@ TEST_F(ProcessorIMUt, gyro_xyz_ConstVelocity)
 {
     t.set(0); // clock in 0,1 ms ticks
     x0 << 0,0,0,  0,0,0,1,  2,0,0;
-
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     Vector3s tmp_vec; //will be used to store rate of turn data
     Quaternions quat_comp(Quaternions::Identity());
@@ -918,8 +923,8 @@ TEST_F(ProcessorIMUt, gyro_x_acc_x)
     wolf::Scalar dt(0.001);
     t.set(0); // clock in 0,1 ms ticks
     x0 << 0,0,0,  0,0,0,1,  0,0,0;
-
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     wolf::Scalar rate_of_turn = 5 * M_PI/180.0;
     data << 1, 0, -wolf::gravity()(2), rate_of_turn, 0, 0; // measure gravity
@@ -967,8 +972,8 @@ TEST_F(ProcessorIMUt, gyro_y_acc_y)
     wolf::Scalar dt(0.001);
     t.set(0); // clock in 0,1 ms ticks
     x0 << 0,0,0,  0,0,0,1,  0,0,0;
-
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     wolf::Scalar rate_of_turn = 5 * M_PI/180.0;
     data << 0, 1, -wolf::gravity()(2), 0, rate_of_turn, 0; // measure gravity
@@ -1016,8 +1021,8 @@ TEST_F(ProcessorIMUt, gyro_z_acc_z)
     wolf::Scalar dt(0.001);
     t.set(0); // clock in 0,1 ms ticks
     x0 << 0,0,0,  0,0,0,1,  0,0,0;
-
-    problem->getProcessorMotionPtr()->setOrigin(x0, t);
+    MatrixXs P0(9,9); P0.setIdentity();
+    problem->setPrior(x0, P0, t, 0.01);
 
     wolf::Scalar rate_of_turn = 5 * M_PI/180.0;
     data << 0, 0, -wolf::gravity()(2) + 1, 0, 0, rate_of_turn; // measure gravity