update to use os.walk