Some of the challenges:

Solution: