rename fire => emit