challenge 04: add tests and solution