complete part1 and part2