Mostly done with heap