Refactoring and API changes