diff --git a/test/gtest_factor_pixel_hp.cpp b/test/gtest_factor_pixel_hp.cpp
index 6246b8683f3f2f070bfc7841992b371a22d9b651..803256c2fd6c5410d13624e2f1d699aa1a0de67b 100644
--- a/test/gtest_factor_pixel_hp.cpp
+++ b/test/gtest_factor_pixel_hp.cpp
@@ -14,8 +14,7 @@
 #include <core/utils/utils_gtest.h>
 #include <core/factor/factor_block_absolute.h>
 #include <core/factor/factor_quaternion_absolute.h>
-#include <core/ceres_wrapper/ceres_manager.h>
-#include <core/ceres_wrapper/ceres_manager.h>
+#include <core/ceres_wrapper/solver_ceres.h>
 
 using namespace wolf;
 using namespace Eigen;
@@ -33,7 +32,7 @@ class FactorPixelHpTest : public testing::Test{
         Vector4d    lmkHP1, lmkHP2, lmkHP3, lmkHP4;
 
         ProblemPtr      problem;
-        CeresManagerPtr ceres_manager;
+        SolverCeresPtr  solver;
 
 
         SensorCameraPtr camera;
@@ -147,11 +146,9 @@ class FactorPixelHpTest : public testing::Test{
 
             // Build problem
             problem = Problem::create("PO", 3);
-            ceres::Solver::Options options;
-            options.function_tolerance  = 1e-6;
-            options.max_num_iterations  = 200;
-            ceres_manager = std::make_shared<CeresManager>(problem, options);
-
+            solver = std::make_shared<SolverCeres>(problem);
+            solver->getSolverOptions().function_tolerance  = 1e-6;
+            solver->getSolverOptions().max_num_iterations  = 200;
 
             // Install sensor and processor
         	ParamsSensorCameraPtr intr      = std::make_shared<ParamsSensorCamera>();
@@ -198,7 +195,6 @@ TEST(ProcessorFactorPixelHp, testZeroResidual)
 {
     //Build problem
     ProblemPtr problem_ptr = Problem::create("PO", 3);
-    CeresManagerPtr ceres_mgr = std::make_shared<CeresManager>(problem_ptr);
 
     // Install sensor
     ParamsSensorCameraPtr intr      = std::make_shared<ParamsSensorCamera>();
@@ -261,7 +257,7 @@ TEST_F(FactorPixelHpTest, testSolveLandmark)
     L1->unfix();
 
     auto orig = L1->point();
-    std::string report = ceres_manager->solve(wolf::SolverManager::ReportVerbosity::FULL);
+    std::string report = solver->solve(wolf::SolverManager::ReportVerbosity::FULL);
 
     std::cout << report << std::endl;
 
@@ -284,7 +280,7 @@ TEST_F(FactorPixelHpTest, testSolveLandmarkAltered)
 
     auto orig = L1->point();
     L1->getP()->setState(L1->getState().vector("P") + Vector4d::Random());
-    std::string report = ceres_manager->solve(wolf::SolverManager::ReportVerbosity::FULL);
+    std::string report = solver->solve(wolf::SolverManager::ReportVerbosity::FULL);
 
     std::cout << report << std::endl;
 
@@ -317,7 +313,7 @@ TEST_F(FactorPixelHpTest, testSolveFramePosition2ObservableDoF)
     F1->getO()->fix();
     F1->getP()->unfix();
 
-    std::string report = ceres_manager->solve(wolf::SolverManager::ReportVerbosity::FULL);
+    std::string report = solver->solve(wolf::SolverManager::ReportVerbosity::FULL);
 
     std::cout << report << std::endl;
 
@@ -409,7 +405,7 @@ TEST_F(FactorPixelHpTest, testSolveFramePosition)
     F1->getO()->fix();
     F1->getP()->unfix();
 
-    std::string report = ceres_manager->solve(wolf::SolverManager::ReportVerbosity::FULL);
+    std::string report = solver->solve(wolf::SolverManager::ReportVerbosity::FULL);
 
     std::cout << report << std::endl;
 
@@ -566,7 +562,7 @@ TEST_F(FactorPixelHpTest, testSolveBundleAdjustment)
 	auto l4 = L4->getP()->getState();
 
 
-	std::string report = ceres_manager->solve(wolf::SolverManager::ReportVerbosity::FULL);
+	std::string report = solver->solve(wolf::SolverManager::ReportVerbosity::FULL);
 	std::cout << report << std::endl;
 
 	//
@@ -612,7 +608,7 @@ TEST_F(FactorPixelHpTest, testSolveBundleAdjustment)
 	// solve again
     problem->print(1,0,1,1);
 
-    report = ceres_manager->solve(wolf::SolverManager::ReportVerbosity::FULL);
+    report = solver->solve(wolf::SolverManager::ReportVerbosity::FULL);
 	std::cout << report << std::endl;
 
 	problem->print(1,0,1,1);
diff --git a/test/gtest_factor_trifocal.cpp b/test/gtest_factor_trifocal.cpp
index 418fba90985df939863b37f37e91c28b0746ab5b..2ff97a42baf34c460f3e592e2d8fc985a5925438 100644
--- a/test/gtest_factor_trifocal.cpp
+++ b/test/gtest_factor_trifocal.cpp
@@ -2,7 +2,7 @@
 
 #include "core/utils/logging.h"
 
-#include "core/ceres_wrapper/ceres_manager.h"
+#include "core/ceres_wrapper/solver_ceres.h"
 #include "vision/processor/processor_tracker_feature_trifocal.h"
 #include "vision/capture/capture_image.h"
 #include "vision/factor/factor_trifocal.h"
@@ -20,7 +20,7 @@ class FactorTrifocalTest : public testing::Test{
         Vector7d    pose1,  pose2,  pose3,  pose_cam;
 
         ProblemPtr      problem;
-        CeresManagerPtr ceres_manager;
+        SolverCeresPtr  solver;
 
         SensorCameraPtr camera;
         ProcessorTrackerFeatureTrifocalPtr proc_trifocal;
@@ -121,8 +121,7 @@ class FactorTrifocalTest : public testing::Test{
 
             // Build problem
             problem = Problem::create("PO", 3);
-            ceres::Solver::Options options;
-            ceres_manager = std::make_shared<CeresManager>(problem, options);
+            solver = std::make_shared<SolverCeres>(problem);
 
             // Install sensor and processor
             S      = problem->installSensor("SensorCamera", "canonical", pose_cam, wolf_root + "/demos/camera_params_canonical.yaml");
@@ -411,7 +410,7 @@ TEST_F(FactorTrifocalTest, solve_F1)
     F2->fix();
     F3->fix();
 
-    std::string report = ceres_manager->solve(SolverManager::ReportVerbosity::BRIEF);
+    std::string report = solver->solve(SolverManager::ReportVerbosity::BRIEF);
 
     F1_p = F1->getP()->getState();
     F1_o = F1->getO()->getState();
@@ -491,7 +490,7 @@ TEST_F(FactorTrifocalTest, solve_F2)
     F2->unfix();
     F3->fix();
 
-    std::string report = ceres_manager->solve(SolverManager::ReportVerbosity::BRIEF);
+    std::string report = solver->solve(SolverManager::ReportVerbosity::BRIEF);
 
     F1_p = F1->getP()->getState();
     F1_o = F1->getO()->getState();
@@ -572,7 +571,7 @@ TEST_F(FactorTrifocalTest, solve_F3)
     F2->fix();
     F3->unfix();
 
-    std::string report = ceres_manager->solve(SolverManager::ReportVerbosity::BRIEF);
+    std::string report = solver->solve(SolverManager::ReportVerbosity::BRIEF);
 
     F1_p = F1->getP()->getState();
     F1_o = F1->getO()->getState();
@@ -652,7 +651,7 @@ TEST_F(FactorTrifocalTest, solve_S)
     F2->fix();
     F3->fix();
 
-    std::string report = ceres_manager->solve(SolverManager::ReportVerbosity::BRIEF);
+    std::string report = solver->solve(SolverManager::ReportVerbosity::BRIEF);
 
     F1_p = F1->getP()->getState();
     F1_o = F1->getO()->getState();
@@ -777,10 +776,10 @@ TEST_F(FactorTrifocalMultiPointTest, solve_multi_point)
     F3->getP()->setState( pos3   + 0.2*Vector3d::Random());
     F3->getO()->setState((vquat3 + 0.2*Vector4d::Random()).normalized());
 
-    std::string report = ceres_manager->solve(SolverManager::ReportVerbosity::BRIEF);
+    std::string report = solver->solve(SolverManager::ReportVerbosity::FULL);
 
     // Print results
-    WOLF_DEBUG("report: ", report);
+    WOLF_INFO("report: ", report);
     problem->print(1,0,1,0);
 
     // Evaluate final states
@@ -842,7 +841,7 @@ TEST_F(FactorTrifocalMultiPointTest, solve_multi_point_scale)
     F3->getP()->setState( 2 * pos3 + 0.2*Vector3d::Random());
     F3->getO()->setState((  vquat3 + 0.2*Vector4d::Random()).normalized());
 
-    std::string report = ceres_manager->solve(SolverManager::ReportVerbosity::BRIEF);
+    std::string report = solver->solve(SolverManager::ReportVerbosity::BRIEF);
 
     // Print results
     WOLF_DEBUG("report: ", report);
@@ -924,13 +923,13 @@ TEST_F(FactorTrifocalMultiPointTest, solve_multi_point_distance)
     // F1->addConstrainedBy(cd);
 
     cd->setStatus(FAC_INACTIVE);
-    std::string report = ceres_manager->solve(SolverManager::ReportVerbosity::BRIEF);
+    std::string report = solver->solve(SolverManager::ReportVerbosity::BRIEF);
     WOLF_DEBUG("DISTANCE CONSTRAINT INACTIVE: \n", report);
 
     problem->print(1,0,1,0);
 
     cd->setStatus(FAC_ACTIVE);
-    report = ceres_manager->solve(SolverManager::ReportVerbosity::BRIEF);
+    report = solver->solve(SolverManager::ReportVerbosity::BRIEF);
 
     // Print results
     WOLF_DEBUG("DISTANCE CONSTRAINT ACTIVE: \n", report);