add signal func