more multi-signal refactoring