modified part 1 and part 2