problem 2
Problem 3
problem 4