Core refactoring, including more generic return types, simplified method calls, and related optimizations.  Should be backwards compatible, but deprecated several methods, and left TODO's for more invasive future changes.