Appendix 1: Completed Code Listing