And I think having a HybridMonteCarlo optimizer would be nice, cause now 
we can only have python wrappers around MD to make it work.
The functionality provided in core.MonteCarlo should make that easier to implement as it exposes
do_move() to apply the movers
do_accept_or_reject_move(energy) to decide if that energy is good enough to accept everything that has happened
and a hook
do_step() so that individual implementations can do all the stuff they need to around moves and energy computations and stuff.


by core.MonteCarlo do you mean the new one you are planning to implement? Cause we had walked through the old code and it was incompatible with

oldconf = store_current_conf()
for all gibbs_steps:
    … sample other gibbs variables …
    for all mc_steps:
        assign_velocities(300K)
        oldene = get_etot()
        md_NVE()
        newene = get_etot()
        if metropolis_reject(oldene,newene):
                  reset_coordinates_to(oldconf)


because assign_velocities changes the total energy.
Y