Add generic decoding function