def add_child(name)
      child = self.class.new(name, self)
      yield child if block_given?
      children << child
      child
    end
def add_child(name)
      child = self.class.new(name, self)
      yield child if block_given?
      children << child
      child
    end
Creates a child, adds it to children, and returns the child