problem 2
problem 3
problem 4