add decoding function