recurse through dirs