Split up Serve into Listen and Serve instead of passing channel in