added energy_functions