redesigned heap