Changed to use signals terminology instead of core.async channels and functions