problem 1
problem 2
problem 3