problem 2 + tests