top level element and visitor
added classes to characterize the kind of data being represented