Lint classes better (much better) --- Fixes gh-1940

So, so much better!
Addressing the whole change green area: this is really well organized—it's really awesome that you put this effort in to clean up this stuff. My only thought is the long param lists for those functions and keeping it all straight at the call sites. What do you think about one last refactor to make these accept an object of properties? If you don't think there is benefit, then say so.