newChannel now returns a chanwriter (a -> IO ()) instead of Chan a