Use signal instead of broadcast