add new smart control function