Add `difference()` method
Modify `difference()` to be lazy.