add the solution. update the tests