using triggers and listeners