added part 1-3