changed directory tree walking to be recursive, hopefully will work better with gigantic directory trees