new trigger framework