fixed with new IValueVisitor interface