heap revised