updated solution to problem 9