recurse through arrays