Listing 11.16, 11.17, 11.18