Part 1 is now complete and tested. Starting on Part 2.