updated to use os.path.join