after learned from ECshop, update