Challenges 1 and 2.
Challenge 3