added a heap sort