Completed parts 1, 2, and 3