add with_temp_dir
add retry
add get_arg/3