reimplement HMC interface