add pan Z's idea