visitor returns value to eliminate needing a stack