implement encode_single