problem 1
added module
problem 2
problem 3
problem 4