generic interface for preprocessor