The design of communication systems