change to using signalAll