using actual heap implementation instead of nudging things along slice