Add Encoder, Decoder, and GenCodec generalizations