added part2 and part3