diff --git a/demos/demo_analytic_autodiff_factor.cpp b/demos/demo_analytic_autodiff_factor.cpp
index 6a9a0b67a97707185be3ef3dd6f39063952bf916..d72f6ce2dde3025570786da0a532361c47da4d6b 100644
--- a/demos/demo_analytic_autodiff_factor.cpp
+++ b/demos/demo_analytic_autodiff_factor.cpp
@@ -62,12 +62,14 @@ int main(int argc, char** argv)
     SensorBasePtr sensor = new SensorBase("ODOM 2d", std::make_shared<StateBlock>(Eigen::VectorXd::Zero(2)), std::make_shared<StateBlock>(Eigen::VectorXd::Zero(1)), std::make_shared<StateBlock>(Eigen::VectorXd::Zero(2)), 2);
 
     // 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.max_num_iterations = 1e4;
     SolverCeres* ceres_manager_autodiff = new SolverCeres(wolf_problem_autodiff, ceres_options);
     SolverCeres* ceres_manager_analytic = new SolverCeres(wolf_problem_analytic, ceres_options);
+    ceres_manager_autodiff.getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;LINE_SEARCH
+    ceres_manager_autodiff.getSolverOptions().max_line_search_step_contraction = 1e-3;
+    ceres_manager_autodiff.getSolverOptions().max_num_iterations = 1e4;
+    ceres_manager_analytic.getSolverOptions().minimizer_type = ceres::TRUST_REGION; //ceres::TRUST_REGION;LINE_SEARCH
+    ceres_manager_analytic.getSolverOptions().max_line_search_step_contraction = 1e-3;
+    ceres_manager_analytic.getSolverOptions().max_num_iterations = 1e4;
 
     // load graph from .txt
     offLineFile_.open(file_path_.c_str(), std::ifstream::in);
diff --git a/demos/hello_wolf/hello_wolf.cpp b/demos/hello_wolf/hello_wolf.cpp
index 65de0c5807cf768c462f0c9a2f0bb7ee69ee00f5..b747cbee6e2939e9ee096e9241d185bbd6ca1da9 100644
--- a/demos/hello_wolf/hello_wolf.cpp
+++ b/demos/hello_wolf/hello_wolf.cpp
@@ -104,12 +104,11 @@ int main()
 
     // Wolf problem and solver
     ProblemPtr problem                      = Problem::create("PO", 2);
-    ceres::Solver::Options options;
-    options.max_num_iterations              = 1000; // We depart far from solution, need a lot of iterations
-    SolverCeresPtr ceres                   = std::make_shared<SolverCeres>(problem, options);
+    SolverCeresPtr ceres                    = std::make_shared<SolverCeres>(problem);
+    ceres.getSolverOptions().max_num_iterations = 1000; // We depart far from solution, need a lot of iterations
 
     // sensor odometer 2d
-    ParamsSensorOdom2dPtr intrinsics_odo      = std::make_shared<ParamsSensorOdom2d>();
+    ParamsSensorOdom2dPtr intrinsics_odo    = std::make_shared<ParamsSensorOdom2d>();
     SensorBasePtr sensor_odo                = problem->installSensor("SensorOdom2d", "sensor odo", Vector3d(0,0,0), intrinsics_odo);
 
     // processor odometer 2d