implemented abstract cache preprocessor