Part 2 is written but not totally working. Part 1 is done