add API Pre-processer design pattern