delegate decoding the same way as encoding