We discuss shaping codes in an elementary way, which is from the standpoint of enumerative coding. Then we show how to combine our shaping methods with a error correcting codes. It turns out that we can easily gain a decibel by using shaping techniques, with or without error correction coding. Finally we describe the combination of our shaping method with the `pragmatic' approach to coded modulation, which can be realized with VLSI circuits that are widely available.