instead of pop and push just use `self._heap[0]`