this now works properly...edge casses for _foo_bar as well as array traversal