Part 1, some Part 2 working