there's also a TypeVisitor (FYI)