using BinaryReader
update