add signal catch