Challenge 4: Complete, but untested.