new toString visitor  works but needs more testing