remove signal channel
use time.WaitGroup instead of chan for syncing