Encoding and decoding schemes