Use task instead of signal