working channel version with goroutines