diff --git a/modules/mol/mm/examples/gb_example.py b/modules/mol/mm/examples/gb_example.py
index cad4e5e1dddf2d68e1fd7bbbbf8865ac5fbc95bc..24be5a298bc4e189c184ad218a451dc2381e8546 100644
--- a/modules/mol/mm/examples/gb_example.py
+++ b/modules/mol/mm/examples/gb_example.py
@@ -39,7 +39,7 @@ settings.platform = mm.Platform.CPU
 settings.nonbonded_method = mm.NonbondedMethod.CutoffNonPeriodic
 
 sim = mm.Simulation(prot,settings)
-sim.MinimizeEnergy(type = "lbfgs",tolerance = 1.0, max_iterations = 200)
+sim.ApplyLBFGS(tolerance = 1.0, max_iterations = 200)
 sim.UpdatePositions()
 
 ent = sim.GetEntity()
diff --git a/modules/mol/mm/examples/gb_example_writing_trajectory.py b/modules/mol/mm/examples/gb_example_writing_trajectory.py
index a6a18cd5e5836e38164d392e38dc3265b07c4f94..74e77ce41c5f866472c1e5e2622c49051865139c 100644
--- a/modules/mol/mm/examples/gb_example_writing_trajectory.py
+++ b/modules/mol/mm/examples/gb_example_writing_trajectory.py
@@ -14,7 +14,7 @@ settings.platform = Platform.CPU
 sim = Simulation(prot,settings)
 
 #minimize it
-sim.MinimizeEnergy(type = "steep",tolerance = 1.0, max_iterations = 200)
+sim.ApplySD(tolerance = 1.0, max_iterations = 200)
 
 #create a trajectory observer and register it to the simulation
 observer = TrajWriter(10,"gb_example_traj.pdb","gb_example_traj.dcd")
diff --git a/modules/mol/mm/pymod/export_simulation.cc b/modules/mol/mm/pymod/export_simulation.cc
index 1b358eed00b9a2517cc115f197bb5f14a4a97b44..edeee9faaeda79943ca29036233285bb087f5019 100644
--- a/modules/mol/mm/pymod/export_simulation.cc
+++ b/modules/mol/mm/pymod/export_simulation.cc
@@ -59,7 +59,8 @@ void export_Simulation()
     .def("SetPositions",&ost::mol::mm::Simulation::SetPositions,(arg("positions"),arg("in_angstrom")=true))
     .def("SetVelocities",&ost::mol::mm::Simulation::SetVelocities)
     .def("GetEntity",&ost::mol::mm::Simulation::GetEntity)
-    .def("MinimizeEnergy",&ost::mol::mm::Simulation::MinimizeEnergy, (arg("type")="steep",arg("tolerance")=1.0,arg("max_iterations")=1000))
+    .def("ApplySD",&ost::mol::mm::Simulation::ApplySD, (arg("tolerance")=100.0,arg("max_iterations")=1000))
+    .def("ApplyLBFGS",&ost::mol::mm::Simulation::ApplyLBFGS,(arg("tolerance")=1.0,arg("max_iterations")=1000))
     .def("GetEnergy",&ost::mol::mm::Simulation::GetEnergy)                                                                             
     .def("GetPotentialEnergy",&ost::mol::mm::Simulation::GetPotentialEnergy)                                                                             
     .def("GetKineticEnergy",&ost::mol::mm::Simulation::GetKineticEnergy) 
diff --git a/modules/mol/mm/src/simulation.cc b/modules/mol/mm/src/simulation.cc
index d338b52e281e59ae49a09b0ac9c70f58075dd5fc..4e0fcece9b06fba78fc7e8e552d035f8c429eb71 100644
--- a/modules/mol/mm/src/simulation.cc
+++ b/modules/mol/mm/src/simulation.cc
@@ -388,14 +388,12 @@ void Simulation::UpdatePositions(bool enforce_periodic_box){
   }
 }
 
-void Simulation::MinimizeEnergy(const String& type, Real tolerance, int max_iterations){
-  if(type == "lbfgs") OpenMM::LocalEnergyMinimizer::minimize(*context_, tolerance, max_iterations);
-  else if(type == "steep") Steep::Minimize(*context_,tolerance, max_iterations);
-  else{
-    std::stringstream ss;
-    ss << "Unknown minimization function type \""<< type <<"\" observed";
-    throw ost::Error(ss.str());
-  }
+bool Simulation::ApplySD(Real tolerance, int max_iterations){
+  return Steep::Minimize(*context_,tolerance, max_iterations);
+}
+
+void Simulation::ApplyLBFGS(Real tolerance, int max_iterations){
+  OpenMM::LocalEnergyMinimizer::minimize(*context_, tolerance, max_iterations);
 }
 
 void Simulation::Steps(int steps){
diff --git a/modules/mol/mm/src/simulation.hh b/modules/mol/mm/src/simulation.hh
index e1344c842dc8e0c8092b0e70cf7bad1dc25155ac..8996995254017beb1b3f5e4d56c9bdbc19c3cad8 100644
--- a/modules/mol/mm/src/simulation.hh
+++ b/modules/mol/mm/src/simulation.hh
@@ -64,7 +64,9 @@ public:
 
   void UpdatePositions(bool enforce_periodic_box = false);
 
-  void MinimizeEnergy(const String& type = "steep", Real tolerance = 1.0, int max_iterations = 1000);
+  bool ApplySD(Real tolerance = 100, int max_iterations = 1000);
+
+  void ApplyLBFGS(Real tolerance = 1, int max_iterations = 1000);
 
   Real GetEnergy();