all tests passing, but solution is rough