implement a heap
change heap to accept void* values and a comparator