implement decode_single