Added all of part 3