remove constructor from abstract class
move encoding to ConverterTrait