used preprocess