api breaking changes; more to come