updated solution to problem 8