add Visitor and Node class