One particular strength of OpenMM's ease of userdefined components is the ability to write custom numerical integrators. Using the customIntegrator objects within the python API, a user can modify standard numerical integrators such as the Langevin integrator . This gives the user massive amounts of control in their enhanced sampling parameters for established methods such as umbrella sampling or accelerated molecular dynamics (aMD) . The use of customIntegrator architectures also enables OpenMM to be the foundation engine on top of which free energy calculations can be run. In particular, recent advances have enabled OpenMM to be used for Replica Exchange and non-equilibrium cycling calculations .