fixed: use chan struct{}