refactor
solution to problem 2