Moved preprocessor to top-level.
Using a simple subclass system with Object.assign.