massive API changes (show diff)