Completed Parts 1, 2, and 3

All functions appear to work.