Added Heap hierarchy and implemented (albeit probably incorrectly) all
the required methods