Part 3 complete, needs some debugging