optimize downward event firing