codecs have to be public, since messaging uses them directly.