start implementing the preprocessor