solved and tested