Initial review

The most recent commit message is so accurate.

Are `adds` and `subs` fixed once we've loaded the data file?  If so then we should probably pre-calculate and cache these sets rather than building them each time this method is called.