added re-firing logic