Decoding getting there, special case handling still wrong