Done part 1 and part 3