more work on heap sort