uses abs_path