add a predefine opt. for better performance