do not use binary.Read to decode