-record(codec, { encode :: fun((any()) -> bitstring()), decode :: fun((bitstring()) -> {ok, any()} | {error, nil}) }).