update: part1 and part2