More modular API, allowed circular requires, refactoring.