Translator + a bunch of refactoring.