diff --git a/lib/hwloc/Obj.rb b/lib/hwloc/Obj.rb
index <HASH>..<HASH> 100644
--- a/lib/hwloc/Obj.rb
+++ b/lib/hwloc/Obj.rb
@@ -332,6 +332,9 @@ module Hwloc
       return each_parent.to_a
     end
 
+    alias ancestors parents
+    alias each_ancestor each_parent
+
     def each_obj(&block)
       if block then
         block.call self
@@ -346,6 +349,20 @@ module Hwloc
 
     alias traverse each_obj
 
+    def each_descendant
+      if block then
+        children.each { |c|
+          c.each_obj(&block)
+        }
+      else
+        to_enum(:each_descendant)
+      end
+    end
+
+    def descendants
+      return each_descendant.to_a
+    end
+
     def distances
       distances_count = self[:distances_count]
       if distances_count == 0 then
Added accessors to ancestors and descendants.