Initial review

The most recent commit message is so accurate.

Also I think this should be returning a tuple, not a set - otherwise when unpacking `adds, subs = source.list_chunks()` there's no guarantee which set will end up in which variable.