separating encode/decode.