#14 refactor encoding implementation (7)