used nio for io
used nio for io