partial solution to problem 3