Solving Communication Design Problems