moving lots of stuff out of the base class now that it's grown