Now that we've switched to a new class, we have an opportunity to really crisply define our public API.  It feels like a lot of the stuff under here should be private (or protected) to make that clear.