added strong typing for signal