metadata via preprocessor