Implement ch2.2.1's examples (in progress)
Answer ex2.17
Answer ex2.18