add reduce.h