remove Data::Visitor and replace with simplistic visit method