diff --git a/demos/demo_2_lasers_offline.cpp b/demos/demo_2_lasers_offline.cpp
index 40ebda489e205e21154a7501f3becacb6b8caced..597dfd71f4813f396cdf992a8354f896c575639f 100644
--- a/demos/demo_2_lasers_offline.cpp
+++ b/demos/demo_2_lasers_offline.cpp
@@ -171,15 +171,14 @@ int main(int argc, char** argv)
     problem.setPrior(ground_truth_pose, Eigen::Matrix3d::Identity() * 0.1, ts, 0.1);
 
     // Ceres wrapper
-    ceres::Solver::Options ceres_options;
-    ceres_options.minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;LINE_SEARCH
-    ceres_options.max_line_search_step_contraction = 1e-3;
-    //    ceres_options.minimizer_progress_to_stdout = false;
-    //    ceres_options.line_search_direction_type = ceres::LBFGS;
-    //    ceres_options.max_num_iterations = 100;
+    SolverCeres ceres_manager(&problem);
+    ceres_manager.getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;LINE_SEARCH
+    ceres_manager.getSolverOptions().max_line_search_step_contraction = 1e-3;
+    //    ceres_manager.getSolverOptions().minimizer_progress_to_stdout = false;
+    //    ceres_manager.getSolverOptions().line_search_direction_type = ceres::LBFGS;
+    //    ceres_manager.getSolverOptions().max_num_iterations = 100;
     google::InitGoogleLogging(argv[0]);
 
-    CeresManager ceres_manager(&problem, ceres_options);
     std::ofstream log_file, landmark_file;  //output file
 
     std::cout << "START TRAJECTORY..." << std::endl;
diff --git a/demos/demo_ceres_2_lasers.cpp b/demos/demo_ceres_2_lasers.cpp
index 050f47f2208da737a3c494697b230786450df7a8..bc3c6fb5266005e832333fc665eedcfee7b8f7ad 100644
--- a/demos/demo_ceres_2_lasers.cpp
+++ b/demos/demo_ceres_2_lasers.cpp
@@ -257,15 +257,15 @@ int main(int argc, char** argv)
     odom_processor->setOrigin(origin_frame);
 
     // Ceres wrapper
-    ceres::Solver::Options ceres_options;
-    ceres_options.minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;LINE_SEARCH
-    ceres_options.max_line_search_step_contraction = 1e-3;
-    //    ceres_options.minimizer_progress_to_stdout = false;
-    //    ceres_options.line_search_direction_type = ceres::LBFGS;
-    //    ceres_options.max_num_iterations = 100;
+    SolverCeres ceres_manager(&problem);
+    ceres_manager.getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;LINE_SEARCH
+    ceres_manager.getSolverOptions().max_line_search_step_contraction = 1e-3;
+    //    ceres_manager.getSolverOptions().minimizer_progress_to_stdout = false;
+    //    ceres_manager.getSolverOptions().line_search_direction_type = ceres::LBFGS;
+    //    ceres_manager.getSolverOptions().max_num_iterations = 100;
     google::InitGoogleLogging(argv[0]);
 
-    CeresManager ceres_manager(&problem, ceres_options);
+    SolverCeres ceres_manager(&problem, ceres_options);
     std::ofstream log_file, landmark_file;  //output file
 
     //std::cout << "START TRAJECTORY..." << std::endl;
diff --git a/demos/demo_ceres_2_lasers_polylines.cpp b/demos/demo_ceres_2_lasers_polylines.cpp
index 3bc78c0a4ab75fe55a31a8fbaf1fbf388ba201e0..a8a93d9fa422817df9c57a76a314ba38d4f799d1 100644
--- a/demos/demo_ceres_2_lasers_polylines.cpp
+++ b/demos/demo_ceres_2_lasers_polylines.cpp
@@ -264,15 +264,15 @@ int main(int argc, char** argv)
     odom_processor->setOrigin(origin_frame);
 
     // Ceres wrapper
-    ceres::Solver::Options ceres_options;
-    ceres_options.minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;LINE_SEARCH
-    ceres_options.max_line_search_step_contraction = 1e-3;
-    //    ceres_options.minimizer_progress_to_stdout = false;
-    //    ceres_options.line_search_direction_type = ceres::LBFGS;
-    //    ceres_options.max_num_iterations = 100;
+    SolverCeres ceres_manager(&problem);
+    ceres_manager.getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;LINE_SEARCH
+    ceres_manager.getSolverOptions().max_line_search_step_contraction = 1e-3;
+    //    ceres_manager.getSolverOptions().minimizer_progress_to_stdout = false;
+    //    ceres_manager.getSolverOptions().line_search_direction_type = ceres::LBFGS;
+    //    ceres_manager.getSolverOptions().max_num_iterations = 100;
     google::InitGoogleLogging(argv[0]);
 
-    CeresManager ceres_manager(&problem, ceres_options);
+    SolverCeres ceres_manager(&problem, ceres_options);
     std::ofstream log_file, landmark_file;  //output file
 
     //std::cout << "START TRAJECTORY..." << std::endl;
diff --git a/test/gtest_processor_odom_icp.cpp b/test/gtest_processor_odom_icp.cpp
index 8b8d0fbb38a22bc5733c6f22097e0017b187ec03..cc51f33029103798acbe5de2d552b99a777b2142 100644
--- a/test/gtest_processor_odom_icp.cpp
+++ b/test/gtest_processor_odom_icp.cpp
@@ -37,7 +37,7 @@ class ProcessorOdomIcp_Test : public testing::Test
 {
     public:
         ProblemPtr problem;
-        CeresManagerPtr solver;
+        SolverCeresPtr solver;
         SensorLaser2dPtr lidar;
         ProcessorOdomIcpPublicPtr processor;
 
@@ -51,7 +51,7 @@ class ProcessorOdomIcp_Test : public testing::Test
         void SetUp() override
         {
             problem     = Problem::create("PO", 2);
-            solver      = std::make_shared<CeresManager>(problem);
+            solver      = std::make_shared<SolverCeres>(problem);
             auto sen    = problem->installSensor("SensorLaser2d", "lidar", Eigen::Vector3d(0,0,0), laser_root_dir + "/test/yaml/sensor_laser_2d.yaml");
 
             lidar       = std::static_pointer_cast<SensorLaser2d>(sen);