signal refactor