finished preprocessor