updated solution to problem 17