add trap function