generic
ProductDecoder ProductEncoder SumDecoder SumEncoder