Listing 9.11, 9.12, 9.13