implemented solution to problem 3