part 3 is almost working