don't share state across goroutines