modifed: trap.c trap.h