Part 1, mostly working (very small difference from expected results - lower recall, higher precision?