def traverse c, &block
      if c.is_a? BaseStack
        yield c
        c.components.each { |e| 
          yield e
        }
        c.components.each { |e| traverse(e, &block)  }
        @ctr -= 1
      else
      end
    end
def traverse c, &block
      if c.is_a? BaseStack
        yield c
        c.components.each { |e| 
          yield e
        }
        c.components.each { |e| traverse(e, &block)  }
        @ctr -= 1
      else
      end
    end
class Item
 --------------------- module level ------------------------------
 General routin to traverse components and their components